사용자 API
회원가입 API
회원가입을 수행합니다.
POST /api/users HTTP/1.1
Content-Type: application/json;charset=UTF-8
Content-Length: 88
Host: api.megacgv.com
{"name":"tester","email":"b@c.com","password":"rawPassword","phoneNumber":"01013572468"}
HTTP/1.1 201 Created
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
X-Request-ID: bb68e21c-fccf-4cbe-a5e7-6bd49cd15b48
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
Strict-Transport-Security: max-age=31536000 ; includeSubDomains
X-Frame-Options: DENY
Content-Length: 33
{"status":201,"message":"성공"}
| Path | Type | Description |
|---|---|---|
|
|
이름 |
|
|
이메일 |
|
|
비밀번호 |
|
|
휴대폰 번호 |
| Path | Type | Description |
|---|---|---|
|
|
응답 코드 |
|
|
응답 메시지 |
회원탈퇴 API
현재 로그인한 사용자를 탈퇴 처리합니다.
DELETE /api/users/me HTTP/1.1
Authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiI0MyIsInJvbGUiOiJVU0VSIiwibmFtZSI6InVzZXIiLCJlbWFpbCI6ImFAYi5jb20iLCJleHAiOjE3NjY0NjgwMTgsImlhdCI6MTc2NjQ2NjIxOH0.anU1wDrMgel1z3KJyOqE_EaBVabXA3yukStlpQ1KlpE
Host: api.megacgv.com
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
X-Request-ID: d5bafe98-26f8-4953-bce6-6d3476f9ede4
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
Strict-Transport-Security: max-age=31536000 ; includeSubDomains
X-Frame-Options: DENY
Content-Length: 33
{"status":200,"message":"성공"}
| Name | Description |
|---|---|
|
JWT Access Token (Bearer) |
| Path | Type | Description |
|---|---|---|
|
|
응답 코드 |
|
|
응답 메시지 |
비밀번호 변경 API
현재 비밀번호를 검증 후 새로운 비밀번호로 변경합니다.
PATCH /api/users/me/password HTTP/1.1
Content-Type: application/json;charset=UTF-8
Authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiI0NiIsInJvbGUiOiJVU0VSIiwibmFtZSI6InVzZXIiLCJlbWFpbCI6ImFAYi5jb20iLCJleHAiOjE3NjY0NjgwMTksImlhdCI6MTc2NjQ2NjIxOX0.LkMaKHFnZpHiIt_oVcjxgevQQK8oa4Zr7aUZ4XQDOmc
Content-Length: 61
Host: api.megacgv.com
{"currentPassword":"rawPassword","newPassword":"newPassword"}
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
X-Request-ID: 7c51b583-8767-465d-af3d-d8dd6a2da7eb
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
Strict-Transport-Security: max-age=31536000 ; includeSubDomains
X-Frame-Options: DENY
Content-Length: 33
{"status":200,"message":"성공"}
| Name | Description |
|---|---|
|
JWT Access Token (Bearer) |
| Path | Type | Description |
|---|---|---|
|
|
현재 비밀번호 |
|
|
새로운 비밀번호 |
| Path | Type | Description |
|---|---|---|
|
|
응답 코드 |
|
|
응답 메시지 |
휴대폰 번호 변경 API
사용자의 휴대폰 번호를 수정합니다.
PATCH /api/users/me/phone-number HTTP/1.1
Content-Type: application/json;charset=UTF-8
Authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiI0MSIsInJvbGUiOiJVU0VSIiwibmFtZSI6InVzZXIiLCJlbWFpbCI6ImFAYi5jb20iLCJleHAiOjE3NjY0NjgwMTgsImlhdCI6MTc2NjQ2NjIxOH0.CpOfPOv-XJn3r8xzdDNEFpyhoAcyJfxk_V0_SVzE2rA
Content-Length: 29
Host: api.megacgv.com
{"phoneNumber":"01098765432"}
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
X-Request-ID: 91c05222-6176-42b0-89f3-c8dc9f1884b2
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
Strict-Transport-Security: max-age=31536000 ; includeSubDomains
X-Frame-Options: DENY
Content-Length: 33
{"status":200,"message":"성공"}
| Name | Description |
|---|---|
|
JWT Access Token (Bearer) |
| Path | Type | Description |
|---|---|---|
|
|
휴대폰 번호 |
| Path | Type | Description |
|---|---|---|
|
|
응답 코드 |
|
|
응답 메시지 |
회원정보 조회 API
로그인한 사용자의 프로필 정보를 조회합니다.
GET /api/users/me HTTP/1.1
Authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiI0MiIsInJvbGUiOiJVU0VSIiwibmFtZSI6InVzZXIiLCJlbWFpbCI6ImFAYi5jb20iLCJleHAiOjE3NjY0NjgwMTgsImlhdCI6MTc2NjQ2NjIxOH0.26FaxsgkDqNa25cJWAA3C6aD_jqXDIdNblPuCHXNlGI
Host: api.megacgv.com
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
X-Request-ID: aa3aba7a-bbe3-43b6-a923-ac7b18b5e3b5
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
Strict-Transport-Security: max-age=31536000 ; includeSubDomains
X-Frame-Options: DENY
Content-Length: 102
{"status":200,"message":"성공","data":{"name":"user","email":"a@b.com","phoneNumber":"01012345678"}}
| Name | Description |
|---|---|
|
JWT Access Token (Bearer) |
| Path | Type | Description |
|---|---|---|
|
|
응답 코드 |
|
|
응답 메시지 |
|
|
이름 |
|
|
이메일 |
|
|
휴대폰 번호 |
인증 API
로그인 API
이메일과 비밀번호를 사용하여 로그인합니다. 성공 시 Access Token과 Refresh Token이 발급됩니다.
POST /api/auth/login HTTP/1.1
Content-Type: application/json;charset=UTF-8
Content-Length: 44
Host: api.megacgv.com
{"email":"a@b.com","password":"rawPassword"}
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
X-Request-ID: e728c2ab-d3ba-44f8-908b-6c4b7e7ee70f
Set-Cookie: refreshToken=eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIxIiwicm9sZSI6IlVTRVIiLCJuYW1lIjoidXNlciIsImVtYWlsIjoiYUBiLmNvbSIsImV4cCI6MTc2NjQ2OTc1MSwiaWF0IjoxNzY2NDY2MTUxfQ.-Mxsk2SDf9Cjf64fgOAHfMYMxCmTzikiqssSJ2gOSsg; Path=/api/auth/refresh; Max-Age=1209600; Expires=Tue, 06 Jan 2026 05:02:32 GMT; Secure; HttpOnly
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
Strict-Transport-Security: max-age=31536000 ; includeSubDomains
X-Frame-Options: DENY
Content-Length: 451
{"status":200,"message":"성공","data":{"accessToken":"eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIxIiwicm9sZSI6IlVTRVIiLCJuYW1lIjoidXNlciIsImVtYWlsIjoiYUBiLmNvbSIsImV4cCI6MTc2NjQ2Nzk1MSwiaWF0IjoxNzY2NDY2MTUxfQ.AqPKgpn1ZpqhYyo2HRwkr6h7Ge16HE6KkdppchkFqvc","refreshToken":"eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIxIiwicm9sZSI6IlVTRVIiLCJuYW1lIjoidXNlciIsImVtYWlsIjoiYUBiLmNvbSIsImV4cCI6MTc2NjQ2OTc1MSwiaWF0IjoxNzY2NDY2MTUxfQ.-Mxsk2SDf9Cjf64fgOAHfMYMxCmTzikiqssSJ2gOSsg"}}
| Path | Type | Description |
|---|---|---|
|
|
사용자 이메일 |
|
|
비밀번호 |
| Path | Type | Description |
|---|---|---|
|
|
응답 코드 |
|
|
응답 메시지 |
|
|
JWT Access Token |
|
|
Refresh Token |
로그아웃 API
Access Token을 사용하여 로그아웃합니다. 서버는 Refresh Token 쿠키를 삭제합니다.
POST /api/auth/logout HTTP/1.1
Authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIzIiwicm9sZSI6IlVTRVIiLCJuYW1lIjoidXNlciIsImVtYWlsIjoiYUBiLmNvbSIsImV4cCI6MTc2NjQ2Nzk1MywiaWF0IjoxNzY2NDY2MTUzfQ.PDJz_GRuY8Lf82c_i18uDxUAQHNx_s3GqPF3a_UZt0Q
Host: api.megacgv.com
Content-Type: application/x-www-form-urlencoded
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
X-Request-ID: 942a3758-ccf0-4383-a81f-2836b6a5f207
Set-Cookie: refreshToken=; Path=/; Max-Age=0; Expires=Thu, 01 Jan 1970 00:00:00 GMT; Secure; HttpOnly
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
Strict-Transport-Security: max-age=31536000 ; includeSubDomains
X-Frame-Options: DENY
Content-Length: 33
{"status":200,"message":"성공"}
| Name | Description |
|---|---|
|
JWT Access Token (Bearer) |
| Path | Type | Description |
|---|---|---|
|
|
응답 코드 |
|
|
응답 메시지 |
토큰 재발급 API
만료된 Access Token 대신 Refresh Token을 사용하여 새 Access Token을 발급받습니다.
POST /api/auth/refresh HTTP/1.1
Host: api.megacgv.com
Cookie: refreshToken=eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIyIiwicm9sZSI6IlVTRVIiLCJuYW1lIjoidXNlciIsImVtYWlsIjoiYUBiLmNvbSIsImV4cCI6MTc2NjQ2OTc1MywiaWF0IjoxNzY2NDY2MTUzfQ.CZx60CBJ4-BjuZ3Aq9jVojSDTHHxvbzu7Xro0mX2y9I
Content-Type: application/x-www-form-urlencoded
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
X-Request-ID: 6a6dd48c-bc91-444a-9ad6-8fc6dc20d8e6
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
Strict-Transport-Security: max-age=31536000 ; includeSubDomains
X-Frame-Options: DENY
Content-Length: 266
{"status":200,"message":"성공","data":{"accessToken":"eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIyIiwicm9sZSI6IlVTRVIiLCJuYW1lIjoidXNlciIsImVtYWlsIjoiYUBiLmNvbSIsImV4cCI6MTc2NjQ2Nzk1MywiaWF0IjoxNzY2NDY2MTUzfQ.1dijB3M-Gh59qTlXojdLPIB8gETOHWWaiJ0ss5xFeZc","refreshToken":null}}
| Name | Description |
|---|---|
|
JWT Refresh Token |
| Path | Type | Description |
|---|---|---|
|
|
응답 코드 |
|
|
응답 메시지 |
|
|
새로운 JWT Access Token |
|
|
JWT Refresh Token |
영화 API
영화 등록 API (관리자 전용)
영화를 등록합니다.
POST /api/admin/movies HTTP/1.1
Content-Type: application/json;charset=UTF-8
Authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIyMCIsInJvbGUiOiJBRE1JTiIsIm5hbWUiOiJhZG1pbiIsImVtYWlsIjoiY0BkLmNvbSIsImV4cCI6MTc2NjQ2Nzk2NSwiaWF0IjoxNzY2NDY2MTY1fQ.Zgz-icdemdthMH-L9HfzLJqlfc0_Bkf7sBHI0PZTFgk
Content-Length: 153
Host: api.megacgv.com
{"title":"인터스텔라","duration":150,"description":"인터스텔라 설명","posterUrl":"poster.png","types":["THREE_D","TWO_D"],"genreIds":[2,3,1]}
HTTP/1.1 201 Created
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
X-Request-ID: 9bd42997-bb14-4347-823d-2757d1fa5dfe
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
Strict-Transport-Security: max-age=31536000 ; includeSubDomains
X-Frame-Options: DENY
Content-Length: 33
{"status":201,"message":"성공"}
| Name | Description |
|---|---|
|
JWT Access Token (Bearer) |
| Path | Type | Description |
|---|---|---|
|
|
영화 제목 |
|
|
상영 시간 (분 단위) |
|
|
영화 설명 |
|
|
영화 포스터 URL |
|
|
상영 타입 목록 (TWO_D, THREE_D) |
|
|
영화 장르 ID 목록 |
| Path | Type | Description |
|---|---|---|
|
|
응답 코드 |
|
|
응답 메시지 |
영화 삭제 API (관리자 전용)
영화를 삭제합니다.
PATCH /api/admin/movies/8 HTTP/1.1
Authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIxNCIsInJvbGUiOiJBRE1JTiIsIm5hbWUiOiJhZG1pbiIsImVtYWlsIjoiY0BkLmNvbSIsImV4cCI6MTc2NjQ2Nzk2MywiaWF0IjoxNzY2NDY2MTYzfQ.lZt_1eMkcqlNe8I7YGLcmJ2i4iuJ3-vqBz6pIe97J5Y
Host: api.megacgv.com
Content-Type: application/x-www-form-urlencoded
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
X-Request-ID: 022b7871-c78f-4af2-a333-15a21bed987f
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
Strict-Transport-Security: max-age=31536000 ; includeSubDomains
X-Frame-Options: DENY
Content-Length: 33
{"status":200,"message":"성공"}
| Parameter | Description |
|---|---|
|
조회할 영화의 ID |
| Name | Description |
|---|---|
|
JWT Access Token (Bearer) |
| Path | Type | Description |
|---|---|---|
|
|
응답 코드 |
|
|
응답 메시지 |
영화 목록 조회 API (관리자 전용)
키워드로 영화 목록을 조회합니다.
GET /api/admin/movies?keyword=%ED%98%B9%EC%84%B1&page=0&size=10 HTTP/1.1
Authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiI4Iiwicm9sZSI6IkFETUlOIiwibmFtZSI6ImFkbWluIiwiZW1haWwiOiJjQGQuY29tIiwiZXhwIjoxNzY2NDY3OTYxLCJpYXQiOjE3NjY0NjYxNjF9.2KEwFMcS4U9FYn5a7k0ryvvKQBEECrPU-QBhR94FB_E
Host: api.megacgv.com
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
X-Request-ID: ae7f6c8d-e969-4258-929f-5df4f482f878
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
Strict-Transport-Security: max-age=31536000 ; includeSubDomains
X-Frame-Options: DENY
Content-Length: 244
{"status":200,"message":"성공","data":{"content":[{"id":2,"title":"혹성탈출","genres":["DRAMA","ACTION"],"types":["TWO_D","THREE_D"],"posterUrl":"poster.png"}],"pageInfo":{"page":0,"size":10,"totalElements":1,"totalPages":1,"last":true}}}
| Parameter | Description |
|---|---|
|
조회할 영화 제목 |
|
페이지 번호(기본 0) |
|
한 페이지 크기 (기본 10) |
| Name | Description |
|---|---|
|
JWT Access Token (Bearer) |
| Path | Type | Description |
|---|---|---|
|
|
HTTP 응답 코드 |
|
|
응답 메시지 |
|
|
영화 ID |
|
|
영화 제목 |
|
|
장르 목록 |
|
|
상영 타입 목록 |
|
|
포스터 이미지 경로 |
|
|
현재 페이지 번호 |
|
|
페이지 크기 |
|
|
총 검색 결과 수 |
|
|
총 페이지 수 |
|
|
마지막 페이지 여부 |
영화 상세 정보 조회 API (관리자 전용)
영화의 상세 정보를 조회합니다.
GET /api/admin/movies/1 HTTP/1.1
Authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiI2Iiwicm9sZSI6IkFETUlOIiwibmFtZSI6ImFkbWluIiwiZW1haWwiOiJjQGQuY29tIiwiZXhwIjoxNzY2NDY3OTYwLCJpYXQiOjE3NjY0NjYxNjB9.nq59hCzaQdIjxP_qgMUxgwl-qqJI98N8ASVWeNQvaQ8
Host: api.megacgv.com
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
X-Request-ID: 99761e58-c0a2-4edc-9072-ce06cf4f13b2
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
Strict-Transport-Security: max-age=31536000 ; includeSubDomains
X-Frame-Options: DENY
Content-Length: 186
{"status":200,"message":"성공","data":{"title":"혹성탈출","duration":150,"description":"test-description","posterUrl":"poster.png","genres":["DRAMA","ACTION"],"types":["3D","2D"]}}
| Parameter | Description |
|---|---|
|
조회할 영화의 ID |
| Name | Description |
|---|---|
|
JWT Access Token (Bearer) |
| Path | Type | Description |
|---|---|---|
|
|
응답 코드 |
|
|
응답 메시지 |
|
|
영화 제목 |
|
|
상영 시간 (분 단위) |
|
|
영화 설명 |
|
|
영화 포스터 URL |
|
|
영화 장르 목록(액션, 드라마 등) |
|
|
상영 타입 목록 (2D, 3D 등) |
영화 상세 정보 조회 API
영화의 상세 정보를 조회합니다.
GET /api/movies/10 HTTP/1.1
Host: api.megacgv.com
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
X-Request-ID: b63a6307-4af1-46f1-9355-3f414626d9f8
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
Strict-Transport-Security: max-age=31536000 ; includeSubDomains
X-Frame-Options: DENY
Content-Length: 186
{"status":200,"message":"성공","data":{"title":"혹성탈출","duration":150,"description":"test-description","posterUrl":"poster.png","genres":["DRAMA","ACTION"],"types":["3D","2D"]}}
| Parameter | Description |
|---|---|
|
조회할 영화의 ID |
| Path | Type | Description |
|---|---|---|
|
|
응답 코드 |
|
|
응답 메시지 |
|
|
영화 제목 |
|
|
상영 시간 (분 단위) |
|
|
영화 설명 |
|
|
영화 포스터 URL |
|
|
영화 장르 목록(액션, 드라마 등) |
|
|
상영 타입 목록 (2D, 3D 등) |
상영관 API
상영관 목록 조회 API
상영관 목록을 조회합니다.
GET /api/theaters HTTP/1.1
Host: api.megacgv.com
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
X-Request-ID: db4fca6f-ba0f-4716-833f-12f2e0f2b45c
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
Strict-Transport-Security: max-age=31536000 ; includeSubDomains
X-Frame-Options: DENY
Content-Length: 571
{"status":200,"message":"성공","data":{"theaterInfoList":[{"theaterId":1,"theaterName":"1관","theaterType":"2D관","totalSeat":50,"seatCount":{"일반":40,"프리미엄":7,"방":3}},{"theaterId":2,"theaterName":"2관","theaterType":"4DX관","totalSeat":50,"seatCount":{"일반":40,"프리미엄":7,"방":3}},{"theaterId":3,"theaterName":"3관","theaterType":"IMAX관","totalSeat":30,"seatCount":{"일반":20,"프리미엄":5,"방":5}},{"theaterId":4,"theaterName":"4관","theaterType":"SCREEN X관","totalSeat":20,"seatCount":{"일반":10,"프리미엄":5,"방":5}}]}}
| Path | Type | Description |
|---|---|---|
|
|
응답 코드 |
|
|
응답 메시지 |
|
|
상영관 ID |
|
|
상영관 이름 |
|
|
상영관 타입 |
|
|
전체 좌석 수 |
|
|
좌석 타입별 좌석 수 (key: 좌석 타입, value: 좌석 개수) |
상영 API
상영 회차 등록 가능 시간 조회 API (관리자 전용)
상영 회차 등록 시간을 조회합니다.
GET /api/admin/screenings?movieId=52&theaterId=1&date=2026-11-11 HTTP/1.1
Authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIzNiIsInJvbGUiOiJBRE1JTiIsIm5hbWUiOiJhZG1pbiIsImVtYWlsIjoiY0BkLmNvbSIsImV4cCI6MTc2NjQ2Nzk5OSwiaWF0IjoxNzY2NDY2MTk5fQ.B7zlpV3AkKJ3sII_cwMVRwJlRbUE77K5XvnIswLHRKQ
Host: api.megacgv.com
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
X-Request-ID: 6ccfec0d-b06c-49fc-859a-7455c39fb5e6
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
Strict-Transport-Security: max-age=31536000 ; includeSubDomains
X-Frame-Options: DENY
Content-Length: 588
{"status":200,"message":"성공","data":{"availableTime":["2026-11-11T05:00:00","2026-11-11T05:10:00","2026-11-11T13:40:00","2026-11-11T13:50:00","2026-11-11T14:00:00","2026-11-11T14:10:00","2026-11-11T14:20:00","2026-11-11T14:30:00","2026-11-11T14:40:00","2026-11-11T14:50:00","2026-11-11T15:00:00","2026-11-11T15:10:00","2026-11-11T15:20:00","2026-11-11T15:30:00","2026-11-11T15:40:00","2026-11-11T15:50:00","2026-11-11T16:00:00","2026-11-11T16:10:00","2026-11-11T16:20:00","2026-11-11T16:30:00","2026-11-11T16:40:00","2026-11-11T16:50:00","2026-11-11T17:00:00","2026-11-11T17:10:00"]}}
| Name | Description |
|---|---|
|
JWT Access Token (Bearer) |
| Parameter | Description |
|---|---|
|
영화 식별자 ID |
|
상영관 식별자 ID |
|
조회할 날짜 |
| Path | Type | Description |
|---|---|---|
|
|
응답 코드 |
|
|
응답 메시지 |
|
|
상영 등록 가능한 시간들 |
상영 회차 등록 API (관리자 전용)
상영 회차를 등록합니다.
POST /api/admin/screenings HTTP/1.1
Content-Type: application/json;charset=UTF-8
Authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIzMCIsInJvbGUiOiJBRE1JTiIsIm5hbWUiOiJhZG1pbiIsImVtYWlsIjoiY0BkLmNvbSIsImV4cCI6MTc2NjQ2Nzk5NywiaWF0IjoxNzY2NDY2MTk3fQ.89NhiQm5eqZKTJuAQIZ2BTtzheMdS8OrXE3j65ygX4s
Content-Length: 82
Host: api.megacgv.com
{"movieId":44,"movieType":"TWO_D","theaterId":1,"startTime":"2026-11-11T14:20:00"}
HTTP/1.1 201 Created
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
X-Request-ID: df327d52-67a1-4cd5-a9a7-bd1d9286dcaa
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
Strict-Transport-Security: max-age=31536000 ; includeSubDomains
X-Frame-Options: DENY
Content-Length: 33
{"status":201,"message":"성공"}
| Name | Description |
|---|---|
|
JWT Access Token (Bearer) |
| Path | Type | Description |
|---|---|---|
|
|
영화 식별자 ID |
|
|
영화 타입(2D, 3D) |
|
|
상영관 식별자 ID |
|
|
상영 시작 시간 |
| Path | Type | Description |
|---|---|---|
|
|
응답 코드 |
|
|
응답 메시지 |
특정 영화 상영 회차 조회 API (관리자 전용)
특정 영화의 모든 상영 회차를 조회합니다.
GET /api/admin/screenings/31 HTTP/1.1
Authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIyMiIsInJvbGUiOiJBRE1JTiIsIm5hbWUiOiJhZG1pbiIsImVtYWlsIjoiY0BkLmNvbSIsImV4cCI6MTc2NjQ2Nzk5NSwiaWF0IjoxNzY2NDY2MTk1fQ.SQNoRDBjSkerd1L-nWfiLPDk7DVhsb1TaCOi73n_vQQ
Host: api.megacgv.com
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
X-Request-ID: e1c17e49-3363-4459-bea1-45ac10557cb7
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
Strict-Transport-Security: max-age=31536000 ; includeSubDomains
X-Frame-Options: DENY
Content-Length: 413
{"status":200,"message":"성공","data":{"movieScreeningInfos":[{"screeningId":41,"theaterId":1,"theaterName":"1관","remainSeat":50,"startTime":"2026-11-11T08:00:00","endTime":"2026-11-11T10:30:00","sequence":1,"status":"상영 예정"},{"screeningId":42,"theaterId":1,"theaterName":"1관","remainSeat":0,"startTime":"2026-11-11T11:00:00","endTime":"2026-11-11T13:30:00","sequence":2,"status":"상영 예정"}]}}
| Parameter | Description |
|---|---|
|
조회할 영화의 ID |
| Name | Description |
|---|---|
|
JWT Access Token (Bearer) |
| Path | Type | Description |
|---|---|---|
|
|
HTTP 응답 코드 |
|
|
응답 메시지 |
|
|
상영 식별자 ID |
|
|
상영관 식별자 ID |
|
|
상영관 이름 |
|
|
남은 좌석 수 |
|
|
영화 시작 시간 |
|
|
영화 종료 시간 |
|
|
영화 상영 회차 |
|
|
상영 상태 |
특정 상영회차 취소 API (관리자 전용)
특정 상영 회차를 취소합니다.
DELETE /api/admin/screenings/1 HTTP/1.1
Authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIyIiwicm9sZSI6IkFETUlOIiwibmFtZSI6ImFkbWluIiwiZW1haWwiOiJjQGQuY29tIiwiZXhwIjoxNzY2NDY3OTg5LCJpYXQiOjE3NjY0NjYxODl9.gLdwcBthArjlvOoomZXESVdBtC2gDr7GLn8jKlHDl0w
Host: api.megacgv.com
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
X-Request-ID: 0820e4a7-b1f3-4969-8f48-e81b19a9a2ae
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
Strict-Transport-Security: max-age=31536000 ; includeSubDomains
X-Frame-Options: DENY
Content-Length: 33
{"status":200,"message":"성공"}
| Parameter | Description |
|---|---|
|
상영회차 식별자 ID |
| Name | Description |
|---|---|
|
JWT Access Token (Bearer) |
| Path | Type | Description |
|---|---|---|
|
|
HTTP 응답 코드 |
|
|
응답 메시지 |
상영 예정인 영화 목록 조회 API
해당 날짜에 상영 예정인 영화 목록을 조회합니다.
GET /api/screenings/movies?date=2026-11-11 HTTP/1.1
Host: api.megacgv.com
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
X-Request-ID: 8d593a7f-a1bc-4fea-8ec4-d9a2c97dce99
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
Strict-Transport-Security: max-age=31536000 ; includeSubDomains
X-Frame-Options: DENY
Content-Length: 237
{"status":200,"message":"성공","data":{"movieInfos":[{"movieId":70,"title":"괴물","posterUrl":"poster.png"},{"movieId":71,"title":"인터스텔라","posterUrl":"poster.png"},{"movieId":72,"title":"킹콩","posterUrl":"poster.png"}]}}
| Parameter | Description |
|---|---|
|
조회할 날짜 |
| Path | Type | Description |
|---|---|---|
|
|
HTTP 응답 코드 |
|
|
응답 메시지 |
|
|
영화 ID |
|
|
영화 제목 |
|
|
영화 포스터 URL |
특정 영화 상영 회차 조회 API
해당 날짜에 상영 예정인 영화의 상영 회차를 조회합니다.
GET /api/screenings/64?date=2026-11-11 HTTP/1.1
Host: api.megacgv.com
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
X-Request-ID: 25dfc0f7-b44f-400a-afb5-ca911c33d877
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
Strict-Transport-Security: max-age=31536000 ; includeSubDomains
X-Frame-Options: DENY
Content-Length: 453
{"status":200,"message":"성공","data":{"movieInfoList":[{"screeningId":86,"theaterId":1,"theaterName":"1관","remainSeatCount":50,"startTime":"2026-11-11T08:00:00","endTime":"2026-11-11T10:30:00","sequence":1,"status":"상영 예정","reservable":true},{"screeningId":87,"theaterId":1,"theaterName":"1관","remainSeatCount":0,"startTime":"2026-11-11T11:00:00","endTime":"2026-11-11T13:30:00","sequence":2,"status":"상영 예정","reservable":true}]}}
| Parameter | Description |
|---|---|
|
조회할 영화의 ID |
| Parameter | Description |
|---|---|
|
조회할 날짜 |
| Path | Type | Description |
|---|---|---|
|
|
HTTP 응답 코드 |
|
|
응답 메시지 |
|
|
상영 식별자 ID |
|
|
상영관 식별자 ID |
|
|
상영관 이름 |
|
|
남은 좌석 수 |
|
|
영화 시작 시간 |
|
|
영화 종료 시간 |
|
|
영화 상영 회차 |
|
|
상영 상태 |
|
|
예약 가능 여부 |
좌석 현황 조회 API
해당 상영회차의 좌석 현황을 조회합니다.
GET /api/screenings/78/seats HTTP/1.1
Host: api.megacgv.com
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
X-Request-ID: 36e05364-165f-4adf-a87f-48f4bd3adf9b
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
Strict-Transport-Security: max-age=31536000 ; includeSubDomains
X-Frame-Options: DENY
Content-Length: 5513
{"status":200,"message":"성공","data":{"screeningId":78,"screeningSeatInfos":[{"screeningSeatId":1030,"rowLabel":"A","colNumber":1,"seatType":"일반","status":"AVAILABLE","price":1000},{"screeningSeatId":1034,"rowLabel":"A","colNumber":2,"seatType":"일반","status":"HOLD","price":1000},{"screeningSeatId":1038,"rowLabel":"A","colNumber":3,"seatType":"일반","status":"RESERVED","price":1000},{"screeningSeatId":1042,"rowLabel":"A","colNumber":4,"seatType":"일반","status":"AVAILABLE","price":1000},{"screeningSeatId":1046,"rowLabel":"A","colNumber":5,"seatType":"일반","status":"AVAILABLE","price":1000},{"screeningSeatId":1050,"rowLabel":"A","colNumber":6,"seatType":"일반","status":"AVAILABLE","price":1000},{"screeningSeatId":1004,"rowLabel":"A","colNumber":7,"seatType":"일반","status":"AVAILABLE","price":1000},{"screeningSeatId":1008,"rowLabel":"A","colNumber":8,"seatType":"일반","status":"AVAILABLE","price":1000},{"screeningSeatId":1012,"rowLabel":"A","colNumber":9,"seatType":"일반","status":"AVAILABLE","price":1000},{"screeningSeatId":1016,"rowLabel":"A","colNumber":10,"seatType":"일반","status":"AVAILABLE","price":1000},{"screeningSeatId":1029,"rowLabel":"B","colNumber":1,"seatType":"일반","status":"AVAILABLE","price":1000},{"screeningSeatId":1033,"rowLabel":"B","colNumber":2,"seatType":"일반","status":"AVAILABLE","price":1000},{"screeningSeatId":1037,"rowLabel":"B","colNumber":3,"seatType":"일반","status":"AVAILABLE","price":1000},{"screeningSeatId":1041,"rowLabel":"B","colNumber":4,"seatType":"일반","status":"AVAILABLE","price":1000},{"screeningSeatId":1045,"rowLabel":"B","colNumber":5,"seatType":"일반","status":"AVAILABLE","price":1000},{"screeningSeatId":1049,"rowLabel":"B","colNumber":6,"seatType":"일반","status":"AVAILABLE","price":1000},{"screeningSeatId":1003,"rowLabel":"B","colNumber":7,"seatType":"일반","status":"AVAILABLE","price":1000},{"screeningSeatId":1007,"rowLabel":"B","colNumber":8,"seatType":"일반","status":"AVAILABLE","price":1000},{"screeningSeatId":1011,"rowLabel":"B","colNumber":9,"seatType":"일반","status":"AVAILABLE","price":1000},{"screeningSeatId":1015,"rowLabel":"B","colNumber":10,"seatType":"일반","status":"AVAILABLE","price":1000},{"screeningSeatId":1028,"rowLabel":"C","colNumber":1,"seatType":"일반","status":"AVAILABLE","price":1000},{"screeningSeatId":1032,"rowLabel":"C","colNumber":2,"seatType":"일반","status":"AVAILABLE","price":1000},{"screeningSeatId":1036,"rowLabel":"C","colNumber":3,"seatType":"일반","status":"AVAILABLE","price":1000},{"screeningSeatId":1040,"rowLabel":"C","colNumber":4,"seatType":"일반","status":"AVAILABLE","price":1000},{"screeningSeatId":1044,"rowLabel":"C","colNumber":5,"seatType":"일반","status":"AVAILABLE","price":1000},{"screeningSeatId":1048,"rowLabel":"C","colNumber":6,"seatType":"일반","status":"AVAILABLE","price":1000},{"screeningSeatId":1002,"rowLabel":"C","colNumber":7,"seatType":"일반","status":"AVAILABLE","price":1000},{"screeningSeatId":1006,"rowLabel":"C","colNumber":8,"seatType":"일반","status":"AVAILABLE","price":1000},{"screeningSeatId":1010,"rowLabel":"C","colNumber":9,"seatType":"일반","status":"AVAILABLE","price":1000},{"screeningSeatId":1014,"rowLabel":"C","colNumber":10,"seatType":"일반","status":"AVAILABLE","price":1000},{"screeningSeatId":1027,"rowLabel":"D","colNumber":1,"seatType":"일반","status":"AVAILABLE","price":1000},{"screeningSeatId":1031,"rowLabel":"D","colNumber":2,"seatType":"일반","status":"AVAILABLE","price":1000},{"screeningSeatId":1035,"rowLabel":"D","colNumber":3,"seatType":"일반","status":"AVAILABLE","price":1000},{"screeningSeatId":1039,"rowLabel":"D","colNumber":4,"seatType":"일반","status":"AVAILABLE","price":1000},{"screeningSeatId":1043,"rowLabel":"D","colNumber":5,"seatType":"일반","status":"AVAILABLE","price":1000},{"screeningSeatId":1047,"rowLabel":"D","colNumber":6,"seatType":"일반","status":"AVAILABLE","price":1000},{"screeningSeatId":1001,"rowLabel":"D","colNumber":7,"seatType":"일반","status":"AVAILABLE","price":1000},{"screeningSeatId":1005,"rowLabel":"D","colNumber":8,"seatType":"일반","status":"AVAILABLE","price":1000},{"screeningSeatId":1009,"rowLabel":"D","colNumber":9,"seatType":"일반","status":"AVAILABLE","price":1000},{"screeningSeatId":1013,"rowLabel":"D","colNumber":10,"seatType":"일반","status":"AVAILABLE","price":1000},{"screeningSeatId":1017,"rowLabel":"E","colNumber":1,"seatType":"프리미엄","status":"AVAILABLE","price":1300},{"screeningSeatId":1018,"rowLabel":"E","colNumber":2,"seatType":"프리미엄","status":"AVAILABLE","price":1300},{"screeningSeatId":1019,"rowLabel":"E","colNumber":3,"seatType":"프리미엄","status":"AVAILABLE","price":1300},{"screeningSeatId":1020,"rowLabel":"E","colNumber":4,"seatType":"프리미엄","status":"AVAILABLE","price":1300},{"screeningSeatId":1021,"rowLabel":"E","colNumber":5,"seatType":"프리미엄","status":"AVAILABLE","price":1300},{"screeningSeatId":1022,"rowLabel":"E","colNumber":6,"seatType":"프리미엄","status":"AVAILABLE","price":1300},{"screeningSeatId":1023,"rowLabel":"E","colNumber":7,"seatType":"프리미엄","status":"AVAILABLE","price":1300},{"screeningSeatId":1024,"rowLabel":"F","colNumber":1,"seatType":"방","status":"AVAILABLE","price":1500},{"screeningSeatId":1025,"rowLabel":"F","colNumber":2,"seatType":"방","status":"AVAILABLE","price":1500},{"screeningSeatId":1026,"rowLabel":"F","colNumber":3,"seatType":"방","status":"AVAILABLE","price":1500}]}}
| Parameter | Description |
|---|---|
|
조회할 상영회차의 식별자 ID |
| Path | Type | Description |
|---|---|---|
|
|
HTTP 응답 코드 |
|
|
응답 메시지 |
|
|
상영회차 식별자 ID |
|
|
상영회차별 좌석 식별자 ID |
|
|
행 |
|
|
열 |
|
|
좌석 종류 |
|
|
좌석 상태 |
|
|
좌석의 가격 |
좌석 API
특정 좌석 수리 상태 변경 API (관리자 전용)
특정 좌석에 대해서 수리 상태로 변경합니다.
PATCH /api/admin/screenings/seats/312/fix HTTP/1.1
Authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIxNCIsInJvbGUiOiJBRE1JTiIsIm5hbWUiOiJhZG1pbiIsImVtYWlsIjoiY0BkLmNvbSIsImV4cCI6MTc2NjQ2Nzk5MywiaWF0IjoxNzY2NDY2MTkzfQ.xtCXYPfgCZm3WLKnXoeJ8LmhImroV-a4pQOJDKMrvgc
Host: api.megacgv.com
Content-Type: application/x-www-form-urlencoded
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
X-Request-ID: fb4197f6-6700-4175-ab4b-af593d9831eb
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
Strict-Transport-Security: max-age=31536000 ; includeSubDomains
X-Frame-Options: DENY
Content-Length: 33
{"status":200,"message":"성공"}
| Parameter | Description |
|---|---|
|
상영회차별 좌석 식별자 ID |
| Name | Description |
|---|---|
|
JWT Access Token (Bearer) |
| Path | Type | Description |
|---|---|---|
|
|
HTTP 응답 코드 |
|
|
응답 메시지 |
특정 좌석 정상 상태 변경 API (관리자 전용)
특정 좌석에 대해서 예약 가능 상태로 변경합니다.
PATCH /api/admin/screenings/seats/193/restore HTTP/1.1
Authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiI4Iiwicm9sZSI6IkFETUlOIiwibmFtZSI6ImFkbWluIiwiZW1haWwiOiJjQGQuY29tIiwiZXhwIjoxNzY2NDY3OTkxLCJpYXQiOjE3NjY0NjYxOTF9.3XsV8FIo3ApSGVGhomaPzIDgeOR5yWoCxJA8fJN2uuw
Host: api.megacgv.com
Content-Type: application/x-www-form-urlencoded
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
X-Request-ID: cc50c90d-e21f-499e-b744-8cc5d890f1ed
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
Strict-Transport-Security: max-age=31536000 ; includeSubDomains
X-Frame-Options: DENY
Content-Length: 33
{"status":200,"message":"성공"}
| Parameter | Description |
|---|---|
|
상영회차별 좌석 식별자 ID |
| Name | Description |
|---|---|
|
JWT Access Token (Bearer) |
| Path | Type | Description |
|---|---|---|
|
|
HTTP 응답 코드 |
|
|
응답 메시지 |
특정 좌석 홀드
특정 좌석을 설정한 시간만큼 점유합니다.
POST /api/screenings/104/seats/hold HTTP/1.1
Content-Type: application/json;charset=UTF-8
Authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIzOSIsInJvbGUiOiJVU0VSIiwibmFtZSI6InVzZXIiLCJlbWFpbCI6ImFAYi5jb20iLCJleHAiOjE3NjY0NjgwMTAsImlhdCI6MTc2NjQ2NjIxMH0.-8_wWOa5RB9B-xvE5OxjkUJl0gCGG01iCCdZMk6DrZM
Content-Length: 37
Host: api.megacgv.com
{"screeningSeatIds":[1436,1432,1428]}
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
X-Request-ID: 564a2e69-5a2c-434f-9076-1c5f11d9175d
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
Strict-Transport-Security: max-age=31536000 ; includeSubDomains
X-Frame-Options: DENY
Content-Length: 33
{"status":200,"message":"성공"}
| Parameter | Description |
|---|---|
|
상영 회차 식별자 ID |
| Name | Description |
|---|---|
|
JWT Access Token (Bearer) |
| Path | Type | Description |
|---|---|---|
|
|
상영회차별 좌석 식별자 IDs |
| Path | Type | Description |
|---|---|---|
|
|
응답 코드 |
|
|
응답 메시지 |
특정 좌석 홀드 취소
점유된 특정 좌석을 홀드 취소합니다.
DELETE /api/screenings/102/seats/hold HTTP/1.1
Content-Type: application/json;charset=UTF-8
Authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIzNyIsInJvbGUiOiJVU0VSIiwibmFtZSI6InVzZXIiLCJlbWFpbCI6ImFAYi5jb20iLCJleHAiOjE3NjY0NjgwMDksImlhdCI6MTc2NjQ2NjIwOX0.yFQ1RA9FNBcIZuH2Rdjl14wuxUbleL9MHL-YTYLe9V8
Content-Length: 37
Host: api.megacgv.com
{"screeningSeatIds":[1346,1342,1338]}
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
X-Request-ID: 01004cb3-ef89-4049-a2f8-70e0423627e7
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
Strict-Transport-Security: max-age=31536000 ; includeSubDomains
X-Frame-Options: DENY
Content-Length: 33
{"status":200,"message":"성공"}
| Parameter | Description |
|---|---|
|
상영 회차 식별자 ID |
| Name | Description |
|---|---|
|
JWT Access Token (Bearer) |
| Path | Type | Description |
|---|---|---|
|
|
상영회차별 좌석 식별자 IDs |
| Path | Type | Description |
|---|---|---|
|
|
응답 코드 |
|
|
응답 메시지 |
예약 API
영화 예약
영화 예약을 진행합니다.
POST /api/reservations/1 HTTP/1.1
Content-Type: application/json;charset=UTF-8
Authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIxIiwicm9sZSI6IlVTRVIiLCJuYW1lIjoidXNlciIsImVtYWlsIjoiYUBiLmNvbSIsImV4cCI6MTc2NjQ2Nzk4MSwiaWF0IjoxNzY2NDY2MTgxfQ.O6e714DIxza_zRE7vceluDvAqbEuoz5UMPLaSIVAx9w
Content-Length: 26
Host: api.megacgv.com
{"screeningSeatIds":[8,4]}
HTTP/1.1 201 Created
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
X-Request-ID: a7bc6639-87d8-4ba9-a9a8-da9acf50cd34
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
Strict-Transport-Security: max-age=31536000 ; includeSubDomains
X-Frame-Options: DENY
Content-Length: 140
{"status":201,"message":"성공","data":{"reservationGroupId":1,"paymentId":"megacgv-20251223140302249-1-MQ3I6SX94Z","expectedAmount":2000}}
| Parameter | Description |
|---|---|
|
상영 회차 식별자 ID |
| Name | Description |
|---|---|
|
JWT Access Token (Bearer) |
| Path | Type | Description |
|---|---|---|
|
|
상영회차별 좌석 식별자 IDs |
| Path | Type | Description |
|---|---|---|
|
|
응답 코드 |
|
|
응답 메시지 |
|
|
예약 식별자 ID |
|
|
서비스 내 거래 고유번호 |
|
|
결제 예상 금액 |
영화 예약 목록 조회
영화 예약 목록을 조회합니다.
GET /api/reservations HTTP/1.1
Authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIyNiIsInJvbGUiOiJVU0VSIiwibmFtZSI6InVzZXIiLCJlbWFpbCI6ImFAYi5jb20iLCJleHAiOjE3NjY0Njc5NzksImlhdCI6MTc2NjQ2NjE3OX0.qbKxxHovOk_LivRSlJLLBW2hx19hlT5AqQ3NEjNM3Sk
Host: api.megacgv.com
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
X-Request-ID: 70a7fd03-13f8-4069-bdc8-eaad811b4f03
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
Strict-Transport-Security: max-age=31536000 ; includeSubDomains
X-Frame-Options: DENY
Content-Length: 769
{"status":200,"message":"성공","data":{"content":[{"reservationGroupId":5,"title":"괴물","movieType":"2D","startTime":"2026-11-11T08:00:00","theaterName":"1관","theaterType":"2D관","seats":[{"seatNumber":"A1","seatType":"일반"},{"seatNumber":"A2","seatType":"일반"}],"reservationStatus":"결제 대기","totalPrice":2000,"posterUrl":"poster.png","updatedAt":"2025-12-23T14:03:00"},{"reservationGroupId":6,"title":"괴물","movieType":"2D","startTime":"2026-11-11T08:00:00","theaterName":"1관","theaterType":"2D관","seats":[{"seatNumber":"A3","seatType":"일반"}],"reservationStatus":"결제 완료","totalPrice":1000,"posterUrl":"poster.png","updatedAt":"2025-12-23T14:03:00"}],"pageInfo":{"page":0,"size":10,"totalElements":2,"totalPages":1,"last":true}}}
| Name | Description |
|---|---|
|
JWT Access Token (Bearer) |
| Parameter | Description |
|---|---|
|
페이지 번호(기본 0) |
|
한 페이지 크기(기본 10) |
| Path | Type | Description |
|---|---|---|
|
|
응답 코드 |
|
|
응답 메시지 |
|
|
예약-그룹 식별자 ID |
|
|
영화 제목 |
|
|
영화 타입(2D, 3D) |
|
|
시작 시간 |
|
|
상영관 이름 |
|
|
상영관 타입(4DX, IMAX 등) |
|
|
좌석 번호 |
|
|
좌석 타입(NORMAL, PREMIUM, ROOM) |
|
|
예약 상태 |
|
|
총 가격 |
|
|
포스터 이미지 URL |
|
|
예약 상태 변경 시간 |
|
|
현재 페이지 번호 |
|
|
페이지 크기 |
|
|
총 검색 결과 수 |
|
|
총 페이지 수 |
|
|
마지막 페이지 여부 |
영화 예약 취소
영화 예약을 취소합니다.
DELETE /api/reservations/3 HTTP/1.1
Content-Type: application/json;charset=UTF-8
Authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIyMyIsInJvbGUiOiJVU0VSIiwibmFtZSI6InVzZXIiLCJlbWFpbCI6ImFAYi5jb20iLCJleHAiOjE3NjY0Njc5NzgsImlhdCI6MTc2NjQ2NjE3OH0.XmZCj4UwSuzDjNzwi2y3Dhh6_RWFMz45wnAASlI55Ls
Host: api.megacgv.com
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
X-Request-ID: f88dca1a-7f66-472c-9487-efbaf56a63f7
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
Strict-Transport-Security: max-age=31536000 ; includeSubDomains
X-Frame-Options: DENY
Content-Length: 33
{"status":200,"message":"성공"}
| Parameter | Description |
|---|---|
|
예약-그룹 식별자 ID |
| Name | Description |
|---|---|
|
JWT Access Token (Bearer) |
| Path | Type | Description |
|---|---|---|
|
|
응답 코드 |
|
|
응답 메시지 |
영화 예약 상세 조회
영화 예약 내역을 상세 조회합니다.
GET /api/reservations/2 HTTP/1.1
Authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIyMiIsInJvbGUiOiJVU0VSIiwibmFtZSI6InVzZXIiLCJlbWFpbCI6ImFAYi5jb20iLCJleHAiOjE3NjY0Njc5NzYsImlhdCI6MTc2NjQ2NjE3Nn0.M6sjYFEbE2KIAHIOaZH_YsSoKmy9uOTAP5q30UULinA
Host: api.megacgv.com
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
X-Request-ID: 8616bde7-d598-4c2d-9c6a-b48e1f6be26b
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
Strict-Transport-Security: max-age=31536000 ; includeSubDomains
X-Frame-Options: DENY
Content-Length: 701
{"status":200,"message":"성공","data":{"movieId":12,"title":"괴물","movieType":"2D","posterUrl":"poster.png","duration":150,"screeningId":2,"startTime":"2026-11-11T08:00:00","endTime":"2026-11-11T10:30:00","theaterId":1,"theaterName":"1관","theaterType":"2D관","seatInfos":[{"seatNumber":"A1","seatType":"일반"},{"seatNumber":"A2","seatType":"일반"}],"reservationGroupId":2,"reservationStatus":"결제 완료","reservationCreatedAt":"2025-12-23T14:02:57","reservationCancelledAt":null,"paymentStatus":"결제 완료","paymentMethod":"pay-method","paymentAmount":2000.00,"refundAmount":null,"paymentId":"payment-id","buyerName":"user","buyerPhoneNumber":"01012345678","buyerEmail":"a@b.com"}}
| Parameter | Description |
|---|---|
|
예약-그룹 식별자 ID |
| Name | Description |
|---|---|
|
JWT Access Token (Bearer) |
| Path | Type | Description |
|---|---|---|
|
|
응답 코드 |
|
|
응답 메시지 |
|
|
영화 식별자 ID |
|
|
영화 제목 |
|
|
영화 타입(2D, 3D) |
|
|
영화 이미지 URL |
|
|
러닝타임 |
|
|
상영 회차 식별자 ID |
|
|
상영 시작 시간 |
|
|
상영 종료 시간 |
|
|
상영관 식별자 ID |
|
|
상영관 이름 |
|
|
상영관 타입(4DX, IMAX 등) |
|
|
좌석 번호 |
|
|
좌석 타입(NORMAL, PREMIUM, ROOM) |
|
|
예약-그룹 식별자 ID |
|
|
예약 상태 |
|
|
예약 생성 시각 |
|
|
예약 취소 시각 |
|
|
결제 상태 |
|
|
결제 방법 |
|
|
결제 금액 |
|
|
환불 금액 |
|
|
거래 고유번호 |
|
|
결제자 이름 |
|
|
결제자 휴대폰 번호 |
|
|
결제자 이메일 |