diff --git a/public/svgs/icon_download.svg b/public/svgs/icon_download.svg new file mode 100644 index 00000000..60f11990 --- /dev/null +++ b/public/svgs/icon_download.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apis/domains/tickets/api.ts b/src/apis/domains/tickets/api.ts index 1bedb136..c0f4e965 100644 --- a/src/apis/domains/tickets/api.ts +++ b/src/apis/domains/tickets/api.ts @@ -3,6 +3,7 @@ import { components } from "@typings/api/schema"; import { ApiResponseType } from "@typings/commonType"; import { PatchFormDataProps } from "@typings/deleteBookerFormatProps"; import { AxiosResponse } from "axios"; +import { convertingScheduleNumber } from "@constants/convertingScheduleNumber"; // 예매자 목록 조회 API (GET) export interface getTicketReq { @@ -15,11 +16,42 @@ export interface getTicketReq { type TicketRetrieveResponse = components["schemas"]["TicketRetrieveResponse"]; export const getTicketRetrieve = async ( - formData: getTicketReq + formData: getTicketReq, + filterList ): Promise => { try { + const params = new URLSearchParams(); + filterList.scheduleNumber.map((item) => + params.append("scheduleNumbers", convertingScheduleNumber(item)) + ); + filterList.bookingStatus.map((item) => params.append("bookingStatuses", item)); + + const response: AxiosResponse> = await get( + `tickets/${formData.performanceId}?${params.toString()}` + ); + + return response.data.data; + } catch (error) { + console.log("error", error); + return null; + } +}; + +export const getTicketRetrieveSearch = async ( + formData: getTicketReq, + searchWord, + filterList +): Promise => { + try { + const params = new URLSearchParams(); + params.append("searchWord", searchWord); + filterList.scheduleNumber.map((item) => + params.append("scheduleNumbers", convertingScheduleNumber(item)) + ); + filterList.bookingStatus.map((item) => params.append("bookingStatuses", item)); + const response: AxiosResponse> = await get( - `tickets/${formData.performanceId}` + `tickets/search/${formData.performanceId}?${params.toString()}` ); return response.data.data; @@ -29,17 +61,11 @@ export const getTicketRetrieve = async ( } }; +type SuccessResponseVoid = components["schemas"]["SuccessResponseVoid"]; + // 예매자 입급 여부 수정 API (PUT) -/* -export interface putTicketReq { - performanceId: number; - performanceTitle: string; - totalScheduleCoun: number; - bookingList: BookingListProps[]; -} -*/ + export type TicketUpdateRequest = components["schemas"]["TicketUpdateRequest"]; -type SuccessResponseVoid = components["schemas"]["SuccessResponseVoid"]; //async 함수는 항상 promise로 감싸서 값을 리턴한다. //즉, 비동기 함수의 값을 사용하려면 추후 await이나 then 을 사용해야 한다던데.. @@ -49,7 +75,7 @@ export const putTicketUpdate = async ( ): Promise => { try { const response: AxiosResponse> = await put( - "tickets", + "tickets/update", formData ); @@ -60,18 +86,39 @@ export const putTicketUpdate = async ( } }; -// 예매자 취소 API (PATCH) -//이거 타입 잘못되었을 수도..? bookingList 가 number를 담은 배열로 되어 있는데, 실제로는 아니었음 -//export type TicketDeleteRequest = components["schemas"]["TicketDeleteRequest"]; +// 예매자 환불처리 (PUT) + +export type TicketRefundRequest = components["schemas"]["TicketRefundRequest"]; -export const patchTicketCancel = async ( - formData: PatchFormDataProps +export const putTicketRefund = async ( + formData: TicketRefundRequest ): Promise => { try { - const response: AxiosResponse> = await patch( - "tickets", + const response: AxiosResponse> = await put( + "tickets/refund", formData ); + + return response.data.data; + } catch (error) { + console.log("error", error); + return null; + } +}; + +// 예매자 삭제 (PUT) + +export type TicketDeleteRequest = components["schemas"]["TicketDeleteRequest"]; + +export const putTicketDelete = async ( + formData: TicketDeleteRequest +): Promise => { + try { + const response: AxiosResponse> = await put( + "tickets/delete", + formData + ); + return response.data.data; } catch (error) { console.log("error", error); diff --git a/src/apis/domains/tickets/queries.ts b/src/apis/domains/tickets/queries.ts index 133d8dd4..1088484b 100644 --- a/src/apis/domains/tickets/queries.ts +++ b/src/apis/domains/tickets/queries.ts @@ -1,10 +1,13 @@ import { QueryClient, useMutation, useQuery } from "@tanstack/react-query"; -import { PatchFormDataProps } from "@typings/deleteBookerFormatProps"; import { getTicketReq, getTicketRetrieve, - patchTicketCancel, + getTicketRetrieveSearch, + putTicketDelete, + putTicketRefund, putTicketUpdate, + TicketDeleteRequest, + TicketRefundRequest, TicketUpdateRequest, } from "./api"; @@ -13,19 +16,30 @@ const QUERY_KEY = { SELLER_BOOKING_LIST: "sellerBookingList", }; -export const useTicketRetrive = (formData: getTicketReq) => { +export const useTicketRetrive = (formData: getTicketReq, filterList) => { return useQuery({ queryKey: [QUERY_KEY.SELLER_BOOKING_LIST], - queryFn: () => getTicketRetrieve(formData), - // staleTime: 1000 * 60 * 60, + queryFn: () => getTicketRetrieve(formData, filterList), + staleTime: 1000 * 60 * 60, gcTime: 1000 * 60 * 60 * 24, }); }; +// 예매자 목록 검색 API (GET)를 위한 쿼리 작성 + +export const useTicketRetriveSearch = (formData: getTicketReq, searchWord, filterList) => { + return useQuery({ + queryKey: [QUERY_KEY.SELLER_BOOKING_LIST], + queryFn: () => getTicketRetrieveSearch(formData, searchWord, filterList), + staleTime: 1000 * 60 * 60, + gcTime: 1000 * 60 * 60 * 24, + }); +}; + +const queryClient = new QueryClient(); + // 예매자 입급 여부 수정 API (PUT)를 위한 쿼리 작성 export const useTicketUpdate = () => { - const queryClient = new QueryClient(); - return useMutation({ mutationFn: (formData: TicketUpdateRequest) => putTicketUpdate(formData), onSuccess: (res) => { @@ -35,12 +49,21 @@ export const useTicketUpdate = () => { }); }; -// 예매자를 취소하는 API (PATCH)를 위한 쿼리 작성 -export const useTicketPatch = () => { - const queryClient = new QueryClient(); +// 예매자 환불 여부 수정 API (PUT)를 위한 쿼리 작성 +export const useTicketRefund = () => { + return useMutation({ + mutationFn: (formData: TicketRefundRequest) => putTicketRefund(formData), + onSuccess: (res) => { + queryClient.invalidateQueries({ queryKey: [QUERY_KEY.SELLER_BOOKING_LIST] }); + queryClient.refetchQueries({ queryKey: [QUERY_KEY.SELLER_BOOKING_LIST] }); + }, + }); +}; +// 예매자 삭제 여부 수정 API (PUT)를 위한 쿼리 작성 +export const useTicketDelete = () => { return useMutation({ - mutationFn: (formData: PatchFormDataProps) => patchTicketCancel(formData), + mutationFn: (formData: TicketDeleteRequest) => putTicketDelete(formData), onSuccess: (res) => { queryClient.invalidateQueries({ queryKey: [QUERY_KEY.SELLER_BOOKING_LIST] }); queryClient.refetchQueries({ queryKey: [QUERY_KEY.SELLER_BOOKING_LIST] }); diff --git a/src/assets/svgs/IconDownload.tsx b/src/assets/svgs/IconDownload.tsx new file mode 100644 index 00000000..6a448b89 --- /dev/null +++ b/src/assets/svgs/IconDownload.tsx @@ -0,0 +1,11 @@ +import * as React from "react"; +import type { SVGProps } from "react"; +const SvgIconDownload = (props: SVGProps) => ( + + + +); +export default SvgIconDownload; diff --git a/src/assets/svgs/IconSearch.tsx b/src/assets/svgs/IconSearch.tsx index 9ee48803..6305f24d 100644 --- a/src/assets/svgs/IconSearch.tsx +++ b/src/assets/svgs/IconSearch.tsx @@ -3,7 +3,7 @@ import type { SVGProps } from "react"; const SvgIconSearch = (props: SVGProps) => ( theme.fonts["body1-normal-semi"]}; diff --git a/src/components/commons/navigation/Navigation.tsx b/src/components/commons/navigation/Navigation.tsx index 4e832e8d..7e03ad4f 100644 --- a/src/components/commons/navigation/Navigation.tsx +++ b/src/components/commons/navigation/Navigation.tsx @@ -83,6 +83,19 @@ const Navigation = () => { ); } + if (headerStyle === NAVIGATION_STATE.ICON_TITLE_DOWNLOAD) { + return ( + + + {title} + + {subText} + + + + ); + } + if (!headerStyle) { return null; } diff --git a/src/constants/convertingBookingStatus.ts b/src/constants/convertingBookingStatus.ts new file mode 100644 index 00000000..968965a7 --- /dev/null +++ b/src/constants/convertingBookingStatus.ts @@ -0,0 +1,20 @@ +type PaymentType = + | "CHECKING_PAYMENT" + | "BOOKING_CONFIRMED" + | "BOOKING_CANCELLED" + | "REFUND_REQUESTED"; + +export const convertingBookingStatus = (_bookingStatus: PaymentType): string => { + switch (_bookingStatus) { + case "CHECKING_PAYMENT": + return "미입금"; + case "BOOKING_CONFIRMED": + return "입금 완료"; + case "BOOKING_CANCELLED": + return "취소 완료"; + case "REFUND_REQUESTED": + return "환불 요청"; + default: + throw new Error("알 수 없는 상태입니다."); + } +}; diff --git a/src/constants/convertingScheduleNumber.ts b/src/constants/convertingScheduleNumber.ts new file mode 100644 index 00000000..502b6104 --- /dev/null +++ b/src/constants/convertingScheduleNumber.ts @@ -0,0 +1,26 @@ +export const convertingScheduleNumber = (_scheduleNumber: number): string => { + switch (_scheduleNumber) { + case 1: + return "FIRST"; + case 2: + return "SECOND"; + case 3: + return "THIRD"; + case 4: + return "FOURTH"; + case 5: + return "FIFTH"; + case 6: + return "SIXTH"; + case 7: + return "SEVENTH"; + case 8: + return "EIGHTH"; + case 9: + return "NINTH"; + case 10: + return "TENTH"; + default: + return "UNKNOWN"; + } +}; diff --git a/src/constants/navigationState.ts b/src/constants/navigationState.ts index c4673cc4..36bc9239 100644 --- a/src/constants/navigationState.ts +++ b/src/constants/navigationState.ts @@ -7,6 +7,7 @@ export const NAVIGATION_STATE = { ICON: "icon", LOGO_HAMBURGAR: "logoHamburgar", ICON_ICON: "iconIcon", + ICON_TITLE_DOWNLOAD: "iconTitleDownload", } as const; export type NavigationState = (typeof NAVIGATION_STATE)[keyof typeof NAVIGATION_STATE]; diff --git a/src/hooks/useDebounce.ts b/src/hooks/useDebounce.ts new file mode 100644 index 00000000..b6f68617 --- /dev/null +++ b/src/hooks/useDebounce.ts @@ -0,0 +1,19 @@ +import { useEffect, useState } from "react"; + +const useDebounce = (value: string, delay: number) => { + const [debouncedValue, setDebouncedValue] = useState(value); + + useEffect(() => { + const timer = setTimeout(() => { + setDebouncedValue(value); + }, delay); + + return () => { + clearTimeout(timer); + }; + }, [value]); + + return debouncedValue; +}; + +export default useDebounce; diff --git a/src/pages/ticketholderlist/TicketHolderList.styled.ts b/src/pages/ticketholderlist/TicketHolderList.styled.ts index 8478a76d..2b594afc 100644 --- a/src/pages/ticketholderlist/TicketHolderList.styled.ts +++ b/src/pages/ticketholderlist/TicketHolderList.styled.ts @@ -27,7 +27,7 @@ export const ManageCardContainer = styled.section` `; export const FooterButtonWrapper = styled.div` - position: sticky; + position: fixed; bottom: 0; z-index: 1; display: flex; diff --git a/src/pages/ticketholderlist/TicketHolderList.tsx b/src/pages/ticketholderlist/TicketHolderList.tsx index c9b7fbad..ef917726 100644 --- a/src/pages/ticketholderlist/TicketHolderList.tsx +++ b/src/pages/ticketholderlist/TicketHolderList.tsx @@ -1,9 +1,16 @@ -import { useTicketPatch, useTicketRetrive, useTicketUpdate } from "@apis/domains/tickets/queries"; +import { + useTicketDelete, + useTicketRefund, + useTicketRetrive, + useTicketRetriveSearch, + useTicketUpdate, +} from "@apis/domains/tickets/queries"; import Loading from "@components/commons/loading/Loading"; import MetaTag from "@components/commons/meta/MetaTag"; import { NAVIGATION_STATE } from "@constants/navigationState"; -import { useHeader, useModal, useToast } from "@hooks"; -import { useEffect, useState } from "react"; +import { useHeader, useModal } from "@hooks"; +import useDebounce from "src/hooks/useDebounce"; +import { useEffect, useState, ChangeEvent, useRef } from "react"; import { CSVLink } from "react-csv"; import { useNavigate, useParams } from "react-router-dom"; import { convertingNumber } from "@constants/convertingNumber"; @@ -17,104 +24,17 @@ import { BookingListProps } from "@pages/ticketholderlist/types/bookingListType" import { ManageCard } from "./components/manageCard"; import { getBankNameKr } from "@utils/getBankName"; import SelectedChips from "./components/selectedChips/SelectedChips"; - -const data = { - performanceTitle: "비트밴드 정기공연", - performanceTeamName: "비트밴드", - isBooking: true, - totalScheduleCount: 3, - totalPerformanceTicketCount: 100, - totalPerformanceSoldTicketCount: 50, - bookingList: [ - { - bookingId: 1, - bookerName: "황혜린", - bookerPhoneNumber: "010-1234-5678", - scheduleId: 2, - purchaseTicketCount: 3, - createdAt: "2024-07-07T12:34:56.789Z", - bookingStatus: "REFUND_REQUIRED", - scheduleNumber: "SECOND", - bankName: "NH_NONGHYUP", - accountNumber: "123-12-1234-123", - accountHolder: "전희주", - }, - { - bookingId: 2, - bookerName: "이동훈", - bookerPhoneNumber: "010-1234-0000", - scheduleId: 1, - purchaseTicketCount: 2, - createdAt: "2024-07-08T12:34:56.789Z", - bookingStatus: "BOOKING_CONFIRMED", - scheduleNumber: "FIRST", - // 예매 확정된 상태이므로 환불계좌 정보 없음 - bankName: "", - accountNumber: "", - accountHolder: "", - }, - { - bookingId: 1, - bookerName: "황혜린", - bookerPhoneNumber: "010-1234-5678", - scheduleId: 2, - purchaseTicketCount: 3, - createdAt: "2024-07-07T12:34:56.789Z", - bookingStatus: "REFUND_REQUIRED", - scheduleNumber: "SECOND", - bankName: "NH_NONGHYUP", - accountNumber: "123-12-1234-123", - accountHolder: "전희주", - }, - { - bookingId: 2, - bookerName: "이동훈", - bookerPhoneNumber: "010-1234-0000", - scheduleId: 1, - purchaseTicketCount: 2, - createdAt: "2024-07-08T12:34:56.789Z", - bookingStatus: "CHECKING_PAYMENT", - scheduleNumber: "FIRST", - // 예매 확정된 상태이므로 환불계좌 정보 없음 - bankName: "", - accountNumber: "", - accountHolder: "", - }, - { - bookingId: 1, - bookerName: "황혜린", - bookerPhoneNumber: "010-1234-5678", - scheduleId: 2, - purchaseTicketCount: 3, - createdAt: "2024-07-07T12:34:56.789Z", - bookingStatus: "REFUND_REQUIRED", - scheduleNumber: "SECOND", - bankName: "NH_NONGHYUP", - accountNumber: "123-12-1234-123", - accountHolder: "전희주", - }, - { - bookingId: 2, - bookerName: "이동훈", - bookerPhoneNumber: "010-1234-0000", - scheduleId: 1, - purchaseTicketCount: 2, - createdAt: "2024-07-08T12:34:56.789Z", - bookingStatus: "BOOKING_CANCELLED", - scheduleNumber: "FIRST", - // 예매 확정된 상태이므로 환불계좌 정보 없음 - bankName: "", - accountNumber: "", - accountHolder: "", - }, - ], -}; +import { convertingBookingStatus } from "@constants/convertingBookingStatus"; +import { IconCheck } from "@assets/svgs"; +import Toast from "@components/commons/toast/Toast"; +import { useToast } from "@hooks"; +import NonExistent from "./components/nonExistent/NonExistent."; export type PaymentType = | "CHECKING_PAYMENT" | "BOOKING_CONFIRMED" | "BOOKING_CANCELLED" - | "REFUND_REQUIRED"; + | "REFUND_REQUESTED"; interface CSVDataType { createdAt: string; @@ -125,22 +45,10 @@ interface CSVDataType { bookingStatus: string; } -// 관리자 페이지에서만 사용해서 공통 type으로 안 뺌 -// TODO : TicketHolderList 내 type으로 빼기 -export const convertingBookingStatus = (_bookingStatus: PaymentType): string => { - switch (_bookingStatus) { - case "CHECKING_PAYMENT": - return "미입금"; - case "BOOKING_CONFIRMED": - return "입금 완료"; - case "BOOKING_CANCELLED": - return "취소 완료"; - case "REFUND_REQUIRED": - return "환불 요청"; - default: - throw new Error("알 수 없는 상태입니다."); - } -}; +export interface FilterListType { + scheduleNumber: number[]; + bookingStatus: string[]; +} const headers = [ { label: "예매일시", key: "createdAt" }, @@ -158,31 +66,173 @@ const TicketHolderList = () => { const [status, setStatus] = useState("DEFAULT"); const [buttonText, setButtonText] = useState("예매자 관리하기"); + const [filterList, setFilterList] = useState({ + scheduleNumber: [], + bookingStatus: [], + }); + const [searchWord, setSearchWord] = useState(""); + const [openFilter, setOpenFilter] = useState(false); const [openMenu, setOpenMenu] = useState(false); const [CSVDataArr, setCSVDataArr] = useState([]); + const csvLinkRef = useRef(null); + const { performanceId } = useParams(); - // const { data, isLoading, refetch } = useTicketRetrive({ performanceId: Number(performanceId) }); - const { isLoading, refetch } = useTicketRetrive({ performanceId: Number(performanceId) }); + const { data, isLoading, refetch } = useTicketRetrive( + { performanceId: Number(performanceId) }, + filterList + ); + const { data: searchData, refetch: searchRefetch } = useTicketRetriveSearch( + { performanceId: Number(performanceId) }, + searchWord, + filterList + ); + const { openConfirm, closeConfirm } = useModal(); + + const [checkedBookingId, setCheckedBookingId] = useState([]); + const { showToast, isToastVisible } = useToast(); + // 체크된 리스트 확인 + const handleBookingIdCheck = (bookingId: number) => { + setCheckedBookingId((prev) => + prev.includes(bookingId) ? prev.filter((id) => id !== bookingId) : [...prev, bookingId] + ); + }; + + const { mutate: updateMutate, isPending: updateIsPending } = useTicketUpdate(); + + const handlePaymentFixAxiosFunc = () => { + if (updateIsPending) { + return; + } + // 예매 완료 PUT API 요청 + // paymentData에 accountHolder, accountNumber, bankName 제거 + const filteredPaymentData = paymentData.map( + ({ bankName, accountNumber, accountHolder, ...rest }) => ({ + ...rest, + bookingStatus: checkedBookingId.includes(rest.bookingId) + ? "BOOKING_CONFIRMED" + : rest.bookingStatus, + }) + ); + + updateMutate({ + performanceId: Number(performanceId), + performanceTitle: data?.performanceTitle, + totalScheduleCount: data?.totalScheduleCount, + bookingList: filteredPaymentData, + }); + closeConfirm(); + setTimeout(() => { + window.location.reload(); + }, 1000); + }; + + const handlePaymentFixBtn = () => { + openConfirm({ + title: "입금 처리시 예매확정 문자가 발송돼요.", + subTitle: "예매자에게 입금이 확인되었음을 알려드릴게요!", + okText: "입금 처리하기", + noText: "아니요", + okCallback: () => { + handlePaymentFixAxiosFunc(); + }, + noCallback: closeConfirm, + }); + }; + + // 환불 요청 + const { mutate: refundMutate, isPending: refundIsPending } = useTicketRefund(); + + const handlePaymentRefundBtn = () => { + openConfirm({ + title: "환불 처리 하시겠어요?", + subTitle: "예매자에게 환불 금액을 보낸 뒤 처리해 주세요.", + okText: "환불 처리하기", + noText: "아니요", + okCallback: () => { + handlePaymentRefundAxiosFunc(); + }, + noCallback: closeConfirm, + }); + }; + + const handlePaymentRefundAxiosFunc = () => { + if (refundIsPending) { + return; + } + // 환불 요청 PUT API 요청 + // bookingId만 전달 + const filteredPaymentData = paymentData.map(({ bookingId }) => ({ + bookingId: checkedBookingId.includes(bookingId) && bookingId, + })); + + refundMutate({ + performanceId: Number(performanceId), + bookingList: filteredPaymentData, + }); + closeConfirm(); + setTimeout(() => { + window.location.reload(); + }, 1000); + }; + + // 취소 요청 + const { mutate: deleteMutate, isPending: deleteIsPending } = useTicketDelete(); + + const handlePaymentDeleteBtn = () => { + openConfirm({ + title: "예매자를 삭제하시겠어요?", + subTitle: "한 번 삭제한 예매자 정보는 다시 복구할 수 없어요.", + okText: "삭제하기", + noText: "아니요", + okCallback: () => { + handlePaymentDeleteAxiosFunc(); + }, + noCallback: closeConfirm, + }); + }; + + const handlePaymentDeleteAxiosFunc = () => { + if (deleteIsPending) { + return; + } + // 취소 요청 PUT API 요청 + // bookingId만 전달 + const filteredPaymentData = paymentData.map(({ bookingId }) => ({ + bookingId: checkedBookingId.includes(bookingId) && bookingId, + })); + + deleteMutate({ + performanceId: Number(performanceId), + bookingList: filteredPaymentData, + }); + closeConfirm(); + setTimeout(() => { + window.location.reload(); + }, 1000); + }; const actions = { PAYMENT: { text: "입금 처리하기", - // TODO : 예매 확정 팝업 - action: console.log("입금 처리"), + action: () => { + handlePaymentFixBtn(); + }, }, REFUND: { text: "환불 처리하기", - // TODO : 환불 처리 팝업 - action: () => console.log("환불"), + action: () => { + handlePaymentRefundBtn(); + }, }, DELETE: { text: "예매자 삭제하기", - // TODO : 예매자 삭제 팝업 - action: () => console.log("예매자 삭제"), + action: () => { + handlePaymentDeleteBtn(); + }, }, DEFAULT: { text: "예매자 관리하기", @@ -202,6 +252,32 @@ const TicketHolderList = () => { const handleStatus = (status: string) => { setStatus(status); setOpenMenu(false); + switch (status) { + case "PAYMENT": + setFilterList({ + scheduleNumber: [], + bookingStatus: ["CHECKING_PAYMENT"], + }); + break; + case "REFUND": + setFilterList({ + scheduleNumber: [], + bookingStatus: ["REFUND_REQUESTED"], + }); + break; + case "DELETE": + setFilterList({ + scheduleNumber: [], + bookingStatus: ["CHECKING_PAYMENT", "BOOKING_CONFIRMED", "REFUND_REQUESTED"], + }); + break; + default: + setFilterList({ + scheduleNumber: [], + bookingStatus: [], + }); + break; + } }; // 바텀시트 닫기 @@ -211,14 +287,40 @@ const TicketHolderList = () => { }; // 필터 바텀시트 - const handleFilter = () => { - if (!openFilter) { - setOpenFilter(true); - } else { - setOpenFilter(false); - } + const handleFilterSheet = () => { + setOpenFilter((prev) => !prev); }; + const handleFilter = async (scheduleNumber: number[], bookingStatus: string[]) => { + setFilterList({ + scheduleNumber, + bookingStatus, + }); + }; + + const debouncedQuery = useDebounce(searchWord, 500); + + const handleInputChange = (event: ChangeEvent) => { + setSearchWord(event.target.value); + }; + + // 필터 변경될 때마다 GET API 요청 + // 검색될 때마다 GET API 요청 + useEffect(() => { + const fetchData = async () => { + const refetchData = await refetch(); + setPaymentData(refetchData?.data?.bookingList ?? []); + }; + + const fetchSearchData = async () => { + const refetchSearchData = await searchRefetch(); + setPaymentData(refetchSearchData?.data?.bookingList ?? []); + }; + + // TODO : 서버에서 검색어 2글자 이상으로 넘겨줬는데, 기-디에 화면에 어떻게 표현할지 물어보기 + searchWord.length >= 2 ? fetchSearchData() : fetchData(); + }, [filterList, status, debouncedQuery]); + useEffect(() => { setPaymentData(data?.bookingList ?? []); @@ -247,27 +349,41 @@ const TicketHolderList = () => { ); setCSVDataArr(tempCSVDataArr); } - }, [data]); + }, [data, paymentData]); const navigate = useNavigate(); const handleNavigateBack = () => { - navigate("/gig-manage"); + if (status !== "DEFAULT") { + setStatus("DEFAULT"); + } else { + navigate("/gig-manage"); + } + }; + + const handleCSVDownload = () => { + if (csvLinkRef.current) { + csvLinkRef.current.link.click(); + } }; const { setHeader } = useHeader(); useEffect(() => { setHeader({ - headerStyle: NAVIGATION_STATE.ICON_TITLE_SUB_TEXT, + headerStyle: NAVIGATION_STATE.ICON_TITLE_DOWNLOAD, title: "예매자 관리", - // TODO : 공통컴포넌트에 svg 들어갈 수 있도록 수정하기 - subText: "CSV", + subText: "리스트", leftOnClick: handleNavigateBack, - // TODO : rightOnClick CSV 다운로드로 변경 - // rightOnClick: , + rightOnClick: handleCSVDownload, }); }, [setHeader]); + const handleCopyClipBoard = (text: string) => { + navigator.clipboard.writeText(text); + + showToast(); + }; + return ( <> @@ -284,41 +400,67 @@ const TicketHolderList = () => { totalCount={data?.totalPerformanceTicketCount} /> - - + 0 || filterList.bookingStatus.length > 0 + } + /> + {status === "DEFAULT" && ( + + handleFilter(scheduleNumber, bookingStatus) + } + /> + )} + + {paymentData?.length ? ( + + {paymentData?.map((item) => { + const date = item.createdAt.split("T")[0]; + const formattedDate = `${date.replace(/-/g, ". ")}`; + const bookingStatus = convertingBookingStatus(item.bookingStatus as PaymentType); - - {paymentData.map((item, idx) => { - const date = item.createdAt.split("T")[0]; - const formattedDate = `${date.replace(/-/g, ". ")}`; - const bookingStatus = convertingBookingStatus(item.bookingStatus as PaymentType); - - return ( - - - {status !== "DEFAULT" && } - - - {status === "REFUND" && ( - - )} - - ); - })} - + return ( + + + {status !== "DEFAULT" && ( + + )} + + + {status === "REFUND" && ( + + )} + + ); + })} + + ) : ( + + )} @@ -330,9 +472,22 @@ const TicketHolderList = () => { /> + handleFilter(scheduleNumber, bookingStatus) + } + /> + + } isVisible={isToastVisible} toastBottom={30}> + 클립보드에 복사되었습니다! + )} diff --git a/src/pages/ticketholderlist/components/FilterBottomSheet/FilterBottomSheet.tsx b/src/pages/ticketholderlist/components/FilterBottomSheet/FilterBottomSheet.tsx index 0225e30d..05776658 100644 --- a/src/pages/ticketholderlist/components/FilterBottomSheet/FilterBottomSheet.tsx +++ b/src/pages/ticketholderlist/components/FilterBottomSheet/FilterBottomSheet.tsx @@ -1,24 +1,38 @@ -import React, { useState, ReactNode } from "react"; +import { useState, ReactNode, useEffect } from "react"; import * as S from "./FilterBottomSheet.styled"; import { BottomSheet, Button, Spacing } from "@components/commons"; +import { FilterListType, PaymentType } from "@pages/ticketholderlist/TicketHolderList"; +import { convertingBookingStatus } from "@constants/convertingBookingStatus"; interface FilterBottomSheetProps { isOpen: boolean; totalScheduleCount: number; children?: ReactNode; onClickOutside?: () => void; + filterList: FilterListType; + handleFilter: (scheduleNumber: number[], bookingStatus: string[]) => void; } -const bookingStatusList = ["미입금", "입금 완료", "환불 요청", "취소 완료"]; +const bookingStatusList = [ + "CHECKING_PAYMENT", + "BOOKING_CONFIRMED", + "REFUND_REQUESTED", + "BOOKING_CANCELLED", +]; const FilterBottomSheet = ({ isOpen, onClickOutside, totalScheduleCount, - children, + handleFilter, + filterList, }: FilterBottomSheetProps) => { - const [checkedStatusList, setCheckedStatusList] = useState([]); - const [checkedScheduleList, setCheckedScheduleList] = useState([]); + const [checkedStatusList, setCheckedStatusList] = useState(filterList.bookingStatus); + const [checkedScheduleList, setCheckedScheduleList] = useState( + filterList.scheduleNumber + ); + + const initList = filterList; const handleWrapperClick = () => { onClickOutside(); @@ -32,6 +46,14 @@ const FilterBottomSheet = ({ const scheduleArray = scheduleNumberArray(totalScheduleCount); + useEffect(() => { + const newScheduleNumbers = filterList.scheduleNumber.map((item) => item); + const newBookingStatuses = filterList.bookingStatus.map((item) => item); + + setCheckedScheduleList(newScheduleNumbers); + setCheckedStatusList(newBookingStatuses); + }, [filterList]); + // 선택된 회차 확인 const handleScheduleCheck = (schedule: number) => { setCheckedScheduleList((prev) => @@ -48,6 +70,8 @@ const FilterBottomSheet = ({ const handleCilckBtn = () => { onClickOutside(); + + handleFilter(checkedScheduleList, checkedStatusList); }; const handleClickRefresh = () => { @@ -55,6 +79,12 @@ const FilterBottomSheet = ({ setCheckedStatusList([]); }; + const isAllEmpty = + initList.scheduleNumber.length === 0 && + initList.bookingStatus.length === 0 && + checkedStatusList.length === 0 && + checkedScheduleList.length === 0; + return ( @@ -91,13 +121,16 @@ const FilterBottomSheet = ({ onChange={() => handleStatusCheck(status)} /> {checkedStatusList.includes(status) ? : } - {status} + {convertingBookingStatus(status as PaymentType)} ))} - {/* TODO : 선택된 내역 없을 때 버튼 비활성화 하기 */} - + {isAllEmpty ? ( + + ) : ( + + )} ); diff --git a/src/pages/ticketholderlist/components/manageCard/ManageAccount.tsx b/src/pages/ticketholderlist/components/manageCard/ManageAccount.tsx index 5cf2188e..eb6b4b9f 100644 --- a/src/pages/ticketholderlist/components/manageCard/ManageAccount.tsx +++ b/src/pages/ticketholderlist/components/manageCard/ManageAccount.tsx @@ -4,18 +4,21 @@ interface ManageAccountProps { bankName: string; accountNumber: string; accountHolder: string; + handleCopyClipBoard: (number) => void; } export default function ManageAccount({ bankName, accountNumber, accountHolder, + handleCopyClipBoard, }: ManageAccountProps) { return ( - // TODO : 클릭 시 계좌번호 복사 기능 추가 - - {bankName} ({accountHolder}) {accountNumber} - - + <> + handleCopyClipBoard(accountNumber)}> + {bankName} ({accountHolder}) {accountNumber} + + + ); } diff --git a/src/pages/ticketholderlist/components/manageCard/ManageCardContainer.tsx b/src/pages/ticketholderlist/components/manageCard/ManageCardContainer.tsx index 04808cec..329ffdee 100644 --- a/src/pages/ticketholderlist/components/manageCard/ManageCardContainer.tsx +++ b/src/pages/ticketholderlist/components/manageCard/ManageCardContainer.tsx @@ -1,12 +1,10 @@ -import { convertingBookingStatus } from "@pages/ticketholderlist/TicketHolderList"; import * as S from "./ManageCardContainer.styled"; -import { PaymentType } from "@pages/ticketholderlist/TicketHolderList"; interface ManagerCardContainerProps { name: string; phoneNumber: string; ticketCount: number; - scheduleId: number; + scheduleNumber: number; date: string; status: string; } @@ -15,7 +13,7 @@ export default function ManageCardContainer({ name, phoneNumber, ticketCount, - scheduleId, + scheduleNumber, date, status, }: ManagerCardContainerProps) { @@ -27,7 +25,7 @@ export default function ManageCardContainer({ {name} ({phoneNumber}) - {scheduleId}회차 / {ticketCount}매 + {scheduleNumber}회차 / {ticketCount}매 {date} diff --git a/src/pages/ticketholderlist/components/manageCard/ManageCardMain.tsx b/src/pages/ticketholderlist/components/manageCard/ManageCardMain.tsx index e7ffd834..03c95de9 100644 --- a/src/pages/ticketholderlist/components/manageCard/ManageCardMain.tsx +++ b/src/pages/ticketholderlist/components/manageCard/ManageCardMain.tsx @@ -1,4 +1,4 @@ -import React, { Children, ReactNode } from "react"; +import { ReactNode } from "react"; import * as S from "./ManageCardMain.styled"; export interface ManageCardMainProps { diff --git a/src/pages/ticketholderlist/components/manageCard/ManageCheckBox.styled.ts b/src/pages/ticketholderlist/components/manageCard/ManageCheckBox.styled.ts index 6c065124..8204392a 100644 --- a/src/pages/ticketholderlist/components/manageCard/ManageCheckBox.styled.ts +++ b/src/pages/ticketholderlist/components/manageCard/ManageCheckBox.styled.ts @@ -1,12 +1,17 @@ import styled from "styled-components"; -import { IcRefresh, IconCheckboxSelectedOn, IconCheckboxUnselectedOn } from "@assets/svgs"; +import { IconCheckboxSelectedOn, IconCheckboxUnselectedOn } from "@assets/svgs"; export const CheckBoxWrapper = styled.section` display: flex; `; export const CheckBox = styled.input` - display: none; + position: absolute; + + width: 1.8rem; + height: 1.8rem; + + opacity: 0; `; export const SelectIcon = styled(IconCheckboxSelectedOn)` diff --git a/src/pages/ticketholderlist/components/manageCard/ManageCheckBox.tsx b/src/pages/ticketholderlist/components/manageCard/ManageCheckBox.tsx index b2e22e99..1075b967 100644 --- a/src/pages/ticketholderlist/components/manageCard/ManageCheckBox.tsx +++ b/src/pages/ticketholderlist/components/manageCard/ManageCheckBox.tsx @@ -1,15 +1,28 @@ import * as S from "./ManageCheckBox.styled"; -export default function ManageCheckBox({}) { +interface ManageCheckBoxProps { + bookingId: number; + checkedBookingId: number[]; + handleBookingIdCheck: (bookingId: number) => void; +} + +export default function ManageCheckBox({ + bookingId, + checkedBookingId, + handleBookingIdCheck, +}: ManageCheckBoxProps) { + const isChecked = checkedBookingId.includes(bookingId); + return ( handleStatusCheck(status)} + checked={isChecked} + onChange={() => { + handleBookingIdCheck(bookingId); + }} /> - {/* {checkedStatusList.includes(status) ? : } */} - + {isChecked ? : } ); } diff --git a/src/pages/ticketholderlist/components/narrowDropDown/NarrowDropDown.tsx b/src/pages/ticketholderlist/components/narrowDropDown/NarrowDropDown.tsx new file mode 100644 index 00000000..b99ec93a --- /dev/null +++ b/src/pages/ticketholderlist/components/narrowDropDown/NarrowDropDown.tsx @@ -0,0 +1,156 @@ +import { ReactNode, useState } from "react"; +import * as S from "./NarrowDropDown.styled"; + +interface DropdownProps { + children: ReactNode; + totalScheduleCount: number; + schedule: number; + payment: + | "CHECKING_PAYMENT" + | "BOOKING_CONFIRMED" + | "BOOKING_CANCELLED" + | "REFUND_REQUESTED" + | "BOOKING_DELETED" + | undefined; + setSchedule?: (param: number) => void; + setPayment?: ( + param: + | "CHECKING_PAYMENT" + | "BOOKING_CONFIRMED" + | "BOOKING_CANCELLED" + | "REFUND_REQUESTED" + | "BOOKING_DELETED" + | undefined + ) => void; +} + +const NarrowDropDown = ({ + children, + totalScheduleCount, + schedule, + payment, + setSchedule, + setPayment, +}: DropdownProps) => { + const [showDropdown, setShowDropdown] = useState(false); + const [isOneChoosed, setIsOneChoosed] = useState(false); + + const handleToggle = () => { + setShowDropdown(!showDropdown); + }; + + const renderDropdownContent = (count: number, childrenNode: ReactNode) => { + const items = []; + const childrenString = childrenNode?.toString(); + if (childrenString === "모든 회차") { + const handleScheduleAll = () => { + setSchedule?.(0); + setIsOneChoosed(false); + setShowDropdown(false); + }; + items.push( + + 전체 + + ); + for (let i = 1; i <= count; i++) { + const handleSchedule = () => { + setSchedule?.(i); + setIsOneChoosed(true); + setShowDropdown(false); + }; + + items.push( + + {i}회차 + + ); + } + } else if (childrenString === "입금 상태") { + const handlePaymentUndefined = () => { + setPayment?.(undefined); + setIsOneChoosed(false); + setShowDropdown(false); + }; + + const handlePaymentFalse = () => { + setPayment?.("CHECKING_PAYMENT"); + setIsOneChoosed(true); + setShowDropdown(false); + }; + + const handlePaymentTrue = () => { + setPayment?.("BOOKING_CONFIRMED"); + setIsOneChoosed(true); + setShowDropdown(false); + }; + + items.push( + + 전체 + + ); + + items.push( + + + 미입금 + + + ); + items.push( + + + 입금완료 + + + ); + } + + return items; + }; + + //공연별로 총 회차 값으로 넘겨주기로 함. + //각 공연별 회차는, DB 테이블 구조에 따라 enum값으로 넘겨주기로 함 + //필터링은 회차 번호(scheduleNumber : FIRST, SECOND, THIRD), 입금 완료 여부는 paymentStatus에 따라 나뉠거임 + // + + let changedChildren; + if (children === "입금 상태" && payment !== undefined) { + changedChildren = payment === "BOOKING_CONFIRMED" ? "입금완료" : "미입금"; + } else if (children === "모든 회차" && schedule !== 0) { + changedChildren = `${schedule}회차`; + } + + return ( + + + + + {changedChildren === undefined ? children : changedChildren} + + + + + + + {renderDropdownContent(totalScheduleCount, children)} + + + + ); +}; + +export default NarrowDropDown; diff --git a/src/pages/ticketholderlist/components/nonExistent/NonExistent..tsx b/src/pages/ticketholderlist/components/nonExistent/NonExistent..tsx new file mode 100644 index 00000000..9c8a6ce7 --- /dev/null +++ b/src/pages/ticketholderlist/components/nonExistent/NonExistent..tsx @@ -0,0 +1,25 @@ +import React from "react"; +import * as S from "./NonExistent.styled"; + +interface NonExistentProps { + status: string; +} + +const NonExistent = ({ status }: NonExistentProps) => { + return ( + + + + + {status === "PAYMENT" + ? "미입금한 예매자가 없어요." + : status === "REFUND" + ? "환불 요청이 없어요." + : "아직 예매자가 없어요."} + + + + ); +}; + +export default NonExistent; diff --git a/src/pages/ticketholderlist/components/nonExistent/NonExistent.styled.ts b/src/pages/ticketholderlist/components/nonExistent/NonExistent.styled.ts new file mode 100644 index 00000000..8bb851ac --- /dev/null +++ b/src/pages/ticketholderlist/components/nonExistent/NonExistent.styled.ts @@ -0,0 +1,35 @@ +import styled from "styled-components"; +import { Empty } from "@assets/svgs"; + +export const NonExistentWrapper = styled.section` + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + width: 37.4rem; + height: 100%; + padding: 2.4rem; + + background-color: ${({ theme }) => theme.colors.gray_900}; +`; + +export const NonExistenLayout = styled.section` + top: 19.2rem; + display: flex; + flex-direction: column; + gap: 2.4rem; + align-items: center; + width: 32.6rem; + margin-top: 14.2rem; +`; + +export const EmptyImg = styled(Empty)` + width: 15rem; + height: 15rem; +`; + +export const EmptyText = styled.div` + color: ${({ theme }) => theme.colors.gray_300}; + ${({ theme }) => theme.fonts["body2-normal-medi"]}; + text-align: center; +`; diff --git a/src/pages/ticketholderlist/components/searchBar/SearchBar.styled.ts b/src/pages/ticketholderlist/components/searchBar/SearchBar.styled.ts index 4267d3e7..afd067f5 100644 --- a/src/pages/ticketholderlist/components/searchBar/SearchBar.styled.ts +++ b/src/pages/ticketholderlist/components/searchBar/SearchBar.styled.ts @@ -1,5 +1,5 @@ import styled from "styled-components"; -import { BtnFilter } from "@assets/svgs"; +import { BtnFilter, IconSearch } from "@assets/svgs"; export const SearchBarWrapper = styled.section` display: flex; @@ -7,28 +7,46 @@ export const SearchBarWrapper = styled.section` align-items: center; width: 32.7rem; `; - -export const SearchBar = styled.input` +export const SearchBarLayout = styled.section` + display: flex; flex-grow: 1; height: 4.8rem; - padding: 1.3rem; + padding: 1.2rem 1.3rem; - color: ${({ theme }) => theme.colors.white}; - ${({ theme }) => theme.fonts["body2-normal-medi"]}; background-color: ${({ theme }) => theme.colors.gray_800}; border: 0.1rem solid; border-color: ${({ theme }) => theme.colors.gray_700}; border-radius: 4rem; + + align-items: center; +`; + +export const SearchIcon = styled(IconSearch)` + width: 2.4rem; + height: 2.4rem; + + path { + fill: ${({ theme }) => theme.colors.gray_300}; + } `; -export const FilterBtn = styled(BtnFilter)` +export const SearchBar = styled.input` + height: 2.4rem; + + color: ${({ theme }) => theme.colors.white}; + ${({ theme }) => theme.fonts["body2-normal-medi"]}; + + background-color: ${({ theme }) => theme.colors.gray_800}; +`; + +export const FilterBtn = styled(BtnFilter)<{ $isFilter: boolean }>` width: 4.8rem; height: 4.8rem; margin-left: 1.2rem; background-color: ${({ theme }) => theme.colors.gray_800}; - border: 0.1rem solid; - border-color: ${({ theme }) => theme.colors.gray_700}; + border: 0.1rem solid + ${({ theme, $isFilter }) => ($isFilter ? theme.colors.white : theme.colors.gray_700)}; border-radius: 50%; `; diff --git a/src/pages/ticketholderlist/components/searchBar/SearchBar.tsx b/src/pages/ticketholderlist/components/searchBar/SearchBar.tsx index a3dab2eb..88f66bf2 100644 --- a/src/pages/ticketholderlist/components/searchBar/SearchBar.tsx +++ b/src/pages/ticketholderlist/components/searchBar/SearchBar.tsx @@ -3,15 +3,31 @@ import * as S from "./SearchBar.styled"; interface SearchBarProps { status: string; - handleFilter: () => void; + searchWord: string; + handleFilterSheet: () => void; + handleInputChange: (event: React.ChangeEvent) => void; + isFilter: boolean; } -// TODO: 필터 적용되었을 때 아웃라인 색상 적용 -> 기능 붙일 때 같이 하기 -const SearchBar = ({ handleFilter, status }: SearchBarProps) => { +const SearchBar = ({ + handleFilterSheet, + status, + handleInputChange, + searchWord, + isFilter, +}: SearchBarProps) => { return ( - - {status === "DEFAULT" && } + + + + + {status === "DEFAULT" && } ); }; diff --git a/src/pages/ticketholderlist/components/selectedChips/SelectedChips.tsx b/src/pages/ticketholderlist/components/selectedChips/SelectedChips.tsx index 2bae6b80..0e326c38 100644 --- a/src/pages/ticketholderlist/components/selectedChips/SelectedChips.tsx +++ b/src/pages/ticketholderlist/components/selectedChips/SelectedChips.tsx @@ -1,17 +1,39 @@ -import React from "react"; import * as S from "./SelectedChips.styled"; +import { FilterListType, PaymentType } from "@pages/ticketholderlist/TicketHolderList"; +import { convertingBookingStatus } from "@constants/convertingBookingStatus"; -const SelectedChips = () => { - // TODO: delteIcon에 삭제 기능 추가하기 - const handleClickDelete = () => {}; +interface SelectedChipsProps { + filterList: FilterListType; + handleFilter: (scheduleNumber: number[], bookingStatus: string[]) => void; +} + +const SelectedChips = ({ filterList, handleFilter }: SelectedChipsProps) => { + const handleClickDelete = (scheduleNumberToDelete: number, bookingStatusToDelete: string) => { + const updatedScheduleNumbers = filterList.scheduleNumber + .filter((item) => item !== scheduleNumberToDelete) + .map((item) => item); + + const updatedBookingStatuses = filterList.bookingStatus + .filter((item) => item !== bookingStatusToDelete) + .map((item) => item); + + handleFilter(updatedScheduleNumbers, updatedBookingStatuses); + }; return ( - // TODO : 선택된 필터 props로 받아서 map 돌리기 - - 1회차 - - + {filterList.scheduleNumber.map((filter, index) => ( + + {filter}회차 {/* scheduleNumber 사용 */} + handleClickDelete(filter, "")} /> + + ))} + {filterList.bookingStatus.map((filter, index) => ( + + {convertingBookingStatus(filter as PaymentType)} + handleClickDelete(0, filter)} /> + + ))} ); }; diff --git a/src/typings/api/schema/index.ts b/src/typings/api/schema/index.ts index 8efa350c..ce317b37 100644 --- a/src/typings/api/schema/index.ts +++ b/src/typings/api/schema/index.ts @@ -4,2494 +4,2900 @@ */ export interface paths { - "/api/tickets/update": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - get?: never; - /** - * 예매자 입금여부 수정 및 웹발신 API - * @description 메이커가 자신의 공연에 대한 예매자의 입금여부 정보를 수정한 뒤 예매확정 웹발신을 보내는 PUT API입니다. - */ - put: operations["updateTickets"]; - post?: never; - delete?: never; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; - "/api/tickets/refund": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - get?: never; - /** - * 예매자 환불처리 API - * @description 메이커가 자신의 공연에 대한 1명 이상의 예매자의 정보를 환불완료 상태로 변경하는 PUT API입니다. - */ - put: operations["refundTickets"]; - post?: never; - delete?: never; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; - "/api/tickets/delete": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - get?: never; - /** - * 예매자 삭제 API - * @description 메이커가 자신의 공연에 대한 1명 이상의 예매자의 정보를 삭제하는 PUT API입니다. - */ - put: operations["deleteTickets"]; - post?: never; - delete?: never; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; - "/api/performances": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - get?: never; - /** - * 공연 정보 수정 API - * @description 공연 정보를 수정하는 PUT API입니다. - */ - put: operations["updatePerformance"]; - /** - * 공연 생성 API - * @description 공연을 생성하는 POST API입니다. - */ - post: operations["createPerformance"]; - delete?: never; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; - "/api/admin/carousels": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - /** - * 캐러셀에 등록된 모든 공연 정보 조회 - * @description 관리자가 현재 캐러셀에 등록된 모든 공연 정보를 조회하는 GET API - */ - get: operations["readAllCarouselImages"]; - /** - * 캐러셀 이미지 수정 - * @description 관리자가 캐러셀 이미지를 수정하는 PUT API - */ - put: operations["processCarouselImages"]; - post?: never; - delete?: never; - 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/bookings/refund": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - get?: never; - put?: never; - post?: never; - delete?: never; - options?: never; - head?: never; - /** - * 유료공연 예매 환불 요청 API - * @description 유료공연 예매자가 환불 요청하는 PATCH API입니다. - */ - patch: operations["refundBookings"]; - trace?: never; - }; - "/api/bookings/cancel": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - get?: never; - put?: never; - post?: never; - delete?: never; - options?: never; - head?: never; - /** - * 무료공연/미입금 예매 취소 요청 API - * @description 무료공연/미입금 예매자가 취소 요청하는 PATCH API입니다. - */ - patch: operations["cancelBookings"]; - trace?: never; - }; - "/health-check": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - /** - * 헬스 체크 조회 API - * @description 서버 상태를 확인하기 위한 헬스 체크 API로, 정상적으로 동작할 경우 'OK' 문자열을 반환합니다. - */ - get: operations["healthcheck"]; - put?: never; - post?: never; - 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/tickets/{performanceId}": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - /** - * 예매자 목록 조회 API - * @description 메이커가 자신의 공연에 대한 예매자 목록을 조회하는 GET API입니다. - */ - get: operations["getTickets"]; - put?: never; - post?: never; - delete?: never; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; - "/api/tickets/search/{performanceId}": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - /** - * 예매자 목록 검색 API - * @description 메이커가 자신의 공연에 대한 예매자 목록을 검색하는 GET API입니다. - */ - get: operations["searchTickets"]; - 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; - }; - /** - * 티켓 구매 가능 여부 조회 API - * @description 티켓 구매 가능 여부를 확인하는 GET API입니다. - */ - get: operations["getTicketAvailability"]; - put?: never; - post?: never; - delete?: never; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; - "/api/performances/{performanceId}": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - /** - * 공연 수정 페이지 정보 조회 API - * @description 공연 정보를 조회하는 GET API입니다. - */ - get: operations["getPerformanceForEdit"]; - put?: never; - post?: never; - /** - * 공연 삭제 API - * @description 공연을 삭제하는 DELETE API입니다. - */ - delete: operations["deletePerformance"]; - 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; - }; - /** - * 전체 공연 및 홍보 목록 조회 - * @description 홈 화면에서 전체 공연 목록 및 홍보 목록을 조회하는 GET API - */ - get: operations["getHomePerformanceList"]; - put?: never; - post?: never; - delete?: never; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; - "/api/files/presigned-url": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - /** - * 공연 이미지 업로드 Presigned URL 발급 - * @description 공연 등록 시 업로드할 이미지에 대한 presigned URL을 발급 받는 GET API - */ - get: operations["generateAllPresignedUrls"]; - 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; - }; - "/api/admin/users": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - /** - * 유저 정보 조회 - * @description 관리자가 유저들의 정보를 조회하는 GET API - */ - get: operations["readAllUsers"]; - put?: never; - post?: never; - delete?: never; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; - "/api/admin/carousels/presigned-url": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - /** - * 캐러셀에 업로드 할 이미지에 대한 presigned URL 발급 - * @description 관리자가 캐러셀에 업로드 할 이미지에 대한 presigned URL을 발급 받는 GET API - */ - get: operations["createAllCarouselPresignedUrls"]; - put?: never; - post?: never; - delete?: never; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; - "/api/admin/banner/presigned-url": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - /** - * 배너에 업로드 할 이미지에 대한 presigned URL 발급 - * @description 관리자가 배너에 업로드 할 이미지에 대한 presigned URL을 발급 받는 GET API - */ - get: operations["createBannerPresignedUrl"]; - put?: never; - post?: never; - delete?: never; - options?: never; - head?: never; - patch?: never; - trace?: never; + "/api/tickets/update": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; }; + get?: never; + /** + * 예매자 입금여부 수정 및 웹발신 API + * @description 메이커가 자신의 공연에 대한 예매자의 입금여부 정보를 수정한 뒤 예매확정 웹발신을 보내는 PUT API입니다. + */ + put: operations["updateTickets"]; + post?: never; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; + "/api/tickets/refund": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + get?: never; + /** + * 예매자 환불처리 API + * @description 메이커가 자신의 공연에 대한 1명 이상의 예매자의 정보를 환불완료 상태로 변경하는 PUT API입니다. + */ + put: operations["refundTickets"]; + post?: never; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; + "/api/tickets/delete": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + get?: never; + /** + * 예매자 삭제 API + * @description 메이커가 자신의 공연에 대한 1명 이상의 예매자의 정보를 삭제하는 PUT API입니다. + */ + put: operations["deleteTickets"]; + post?: never; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; + "/api/performances": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + get?: never; + /** + * 공연 정보 수정 API + * @description 공연 정보를 수정하는 PUT API입니다. + */ + put: operations["updatePerformance"]; + /** + * 공연 생성 API + * @description 공연을 생성하는 POST API입니다. + */ + post: operations["createPerformance"]; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; + "/api/admin/carousels": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + /** + * 캐러셀에 등록된 모든 공연 정보 조회 + * @description 관리자가 현재 캐러셀에 등록된 모든 공연 정보를 조회하는 GET API + */ + get: operations["readAllCarouselImages"]; + /** + * 캐러셀 이미지 수정 + * @description 관리자가 캐러셀 이미지를 수정하는 PUT API + */ + put: operations["processCarouselImages"]; + post?: never; + delete?: never; + 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/bookings/refund": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + get?: never; + put?: never; + post?: never; + delete?: never; + options?: never; + head?: never; + /** + * 유료공연 예매 환불 요청 API + * @description 유료공연 예매자가 환불 요청하는 PATCH API입니다. + */ + patch: operations["refundBookings"]; + trace?: never; + }; + "/api/bookings/cancel": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + get?: never; + put?: never; + post?: never; + delete?: never; + options?: never; + head?: never; + /** + * 무료공연/미입금 예매 취소 요청 API + * @description 무료공연/미입금 예매자가 취소 요청하는 PATCH API입니다. + */ + patch: operations["cancelBookings"]; + trace?: never; + }; + "/health-check": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + /** + * 헬스 체크 조회 API + * @description 서버 상태를 확인하기 위한 헬스 체크 API로, 정상적으로 동작할 경우 'OK' 문자열을 반환합니다. + */ + get: operations["healthcheck"]; + put?: never; + post?: never; + 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/tickets/{performanceId}": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + /** + * 예매자 목록 조회 API + * @description 메이커가 자신의 공연에 대한 예매자 목록을 조회하는 GET API입니다. + */ + get: operations["getTickets"]; + put?: never; + post?: never; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; + "/api/tickets/search/{performanceId}": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + /** + * 예매자 목록 검색 API + * @description 메이커가 자신의 공연에 대한 예매자 목록을 검색하는 GET API입니다. + */ + get: operations["searchTickets"]; + 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; + }; + /** + * 티켓 구매 가능 여부 조회 API + * @description 티켓 구매 가능 여부를 확인하는 GET API입니다. + */ + get: operations["getTicketAvailability"]; + put?: never; + post?: never; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; + "/api/performances/{performanceId}": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + /** + * 공연 수정 페이지 정보 조회 API + * @description 공연 정보를 조회하는 GET API입니다. + */ + get: operations["getPerformanceForEdit"]; + put?: never; + post?: never; + /** + * 공연 삭제 API + * @description 공연을 삭제하는 DELETE API입니다. + */ + delete: operations["deletePerformance"]; + 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; + }; + /** + * 전체 공연 및 홍보 목록 조회 + * @description 홈 화면에서 전체 공연 목록 및 홍보 목록을 조회하는 GET API + */ + get: operations["getHomePerformanceList"]; + put?: never; + post?: never; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; + "/api/files/presigned-url": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + /** + * 공연 이미지 업로드 Presigned URL 발급 + * @description 공연 등록 시 업로드할 이미지에 대한 presigned URL을 발급 받는 GET API + */ + get: operations["generateAllPresignedUrls"]; + 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; + }; + "/api/admin/users": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + /** + * 유저 정보 조회 + * @description 관리자가 유저들의 정보를 조회하는 GET API + */ + get: operations["readAllUsers"]; + put?: never; + post?: never; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; + "/api/admin/carousels/presigned-url": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + /** + * 캐러셀에 업로드 할 이미지에 대한 presigned URL 발급 + * @description 관리자가 캐러셀에 업로드 할 이미지에 대한 presigned URL을 발급 받는 GET API + */ + get: operations["createAllCarouselPresignedUrls"]; + put?: never; + post?: never; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; + "/api/admin/banner/presigned-url": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + /** + * 배너에 업로드 할 이미지에 대한 presigned URL 발급 + * @description 관리자가 배너에 업로드 할 이미지에 대한 presigned URL을 발급 받는 GET API + */ + get: operations["createBannerPresignedUrl"]; + 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; - /** @enum {string} */ - bookingStatus?: "CHECKING_PAYMENT" | "BOOKING_CONFIRMED" | "BOOKING_CANCELLED" | "REFUND_REQUESTED" | "BOOKING_DELETED"; - scheduleNumber?: string; - }; - TicketUpdateRequest: { - /** Format: int64 */ - performanceId?: number; - performanceTitle?: string; - /** Format: int32 */ - totalScheduleCount?: number; - bookingList?: components["schemas"]["TicketUpdateDetail"][]; - }; - ErrorResponse: { - /** Format: int32 */ - status?: number; - message?: string; - }; - SuccessResponseVoid: { - /** Format: int32 */ - status?: number; - message?: string; - data?: Record; - }; - Booking: { - /** Format: int64 */ - bookingId?: number; - }; - TicketRefundRequest: { - /** Format: int64 */ - performanceId?: number; - bookingList?: components["schemas"]["Booking"][]; - }; - TicketDeleteRequest: { - /** Format: int64 */ - performanceId?: number; - bookingList?: components["schemas"]["Booking"][]; - }; - CastModifyRequest: { - /** Format: int64 */ - castId?: number; - castName?: string; - castRole?: string; - castPhoto?: string; - }; - PerformanceImageModifyRequest: { - /** Format: int64 */ - performanceImageId?: number; - performanceImage?: string; - }; - PerformanceModifyRequest: { - /** Format: int64 */ - performanceId?: number; - performanceTitle?: string; - /** @enum {string} */ - genre?: "BAND" | "PLAY" | "DANCE" | "ETC"; - /** Format: int32 */ - runningTime?: number; - performanceDescription?: string; - performanceAttentionNote?: string; - /** @enum {string} */ - bankName?: "NH_NONGHYUP" | "KAKAOBANK" | "KB_KOOKMIN" | "TOSSBANK" | "SHINHAN" | "WOORI" | "IBK_GIUP" | "HANA" | "SAEMAUL" | "BUSAN" | "IMBANK_DAEGU" | "SINHYEOP" | "WOOCHAEGUK" | "SCJEIL" | "SUHYEOP" | "NONE"; - accountNumber?: string; - accountHolder?: string; - posterImage?: string; - performanceTeamName?: string; - performanceVenue?: string; - roadAddressName?: string; - placeDetailAddress?: string; - latitude?: string; - longitude?: string; - performanceContact?: string; - performancePeriod?: string; - /** Format: int32 */ - totalScheduleCount?: number; - /** Format: int32 */ - ticketPrice?: number; - scheduleModifyRequests?: components["schemas"]["ScheduleModifyRequest"][]; - castModifyRequests?: components["schemas"]["CastModifyRequest"][]; - staffModifyRequests?: components["schemas"]["StaffModifyRequest"][]; - performanceImageModifyRequests?: components["schemas"]["PerformanceImageModifyRequest"][]; - }; - ScheduleModifyRequest: { - /** Format: int64 */ - scheduleId?: number; - /** Format: date-time */ - performanceDate?: string; - /** Format: int32 */ - totalTicketCount?: number; - }; - StaffModifyRequest: { - /** Format: int64 */ - staffId?: number; - staffName?: string; - staffRole?: string; - staffPhoto?: string; - }; - CastModifyResponse: { - /** Format: int64 */ - castId?: number; - castName?: string; - castRole?: string; - castPhoto?: string; - }; - PerformanceImageModifyResponse: { - /** Format: int64 */ - performanceImageId?: number; - performanceImage?: string; - }; - PerformanceModifyResponse: { - /** Format: int64 */ - userId?: number; - /** Format: int64 */ - performanceId?: number; - performanceTitle?: string; - /** @enum {string} */ - genre?: "BAND" | "PLAY" | "DANCE" | "ETC"; - /** Format: int32 */ - runningTime?: number; - performanceDescription?: string; - performanceAttentionNote?: string; - /** @enum {string} */ - bankName?: "NH_NONGHYUP" | "KAKAOBANK" | "KB_KOOKMIN" | "TOSSBANK" | "SHINHAN" | "WOORI" | "IBK_GIUP" | "HANA" | "SAEMAUL" | "BUSAN" | "IMBANK_DAEGU" | "SINHYEOP" | "WOOCHAEGUK" | "SCJEIL" | "SUHYEOP" | "NONE"; - accountNumber?: string; - accountHolder?: string; - posterImage?: string; - performanceTeamName?: string; - performanceVenue?: string; - roadAddressName?: string; - placeDetailAddress?: string; - latitude?: string; - longitude?: string; - performanceContact?: string; - performancePeriod?: string; - /** Format: int32 */ - ticketPrice?: number; - /** Format: int32 */ - totalScheduleCount?: number; - scheduleModifyResponses?: components["schemas"]["ScheduleModifyResponse"][]; - castModifyResponses?: components["schemas"]["CastModifyResponse"][]; - staffModifyResponses?: components["schemas"]["StaffModifyResponse"][]; - performanceImageModifyResponses?: components["schemas"]["PerformanceImageModifyResponse"][]; - }; - ScheduleModifyResponse: { - /** Format: int64 */ - scheduleId?: number; - /** Format: date-time */ - performanceDate?: string; - /** Format: int32 */ - totalTicketCount?: number; - /** Format: int32 */ - dueDate?: number; - /** @enum {string} */ - scheduleNumber?: "FIRST" | "SECOND" | "THIRD" | "FOURTH" | "FIFTH" | "SIXTH" | "SEVENTH" | "EIGHTH" | "NINTH" | "TENTH"; - }; - StaffModifyResponse: { - /** Format: int64 */ - staffId?: number; - staffName?: string; - staffRole?: string; - staffPhoto?: string; - }; - SuccessResponsePerformanceModifyResponse: { - /** Format: int32 */ - status?: number; - message?: string; - data?: components["schemas"]["PerformanceModifyResponse"]; - }; - CarouselHandleRequest: { - carousels?: (components["schemas"]["PromotionGenerateRequest"] | components["schemas"]["PromotionModifyRequest"])[]; - }; - PromotionGenerateRequest: { - type: "PromotionGenerateRequest"; - } & (Omit & { - /** @enum {string} */ - carouselNumber?: "ONE" | "TWO" | "THREE" | "FOUR" | "FIVE" | "SIX" | "SEVEN"; - newImageUrl?: string; - isExternal?: boolean; - redirectUrl?: string; - /** Format: int64 */ - performanceId?: number; - }); - PromotionHandleRequest: { - external?: boolean; - type: string; - }; - PromotionModifyRequest: { - type: "PromotionModifyRequest"; - } & (Omit & { - /** Format: int64 */ - promotionId?: number; - /** @enum {string} */ - carouselNumber?: "ONE" | "TWO" | "THREE" | "FOUR" | "FIVE" | "SIX" | "SEVEN"; - newImageUrl?: string; - isExternal?: boolean; - redirectUrl?: string; - /** Format: int64 */ - performanceId?: number; - }); - CarouselHandleAllResponse: { - modifiedPromotions?: components["schemas"]["PromotionResponse"][]; - }; - PromotionResponse: { - /** Format: int64 */ - promotionId?: number; - newImageUrl?: string; - isExternal?: boolean; - redirectUrl?: string; - carouselNumber?: string; - }; - SuccessResponseCarouselHandleAllResponse: { - /** Format: int32 */ - status?: number; - message?: string; - data?: components["schemas"]["CarouselHandleAllResponse"]; - }; - MemberLoginRequest: { - /** @enum {string} */ - socialType: "KAKAO"; - }; - LoginSuccessResponse: { - accessToken?: string; - refreshToken?: string; - nickname?: string; - role?: string; - }; - SuccessResponseLoginSuccessResponse: { - /** Format: int32 */ - status?: number; - message?: string; - data?: components["schemas"]["LoginSuccessResponse"]; - }; - CastRequest: { - castName?: string; - castRole?: string; - castPhoto?: string; - }; - PerformanceImageRequest: { - performanceImage?: string; - }; - PerformanceRequest: { - performanceTitle?: string; - /** @enum {string} */ - genre?: "BAND" | "PLAY" | "DANCE" | "ETC"; - /** Format: int32 */ - runningTime?: number; - performanceDescription?: string; - performanceAttentionNote?: string; - /** @enum {string} */ - bankName?: "NH_NONGHYUP" | "KAKAOBANK" | "KB_KOOKMIN" | "TOSSBANK" | "SHINHAN" | "WOORI" | "IBK_GIUP" | "HANA" | "SAEMAUL" | "BUSAN" | "IMBANK_DAEGU" | "SINHYEOP" | "WOOCHAEGUK" | "SCJEIL" | "SUHYEOP" | "NONE"; - accountNumber?: string; - accountHolder?: string; - posterImage?: string; - performanceTeamName?: string; - performanceVenue?: string; - roadAddressName?: string; - placeDetailAddress?: string; - latitude?: string; - longitude?: string; - performanceContact?: string; - performancePeriod?: string; - /** Format: int32 */ - ticketPrice?: number; - /** Format: int32 */ - totalScheduleCount?: number; - scheduleList?: components["schemas"]["ScheduleRequest"][]; - castList?: components["schemas"]["CastRequest"][]; - staffList?: components["schemas"]["StaffRequest"][]; - performanceImageList?: components["schemas"]["PerformanceImageRequest"][]; - }; - ScheduleRequest: { - /** Format: date-time */ - performanceDate?: string; - /** Format: int32 */ - totalTicketCount?: number; - /** @enum {string} */ - scheduleNumber?: "FIRST" | "SECOND" | "THIRD" | "FOURTH" | "FIFTH" | "SIXTH" | "SEVENTH" | "EIGHTH" | "NINTH" | "TENTH"; - }; - StaffRequest: { - staffName?: string; - staffRole?: string; - staffPhoto?: string; - }; - CastResponse: { - /** Format: int64 */ - castId?: number; - castName?: string; - castRole?: string; - castPhoto?: string; - }; - PerformanceImageResponse: { - /** Format: int64 */ - imageId?: number; - imageUrl?: string; - }; - PerformanceResponse: { - /** Format: int64 */ - userId?: number; - /** Format: int64 */ - performanceId?: number; - performanceTitle?: string; - /** @enum {string} */ - genre?: "BAND" | "PLAY" | "DANCE" | "ETC"; - /** Format: int32 */ - runningTime?: number; - performanceDescription?: string; - performanceAttentionNote?: string; - /** @enum {string} */ - bankName?: "NH_NONGHYUP" | "KAKAOBANK" | "KB_KOOKMIN" | "TOSSBANK" | "SHINHAN" | "WOORI" | "IBK_GIUP" | "HANA" | "SAEMAUL" | "BUSAN" | "IMBANK_DAEGU" | "SINHYEOP" | "WOOCHAEGUK" | "SCJEIL" | "SUHYEOP" | "NONE"; - accountNumber?: string; - accountHolder?: string; - posterImage?: string; - performanceTeamName?: string; - performanceVenue?: string; - roadAddressName?: string; - placeDetailAddress?: string; - latitude?: string; - longitude?: string; - performanceContact?: string; - performancePeriod?: string; - /** Format: int32 */ - ticketPrice?: number; - /** Format: int32 */ - totalScheduleCount?: number; - scheduleList?: components["schemas"]["ScheduleResponse"][]; - castList?: components["schemas"]["CastResponse"][]; - staffList?: components["schemas"]["StaffResponse"][]; - performanceImageList?: components["schemas"]["PerformanceImageResponse"][]; - }; - ScheduleResponse: { - /** Format: int64 */ - scheduleId?: number; - /** Format: date-time */ - performanceDate?: string; - /** Format: int32 */ - totalTicketCount?: number; - /** Format: int32 */ - dueDate?: number; - /** @enum {string} */ - scheduleNumber?: "FIRST" | "SECOND" | "THIRD" | "FOURTH" | "FIFTH" | "SIXTH" | "SEVENTH" | "EIGHTH" | "NINTH" | "TENTH"; - }; - StaffResponse: { - /** Format: int64 */ - staffId?: number; - staffName?: string; - staffRole?: string; - staffPhoto?: string; - }; - SuccessResponsePerformanceResponse: { - /** Format: int32 */ - status?: number; - message?: string; - data?: components["schemas"]["PerformanceResponse"]; - }; - MemberBookingRequest: { - /** Format: int64 */ - scheduleId?: number; - /** @enum {string} */ - scheduleNumber?: "FIRST" | "SECOND" | "THIRD" | "FOURTH" | "FIFTH" | "SIXTH" | "SEVENTH" | "EIGHTH" | "NINTH" | "TENTH"; - /** Format: int32 */ - purchaseTicketCount?: number; - bookerName?: string; - bookerPhoneNumber?: string; - /** @enum {string} */ - bookingStatus?: "CHECKING_PAYMENT" | "BOOKING_CONFIRMED" | "BOOKING_CANCELLED" | "REFUND_REQUESTED" | "BOOKING_DELETED"; - /** Format: int32 */ - totalPaymentAmount?: number; - }; - MemberBookingResponse: { - /** Format: int64 */ - bookingId?: number; - /** Format: int64 */ - scheduleId?: number; - /** Format: int64 */ - userId?: number; - /** Format: int32 */ - purchaseTicketCount?: number; - /** @enum {string} */ - scheduleNumber?: "FIRST" | "SECOND" | "THIRD" | "FOURTH" | "FIFTH" | "SIXTH" | "SEVENTH" | "EIGHTH" | "NINTH" | "TENTH"; - bookerName?: string; - bookerPhoneNumber?: string; - /** @enum {string} */ - bookingStatus?: "CHECKING_PAYMENT" | "BOOKING_CONFIRMED" | "BOOKING_CANCELLED" | "REFUND_REQUESTED" | "BOOKING_DELETED"; - /** @enum {string} */ - bankName?: "NH_NONGHYUP" | "KAKAOBANK" | "KB_KOOKMIN" | "TOSSBANK" | "SHINHAN" | "WOORI" | "IBK_GIUP" | "HANA" | "SAEMAUL" | "BUSAN" | "IMBANK_DAEGU" | "SINHYEOP" | "WOOCHAEGUK" | "SCJEIL" | "SUHYEOP" | "NONE"; - 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; - /** @enum {string} */ - scheduleNumber?: "FIRST" | "SECOND" | "THIRD" | "FOURTH" | "FIFTH" | "SIXTH" | "SEVENTH" | "EIGHTH" | "NINTH" | "TENTH"; - bookerName?: string; - bookerPhoneNumber?: string; - birthDate?: string; - password?: string; - /** Format: int32 */ - totalPaymentAmount?: number; - /** @enum {string} */ - bookingStatus?: "CHECKING_PAYMENT" | "BOOKING_CONFIRMED" | "BOOKING_CANCELLED" | "REFUND_REQUESTED" | "BOOKING_DELETED"; - }; - GuestBookingResponse: { - /** Format: int64 */ - bookingId?: number; - /** Format: int64 */ - scheduleId?: number; - /** Format: int64 */ - userId?: number; - /** Format: int32 */ - purchaseTicketCount?: number; - /** @enum {string} */ - scheduleNumber?: "FIRST" | "SECOND" | "THIRD" | "FOURTH" | "FIFTH" | "SIXTH" | "SEVENTH" | "EIGHTH" | "NINTH" | "TENTH"; - bookerName?: string; - bookerPhoneNumber?: string; - /** @enum {string} */ - bookingStatus?: "CHECKING_PAYMENT" | "BOOKING_CONFIRMED" | "BOOKING_CANCELLED" | "REFUND_REQUESTED" | "BOOKING_DELETED"; - /** @enum {string} */ - bankName?: "NH_NONGHYUP" | "KAKAOBANK" | "KB_KOOKMIN" | "TOSSBANK" | "SHINHAN" | "WOORI" | "IBK_GIUP" | "HANA" | "SAEMAUL" | "BUSAN" | "IMBANK_DAEGU" | "SINHYEOP" | "WOOCHAEGUK" | "SCJEIL" | "SUHYEOP" | "NONE"; - 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; - /** Format: int64 */ - performanceId?: number; - performanceTitle?: string; - /** Format: date-time */ - performanceDate?: string; - performanceVenue?: string; - /** Format: int32 */ - purchaseTicketCount?: number; - /** @enum {string} */ - scheduleNumber?: "FIRST" | "SECOND" | "THIRD" | "FOURTH" | "FIFTH" | "SIXTH" | "SEVENTH" | "EIGHTH" | "NINTH" | "TENTH"; - bookerName?: string; - performanceContact?: string; - /** @enum {string} */ - bankName?: "NH_NONGHYUP" | "KAKAOBANK" | "KB_KOOKMIN" | "TOSSBANK" | "SHINHAN" | "WOORI" | "IBK_GIUP" | "HANA" | "SAEMAUL" | "BUSAN" | "IMBANK_DAEGU" | "SINHYEOP" | "WOOCHAEGUK" | "SCJEIL" | "SUHYEOP" | "NONE"; - accountNumber?: string; - accountHolder?: string; - /** Format: int32 */ - dueDate?: number; - /** @enum {string} */ - bookingStatus?: "CHECKING_PAYMENT" | "BOOKING_CONFIRMED" | "BOOKING_CANCELLED" | "REFUND_REQUESTED" | "BOOKING_DELETED"; - /** Format: date-time */ - createdAt?: string; - posterImage?: string; - /** Format: int32 */ - totalPaymentAmount?: number; - }; - SuccessResponseListGuestBookingRetrieveResponse: { - /** Format: int32 */ - status?: number; - message?: string; - data?: components["schemas"]["GuestBookingRetrieveResponse"][]; - }; - BookingRefundRequest: { - /** Format: int64 */ - bookingId?: number; - /** @enum {string} */ - bankName?: "NH_NONGHYUP" | "KAKAOBANK" | "KB_KOOKMIN" | "TOSSBANK" | "SHINHAN" | "WOORI" | "IBK_GIUP" | "HANA" | "SAEMAUL" | "BUSAN" | "IMBANK_DAEGU" | "SINHYEOP" | "WOOCHAEGUK" | "SCJEIL" | "SUHYEOP" | "NONE"; - accountNumber?: string; - accountHolder?: string; - }; - BookingRefundResponse: { - /** Format: int64 */ - bookingId?: number; - /** @enum {string} */ - bookingStatus?: "CHECKING_PAYMENT" | "BOOKING_CONFIRMED" | "BOOKING_CANCELLED" | "REFUND_REQUESTED" | "BOOKING_DELETED"; - /** @enum {string} */ - bankName?: "NH_NONGHYUP" | "KAKAOBANK" | "KB_KOOKMIN" | "TOSSBANK" | "SHINHAN" | "WOORI" | "IBK_GIUP" | "HANA" | "SAEMAUL" | "BUSAN" | "IMBANK_DAEGU" | "SINHYEOP" | "WOOCHAEGUK" | "SCJEIL" | "SUHYEOP" | "NONE"; - accountNumber?: string; - accountHolder?: string; - }; - SuccessResponseBookingRefundResponse: { - /** Format: int32 */ - status?: number; - message?: string; - data?: components["schemas"]["BookingRefundResponse"]; - }; - BookingCancelRequest: { - /** Format: int64 */ - bookingId?: number; - }; - BookingCancelResponse: { - /** Format: int64 */ - bookingId?: number; - /** @enum {string} */ - bookingStatus?: "CHECKING_PAYMENT" | "BOOKING_CONFIRMED" | "BOOKING_CANCELLED" | "REFUND_REQUESTED" | "BOOKING_DELETED"; - }; - SuccessResponseBookingCancelResponse: { - /** Format: int32 */ - status?: number; - message?: string; - data?: components["schemas"]["BookingCancelResponse"]; - }; - 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; - /** @enum {string} */ - bookingStatus?: "CHECKING_PAYMENT" | "BOOKING_CONFIRMED" | "BOOKING_CANCELLED" | "REFUND_REQUESTED" | "BOOKING_DELETED"; - scheduleNumber?: string; - bankName?: string; - accountNumber?: string; - accountHolder?: string; - }; - TicketRetrieveResponse: { - performanceTitle?: string; - performanceTeamName?: string; - /** Format: int32 */ - totalScheduleCount?: number; - /** Format: int32 */ - totalPerformanceTicketCount?: number; - /** Format: int32 */ - totalPerformanceSoldTicketCount?: 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; - }; - PerformanceModifyDetailResponse: { - /** Format: int64 */ - userId?: number; - /** Format: int64 */ - performanceId?: number; - performanceTitle?: string; - /** @enum {string} */ - genre?: "BAND" | "PLAY" | "DANCE" | "ETC"; - /** Format: int32 */ - runningTime?: number; - performanceDescription?: string; - performanceAttentionNote?: string; - /** @enum {string} */ - bankName?: "NH_NONGHYUP" | "KAKAOBANK" | "KB_KOOKMIN" | "TOSSBANK" | "SHINHAN" | "WOORI" | "IBK_GIUP" | "HANA" | "SAEMAUL" | "BUSAN" | "IMBANK_DAEGU" | "SINHYEOP" | "WOOCHAEGUK" | "SCJEIL" | "SUHYEOP" | "NONE"; - accountNumber?: string; - accountHolder?: string; - posterImage?: string; - performanceTeamName?: string; - performanceVenue?: string; - roadAddressName?: string; - placeDetailAddress?: string; - latitude?: string; - longitude?: string; - performanceContact?: string; - performancePeriod?: string; - /** Format: int32 */ - ticketPrice?: number; - /** Format: int32 */ - totalScheduleCount?: number; - isBookerExist?: boolean; - scheduleList?: components["schemas"]["ScheduleResponse"][]; - castList?: components["schemas"]["CastResponse"][]; - staffList?: components["schemas"]["StaffResponse"][]; - performanceImageList?: components["schemas"]["PerformanceImageResponse"][]; - }; - SuccessResponsePerformanceModifyDetailResponse: { - /** Format: int32 */ - status?: number; - message?: string; - data?: components["schemas"]["PerformanceModifyDetailResponse"]; - }; - MakerPerformanceDetailResponse: { - /** Format: int64 */ - performanceId?: number; - genre?: string; - performanceTitle?: string; - posterImage?: string; - performancePeriod?: string; - /** Format: int32 */ - minDueDate?: number; - }; - MakerPerformanceResponse: { - /** Format: int64 */ - userId?: number; - performances?: components["schemas"]["MakerPerformanceDetailResponse"][]; - }; - SuccessResponseMakerPerformanceResponse: { - /** Format: int32 */ - status?: number; - message?: string; - data?: components["schemas"]["MakerPerformanceResponse"]; - }; - PerformanceDetailCastResponse: { - /** Format: int64 */ - castId?: number; - castName?: string; - castRole?: string; - castPhoto?: string; - }; - PerformanceDetailImageResponse: { - /** Format: int64 */ - performanceImageId?: number; - performanceImage?: string; - }; - PerformanceDetailResponse: { - /** Format: int64 */ - performanceId?: number; - performanceTitle?: string; - performancePeriod?: string; - scheduleList?: components["schemas"]["PerformanceDetailScheduleResponse"][]; - /** Format: int32 */ - ticketPrice?: number; - genre?: string; - posterImage?: string; - /** Format: int32 */ - runningTime?: number; - performanceVenue?: string; - roadAddressName?: string; - placeDetailAddress?: string; - latitude?: string; - longitude?: string; - performanceDescription?: string; - performanceAttentionNote?: string; - performanceContact?: string; - performanceTeamName?: string; - castList?: components["schemas"]["PerformanceDetailCastResponse"][]; - staffList?: components["schemas"]["PerformanceDetailStaffResponse"][]; - /** Format: int32 */ - minDueDate?: number; - performanceImageList?: components["schemas"]["PerformanceDetailImageResponse"][]; - }; - PerformanceDetailScheduleResponse: { - /** Format: int64 */ - scheduleId?: number; - /** Format: date-time */ - performanceDate?: string; - scheduleNumber?: string; - /** Format: int32 */ - dueDate?: number; - isBooking?: boolean; - }; - PerformanceDetailStaffResponse: { - /** 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"]["BookingPerformanceDetailScheduleResponse"][]; - /** Format: int32 */ - ticketPrice?: number; - genre?: string; - posterImage?: string; - performanceVenue?: string; - performanceTeamName?: string; - bankName?: string; - accountNumber?: string; - accountHolder?: string; - }; - BookingPerformanceDetailScheduleResponse: { - /** Format: int64 */ - scheduleId?: number; - /** Format: date-time */ - performanceDate?: string; - scheduleNumber?: string; - /** Format: int32 */ - availableTicketCount?: number; - isBooking?: boolean; - /** Format: int32 */ - dueDate?: number; - }; - SuccessResponseBookingPerformanceDetailResponse: { - /** Format: int32 */ - status?: number; - message?: string; - data?: components["schemas"]["BookingPerformanceDetailResponse"]; - }; - HomeFindAllResponse: { - promotionList?: components["schemas"]["HomePromotionDetail"][]; - performanceList?: components["schemas"]["HomePerformanceDetail"][]; - }; - 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; - redirectUrl?: string; - isExternal?: boolean; - /** @enum {string} */ - carouselNumber?: "ONE" | "TWO" | "THREE" | "FOUR" | "FIVE" | "SIX" | "SEVEN"; - }; - SuccessResponseHomeFindAllResponse: { - /** Format: int32 */ - status?: number; - message?: string; - data?: components["schemas"]["HomeFindAllResponse"]; - }; - PerformanceMakerPresignedUrlFindAllResponse: { - performanceMakerPresignedUrls?: { - [key: string]: { - [key: string]: string; - }; - }; - }; - SuccessResponsePerformanceMakerPresignedUrlFindAllResponse: { - /** Format: int32 */ - status?: number; - message?: string; - data?: components["schemas"]["PerformanceMakerPresignedUrlFindAllResponse"]; - }; - MemberBookingRetrieveResponse: { - /** Format: int64 */ - userId?: number; - /** Format: int64 */ - bookingId?: number; - /** Format: int64 */ - scheduleId?: number; - /** Format: int64 */ - performanceId?: number; - performanceTitle?: string; - /** Format: date-time */ - performanceDate?: string; - performanceVenue?: string; - /** Format: int32 */ - purchaseTicketCount?: number; - /** @enum {string} */ - scheduleNumber?: "FIRST" | "SECOND" | "THIRD" | "FOURTH" | "FIFTH" | "SIXTH" | "SEVENTH" | "EIGHTH" | "NINTH" | "TENTH"; - bookerName?: string; - performanceContact?: string; - /** @enum {string} */ - bankName?: "NH_NONGHYUP" | "KAKAOBANK" | "KB_KOOKMIN" | "TOSSBANK" | "SHINHAN" | "WOORI" | "IBK_GIUP" | "HANA" | "SAEMAUL" | "BUSAN" | "IMBANK_DAEGU" | "SINHYEOP" | "WOOCHAEGUK" | "SCJEIL" | "SUHYEOP" | "NONE"; - accountNumber?: string; - accountHolder?: string; - /** Format: int32 */ - dueDate?: number; - /** @enum {string} */ - bookingStatus?: "CHECKING_PAYMENT" | "BOOKING_CONFIRMED" | "BOOKING_CANCELLED" | "REFUND_REQUESTED" | "BOOKING_DELETED"; - /** Format: date-time */ - createdAt?: string; - posterImage?: string; - /** Format: int32 */ - totalPaymentAmount?: number; - }; - SuccessResponseListMemberBookingRetrieveResponse: { - /** Format: int32 */ - status?: number; - message?: string; - data?: components["schemas"]["MemberBookingRetrieveResponse"][]; - }; - SuccessResponseUserFindAllResponse: { - /** Format: int32 */ - status?: number; - message?: string; - data?: components["schemas"]["UserFindAllResponse"]; - }; - UserFindAllResponse: { - users?: components["schemas"]["UserFindResponse"][]; - }; - UserFindResponse: { - /** Format: int64 */ - id?: number; - role?: string; - }; - CarouselFindAllResponse: { - carousels?: components["schemas"]["CarouselFindResponse"][]; - }; - CarouselFindResponse: { - /** Format: int64 */ - promotionId?: number; - /** @enum {string} */ - carouselNumber?: "ONE" | "TWO" | "THREE" | "FOUR" | "FIVE" | "SIX" | "SEVEN"; - newImageUrl?: string; - isExternal?: boolean; - redirectUrl?: string; - /** Format: int64 */ - performanceId?: number; - }; - SuccessResponseCarouselFindAllResponse: { - /** Format: int32 */ - status?: number; - message?: string; - data?: components["schemas"]["CarouselFindAllResponse"]; - }; - CarouselPresignedUrlFindAllResponse: { - carouselPresignedUrls?: { - [key: string]: string; - }; - }; - SuccessResponseCarouselPresignedUrlFindAllResponse: { - /** Format: int32 */ - status?: number; - message?: string; - data?: components["schemas"]["CarouselPresignedUrlFindAllResponse"]; - }; - BannerPresignedUrlFindResponse: { - bannerPresignedUrl?: string; - }; - SuccessResponseBannerPresignedUrlFindResponse: { - /** Format: int32 */ - status?: number; - message?: string; - data?: components["schemas"]["BannerPresignedUrlFindResponse"]; - }; - }; - responses: never; - parameters: never; - requestBodies: never; - headers: never; - pathItems: never; + schemas: { + "com.beat.domain.booking.application.dto.TicketUpdateDetail": { + /** Format: int64 */ + bookingId?: number; + bookerName?: string; + bookerPhoneNumber?: string; + /** Format: int64 */ + scheduleId?: number; + /** Format: int32 */ + purchaseTicketCount?: number; + /** Format: date-time */ + createdAt?: string; + /** @enum {string} */ + bookingStatus?: + | "CHECKING_PAYMENT" + | "BOOKING_CONFIRMED" + | "BOOKING_CANCELLED" + | "REFUND_REQUESTED" + | "BOOKING_DELETED"; + scheduleNumber?: string; + }; + "com.beat.domain.booking.application.dto.TicketUpdateRequest": { + /** Format: int64 */ + performanceId?: number; + performanceTitle?: string; + /** Format: int32 */ + totalScheduleCount?: number; + bookingList?: components["schemas"]["com.beat.domain.booking.application.dto.TicketUpdateDetail"][]; + }; + ErrorResponse: { + /** Format: int32 */ + status?: number; + message?: string; + }; + SuccessResponseVoid: { + /** Format: int32 */ + status?: number; + message?: string; + data?: Record; + }; + Booking: { + /** Format: int64 */ + bookingId?: number; + }; + TicketRefundRequest: { + /** Format: int64 */ + performanceId?: number; + bookingList?: components["schemas"]["Booking"][]; + }; + TicketDeleteRequest: { + /** Format: int64 */ + performanceId?: number; + bookingList?: components["schemas"]["Booking"][]; + }; + CastModifyRequest: { + /** Format: int64 */ + performanceId?: number; + bookingList?: components["schemas"]["com.beat.domain.booking.application.dto.TicketRefundRequest$Booking"][]; + }; + "com.beat.domain.booking.application.dto.TicketRefundRequest$Booking": { + /** Format: int64 */ + bookingId?: number; + }; + "com.beat.domain.booking.application.dto.TicketDeleteRequest": { + /** Format: int64 */ + performanceId?: number; + bookingList?: components["schemas"]["com.beat.domain.booking.application.dto.TicketDeleteRequest$Booking"][]; + }; + "com.beat.domain.booking.application.dto.TicketDeleteRequest$Booking": { + /** Format: int64 */ + bookingId?: number; + }; + "com.beat.domain.performance.application.dto.modify.PerformanceModifyRequest": { + /** Format: int64 */ + performanceId?: number; + performanceTitle?: string; + /** @enum {string} */ + genre?: "BAND" | "PLAY" | "DANCE" | "ETC"; + /** Format: int32 */ + runningTime?: number; + performanceDescription?: string; + performanceAttentionNote?: string; + /** @enum {string} */ + bankName?: + | "NH_NONGHYUP" + | "KAKAOBANK" + | "KB_KOOKMIN" + | "TOSSBANK" + | "SHINHAN" + | "WOORI" + | "IBK_GIUP" + | "HANA" + | "SAEMAUL" + | "BUSAN" + | "IMBANK_DAEGU" + | "SINHYEOP" + | "WOOCHAEGUK" + | "SCJEIL" + | "SUHYEOP" + | "NONE"; + accountNumber?: string; + accountHolder?: string; + posterImage?: string; + performanceTeamName?: string; + performanceVenue?: string; + roadAddressName?: string; + placeDetailAddress?: string; + latitude?: string; + longitude?: string; + performanceContact?: string; + performancePeriod?: string; + /** Format: int32 */ + totalScheduleCount?: number; + /** Format: int32 */ + ticketPrice?: number; + scheduleModifyRequests?: components["schemas"]["com.beat.domain.performance.application.dto.modify.schedule.ScheduleModifyRequest"][]; + castModifyRequests?: components["schemas"]["com.beat.domain.performance.application.dto.modify.cast.CastModifyRequest"][]; + staffModifyRequests?: components["schemas"]["com.beat.domain.performance.application.dto.modify.staff.StaffModifyRequest"][]; + performanceImageModifyRequests?: components["schemas"]["com.beat.domain.performance.application.dto.modify.performanceImage.PerformanceImageModifyRequest"][]; + }; + "com.beat.domain.performance.application.dto.modify.cast.CastModifyRequest": { + /** Format: int64 */ + castId?: number; + castName?: string; + castRole?: string; + castPhoto?: string; + }; + "com.beat.domain.performance.application.dto.modify.performanceImage.PerformanceImageModifyRequest": { + /** Format: int64 */ + performanceImageId?: number; + performanceImage?: string; + }; + "com.beat.domain.performance.application.dto.modify.schedule.ScheduleModifyRequest": { + /** Format: int64 */ + scheduleId?: number; + /** Format: date-time */ + performanceDate?: string; + /** Format: int32 */ + totalTicketCount?: number; + }; + "com.beat.domain.performance.application.dto.modify.staff.StaffModifyRequest": { + /** Format: int64 */ + staffId?: number; + staffName?: string; + staffRole?: string; + staffPhoto?: string; + }; + "com.beat.domain.performance.application.dto.modify.PerformanceModifyResponse": { + /** Format: int64 */ + userId?: number; + /** Format: int64 */ + performanceId?: number; + performanceTitle?: string; + /** @enum {string} */ + genre?: "BAND" | "PLAY" | "DANCE" | "ETC"; + /** Format: int32 */ + runningTime?: number; + performanceDescription?: string; + performanceAttentionNote?: string; + /** @enum {string} */ + bankName?: + | "NH_NONGHYUP" + | "KAKAOBANK" + | "KB_KOOKMIN" + | "TOSSBANK" + | "SHINHAN" + | "WOORI" + | "IBK_GIUP" + | "HANA" + | "SAEMAUL" + | "BUSAN" + | "IMBANK_DAEGU" + | "SINHYEOP" + | "WOOCHAEGUK" + | "SCJEIL" + | "SUHYEOP" + | "NONE"; + accountNumber?: string; + accountHolder?: string; + posterImage?: string; + performanceTeamName?: string; + performanceVenue?: string; + roadAddressName?: string; + placeDetailAddress?: string; + latitude?: string; + longitude?: string; + performanceContact?: string; + performancePeriod?: string; + /** Format: int32 */ + ticketPrice?: number; + /** Format: int32 */ + totalScheduleCount?: number; + scheduleModifyResponses?: components["schemas"]["com.beat.domain.performance.application.dto.modify.schedule.ScheduleModifyResponse"][]; + castModifyResponses?: components["schemas"]["com.beat.domain.performance.application.dto.modify.cast.CastModifyResponse"][]; + staffModifyResponses?: components["schemas"]["com.beat.domain.performance.application.dto.modify.staff.StaffModifyResponse"][]; + performanceImageModifyResponses?: components["schemas"]["com.beat.domain.performance.application.dto.modify.performanceImage.PerformanceImageModifyResponse"][]; + }; + "com.beat.domain.performance.application.dto.modify.cast.CastModifyResponse": { + /** Format: int64 */ + castId?: number; + castName?: string; + castRole?: string; + castPhoto?: string; + }; + "com.beat.domain.performance.application.dto.modify.performanceImage.PerformanceImageModifyResponse": { + /** Format: int64 */ + performanceImageId?: number; + performanceImage?: string; + }; + "com.beat.domain.performance.application.dto.modify.schedule.ScheduleModifyResponse": { + /** Format: int64 */ + scheduleId?: number; + /** Format: date-time */ + performanceDate?: string; + /** Format: int32 */ + totalTicketCount?: number; + /** Format: int32 */ + dueDate?: number; + /** @enum {string} */ + scheduleNumber?: + | "FIRST" + | "SECOND" + | "THIRD" + | "FOURTH" + | "FIFTH" + | "SIXTH" + | "SEVENTH" + | "EIGHTH" + | "NINTH" + | "TENTH"; + }; + "com.beat.domain.performance.application.dto.modify.staff.StaffModifyResponse": { + /** Format: int64 */ + staffId?: number; + staffName?: string; + staffRole?: string; + staffPhoto?: string; + }; + "com.beat.global.common.dto.SuccessResponseCom.beat.domain.performance.application.dto.modify.PerformanceModifyResponse": { + /** Format: int32 */ + status?: number; + message?: string; + data?: components["schemas"]["com.beat.domain.performance.application.dto.modify.PerformanceModifyResponse"]; + }; + CarouselHandleRequest: { + carousels?: ( + | components["schemas"]["PromotionGenerateRequest"] + | components["schemas"]["PromotionModifyRequest"] + )[]; + }; + "com.beat.admin.application.dto.request.CarouselHandleRequest$PromotionGenerateRequest": { + type: "com.beat.admin.application.dto.request.CarouselHandleRequest$PromotionGenerateRequest"; + } & (Omit< + components["schemas"]["com.beat.admin.application.dto.request.PromotionHandleRequest"], + "type" + > & { + /** @enum {string} */ + carouselNumber?: "ONE" | "TWO" | "THREE" | "FOUR" | "FIVE" | "SIX" | "SEVEN"; + newImageUrl?: string; + isExternal?: boolean; + redirectUrl?: string; + /** Format: int64 */ + performanceId?: number; + }); + "com.beat.admin.application.dto.request.CarouselHandleRequest$PromotionModifyRequest": { + type: "com.beat.admin.application.dto.request.CarouselHandleRequest$PromotionModifyRequest"; + } & (Omit< + components["schemas"]["com.beat.admin.application.dto.request.PromotionHandleRequest"], + "type" + > & { + /** Format: int64 */ + promotionId?: number; + /** @enum {string} */ + carouselNumber?: "ONE" | "TWO" | "THREE" | "FOUR" | "FIVE" | "SIX" | "SEVEN"; + newImageUrl?: string; + isExternal?: boolean; + redirectUrl?: string; + /** Format: int64 */ + performanceId?: number; + }); + CarouselHandleAllResponse: { + modifiedPromotions?: components["schemas"]["PromotionResponse"][]; + }; + PromotionResponse: { + /** Format: int64 */ + promotionId?: number; + newImageUrl?: string; + isExternal?: boolean; + redirectUrl?: string; + carouselNumber?: string; + }; + SuccessResponseCarouselHandleAllResponse: { + /** Format: int32 */ + status?: number; + message?: string; + data?: components["schemas"]["CarouselHandleAllResponse"]; + }; + "com.beat.global.auth.client.dto.MemberLoginRequest": { + /** @enum {string} */ + socialType: "KAKAO"; + }; + "com.beat.domain.member.dto.LoginSuccessResponse": { + accessToken?: string; + refreshToken?: string; + nickname?: string; + role?: string; + }; + "com.beat.global.common.dto.SuccessResponseCom.beat.domain.member.dto.LoginSuccessResponse": { + /** Format: int32 */ + status?: number; + message?: string; + data?: components["schemas"]["com.beat.domain.member.dto.LoginSuccessResponse"]; + }; + "com.beat.domain.performance.application.dto.create.CastRequest": { + castName?: string; + castRole?: string; + castPhoto?: string; + }; + "com.beat.domain.performance.application.dto.create.PerformanceImageRequest": { + performanceImage?: string; + }; + "com.beat.domain.performance.application.dto.create.PerformanceRequest": { + performanceTitle?: string; + /** @enum {string} */ + genre?: "BAND" | "PLAY" | "DANCE" | "ETC"; + /** Format: int32 */ + runningTime?: number; + performanceDescription?: string; + performanceAttentionNote?: string; + /** @enum {string} */ + bankName?: + | "NH_NONGHYUP" + | "KAKAOBANK" + | "KB_KOOKMIN" + | "TOSSBANK" + | "SHINHAN" + | "WOORI" + | "IBK_GIUP" + | "HANA" + | "SAEMAUL" + | "BUSAN" + | "IMBANK_DAEGU" + | "SINHYEOP" + | "WOOCHAEGUK" + | "SCJEIL" + | "SUHYEOP" + | "NONE"; + accountNumber?: string; + accountHolder?: string; + posterImage?: string; + performanceTeamName?: string; + performanceVenue?: string; + roadAddressName?: string; + placeDetailAddress?: string; + latitude?: string; + longitude?: string; + performanceContact?: string; + performancePeriod?: string; + /** Format: int32 */ + ticketPrice?: number; + /** Format: int32 */ + totalScheduleCount?: number; + scheduleList?: components["schemas"]["com.beat.domain.performance.application.dto.create.ScheduleRequest"][]; + castList?: components["schemas"]["com.beat.domain.performance.application.dto.create.CastRequest"][]; + staffList?: components["schemas"]["com.beat.domain.performance.application.dto.create.StaffRequest"][]; + performanceImageList?: components["schemas"]["com.beat.domain.performance.application.dto.create.PerformanceImageRequest"][]; + }; + "com.beat.domain.performance.application.dto.create.ScheduleRequest": { + /** Format: date-time */ + performanceDate?: string; + /** Format: int32 */ + totalTicketCount?: number; + /** @enum {string} */ + scheduleNumber?: + | "FIRST" + | "SECOND" + | "THIRD" + | "FOURTH" + | "FIFTH" + | "SIXTH" + | "SEVENTH" + | "EIGHTH" + | "NINTH" + | "TENTH"; + }; + "com.beat.domain.performance.application.dto.create.StaffRequest": { + staffName?: string; + staffRole?: string; + staffPhoto?: string; + }; + "com.beat.domain.performance.application.dto.create.CastResponse": { + /** Format: int64 */ + castId?: number; + castName?: string; + castRole?: string; + castPhoto?: string; + }; + "com.beat.domain.performance.application.dto.create.PerformanceImageResponse": { + /** Format: int64 */ + imageId?: number; + imageUrl?: string; + }; + "com.beat.domain.performance.application.dto.create.PerformanceResponse": { + /** Format: int64 */ + userId?: number; + /** Format: int64 */ + performanceId?: number; + performanceTitle?: string; + /** @enum {string} */ + genre?: "BAND" | "PLAY" | "DANCE" | "ETC"; + /** Format: int32 */ + runningTime?: number; + performanceDescription?: string; + performanceAttentionNote?: string; + /** @enum {string} */ + bankName?: + | "NH_NONGHYUP" + | "KAKAOBANK" + | "KB_KOOKMIN" + | "TOSSBANK" + | "SHINHAN" + | "WOORI" + | "IBK_GIUP" + | "HANA" + | "SAEMAUL" + | "BUSAN" + | "IMBANK_DAEGU" + | "SINHYEOP" + | "WOOCHAEGUK" + | "SCJEIL" + | "SUHYEOP" + | "NONE"; + accountNumber?: string; + accountHolder?: string; + posterImage?: string; + performanceTeamName?: string; + performanceVenue?: string; + roadAddressName?: string; + placeDetailAddress?: string; + latitude?: string; + longitude?: string; + performanceContact?: string; + performancePeriod?: string; + /** Format: int32 */ + ticketPrice?: number; + /** Format: int32 */ + totalScheduleCount?: number; + scheduleList?: components["schemas"]["com.beat.domain.performance.application.dto.create.ScheduleResponse"][]; + castList?: components["schemas"]["com.beat.domain.performance.application.dto.create.CastResponse"][]; + staffList?: components["schemas"]["com.beat.domain.performance.application.dto.create.StaffResponse"][]; + performanceImageList?: components["schemas"]["com.beat.domain.performance.application.dto.create.PerformanceImageResponse"][]; + }; + "com.beat.domain.performance.application.dto.create.ScheduleResponse": { + /** Format: int64 */ + scheduleId?: number; + /** Format: date-time */ + performanceDate?: string; + /** Format: int32 */ + totalTicketCount?: number; + /** Format: int32 */ + dueDate?: number; + /** @enum {string} */ + scheduleNumber?: + | "FIRST" + | "SECOND" + | "THIRD" + | "FOURTH" + | "FIFTH" + | "SIXTH" + | "SEVENTH" + | "EIGHTH" + | "NINTH" + | "TENTH"; + }; + "com.beat.domain.performance.application.dto.create.StaffResponse": { + /** Format: int64 */ + staffId?: number; + staffName?: string; + staffRole?: string; + staffPhoto?: string; + }; + "com.beat.global.common.dto.SuccessResponseCom.beat.domain.performance.application.dto.create.PerformanceResponse": { + /** Format: int32 */ + status?: number; + message?: string; + data?: components["schemas"]["com.beat.domain.performance.application.dto.create.PerformanceResponse"]; + }; + "com.beat.domain.booking.application.dto.MemberBookingRequest": { + /** Format: int64 */ + scheduleId?: number; + /** @enum {string} */ + scheduleNumber?: + | "FIRST" + | "SECOND" + | "THIRD" + | "FOURTH" + | "FIFTH" + | "SIXTH" + | "SEVENTH" + | "EIGHTH" + | "NINTH" + | "TENTH"; + /** Format: int32 */ + purchaseTicketCount?: number; + bookerName?: string; + bookerPhoneNumber?: string; + /** @enum {string} */ + bookingStatus?: + | "CHECKING_PAYMENT" + | "BOOKING_CONFIRMED" + | "BOOKING_CANCELLED" + | "REFUND_REQUESTED" + | "BOOKING_DELETED"; + /** Format: int32 */ + totalPaymentAmount?: number; + }; + "com.beat.domain.booking.application.dto.MemberBookingResponse": { + /** Format: int64 */ + bookingId?: number; + /** Format: int64 */ + scheduleId?: number; + /** Format: int64 */ + userId?: number; + /** Format: int32 */ + purchaseTicketCount?: number; + /** @enum {string} */ + scheduleNumber?: + | "FIRST" + | "SECOND" + | "THIRD" + | "FOURTH" + | "FIFTH" + | "SIXTH" + | "SEVENTH" + | "EIGHTH" + | "NINTH" + | "TENTH"; + bookerName?: string; + bookerPhoneNumber?: string; + /** @enum {string} */ + bookingStatus?: + | "CHECKING_PAYMENT" + | "BOOKING_CONFIRMED" + | "BOOKING_CANCELLED" + | "REFUND_REQUESTED" + | "BOOKING_DELETED"; + /** @enum {string} */ + bankName?: + | "NH_NONGHYUP" + | "KAKAOBANK" + | "KB_KOOKMIN" + | "TOSSBANK" + | "SHINHAN" + | "WOORI" + | "IBK_GIUP" + | "HANA" + | "SAEMAUL" + | "BUSAN" + | "IMBANK_DAEGU" + | "SINHYEOP" + | "WOOCHAEGUK" + | "SCJEIL" + | "SUHYEOP" + | "NONE"; + accountNumber?: string; + /** Format: int32 */ + totalPaymentAmount?: number; + /** Format: date-time */ + createdAt?: string; + }; + "com.beat.global.common.dto.SuccessResponseCom.beat.domain.booking.application.dto.MemberBookingResponse": { + /** Format: int32 */ + status?: number; + message?: string; + data?: components["schemas"]["com.beat.domain.booking.application.dto.MemberBookingResponse"]; + }; + "com.beat.domain.booking.application.dto.GuestBookingRequest": { + /** Format: int64 */ + scheduleId?: number; + /** Format: int32 */ + purchaseTicketCount?: number; + /** @enum {string} */ + scheduleNumber?: + | "FIRST" + | "SECOND" + | "THIRD" + | "FOURTH" + | "FIFTH" + | "SIXTH" + | "SEVENTH" + | "EIGHTH" + | "NINTH" + | "TENTH"; + bookerName?: string; + bookerPhoneNumber?: string; + birthDate?: string; + password?: string; + /** Format: int32 */ + totalPaymentAmount?: number; + /** @enum {string} */ + bookingStatus?: + | "CHECKING_PAYMENT" + | "BOOKING_CONFIRMED" + | "BOOKING_CANCELLED" + | "REFUND_REQUESTED" + | "BOOKING_DELETED"; + }; + "com.beat.domain.booking.application.dto.GuestBookingResponse": { + /** Format: int64 */ + bookingId?: number; + /** Format: int64 */ + scheduleId?: number; + /** Format: int64 */ + userId?: number; + /** Format: int32 */ + purchaseTicketCount?: number; + /** @enum {string} */ + scheduleNumber?: + | "FIRST" + | "SECOND" + | "THIRD" + | "FOURTH" + | "FIFTH" + | "SIXTH" + | "SEVENTH" + | "EIGHTH" + | "NINTH" + | "TENTH"; + bookerName?: string; + bookerPhoneNumber?: string; + /** @enum {string} */ + bookingStatus?: + | "CHECKING_PAYMENT" + | "BOOKING_CONFIRMED" + | "BOOKING_CANCELLED" + | "REFUND_REQUESTED" + | "BOOKING_DELETED"; + /** @enum {string} */ + bankName?: + | "NH_NONGHYUP" + | "KAKAOBANK" + | "KB_KOOKMIN" + | "TOSSBANK" + | "SHINHAN" + | "WOORI" + | "IBK_GIUP" + | "HANA" + | "SAEMAUL" + | "BUSAN" + | "IMBANK_DAEGU" + | "SINHYEOP" + | "WOOCHAEGUK" + | "SCJEIL" + | "SUHYEOP" + | "NONE"; + accountNumber?: string; + /** Format: int32 */ + totalPaymentAmount?: number; + /** Format: date-time */ + createdAt?: string; + }; + "com.beat.global.common.dto.SuccessResponseCom.beat.domain.booking.application.dto.GuestBookingResponse": { + /** Format: int32 */ + status?: number; + message?: string; + data?: components["schemas"]["com.beat.domain.booking.application.dto.GuestBookingResponse"]; + }; + "com.beat.domain.booking.application.dto.GuestBookingRetrieveRequest": { + bookerName?: string; + birthDate?: string; + bookerPhoneNumber?: string; + password?: string; + }; + "com.beat.domain.booking.application.dto.GuestBookingRetrieveResponse": { + /** Format: int64 */ + bookingId?: number; + /** Format: int64 */ + scheduleId?: number; + /** Format: int64 */ + performanceId?: number; + performanceTitle?: string; + /** Format: date-time */ + performanceDate?: string; + performanceVenue?: string; + /** Format: int32 */ + purchaseTicketCount?: number; + /** @enum {string} */ + scheduleNumber?: + | "FIRST" + | "SECOND" + | "THIRD" + | "FOURTH" + | "FIFTH" + | "SIXTH" + | "SEVENTH" + | "EIGHTH" + | "NINTH" + | "TENTH"; + bookerName?: string; + performanceContact?: string; + /** @enum {string} */ + bankName?: + | "NH_NONGHYUP" + | "KAKAOBANK" + | "KB_KOOKMIN" + | "TOSSBANK" + | "SHINHAN" + | "WOORI" + | "IBK_GIUP" + | "HANA" + | "SAEMAUL" + | "BUSAN" + | "IMBANK_DAEGU" + | "SINHYEOP" + | "WOOCHAEGUK" + | "SCJEIL" + | "SUHYEOP" + | "NONE"; + accountNumber?: string; + accountHolder?: string; + /** Format: int32 */ + dueDate?: number; + /** @enum {string} */ + bookingStatus?: + | "CHECKING_PAYMENT" + | "BOOKING_CONFIRMED" + | "BOOKING_CANCELLED" + | "REFUND_REQUESTED" + | "BOOKING_DELETED"; + /** Format: date-time */ + createdAt?: string; + posterImage?: string; + /** Format: int32 */ + totalPaymentAmount?: number; + }; + "com.beat.global.common.dto.SuccessResponseJava.util.ListCom.beat.domain.booking.application.dto.GuestBookingRetrieveResponse": { + /** Format: int32 */ + status?: number; + message?: string; + data?: components["schemas"]["com.beat.domain.booking.application.dto.GuestBookingRetrieveResponse"][]; + }; + BookingRefundRequest: { + /** Format: int64 */ + bookingId?: number; + /** @enum {string} */ + bankName?: + | "NH_NONGHYUP" + | "KAKAOBANK" + | "KB_KOOKMIN" + | "TOSSBANK" + | "SHINHAN" + | "WOORI" + | "IBK_GIUP" + | "HANA" + | "SAEMAUL" + | "BUSAN" + | "IMBANK_DAEGU" + | "SINHYEOP" + | "WOOCHAEGUK" + | "SCJEIL" + | "SUHYEOP" + | "NONE"; + accountNumber?: string; + accountHolder?: string; + }; + BookingRefundResponse: { + /** Format: int64 */ + bookingId?: number; + /** @enum {string} */ + bookingStatus?: + | "CHECKING_PAYMENT" + | "BOOKING_CONFIRMED" + | "BOOKING_CANCELLED" + | "REFUND_REQUESTED" + | "BOOKING_DELETED"; + /** @enum {string} */ + bankName?: + | "NH_NONGHYUP" + | "KAKAOBANK" + | "KB_KOOKMIN" + | "TOSSBANK" + | "SHINHAN" + | "WOORI" + | "IBK_GIUP" + | "HANA" + | "SAEMAUL" + | "BUSAN" + | "IMBANK_DAEGU" + | "SINHYEOP" + | "WOOCHAEGUK" + | "SCJEIL" + | "SUHYEOP" + | "NONE"; + accountNumber?: string; + accountHolder?: string; + }; + SuccessResponseBookingRefundResponse: { + /** Format: int32 */ + status?: number; + message?: string; + data?: components["schemas"]["BookingRefundResponse"]; + }; + BookingCancelRequest: { + /** Format: int64 */ + bookingId?: number; + }; + BookingCancelResponse: { + /** Format: int64 */ + bookingId?: number; + /** @enum {string} */ + bookingStatus?: + | "CHECKING_PAYMENT" + | "BOOKING_CONFIRMED" + | "BOOKING_CANCELLED" + | "REFUND_REQUESTED" + | "BOOKING_DELETED"; + }; + SuccessResponseBookingCancelResponse: { + /** Format: int32 */ + status?: number; + message?: string; + data?: components["schemas"]["BookingCancelResponse"]; + }; + AccessTokenGetSuccess: { + accessToken?: string; + }; + "com.beat.global.common.dto.SuccessResponseCom.beat.domain.booking.application.dto.BookingRefundResponse": { + /** Format: int32 */ + status?: number; + message?: string; + data?: components["schemas"]["com.beat.domain.booking.application.dto.BookingRefundResponse"]; + }; + "com.beat.domain.booking.application.dto.BookingCancelRequest": { + /** Format: int64 */ + bookingId?: number; + }; + "com.beat.domain.booking.application.dto.BookingCancelResponse": { + /** Format: int64 */ + bookingId?: number; + /** @enum {string} */ + bookingStatus?: + | "CHECKING_PAYMENT" + | "BOOKING_CONFIRMED" + | "BOOKING_CANCELLED" + | "REFUND_REQUESTED" + | "BOOKING_DELETED"; + }; + "com.beat.global.common.dto.SuccessResponseCom.beat.domain.booking.application.dto.BookingCancelResponse": { + /** Format: int32 */ + status?: number; + message?: string; + data?: components["schemas"]["com.beat.domain.booking.application.dto.BookingCancelResponse"]; + }; + "com.beat.domain.member.dto.AccessTokenGetSuccess": { + accessToken?: string; + }; + "com.beat.global.common.dto.SuccessResponseCom.beat.domain.member.dto.AccessTokenGetSuccess": { + /** Format: int32 */ + status?: number; + message?: string; + data?: components["schemas"]["com.beat.domain.member.dto.AccessTokenGetSuccess"]; + }; + "com.beat.domain.booking.application.dto.TicketDetail": { + /** Format: int64 */ + bookingId?: number; + bookerName?: string; + bookerPhoneNumber?: string; + /** Format: int64 */ + scheduleId?: number; + /** Format: int32 */ + purchaseTicketCount?: number; + /** Format: date-time */ + createdAt?: string; + /** @enum {string} */ + bookingStatus?: + | "CHECKING_PAYMENT" + | "BOOKING_CONFIRMED" + | "BOOKING_CANCELLED" + | "REFUND_REQUESTED" + | "BOOKING_DELETED"; + scheduleNumber?: string; + bankName?: string; + accountNumber?: string; + accountHolder?: string; + }; + "com.beat.domain.booking.application.dto.TicketRetrieveResponse": { + performanceTitle?: string; + performanceTeamName?: string; + /** Format: int32 */ + totalScheduleCount?: number; + /** Format: int32 */ + totalPerformanceTicketCount?: number; + /** Format: int32 */ + totalPerformanceSoldTicketCount?: number; + bookingList?: components["schemas"]["TicketDetail"][]; + }; + "com.beat.global.common.dto.SuccessResponseCom.beat.domain.booking.application.dto.TicketRetrieveResponse": { + /** Format: int32 */ + status?: number; + message?: string; + data?: components["schemas"]["com.beat.domain.booking.application.dto.TicketRetrieveResponse"]; + }; + "com.beat.domain.schedule.application.dto.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; + }; + "com.beat.global.common.dto.SuccessResponseCom.beat.domain.schedule.application.dto.TicketAvailabilityResponse": { + /** Format: int32 */ + status?: number; + message?: string; + data?: components["schemas"]["com.beat.domain.schedule.application.dto.TicketAvailabilityResponse"]; + }; + "com.beat.domain.performance.application.dto.modify.PerformanceModifyDetailResponse": { + /** Format: int64 */ + userId?: number; + /** Format: int64 */ + performanceId?: number; + performanceTitle?: string; + /** @enum {string} */ + genre?: "BAND" | "PLAY" | "DANCE" | "ETC"; + /** Format: int32 */ + runningTime?: number; + performanceDescription?: string; + performanceAttentionNote?: string; + /** @enum {string} */ + bankName?: + | "NH_NONGHYUP" + | "KAKAOBANK" + | "KB_KOOKMIN" + | "TOSSBANK" + | "SHINHAN" + | "WOORI" + | "IBK_GIUP" + | "HANA" + | "SAEMAUL" + | "BUSAN" + | "IMBANK_DAEGU" + | "SINHYEOP" + | "WOOCHAEGUK" + | "SCJEIL" + | "SUHYEOP" + | "NONE"; + accountNumber?: string; + accountHolder?: string; + posterImage?: string; + performanceTeamName?: string; + performanceVenue?: string; + roadAddressName?: string; + placeDetailAddress?: string; + latitude?: string; + longitude?: string; + performanceContact?: string; + performancePeriod?: string; + /** Format: int32 */ + ticketPrice?: number; + /** Format: int32 */ + totalScheduleCount?: number; + isBookerExist?: boolean; + scheduleList?: components["schemas"]["com.beat.domain.performance.application.dto.create.ScheduleResponse"][]; + castList?: components["schemas"]["com.beat.domain.performance.application.dto.create.CastResponse"][]; + staffList?: components["schemas"]["com.beat.domain.performance.application.dto.create.StaffResponse"][]; + performanceImageList?: components["schemas"]["com.beat.domain.performance.application.dto.create.PerformanceImageResponse"][]; + }; + "com.beat.global.common.dto.SuccessResponseCom.beat.domain.performance.application.dto.modify.PerformanceModifyDetailResponse": { + /** Format: int32 */ + status?: number; + message?: string; + data?: components["schemas"]["com.beat.domain.performance.application.dto.modify.PerformanceModifyDetailResponse"]; + }; + "com.beat.domain.performance.application.dto.makerPerformance.MakerPerformanceDetailResponse": { + /** Format: int64 */ + performanceId?: number; + genre?: string; + performanceTitle?: string; + posterImage?: string; + performancePeriod?: string; + /** Format: int32 */ + minDueDate?: number; + }; + "com.beat.domain.performance.application.dto.makerPerformance.MakerPerformanceResponse": { + /** Format: int64 */ + userId?: number; + performances?: components["schemas"]["com.beat.domain.performance.application.dto.makerPerformance.MakerPerformanceDetailResponse"][]; + }; + "com.beat.global.common.dto.SuccessResponseCom.beat.domain.performance.application.dto.makerPerformance.MakerPerformanceResponse": { + /** Format: int32 */ + status?: number; + message?: string; + data?: components["schemas"]["com.beat.domain.performance.application.dto.makerPerformance.MakerPerformanceResponse"]; + }; + "com.beat.domain.performance.application.dto.performanceDetail.PerformanceDetailCastResponse": { + /** Format: int64 */ + castId?: number; + castName?: string; + castRole?: string; + castPhoto?: string; + }; + "com.beat.domain.performance.application.dto.performanceDetail.PerformanceDetailImageResponse": { + /** Format: int64 */ + performanceImageId?: number; + performanceImage?: string; + }; + "com.beat.domain.performance.application.dto.performanceDetail.PerformanceDetailResponse": { + /** Format: int64 */ + performanceId?: number; + performanceTitle?: string; + performancePeriod?: string; + scheduleList?: components["schemas"]["com.beat.domain.performance.application.dto.performanceDetail.PerformanceDetailScheduleResponse"][]; + /** Format: int32 */ + ticketPrice?: number; + genre?: string; + posterImage?: string; + /** Format: int32 */ + runningTime?: number; + performanceVenue?: string; + roadAddressName?: string; + placeDetailAddress?: string; + latitude?: string; + longitude?: string; + performanceDescription?: string; + performanceAttentionNote?: string; + performanceContact?: string; + performanceTeamName?: string; + castList?: components["schemas"]["com.beat.domain.performance.application.dto.performanceDetail.PerformanceDetailCastResponse"][]; + staffList?: components["schemas"]["com.beat.domain.performance.application.dto.performanceDetail.PerformanceDetailStaffResponse"][]; + /** Format: int32 */ + minDueDate?: number; + performanceImageList?: components["schemas"]["com.beat.domain.performance.application.dto.performanceDetail.PerformanceDetailImageResponse"][]; + }; + "com.beat.domain.performance.application.dto.performanceDetail.PerformanceDetailScheduleResponse": { + /** Format: int64 */ + scheduleId?: number; + /** Format: date-time */ + performanceDate?: string; + scheduleNumber?: string; + /** Format: int32 */ + dueDate?: number; + isBooking?: boolean; + }; + "com.beat.domain.performance.application.dto.performanceDetail.PerformanceDetailStaffResponse": { + /** Format: int64 */ + staffId?: number; + staffName?: string; + staffRole?: string; + staffPhoto?: string; + }; + "com.beat.global.common.dto.SuccessResponseCom.beat.domain.performance.application.dto.performanceDetail.PerformanceDetailResponse": { + /** Format: int32 */ + status?: number; + message?: string; + data?: components["schemas"]["com.beat.domain.performance.application.dto.performanceDetail.PerformanceDetailResponse"]; + }; + "com.beat.domain.performance.application.dto.bookingPerformanceDetail.BookingPerformanceDetailResponse": { + /** Format: int64 */ + performanceId?: number; + performanceTitle?: string; + performancePeriod?: string; + scheduleList?: components["schemas"]["com.beat.domain.performance.application.dto.bookingPerformanceDetail.BookingPerformanceDetailScheduleResponse"][]; + /** Format: int32 */ + ticketPrice?: number; + genre?: string; + posterImage?: string; + performanceVenue?: string; + performanceTeamName?: string; + bankName?: string; + accountNumber?: string; + accountHolder?: string; + }; + "com.beat.domain.performance.application.dto.bookingPerformanceDetail.BookingPerformanceDetailScheduleResponse": { + /** Format: int64 */ + scheduleId?: number; + /** Format: date-time */ + performanceDate?: string; + scheduleNumber?: string; + /** Format: int32 */ + availableTicketCount?: number; + isBooking?: boolean; + /** Format: int32 */ + dueDate?: number; + }; + "com.beat.global.common.dto.SuccessResponseCom.beat.domain.performance.application.dto.bookingPerformanceDetail.BookingPerformanceDetailResponse": { + /** Format: int32 */ + status?: number; + message?: string; + data?: components["schemas"]["com.beat.domain.performance.application.dto.bookingPerformanceDetail.BookingPerformanceDetailResponse"]; + }; + HomeFindAllResponse: { + promotionList?: components["schemas"]["HomePromotionDetail"][]; + performanceList?: components["schemas"]["HomePerformanceDetail"][]; + }; + HomePerformanceDetail: { + /** Format: int64 */ + performanceId?: number; + performanceTitle?: string; + performancePeriod?: string; + /** Format: int32 */ + ticketPrice?: number; + /** Format: int32 */ + dueDate?: number; + genre?: string; + posterImage?: string; + performanceVenue?: string; + }; + "com.beat.domain.performance.application.dto.home.HomePromotionDetail": { + /** Format: int64 */ + promotionId?: number; + promotionPhoto?: string; + /** Format: int64 */ + performanceId?: number; + redirectUrl?: string; + isExternal?: boolean; + /** @enum {string} */ + carouselNumber?: "ONE" | "TWO" | "THREE" | "FOUR" | "FIVE" | "SIX" | "SEVEN"; + }; + SuccessResponseHomeFindAllResponse: { + /** Format: int32 */ + status?: number; + message?: string; + data?: components["schemas"]["HomeFindAllResponse"]; + }; + PerformanceMakerPresignedUrlFindAllResponse: { + performanceMakerPresignedUrls?: { + [key: string]: { + [key: string]: string; + }; + }; + }; + SuccessResponsePerformanceMakerPresignedUrlFindAllResponse: { + /** Format: int32 */ + status?: number; + message?: string; + data?: components["schemas"]["PerformanceMakerPresignedUrlFindAllResponse"]; + }; + "com.beat.global.external.s3.application.dto.PerformanceMakerPresignedUrlFindAllResponse": { + performanceMakerPresignedUrls?: { + [key: string]: { + [key: string]: string; + }; + }; + }; + "com.beat.domain.booking.application.dto.MemberBookingRetrieveResponse": { + /** Format: int64 */ + userId?: number; + /** Format: int64 */ + bookingId?: number; + /** Format: int64 */ + scheduleId?: number; + /** Format: int64 */ + performanceId?: number; + performanceTitle?: string; + /** Format: date-time */ + performanceDate?: string; + performanceVenue?: string; + /** Format: int32 */ + purchaseTicketCount?: number; + /** @enum {string} */ + scheduleNumber?: + | "FIRST" + | "SECOND" + | "THIRD" + | "FOURTH" + | "FIFTH" + | "SIXTH" + | "SEVENTH" + | "EIGHTH" + | "NINTH" + | "TENTH"; + bookerName?: string; + performanceContact?: string; + /** @enum {string} */ + bankName?: + | "NH_NONGHYUP" + | "KAKAOBANK" + | "KB_KOOKMIN" + | "TOSSBANK" + | "SHINHAN" + | "WOORI" + | "IBK_GIUP" + | "HANA" + | "SAEMAUL" + | "BUSAN" + | "IMBANK_DAEGU" + | "SINHYEOP" + | "WOOCHAEGUK" + | "SCJEIL" + | "SUHYEOP" + | "NONE"; + accountNumber?: string; + accountHolder?: string; + /** Format: int32 */ + dueDate?: number; + /** @enum {string} */ + bookingStatus?: + | "CHECKING_PAYMENT" + | "BOOKING_CONFIRMED" + | "BOOKING_CANCELLED" + | "REFUND_REQUESTED" + | "BOOKING_DELETED"; + /** Format: date-time */ + createdAt?: string; + posterImage?: string; + /** Format: int32 */ + totalPaymentAmount?: number; + }; + "com.beat.global.common.dto.SuccessResponseJava.util.ListCom.beat.domain.booking.application.dto.MemberBookingRetrieveResponse": { + /** Format: int32 */ + status?: number; + message?: string; + data?: components["schemas"]["MemberBookingRetrieveResponse"][]; + }; + SuccessResponseUserFindAllResponse: { + /** Format: int32 */ + status?: number; + message?: string; + data?: components["schemas"]["UserFindAllResponse"]; + }; + UserFindAllResponse: { + users?: components["schemas"]["UserFindResponse"][]; + }; + UserFindResponse: { + /** Format: int64 */ + id?: number; + role?: string; + }; + CarouselFindAllResponse: { + carousels?: components["schemas"]["CarouselFindResponse"][]; + }; + CarouselFindResponse: { + /** Format: int64 */ + promotionId?: number; + /** @enum {string} */ + carouselNumber?: "ONE" | "TWO" | "THREE" | "FOUR" | "FIVE" | "SIX" | "SEVEN"; + newImageUrl?: string; + isExternal?: boolean; + redirectUrl?: string; + /** Format: int64 */ + performanceId?: number; + }; + SuccessResponseCarouselFindAllResponse: { + /** Format: int32 */ + status?: number; + message?: string; + data?: components["schemas"]["CarouselFindAllResponse"]; + }; + CarouselPresignedUrlFindAllResponse: { + carouselPresignedUrls?: { + [key: string]: string; + }; + }; + SuccessResponseCarouselPresignedUrlFindAllResponse: { + /** Format: int32 */ + status?: number; + message?: string; + data?: components["schemas"]["CarouselPresignedUrlFindAllResponse"]; + }; + BannerPresignedUrlFindResponse: { + bannerPresignedUrl?: string; + }; + SuccessResponseBannerPresignedUrlFindResponse: { + /** Format: int32 */ + status?: number; + message?: string; + data?: components["schemas"]["BannerPresignedUrlFindResponse"]; + }; + }; + responses: never; + parameters: never; + requestBodies: never; + headers: never; + pathItems: never; } export type $defs = Record; export interface operations { - updateTickets: { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - requestBody: { - content: { - "application/json": components["schemas"]["TicketUpdateRequest"]; - }; - }; - responses: { - /** @description 예매자 입금여부 수정 성공 */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["SuccessResponseVoid"]; - }; - }; - /** @description 이미 결제가 완료된 티켓의 상태는 변경할 수 없습니다. */ - 400: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["ErrorResponse"]; - }; - }; - /** @description 공연 정보를 찾을 수 없습니다. */ - 404: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["ErrorResponse"]; - }; - }; - }; - }; - refundTickets: { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - requestBody: { - content: { - "application/json": components["schemas"]["TicketRefundRequest"]; - }; - }; - responses: { - /** @description 예매자 환불처리 성공 */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["SuccessResponseVoid"]; - }; - }; - /** @description 해당 예매 내역을 찾을 수 없습니다. */ - 404: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["ErrorResponse"]; - }; - }; - }; - }; - deleteTickets: { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - requestBody: { - content: { - "application/json": components["schemas"]["TicketDeleteRequest"]; - }; - }; - responses: { - /** @description 예매자 삭제 성공 */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["SuccessResponseVoid"]; - }; - }; - /** @description 해당 예매 내역을 찾을 수 없습니다. */ - 404: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["ErrorResponse"]; - }; - }; - }; - }; - updatePerformance: { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - requestBody: { - content: { - "application/json": components["schemas"]["PerformanceModifyRequest"]; - }; - }; - responses: { - /** @description 공연 정보 수정 성공 */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["SuccessResponsePerformanceModifyResponse"]; - }; - }; - /** @description 예매자가 존재하여 가격을 수정할 수 없습니다. */ - 400: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["ErrorResponse"]; - }; - }; - /** @description 해당 공연의 소유자가 아닙니다. */ - 403: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["ErrorResponse"]; - }; - }; - /** @description 공연 정보를 찾을 수 없습니다. */ - 404: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["ErrorResponse"]; - }; - }; - }; - }; - createPerformance: { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - requestBody: { - content: { - "application/json": components["schemas"]["PerformanceRequest"]; - }; - }; - responses: { - /** @description 공연이 성공적으로 생성되었습니다. */ - 201: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["SuccessResponsePerformanceResponse"]; - }; - }; - /** @description 필수 데이터가 누락되었습니다. */ - 400: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["ErrorResponse"]; - }; - }; - /** @description 공연 정보를 찾을 수 없습니다. */ - 404: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["ErrorResponse"]; - }; - }; - }; - }; - readAllCarouselImages: { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - requestBody?: never; - responses: { - /** @description 관리자 권한으로 현재 캐러셀에 등록된 모든 공연 조회에 성공하였습니다. */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["SuccessResponseCarouselFindAllResponse"]; - }; - }; - /** @description 회원이 없습니다. */ - 404: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["ErrorResponse"]; - }; - }; - }; - }; - processCarouselImages: { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - requestBody: { - content: { - "application/json": components["schemas"]["CarouselHandleRequest"]; - }; - }; - responses: { - /** @description 캐러셀 이미지 수정 성공 */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["SuccessResponseCarouselHandleAllResponse"]; - }; - }; - /** @description 해당 홍보 정보를 찾을 수 없습니다. */ - 404: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["ErrorResponse"]; - }; - }; - }; - }; - signUp: { - parameters: { - query: { - authorizationCode: string; - }; - header?: never; - path?: never; - cookie?: never; - }; - requestBody: { - content: { - "application/json": components["schemas"]["MemberLoginRequest"]; - }; - }; - responses: { - /** @description 로그인 또는 회원가입 성공 */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["SuccessResponseLoginSuccessResponse"]; - }; - }; - /** @description 로그인 요청이 유효하지 않습니다. */ - 400: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["ErrorResponse"]; - }; - }; - /** @description 회원 정보를 찾을 수 없습니다. */ - 404: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["ErrorResponse"]; - }; - }; - }; - }; - signOut: { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - requestBody?: never; - responses: { - /** @description 로그아웃 성공 */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["SuccessResponseVoid"]; - }; - }; - /** @description 회원 정보를 찾을 수 없습니다. */ - 404: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["ErrorResponse"]; - }; - }; - }; - }; - createMemberBooking: { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - requestBody: { - content: { - "application/json": components["schemas"]["MemberBookingRequest"]; - }; - }; - responses: { - /** @description 회원 예매가 성공적으로 완료되었습니다. */ - 201: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["SuccessResponseMemberBookingResponse"]; - }; - }; - /** @description 잘못된 데이터 형식입니다. */ - 400: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["ErrorResponse"]; - }; - }; - /** @description 회원 정보를 찾을 수 없습니다. */ - 404: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["ErrorResponse"]; - }; - }; - }; - }; - createGuestBookings: { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - requestBody: { - content: { - "application/json": components["schemas"]["GuestBookingRequest"]; - }; - }; - responses: { - /** @description 비회원 예매가 성공적으로 완료되었습니다. */ - 201: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["SuccessResponseGuestBookingResponse"]; - }; - }; - /** @description 잘못된 데이터 형식입니다. */ - 400: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["ErrorResponse"]; - }; - }; - /** @description 공연 정보를 찾을 수 없습니다. */ - 404: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["ErrorResponse"]; - }; - }; - }; - }; - getGuestBookings: { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - requestBody: { - content: { - "application/json": components["schemas"]["GuestBookingRetrieveRequest"]; - }; - }; - responses: { - /** @description 비회원 예매 조회가 성공적으로 완료되었습니다. */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["SuccessResponseListGuestBookingRetrieveResponse"]; - }; - }; - /** @description 입력하신 정보와 일치하는 예매 내역이 없습니다. 확인 후 다시 조회해주세요. */ - 404: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["ErrorResponse"]; - }; - }; - }; - }; - refundBookings: { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - requestBody: { - content: { - "application/json": components["schemas"]["BookingRefundRequest"]; - }; - }; - responses: { - /** @description 유료공연 예매 환불 요청이 성공적으로 완료되었습니다. */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["SuccessResponseBookingRefundResponse"]; - }; - }; - /** @description 입력하신 정보와 일치하는 예매 내역이 없습니다. 확인 후 다시 조회해주세요. */ - 404: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["ErrorResponse"]; - }; - }; - }; - }; - cancelBookings: { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - requestBody: { - content: { - "application/json": components["schemas"]["BookingCancelRequest"]; - }; - }; - responses: { - /** @description 무료공연/미입금 예매 취소 요청이 성공적으로 완료되었습니다. */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["SuccessResponseBookingCancelResponse"]; - }; - }; - /** @description 입력하신 정보와 일치하는 예매 내역이 없습니다. 확인 후 다시 조회해주세요. */ - 404: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["ErrorResponse"]; - }; - }; - }; - }; - healthcheck: { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - requestBody?: never; - responses: { - /** @description 서버가 정상적으로 동작 중입니다. */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": string; - }; - }; - }; - }; - refreshToken: { - parameters: { - query: { - refreshToken: string; - }; - header?: never; - path?: never; - cookie?: never; - }; - requestBody?: never; - responses: { - /** @description access token 재발급 성공 */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["SuccessResponseAccessTokenGetSuccess"]; - }; - }; - /** @description 유효하지 않은 토큰입니다. */ - 400: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["ErrorResponse"]; - }; - }; - }; - }; - getTickets: { - parameters: { - query?: { - scheduleNumber?: "FIRST" | "SECOND" | "THIRD" | "FOURTH" | "FIFTH" | "SIXTH" | "SEVENTH" | "EIGHTH" | "NINTH" | "TENTH"; - bookingStatus?: "CHECKING_PAYMENT" | "BOOKING_CONFIRMED" | "BOOKING_CANCELLED" | "REFUND_REQUESTED" | "BOOKING_DELETED"; - }; - header?: never; - path: { - performanceId: number; - }; - cookie?: never; - }; - requestBody?: never; - responses: { - /** @description 예매자 목록 조회 성공 */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["SuccessResponseTicketRetrieveResponse"]; - }; - }; - /** @description 입력하신 정보와 일치하는 예매자 목록이 없습니다. */ - 404: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["ErrorResponse"]; - }; - }; - }; - }; - searchTickets: { - parameters: { - query: { - searchWord: string; - scheduleNumber?: "FIRST" | "SECOND" | "THIRD" | "FOURTH" | "FIFTH" | "SIXTH" | "SEVENTH" | "EIGHTH" | "NINTH" | "TENTH"; - bookingStatus?: "CHECKING_PAYMENT" | "BOOKING_CONFIRMED" | "BOOKING_CANCELLED" | "REFUND_REQUESTED" | "BOOKING_DELETED"; - }; - header?: never; - path: { - performanceId: number; - }; - cookie?: never; - }; - requestBody?: never; - responses: { - /** @description 예매자 목록 검색 성공 */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["SuccessResponseTicketRetrieveResponse"]; - }; - }; - /** @description 입력하신 정보와 일치하는 예매자 목록이 없습니다. */ - 404: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["ErrorResponse"]; - }; - }; - }; - }; - getTicketAvailability: { - parameters: { - query: { - purchaseTicketCount: number; - }; - header?: never; - path: { - scheduleId: number; - }; - cookie?: never; - }; - requestBody?: never; - responses: { - /** @description 티켓 수량 조회가 성공적으로 완료되었습니다. */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["SuccessResponseTicketAvailabilityResponse"]; - }; - }; - /** @description 잘못된 데이터 형식입니다. */ - 400: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["ErrorResponse"]; - }; - }; - /** @description 회차 정보를 찾을 수 없습니다. */ - 404: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["ErrorResponse"]; - }; - }; - /** @description 요청한 티켓 수량이 잔여 티켓 수를 초과했습니다. */ - 409: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["ErrorResponse"]; - }; - }; - }; - }; - getPerformanceForEdit: { - parameters: { - query?: never; - header?: never; - path: { - performanceId: number; - }; - cookie?: never; - }; - requestBody?: never; - responses: { - /** @description 공연 수정 페이지 정보 조회 성공 */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["SuccessResponsePerformanceModifyDetailResponse"]; - }; - }; - /** @description 공연 정보를 찾을 수 없습니다. */ - 404: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["ErrorResponse"]; - }; - }; - }; - }; - deletePerformance: { - parameters: { - query?: never; - header?: never; - path: { - performanceId: number; - }; - cookie?: never; - }; - requestBody?: never; - responses: { - /** @description 공연 삭제 성공 */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["SuccessResponseVoid"]; - }; - }; - /** @description 공연의 소유자가 아니거나 예매자가 있어 삭제할 수 없습니다. */ - 403: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["ErrorResponse"]; - }; - }; - /** @description 공연 정보를 찾을 수 없습니다. */ - 404: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["ErrorResponse"]; - }; - }; - }; - }; - getUserPerformances: { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - requestBody?: never; - responses: { - /** @description 회원이 등록한 공연 목록 조회 성공 */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["SuccessResponseMakerPerformanceResponse"]; - }; - }; - /** @description 회원 정보를 찾을 수 없습니다. */ - 404: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["ErrorResponse"]; - }; - }; - }; - }; - getPerformanceDetail: { - parameters: { - query?: never; - header?: never; - path: { - performanceId: number; - }; - cookie?: never; - }; - requestBody?: never; - responses: { - /** @description 공연 상세정보 조회 성공 */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["SuccessResponsePerformanceDetailResponse"]; - }; - }; - /** @description 공연 정보를 찾을 수 없습니다. */ - 404: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["ErrorResponse"]; - }; - }; - }; - }; - getBookingPerformanceDetail: { - parameters: { - query?: never; - header?: never; - path: { - performanceId: number; - }; - cookie?: never; - }; - requestBody?: never; - responses: { - /** @description 예매하기 관련 공연 정보 조회 성공 */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["SuccessResponseBookingPerformanceDetailResponse"]; - }; - }; - /** @description 공연 정보를 찾을 수 없습니다. */ - 404: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["ErrorResponse"]; - }; - }; - }; - }; - getHomePerformanceList: { - parameters: { - query?: { - genre?: "BAND" | "PLAY" | "DANCE" | "ETC"; - }; - header?: never; - path?: never; - cookie?: never; - }; - requestBody?: never; - responses: { - /** @description 홈 화면 공연 목록 조회가 성공적으로 완료되었습니다. */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["SuccessResponseHomeFindAllResponse"]; - }; - }; - }; - }; - generateAllPresignedUrls: { - parameters: { - query: { - posterImage: string; - castImages?: string[]; - staffImages?: string[]; - performanceImages?: string[]; - }; - header?: never; - path?: never; - cookie?: never; - }; - requestBody?: never; - responses: { - /** @description 공연 메이커를 위한 Presigned URL 발급 성공. */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["SuccessResponsePerformanceMakerPresignedUrlFindAllResponse"]; - }; - }; - /** @description S3 PreSigned url을 받아오기에 실패했습니다. */ - 500: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["ErrorResponse"]; - }; - }; - }; - }; - getMemberBookings: { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - requestBody?: never; - responses: { - /** @description 회원 예매 조회가 성공적으로 완료되었습니다. */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["SuccessResponseListMemberBookingRetrieveResponse"]; - }; - }; - /** @description 입력하신 정보와 일치하는 예매 내역이 없습니다. 확인 후 다시 조회해주세요. */ - 404: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["ErrorResponse"]; - }; - }; - }; - }; - readAllUsers: { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - requestBody?: never; - responses: { - /** @description 관리자 권한으로 모든 유저 조회에 성공하였습니다. */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["SuccessResponseUserFindAllResponse"]; - }; - }; - /** @description 회원이 없습니다 */ - 404: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["ErrorResponse"]; - }; - }; - }; - }; - createAllCarouselPresignedUrls: { - parameters: { - query: { - carouselImages: string[]; - }; - header?: never; - path?: never; - cookie?: never; - }; - requestBody?: never; - responses: { - /** @description 캐러셀 Presigned URL 발급 성공 */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["SuccessResponseCarouselPresignedUrlFindAllResponse"]; - }; - }; - /** @description 회원이 없습니다. */ - 404: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["ErrorResponse"]; - }; - }; - }; - }; - createBannerPresignedUrl: { - parameters: { - query: { - bannerImage: string; - }; - header?: never; - path?: never; - cookie?: never; - }; - requestBody?: never; - responses: { - /** @description 배너 Presigned URL 발급 성공 */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["SuccessResponseBannerPresignedUrlFindResponse"]; - }; - }; - /** @description 회원이 없습니다. */ - 404: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["ErrorResponse"]; - }; - }; + updateTickets: { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + requestBody: { + content: { + "application/json": components["schemas"]["com.beat.domain.booking.application.dto.TicketUpdateRequest"]; + }; + }; + responses: { + /** @description 예매자 입금여부 수정 성공 */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "*/*": components["schemas"]["com.beat.global.common.dto.SuccessResponseJava.lang.Void"]; + }; + }; + /** @description 이미 결제가 완료된 티켓의 상태는 변경할 수 없습니다. */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + "*/*": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description 공연 정보를 찾을 수 없습니다. */ + 404: { + headers: { + [name: string]: unknown; + }; + content: { + "*/*": components["schemas"]["ErrorResponse"]; + }; + }; + }; + }; + refundTickets: { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + requestBody: { + content: { + "application/json": components["schemas"]["TicketRefundRequest"]; + }; + }; + responses: { + /** @description 예매자 환불처리 성공 */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "*/*": components["schemas"]["com.beat.global.common.dto.SuccessResponseJava.lang.Void"]; + }; + }; + /** @description 해당 예매 내역을 찾을 수 없습니다. */ + 404: { + headers: { + [name: string]: unknown; + }; + content: { + "*/*": components["schemas"]["ErrorResponse"]; + }; + }; + }; + }; + deleteTickets: { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + requestBody: { + content: { + "application/json": components["schemas"]["TicketDeleteRequest"]; + }; + }; + responses: { + /** @description 예매자 삭제 성공 */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "*/*": components["schemas"]["SuccessResponseVoid"]; + }; + }; + /** @description 해당 예매 내역을 찾을 수 없습니다. */ + 404: { + headers: { + [name: string]: unknown; }; + content: { + "*/*": components["schemas"]["ErrorResponse"]; + }; + }; + }; + }; + updatePerformance: { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + requestBody: { + content: { + "application/json": components["schemas"]["PerformanceModifyRequest"]; + }; + }; + responses: { + /** @description 공연 정보 수정 성공 */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "*/*": components["schemas"]["com.beat.global.common.dto.SuccessResponseCom.beat.domain.performance.application.dto.modify.PerformanceModifyResponse"]; + }; + }; + /** @description 예매자가 존재하여 가격을 수정할 수 없습니다. */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + "*/*": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description 해당 공연의 소유자가 아닙니다. */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + "*/*": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description 공연 정보를 찾을 수 없습니다. */ + 404: { + headers: { + [name: string]: unknown; + }; + content: { + "*/*": components["schemas"]["ErrorResponse"]; + }; + }; + }; + }; + createPerformance: { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + requestBody: { + content: { + "application/json": components["schemas"]["com.beat.domain.performance.application.dto.create.PerformanceRequest"]; + }; + }; + responses: { + /** @description 공연이 성공적으로 생성되었습니다. */ + 201: { + headers: { + [name: string]: unknown; + }; + content: { + "*/*": components["schemas"]["SuccessResponsePerformanceResponse"]; + }; + }; + /** @description 필수 데이터가 누락되었습니다. */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + "*/*": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description 공연 정보를 찾을 수 없습니다. */ + 404: { + headers: { + [name: string]: unknown; + }; + content: { + "*/*": components["schemas"]["ErrorResponse"]; + }; + }; + }; + }; + readAllCarouselImages: { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + requestBody?: never; + responses: { + /** @description 관리자 권한으로 현재 캐러셀에 등록된 모든 공연 조회에 성공하였습니다. */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "*/*": components["schemas"]["SuccessResponseCarouselFindAllResponse"]; + }; + }; + /** @description 회원이 없습니다. */ + 404: { + headers: { + [name: string]: unknown; + }; + content: { + "*/*": components["schemas"]["com.beat.global.common.dto.ErrorResponse"]; + }; + }; + }; + }; + processCarouselImages: { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + requestBody: { + content: { + "application/json": components["schemas"]["CarouselHandleRequest"]; + }; + }; + responses: { + /** @description 캐러셀 이미지 수정 성공 */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "*/*": components["schemas"]["SuccessResponseCarouselHandleAllResponse"]; + }; + }; + /** @description 해당 홍보 정보를 찾을 수 없습니다. */ + 404: { + headers: { + [name: string]: unknown; + }; + content: { + "*/*": components["schemas"]["com.beat.global.common.dto.ErrorResponse"]; + }; + }; + }; + }; + signUp: { + parameters: { + query: { + authorizationCode: string; + }; + header?: never; + path?: never; + cookie?: never; + }; + requestBody: { + content: { + "application/json": components["schemas"]["com.beat.global.auth.client.dto.MemberLoginRequest"]; + }; + }; + responses: { + /** @description 로그인 또는 회원가입 성공 */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "*/*": components["schemas"]["SuccessResponseLoginSuccessResponse"]; + }; + }; + /** @description 로그인 요청이 유효하지 않습니다. */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + "*/*": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description 회원 정보를 찾을 수 없습니다. */ + 404: { + headers: { + [name: string]: unknown; + }; + content: { + "*/*": components["schemas"]["ErrorResponse"]; + }; + }; + }; + }; + signOut: { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + requestBody?: never; + responses: { + /** @description 로그아웃 성공 */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "*/*": components["schemas"]["SuccessResponseVoid"]; + }; + }; + /** @description 회원 정보를 찾을 수 없습니다. */ + 404: { + headers: { + [name: string]: unknown; + }; + content: { + "*/*": components["schemas"]["ErrorResponse"]; + }; + }; + }; + }; + createMemberBooking: { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + requestBody: { + content: { + "application/json": components["schemas"]["com.beat.domain.booking.application.dto.MemberBookingRequest"]; + }; + }; + responses: { + /** @description 회원 예매가 성공적으로 완료되었습니다. */ + 201: { + headers: { + [name: string]: unknown; + }; + content: { + "*/*": components["schemas"]["SuccessResponseMemberBookingResponse"]; + }; + }; + /** @description 잘못된 데이터 형식입니다. */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + "*/*": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description 회원 정보를 찾을 수 없습니다. */ + 404: { + headers: { + [name: string]: unknown; + }; + content: { + "*/*": components["schemas"]["ErrorResponse"]; + }; + }; + }; + }; + createGuestBookings: { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + requestBody: { + content: { + "application/json": components["schemas"]["com.beat.domain.booking.application.dto.GuestBookingRequest"]; + }; + }; + responses: { + /** @description 비회원 예매가 성공적으로 완료되었습니다. */ + 201: { + headers: { + [name: string]: unknown; + }; + content: { + "*/*": components["schemas"]["SuccessResponseGuestBookingResponse"]; + }; + }; + /** @description 잘못된 데이터 형식입니다. */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + "*/*": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description 공연 정보를 찾을 수 없습니다. */ + 404: { + headers: { + [name: string]: unknown; + }; + content: { + "*/*": components["schemas"]["ErrorResponse"]; + }; + }; + }; + }; + getGuestBookings: { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + requestBody: { + content: { + "application/json": components["schemas"]["com.beat.domain.booking.application.dto.GuestBookingRetrieveRequest"]; + }; + }; + responses: { + /** @description 비회원 예매 조회가 성공적으로 완료되었습니다. */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "*/*": components["schemas"]["SuccessResponseListGuestBookingRetrieveResponse"]; + }; + }; + /** @description 입력하신 정보와 일치하는 예매 내역이 없습니다. 확인 후 다시 조회해주세요. */ + 404: { + headers: { + [name: string]: unknown; + }; + content: { + "*/*": components["schemas"]["ErrorResponse"]; + }; + }; + }; + }; + refundBookings: { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + requestBody: { + content: { + "application/json": components["schemas"]["BookingRefundRequest"]; + }; + }; + responses: { + /** @description 유료공연 예매 환불 요청이 성공적으로 완료되었습니다. */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "*/*": components["schemas"]["SuccessResponseBookingRefundResponse"]; + }; + }; + /** @description 입력하신 정보와 일치하는 예매 내역이 없습니다. 확인 후 다시 조회해주세요. */ + 404: { + headers: { + [name: string]: unknown; + }; + content: { + "*/*": components["schemas"]["ErrorResponse"]; + }; + }; + }; + }; + cancelBookings: { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + requestBody: { + content: { + "application/json": components["schemas"]["BookingCancelRequest"]; + }; + }; + responses: { + /** @description 무료공연/미입금 예매 취소 요청이 성공적으로 완료되었습니다. */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "*/*": components["schemas"]["SuccessResponseBookingCancelResponse"]; + }; + }; + /** @description 입력하신 정보와 일치하는 예매 내역이 없습니다. 확인 후 다시 조회해주세요. */ + 404: { + headers: { + [name: string]: unknown; + }; + content: { + "*/*": components["schemas"]["ErrorResponse"]; + }; + }; + }; + }; + healthcheck: { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + requestBody?: never; + responses: { + /** @description 서버가 정상적으로 동작 중입니다. */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "*/*": string; + }; + }; + }; + }; + refreshToken: { + parameters: { + query: { + refreshToken: string; + }; + header?: never; + path?: never; + cookie?: never; + }; + requestBody?: never; + responses: { + /** @description access token 재발급 성공 */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "*/*": components["schemas"]["SuccessResponseAccessTokenGetSuccess"]; + }; + }; + /** @description 유효하지 않은 토큰입니다. */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + "*/*": components["schemas"]["ErrorResponse"]; + }; + }; + }; + }; + getTickets: { + parameters: { + query?: { + scheduleNumber?: + | "FIRST" + | "SECOND" + | "THIRD" + | "FOURTH" + | "FIFTH" + | "SIXTH" + | "SEVENTH" + | "EIGHTH" + | "NINTH" + | "TENTH"; + bookingStatus?: + | "CHECKING_PAYMENT" + | "BOOKING_CONFIRMED" + | "BOOKING_CANCELLED" + | "REFUND_REQUESTED" + | "BOOKING_DELETED"; + }; + header?: never; + path: { + performanceId: number; + }; + cookie?: never; + }; + requestBody?: never; + responses: { + /** @description 예매자 목록 조회 성공 */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "*/*": components["schemas"]["SuccessResponseTicketRetrieveResponse"]; + }; + }; + /** @description 입력하신 정보와 일치하는 예매자 목록이 없습니다. */ + 404: { + headers: { + [name: string]: unknown; + }; + content: { + "*/*": components["schemas"]["ErrorResponse"]; + }; + }; + }; + }; + searchTickets: { + parameters: { + query: { + searchWord: string; + scheduleNumber?: + | "FIRST" + | "SECOND" + | "THIRD" + | "FOURTH" + | "FIFTH" + | "SIXTH" + | "SEVENTH" + | "EIGHTH" + | "NINTH" + | "TENTH"; + bookingStatus?: + | "CHECKING_PAYMENT" + | "BOOKING_CONFIRMED" + | "BOOKING_CANCELLED" + | "REFUND_REQUESTED" + | "BOOKING_DELETED"; + }; + header?: never; + path: { + performanceId: number; + }; + cookie?: never; + }; + requestBody?: never; + responses: { + /** @description 예매자 목록 검색 성공 */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "*/*": components["schemas"]["SuccessResponseTicketRetrieveResponse"]; + }; + }; + /** @description 입력하신 정보와 일치하는 예매자 목록이 없습니다. */ + 404: { + headers: { + [name: string]: unknown; + }; + content: { + "*/*": components["schemas"]["ErrorResponse"]; + }; + }; + }; + }; + getTicketAvailability: { + parameters: { + query: { + purchaseTicketCount: number; + }; + header?: never; + path: { + scheduleId: number; + }; + cookie?: never; + }; + requestBody?: never; + responses: { + /** @description 티켓 수량 조회가 성공적으로 완료되었습니다. */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "*/*": components["schemas"]["SuccessResponseTicketAvailabilityResponse"]; + }; + }; + /** @description 잘못된 데이터 형식입니다. */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + "*/*": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description 회차 정보를 찾을 수 없습니다. */ + 404: { + headers: { + [name: string]: unknown; + }; + content: { + "*/*": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description 요청한 티켓 수량이 잔여 티켓 수를 초과했습니다. */ + 409: { + headers: { + [name: string]: unknown; + }; + content: { + "*/*": components["schemas"]["ErrorResponse"]; + }; + }; + }; + }; + getPerformanceForEdit: { + parameters: { + query?: never; + header?: never; + path: { + performanceId: number; + }; + cookie?: never; + }; + requestBody?: never; + responses: { + /** @description 공연 수정 페이지 정보 조회 성공 */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "*/*": components["schemas"]["SuccessResponsePerformanceModifyDetailResponse"]; + }; + }; + /** @description 공연 정보를 찾을 수 없습니다. */ + 404: { + headers: { + [name: string]: unknown; + }; + content: { + "*/*": components["schemas"]["ErrorResponse"]; + }; + }; + }; + }; + deletePerformance: { + parameters: { + query?: never; + header?: never; + path: { + performanceId: number; + }; + cookie?: never; + }; + requestBody?: never; + responses: { + /** @description 공연 삭제 성공 */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "*/*": components["schemas"]["SuccessResponseVoid"]; + }; + }; + /** @description 공연의 소유자가 아니거나 예매자가 있어 삭제할 수 없습니다. */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + "*/*": components["schemas"]["ErrorResponse"]; + }; + }; + /** @description 공연 정보를 찾을 수 없습니다. */ + 404: { + headers: { + [name: string]: unknown; + }; + content: { + "*/*": components["schemas"]["ErrorResponse"]; + }; + }; + }; + }; + getUserPerformances: { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + requestBody?: never; + responses: { + /** @description 회원이 등록한 공연 목록 조회 성공 */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "*/*": components["schemas"]["SuccessResponseMakerPerformanceResponse"]; + }; + }; + /** @description 회원 정보를 찾을 수 없습니다. */ + 404: { + headers: { + [name: string]: unknown; + }; + content: { + "*/*": components["schemas"]["ErrorResponse"]; + }; + }; + }; + }; + getPerformanceDetail: { + parameters: { + query?: never; + header?: never; + path: { + performanceId: number; + }; + cookie?: never; + }; + requestBody?: never; + responses: { + /** @description 공연 상세정보 조회 성공 */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "*/*": components["schemas"]["SuccessResponsePerformanceDetailResponse"]; + }; + }; + /** @description 공연 정보를 찾을 수 없습니다. */ + 404: { + headers: { + [name: string]: unknown; + }; + content: { + "*/*": components["schemas"]["ErrorResponse"]; + }; + }; + }; + }; + getBookingPerformanceDetail: { + parameters: { + query?: never; + header?: never; + path: { + performanceId: number; + }; + cookie?: never; + }; + requestBody?: never; + responses: { + /** @description 예매하기 관련 공연 정보 조회 성공 */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "*/*": components["schemas"]["SuccessResponseBookingPerformanceDetailResponse"]; + }; + }; + /** @description 공연 정보를 찾을 수 없습니다. */ + 404: { + headers: { + [name: string]: unknown; + }; + content: { + "*/*": components["schemas"]["ErrorResponse"]; + }; + }; + }; + }; + getHomePerformanceList: { + parameters: { + query?: { + genre?: "BAND" | "PLAY" | "DANCE" | "ETC"; + }; + header?: never; + path?: never; + cookie?: never; + }; + requestBody?: never; + responses: { + /** @description 홈 화면 공연 목록 조회가 성공적으로 완료되었습니다. */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "*/*": components["schemas"]["SuccessResponseHomeFindAllResponse"]; + }; + }; + }; + }; + generateAllPresignedUrls: { + parameters: { + query: { + posterImage: string; + castImages?: string[]; + staffImages?: string[]; + performanceImages?: string[]; + }; + header?: never; + path?: never; + cookie?: never; + }; + requestBody?: never; + responses: { + /** @description 공연 메이커를 위한 Presigned URL 발급 성공. */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "*/*": components["schemas"]["SuccessResponsePerformanceMakerPresignedUrlFindAllResponse"]; + }; + }; + /** @description S3 PreSigned url을 받아오기에 실패했습니다. */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + "*/*": components["schemas"]["com.beat.global.common.dto.ErrorResponse"]; + }; + }; + }; + }; + getMemberBookings: { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + requestBody?: never; + responses: { + /** @description 회원 예매 조회가 성공적으로 완료되었습니다. */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "*/*": components["schemas"]["SuccessResponseListMemberBookingRetrieveResponse"]; + }; + }; + /** @description 입력하신 정보와 일치하는 예매 내역이 없습니다. 확인 후 다시 조회해주세요. */ + 404: { + headers: { + [name: string]: unknown; + }; + content: { + "*/*": components["schemas"]["ErrorResponse"]; + }; + }; + }; + }; + readAllUsers: { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + requestBody?: never; + responses: { + /** @description 관리자 권한으로 모든 유저 조회에 성공하였습니다. */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "*/*": components["schemas"]["SuccessResponseUserFindAllResponse"]; + }; + }; + /** @description 회원이 없습니다 */ + 404: { + headers: { + [name: string]: unknown; + }; + content: { + "*/*": components["schemas"]["com.beat.global.common.dto.ErrorResponse"]; + }; + }; + }; + }; + createAllCarouselPresignedUrls: { + parameters: { + query: { + carouselImages: string[]; + }; + header?: never; + path?: never; + cookie?: never; + }; + requestBody?: never; + responses: { + /** @description 캐러셀 Presigned URL 발급 성공 */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "*/*": components["schemas"]["SuccessResponseCarouselPresignedUrlFindAllResponse"]; + }; + }; + /** @description 회원이 없습니다. */ + 404: { + headers: { + [name: string]: unknown; + }; + content: { + "*/*": components["schemas"]["com.beat.global.common.dto.ErrorResponse"]; + }; + }; + }; + }; + createBannerPresignedUrl: { + parameters: { + query: { + bannerImage: string; + }; + header?: never; + path?: never; + cookie?: never; + }; + requestBody?: never; + responses: { + /** @description 배너 Presigned URL 발급 성공 */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "*/*": components["schemas"]["SuccessResponseBannerPresignedUrlFindResponse"]; + }; + }; + /** @description 회원이 없습니다. */ + 404: { + headers: { + [name: string]: unknown; + }; + content: { + "*/*": components["schemas"]["com.beat.global.common.dto.ErrorResponse"]; + }; + }; }; + }; }