daiso 1.0.3 → 1.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (158) hide show
  1. package/README.md +218 -537
  2. package/dist/api/actionsProxy.js +82 -0
  3. package/dist/api/cgvHandlers.js +103 -16
  4. package/dist/api/daisoHandlers.js +127 -0
  5. package/dist/api/emart24Handlers.js +176 -0
  6. package/dist/api/gs25Handlers.js +256 -0
  7. package/dist/api/handlers.js +184 -108
  8. package/dist/api/healthChecks.js +332 -0
  9. package/dist/api/lottecinemaHandlers.js +155 -0
  10. package/dist/api/lottemartHandlers.js +128 -0
  11. package/dist/api/megaboxHandlers.js +81 -50
  12. package/dist/api/routes/cuRoutes.js +17 -0
  13. package/dist/api/routes/daisoRoutes.js +6 -1
  14. package/dist/api/routes/emart24Routes.js +22 -0
  15. package/dist/api/routes/gs25Routes.js +22 -0
  16. package/dist/api/routes/healthRoutes.js +44 -0
  17. package/dist/api/routes/lottecinemaRoutes.js +22 -0
  18. package/dist/api/routes/lottemartRoutes.js +18 -0
  19. package/dist/api/routes/oliveyoungRoutes.js +6 -1
  20. package/dist/api/routes/sevenelevenRoutes.js +32 -0
  21. package/dist/api/sevenelevenHandlers.js +200 -0
  22. package/dist/cli/args.js +54 -0
  23. package/dist/cli/commands/convenience.js +241 -0
  24. package/dist/cli/commands/daiso.js +96 -0
  25. package/dist/cli/constants.js +5 -0
  26. package/dist/cli/deps.js +48 -0
  27. package/dist/cli/http.js +98 -0
  28. package/dist/cli/interactiveFetch.js +31 -0
  29. package/dist/cli/interactiveItemSearch.js +259 -0
  30. package/dist/cli/interactivePrompt.js +49 -0
  31. package/dist/cli/interactiveTypes.js +4 -0
  32. package/dist/cli/types.js +4 -0
  33. package/dist/cli.js +66 -181
  34. package/dist/cliHelp.js +216 -9
  35. package/dist/cliInteractive.js +174 -0
  36. package/dist/cliPicker.js +56 -0
  37. package/dist/cliRenderer.js +139 -0
  38. package/dist/index.js +147 -8
  39. package/dist/pages/openapi.js +2 -1
  40. package/dist/pages/openapiFullSpec.js +58 -0
  41. package/dist/pages/openapiResponse.js +28 -0
  42. package/dist/pages/openapiSpec.js +2 -41
  43. package/dist/pages/openapiSpecActions.js +109 -0
  44. package/dist/pages/openapiSpecComponents.js +30 -391
  45. package/dist/pages/openapiSpecComponentsCgv.js +24 -0
  46. package/dist/pages/openapiSpecComponentsCu.js +112 -0
  47. package/dist/pages/openapiSpecComponentsDaisoOliveyoung.js +342 -0
  48. package/dist/pages/openapiSpecComponentsEmart24.js +141 -0
  49. package/dist/pages/openapiSpecComponentsGs25.js +109 -0
  50. package/dist/pages/openapiSpecComponentsLotteMart.js +85 -0
  51. package/dist/pages/openapiSpecComponentsLottecinema.js +163 -0
  52. package/dist/pages/openapiSpecComponentsMegabox.js +144 -0
  53. package/dist/pages/openapiSpecComponentsSeveneleven.js +82 -0
  54. package/dist/pages/openapiSpecPathsCgv.js +66 -3
  55. package/dist/pages/openapiSpecPathsCu.js +138 -0
  56. package/dist/pages/openapiSpecPathsDaiso.js +302 -0
  57. package/dist/pages/openapiSpecPathsDaisoOliveyoung.js +4 -376
  58. package/dist/pages/openapiSpecPathsEmart24.js +223 -0
  59. package/dist/pages/openapiSpecPathsGs25.js +166 -0
  60. package/dist/pages/openapiSpecPathsLotteMart.js +135 -0
  61. package/dist/pages/openapiSpecPathsLottecinema.js +212 -0
  62. package/dist/pages/openapiSpecPathsMegabox.js +52 -3
  63. package/dist/pages/openapiSpecPathsOliveyoung.js +231 -0
  64. package/dist/pages/openapiSpecPathsSeveneleven.js +234 -0
  65. package/dist/pages/prompt.js +8 -402
  66. package/dist/pages/promptCoreText.js +278 -0
  67. package/dist/pages/promptReferenceText.js +131 -0
  68. package/dist/pages/promptRetailCinemaText.js +273 -0
  69. package/dist/services/cgv/client.js +6 -1
  70. package/dist/services/cgv/index.js +3 -3
  71. package/dist/services/cgv/location.js +235 -0
  72. package/dist/services/cgv/tools/findTheaters.js +30 -5
  73. package/dist/services/cgv/tools/getTimetable.js +42 -14
  74. package/dist/services/cgv/tools/searchMovies.js +40 -12
  75. package/dist/services/cgv/transport.js +0 -3
  76. package/dist/services/cu/api.js +11 -0
  77. package/dist/services/cu/client.js +297 -0
  78. package/dist/services/cu/index.js +21 -0
  79. package/dist/services/cu/tools/checkInventory.js +123 -0
  80. package/dist/services/cu/tools/findNearbyStores.js +49 -0
  81. package/dist/services/cu/types.js +4 -0
  82. package/dist/services/daiso/api.js +22 -2
  83. package/dist/services/daiso/client.js +59 -0
  84. package/dist/services/daiso/index.js +2 -0
  85. package/dist/services/daiso/product.js +17 -0
  86. package/dist/services/daiso/tools/checkInventory.js +76 -41
  87. package/dist/services/daiso/tools/findStores.js +17 -7
  88. package/dist/services/daiso/tools/getDisplayLocation.js +75 -0
  89. package/dist/services/emart24/api.js +11 -0
  90. package/dist/services/emart24/client.js +173 -0
  91. package/dist/services/emart24/index.js +22 -0
  92. package/dist/services/emart24/inventoryLookup.js +134 -0
  93. package/dist/services/emart24/tools/checkInventory.js +54 -0
  94. package/dist/services/emart24/tools/findNearbyStores.js +72 -0
  95. package/dist/services/emart24/tools/searchProducts.js +63 -0
  96. package/dist/services/emart24/types.js +4 -0
  97. package/dist/services/gs25/api.js +9 -0
  98. package/dist/services/gs25/client.js +198 -0
  99. package/dist/services/gs25/index.js +22 -0
  100. package/dist/services/gs25/storeUtils.js +168 -0
  101. package/dist/services/gs25/tools/checkInventory.js +163 -0
  102. package/dist/services/gs25/tools/findNearbyStores.js +103 -0
  103. package/dist/services/gs25/tools/searchProducts.js +50 -0
  104. package/dist/services/gs25/types.js +4 -0
  105. package/dist/services/lottecinema/api.js +12 -0
  106. package/dist/services/lottecinema/client.js +161 -0
  107. package/dist/services/lottecinema/index.js +30 -0
  108. package/dist/services/lottecinema/location.js +191 -0
  109. package/dist/services/lottecinema/tools/findNearbyTheaters.js +47 -0
  110. package/dist/services/lottecinema/tools/getRemainingSeats.js +85 -0
  111. package/dist/services/lottecinema/tools/listNowShowing.js +79 -0
  112. package/dist/services/lottecinema/types.js +4 -0
  113. package/dist/services/lottemart/api.js +31 -0
  114. package/dist/services/lottemart/client.js +245 -0
  115. package/dist/services/lottemart/clientTypes.js +4 -0
  116. package/dist/services/lottemart/config.js +4 -0
  117. package/dist/services/lottemart/debug.js +92 -0
  118. package/dist/services/lottemart/geocode.js +49 -0
  119. package/dist/services/lottemart/index.js +30 -0
  120. package/dist/services/lottemart/keyword.js +29 -0
  121. package/dist/services/lottemart/parser.js +185 -0
  122. package/dist/services/lottemart/session.js +331 -0
  123. package/dist/services/lottemart/storeSearch.js +52 -0
  124. package/dist/services/lottemart/tools/findNearbyStores.js +67 -0
  125. package/dist/services/lottemart/tools/searchProducts.js +62 -0
  126. package/dist/services/lottemart/types.js +4 -0
  127. package/dist/services/lottemart/zetta.js +105 -0
  128. package/dist/services/megabox/location.js +219 -0
  129. package/dist/services/megabox/tools/findNearbyTheaters.js +13 -44
  130. package/dist/services/megabox/tools/getRemainingSeats.js +31 -3
  131. package/dist/services/megabox/tools/listNowShowing.js +31 -3
  132. package/dist/services/oliveyoung/api.js +2 -0
  133. package/dist/services/oliveyoung/client.js +150 -9
  134. package/dist/services/oliveyoung/index.js +3 -1
  135. package/dist/services/oliveyoung/tools/checkInventory.js +15 -4
  136. package/dist/services/oliveyoung/tools/searchProducts.js +57 -0
  137. package/dist/services/seveneleven/api.js +15 -0
  138. package/dist/services/seveneleven/client.js +279 -0
  139. package/dist/services/seveneleven/index.js +30 -0
  140. package/dist/services/seveneleven/inventory.js +302 -0
  141. package/dist/services/seveneleven/productKeyword.js +141 -0
  142. package/dist/services/seveneleven/tools/checkInventory.js +82 -0
  143. package/dist/services/seveneleven/tools/getCatalogSnapshot.js +55 -0
  144. package/dist/services/seveneleven/tools/getSearchPopwords.js +41 -0
  145. package/dist/services/seveneleven/tools/searchProducts.js +56 -0
  146. package/dist/services/seveneleven/tools/searchStores.js +45 -0
  147. package/dist/services/seveneleven/types.js +4 -0
  148. package/dist/utils/cliInteractiveHelpers.js +63 -0
  149. package/dist/utils/daisoKeyword.js +30 -0
  150. package/dist/utils/http.js +16 -2
  151. package/openapi.json +1977 -734
  152. package/openapi.yaml +1430 -543
  153. package/package.json +28 -15
  154. package/dist/tools/checkInventory.js +0 -98
  155. package/dist/tools/findStores.js +0 -125
  156. package/dist/tools/getPriceInfo.js +0 -77
  157. package/dist/tools/searchProducts.js +0 -61
  158. package/dist/types/index.js +0 -4
package/openapi.yaml CHANGED
@@ -1,21 +1,15 @@
1
1
 
2
2
  openapi: 3.1.0
3
3
  info:
4
- title: 다이소 MCP API
4
+ title: 다이소 MCP API (OpenAI Actions용)
5
5
  description: |
6
- 다이소 제품 검색, 매장 찾기, 재고 확인을 위한 API입니다.
6
+ OpenAI 챗봇의 OpenAPI import 개수 제한을 피하기 위해 모든 GET API를 단일 facade 엔드포인트로 집약한 스펙입니다.
7
7
 
8
- ## 주요 기능
9
- - 🔍 **제품 검색**: 키워드로 다이소 제품 검색
10
- - 🏪 **매장 찾기**: 지역/키워드로 매장 검색
11
- - 📦 **재고 확인**: 온라인 및 오프라인 매장 재고 조회
12
- - 🎬 **메가박스 지점/영화 조회**: 주변 지점, 상영 목록, 잔여 좌석 조회
13
- - 🎥 **CGV 지점/영화 조회**: 극장 목록, 영화 목록, 시간표 조회
8
+ 실제 런타임은 기존 /api/{service}/... 엔드포인트로 위임하며, 이 스펙은 OpenAI Actions 등록 전용으로 사용합니다.
14
9
 
15
- ## 사용 팁
16
- 1. 한글 검색어는 URL 인코딩이 자동 처리됩니다
17
- 2. 재고 확인 시 먼저 제품 검색으로 제품 ID를 확인하세요
18
- 3. 위치 기반 재고 조회 시 lat, lng 파라미터를 활용하세요
10
+ 브랜드명이 요청 앞부분에 나오면 뒤의 상품/재고 요청까지 같은 브랜드로 해석해야 합니다. 예: "안산 중앙역 주변 다이소 찾아주시고 핫식스 재고 찾아주세요"는 다이소 기준 조회를 먼저 수행하고, 결과가 없을 때만 다른 브랜드를 제안합니다.
11
+
12
+ 전체 개별 엔드포인트 스펙이 필요하면 /openapi-full.json 또는 /openapi-full.yaml 을 사용하세요.
19
13
  version: 1.0.0
20
14
  contact:
21
15
  name: GitHub Repository
@@ -24,618 +18,314 @@ servers:
24
18
  - url: "https://mcp.aka.page"
25
19
  description: Production Server
26
20
  paths:
27
- /api/daiso/products:
21
+ /api/actions/query:
28
22
  get:
29
- operationId: searchProducts
30
- summary: 제품 검색
31
- description: 키워드로 다이소 제품을 검색합니다. 수납박스, 펜, 정리함 등 다양한 키워드로 검색할 수 있습니다.
23
+ operationId: queryAction
24
+ summary: 공통 GET 액션 실행
25
+ description: action 값에 따라 기존 GET API 엔드포인트로 프록시합니다. OpenAI Actions 등록 시 이 단일 엔드포인트를 사용하세요.
32
26
  parameters:
33
- - name: q
27
+ - name: action
34
28
  in: query
35
29
  required: true
36
- description: "검색 키워드 (예: 수납박스, 펜, 정리함)"
30
+ description: 실행할 액션 이름입니다. 사용 가능한 값은 enum 목록을 참고하세요.
37
31
  schema:
38
32
  type: string
39
- example: 수납박스
40
- - name: page
33
+ enum:
34
+ - daisoSearchProducts
35
+ - daisoGetProduct
36
+ - daisoFindStores
37
+ - daisoCheckInventory
38
+ - daisoGetDisplayLocation
39
+ - oliveyoungSearchProducts
40
+ - oliveyoungFindStores
41
+ - oliveyoungCheckInventory
42
+ - cuFindStores
43
+ - cuCheckInventory
44
+ - emart24FindStores
45
+ - emart24SearchProducts
46
+ - emart24CheckInventory
47
+ - lottemartFindStores
48
+ - lottemartSearchProducts
49
+ - gs25FindStores
50
+ - gs25SearchProducts
51
+ - gs25CheckInventory
52
+ - sevenelevenSearchProducts
53
+ - sevenelevenSearchStores
54
+ - sevenelevenCheckInventory
55
+ - sevenelevenGetPopwords
56
+ - sevenelevenGetCatalog
57
+ - megaboxFindTheaters
58
+ - megaboxListMovies
59
+ - megaboxGetSeats
60
+ - lottecinemaFindTheaters
61
+ - lottecinemaListMovies
62
+ - lottecinemaGetSeats
63
+ - cgvFindTheaters
64
+ - cgvSearchMovies
65
+ - cgvGetTimetable
66
+ - name: q
41
67
  in: query
42
68
  required: false
43
- description: 페이지 번호
69
+ description: 다이소 제품 검색어
44
70
  schema:
45
- type: integer
46
- default: 1
47
- minimum: 1
48
- - name: pageSize
71
+ type: string
72
+ - name: query
49
73
  in: query
50
74
  required: false
51
- description: 페이지당 결과 수
52
- schema:
53
- type: integer
54
- default: 30
55
- minimum: 1
56
- maximum: 100
57
- responses:
58
- 200:
59
- description: 검색 성공
60
- content:
61
- application/json:
62
- schema:
63
- $ref: "#/components/schemas/ProductSearchResponse"
64
- 400:
65
- description: 잘못된 요청 (검색어 누락)
66
- content:
67
- application/json:
68
- schema:
69
- $ref: "#/components/schemas/ErrorResponse"
70
- /api/daiso/products/{productId}:
71
- get:
72
- operationId: getProduct
73
- summary: 제품 상세 정보
74
- description: 제품 ID로 상세 정보를 조회합니다.
75
- parameters:
76
- - name: productId
77
- in: path
78
- required: true
79
- description: 제품 ID (제품 검색 결과의 id 값)
75
+ description: 세븐일레븐 상품 검색어
80
76
  schema:
81
77
  type: string
82
- example: 1234567890
83
- responses:
84
- 200:
85
- description: 조회 성공
86
- content:
87
- application/json:
88
- schema:
89
- $ref: "#/components/schemas/ProductDetailResponse"
90
- 404:
91
- description: 제품을 찾을 수 없음
92
- content:
93
- application/json:
94
- schema:
95
- $ref: "#/components/schemas/ErrorResponse"
96
- /api/daiso/stores:
97
- get:
98
- operationId: findStores
99
- summary: 매장 찾기
100
- description: 키워드 또는 지역으로 다이소 매장을 검색합니다. keyword 또는 sido 중 하나는 필수입니다.
101
- parameters:
102
- - name: keyword
78
+ - name: itemCode
103
79
  in: query
104
80
  required: false
105
- description: "매장명 또는 주소 키워드 (예: 강남, 홍대, 안산)"
81
+ description: GS25 상품 코드
106
82
  schema:
107
83
  type: string
108
- example: 강남
109
- - name: sido
84
+ - name: productId
110
85
  in: query
111
86
  required: false
112
- description: "시/도 (예: 서울, 경기, 부산)"
87
+ description: 제품 ID 또는 상세 조회용 path 파라미터
113
88
  schema:
114
89
  type: string
115
- example: 서울
116
- - name: gugun
90
+ - name: keyword
117
91
  in: query
118
92
  required: false
119
- description: "구/군 (예: 강남구, 마포구)"
93
+ description: 공통 키워드 파라미터
120
94
  schema:
121
95
  type: string
122
- example: 강남구
123
- - name: dong
96
+ - name: sido
124
97
  in: query
125
98
  required: false
126
- description: "동 (예: 역삼동, 합정동)"
99
+ description: 다이소 시/도
127
100
  schema:
128
101
  type: string
129
- - name: limit
102
+ - name: gugun
130
103
  in: query
131
104
  required: false
132
- description: 최대 결과 수
133
- schema:
134
- type: integer
135
- default: 50
136
- minimum: 1
137
- maximum: 100
138
- responses:
139
- 200:
140
- description: 검색 성공
141
- content:
142
- application/json:
143
- schema:
144
- $ref: "#/components/schemas/StoreSearchResponse"
145
- 400:
146
- description: 잘못된 요청 (필수 파라미터 누락)
147
- content:
148
- application/json:
149
- schema:
150
- $ref: "#/components/schemas/ErrorResponse"
151
- /api/daiso/inventory:
152
- get:
153
- operationId: checkInventory
154
- summary: 재고 확인
155
- description: 특정 제품의 온라인 재고와 매장별 재고를 확인합니다. 위치 정보를 제공하면 가까운 매장 순으로 정렬됩니다.
156
- parameters:
157
- - name: productId
158
- in: query
159
- required: true
160
- description: 제품 ID (제품 검색 결과의 id 값)
105
+ description: 다이소 구/군
161
106
  schema:
162
107
  type: string
163
- example: 1234567890
164
- - name: lat
108
+ - name: dong
165
109
  in: query
166
110
  required: false
167
- description: "위도 (기본값: 서울 시청 37.5665)"
111
+ description: 다이소 동
168
112
  schema:
169
- type: number
170
- format: float
171
- default: 37.5665
172
- example: 37.4979
173
- - name: lng
113
+ type: string
114
+ - name: area
174
115
  in: query
175
116
  required: false
176
- description: "경도 (기본값: 서울 시청 126.978)"
117
+ description: 롯데마트 지역
177
118
  schema:
178
- type: number
179
- format: float
180
- default: 126.978
181
- example: 127.0276
182
- - name: keyword
119
+ type: string
120
+ - name: area1
183
121
  in: query
184
122
  required: false
185
- description: "매장 검색어 (예: 안산, 강남)"
123
+ description: 이마트24 1차 지역
186
124
  schema:
187
125
  type: string
188
- - name: page
126
+ - name: area2
189
127
  in: query
190
128
  required: false
191
- description: 페이지 번호
129
+ description: 이마트24 2차 지역
192
130
  schema:
193
- type: integer
194
- default: 1
195
- minimum: 1
196
- - name: pageSize
131
+ type: string
132
+ - name: areaCode
197
133
  in: query
198
134
  required: false
199
- description: 페이지당 결과 수
135
+ description: 메가박스 지역 코드
200
136
  schema:
201
- type: integer
202
- default: 30
203
- minimum: 1
204
- maximum: 100
205
- responses:
206
- 200:
207
- description: 조회 성공
208
- content:
209
- application/json:
210
- schema:
211
- $ref: "#/components/schemas/InventoryResponse"
212
- 400:
213
- description: 잘못된 요청 (제품 ID 누락)
214
- content:
215
- application/json:
216
- schema:
217
- $ref: "#/components/schemas/ErrorResponse"
218
- /api/oliveyoung/stores:
219
- get:
220
- operationId: oliveyoungFindStores
221
- summary: 올리브영 매장 검색
222
- description: 위치(위도/경도)와 키워드로 올리브영 매장을 검색합니다.
223
- parameters:
224
- - name: keyword
137
+ type: string
138
+ - name: brandVariant
225
139
  in: query
226
140
  required: false
227
- description: "매장명 또는 지역 키워드 (예: 명동, 강남)"
141
+ description: 롯데마트 브랜드 변형
228
142
  schema:
229
143
  type: string
230
- example: 명동
231
144
  - name: lat
232
145
  in: query
233
146
  required: false
234
- description: "위도 (기본값: 서울 시청 37.5665)"
147
+ description: 위도
235
148
  schema:
236
149
  type: number
237
150
  format: float
238
- default: 37.5665
239
151
  - name: lng
240
152
  in: query
241
153
  required: false
242
- description: "경도 (기본값: 서울 시청 126.978)"
154
+ description: 경도
243
155
  schema:
244
156
  type: number
245
157
  format: float
246
- default: 126.978
247
- - name: pageIdx
158
+ - name: page
248
159
  in: query
249
160
  required: false
250
- description: 매장 검색 페이지 번호
161
+ description: 페이지 번호
251
162
  schema:
252
163
  type: integer
253
- default: 1
254
- minimum: 1
255
- - name: limit
164
+ - name: pageIdx
256
165
  in: query
257
166
  required: false
258
- description: 최대 결과 수
167
+ description: 올리브영 페이지 번호
259
168
  schema:
260
169
  type: integer
261
- default: 20
262
- minimum: 1
263
- maximum: 100
264
- responses:
265
- 200:
266
- description: 검색 성공
267
- content:
268
- application/json:
269
- schema:
270
- $ref: "#/components/schemas/OliveyoungStoreSearchResponse"
271
- 500:
272
- description: 올리브영 API 호출 실패
273
- content:
274
- application/json:
275
- schema:
276
- $ref: "#/components/schemas/ErrorResponse"
277
- /api/oliveyoung/inventory:
278
- get:
279
- operationId: oliveyoungCheckInventory
280
- summary: 올리브영 재고 확인
281
- description: 상품 키워드로 올리브영 재고를 검색하고 주변 매장 정보를 함께 조회합니다.
282
- parameters:
283
- - name: keyword
284
- in: query
285
- required: true
286
- description: 재고를 확인할 상품 키워드
287
- schema:
288
- type: string
289
- example: 선크림
290
- - name: lat
170
+ - name: pageLimit
291
171
  in: query
292
172
  required: false
293
- description: "위도 (기본값: 서울 시청 37.5665)"
173
+ description: 롯데마트 추가 페이지 수
294
174
  schema:
295
- type: number
296
- format: float
297
- default: 37.5665
298
- - name: lng
175
+ type: integer
176
+ - name: pageSize
299
177
  in: query
300
178
  required: false
301
- description: "경도 (기본값: 서울 시청 126.978)"
179
+ description: 페이지 크기
302
180
  schema:
303
- type: number
304
- format: float
305
- default: 126.978
306
- - name: storeKeyword
181
+ type: integer
182
+ - name: size
307
183
  in: query
308
184
  required: false
309
- description: 주변 매장 필터 키워드
185
+ description: 페이지 크기 또는 검색 크기
310
186
  schema:
311
- type: string
312
- - name: page
187
+ type: integer
188
+ - name: offset
313
189
  in: query
314
190
  required: false
315
- description: 상품 검색 페이지 번호
191
+ description: CU 검색 오프셋
316
192
  schema:
317
193
  type: integer
318
- default: 1
319
- minimum: 1
320
- - name: size
194
+ - name: limit
321
195
  in: query
322
196
  required: false
323
- description: 페이지당 결과 수
197
+ description: 최대 결과 수
324
198
  schema:
325
199
  type: integer
326
- default: 20
327
- minimum: 1
328
- maximum: 100
329
- - name: sort
200
+ - name: storeLimit
330
201
  in: query
331
202
  required: false
332
- description: 정렬 코드
203
+ description: 매장 결과 제한 수
333
204
  schema:
334
- type: string
335
- default: 01
336
- - name: includeSoldOut
205
+ type: integer
206
+ - name: storeCode
337
207
  in: query
338
208
  required: false
339
- description: 품절 포함 여부 (true/false)
209
+ description: 매장 코드
340
210
  schema:
341
- type: boolean
342
- default: false
343
- responses:
344
- 200:
345
- description: 조회 성공
346
- content:
347
- application/json:
348
- schema:
349
- $ref: "#/components/schemas/OliveyoungInventoryResponse"
350
- 400:
351
- description: 잘못된 요청 (검색어 누락)
352
- content:
353
- application/json:
354
- schema:
355
- $ref: "#/components/schemas/ErrorResponse"
356
- 500:
357
- description: 올리브영 API 호출 실패
358
- content:
359
- application/json:
360
- schema:
361
- $ref: "#/components/schemas/ErrorResponse"
362
- /api/megabox/theaters:
363
- get:
364
- operationId: megaboxFindNearbyTheaters
365
- summary: 메가박스 주변 지점 조회
366
- description: 좌표 기준으로 메가박스 지점을 거리순으로 조회합니다.
367
- parameters:
368
- - name: lat
211
+ type: string
212
+ - name: storeName
369
213
  in: query
370
214
  required: false
371
- description: "위도 (기본값: 서울 시청 37.5665)"
215
+ description: 매장명
372
216
  schema:
373
- type: number
374
- format: float
375
- default: 37.5665
376
- - name: lng
217
+ type: string
218
+ - name: storeKeyword
377
219
  in: query
378
220
  required: false
379
- description: "경도 (기본값: 서울 시청 126.978)"
221
+ description: 매장 키워드
380
222
  schema:
381
- type: number
382
- format: float
383
- default: 126.978
223
+ type: string
384
224
  - name: playDate
385
225
  in: query
386
226
  required: false
387
- description: 조회 날짜 (YYYYMMDD)
227
+ description: 상영일(YYYYMMDD)
388
228
  schema:
389
229
  type: string
390
- example: 20260304
391
- - name: areaCode
230
+ - name: regionCode
392
231
  in: query
393
232
  required: false
394
- description: "지역 코드 (기본값: 11, 서울)"
233
+ description: CGV 지역 코드
395
234
  schema:
396
235
  type: string
397
- default: 11
398
- - name: limit
236
+ - name: theaterCode
399
237
  in: query
400
238
  required: false
401
- description: 최대 결과 수
239
+ description: CGV 극장 코드
402
240
  schema:
403
- type: integer
404
- default: 10
405
- minimum: 1
406
- maximum: 100
407
- responses:
408
- 200:
409
- description: 조회 성공
410
- content:
411
- application/json:
412
- schema:
413
- $ref: "#/components/schemas/MegaboxTheaterSearchResponse"
414
- 500:
415
- description: 메가박스 API 호출 실패
416
- content:
417
- application/json:
418
- schema:
419
- $ref: "#/components/schemas/ErrorResponse"
420
- /api/megabox/movies:
421
- get:
422
- operationId: megaboxListNowShowing
423
- summary: 메가박스 영화/회차 목록 조회
424
- description: 날짜, 지점, 영화 조건으로 메가박스 영화 및 상영 회차를 조회합니다.
425
- parameters:
426
- - name: playDate
241
+ type: string
242
+ - name: theaterId
427
243
  in: query
428
244
  required: false
429
- description: 조회 날짜 (YYYYMMDD)
245
+ description: 메가박스/롯데시네마 지점 ID
430
246
  schema:
431
247
  type: string
432
- example: 20260304
433
- - name: theaterId
248
+ - name: movieCode
434
249
  in: query
435
250
  required: false
436
- description: "지점 ID (예: 1372)"
251
+ description: CGV 영화 코드
437
252
  schema:
438
253
  type: string
439
- example: 1372
440
254
  - name: movieId
441
255
  in: query
442
256
  required: false
443
- description: "영화 ID (예: 25104500)"
257
+ description: 메가박스/롯데시네마 영화 ID
444
258
  schema:
445
259
  type: string
446
- example: 25104500
447
- - name: areaCode
260
+ - name: pluCd
448
261
  in: query
449
262
  required: false
450
- description: "지역 코드 (기본값: 11, 서울)"
263
+ description: 이마트24 상품 PLU 코드
451
264
  schema:
452
265
  type: string
453
- default: 11
454
- responses:
455
- 200:
456
- description: 조회 성공
457
- content:
458
- application/json:
459
- schema:
460
- $ref: "#/components/schemas/MegaboxMovieListResponse"
461
- 500:
462
- description: 메가박스 API 호출 실패
463
- content:
464
- application/json:
465
- schema:
466
- $ref: "#/components/schemas/ErrorResponse"
467
- /api/megabox/seats:
468
- get:
469
- operationId: megaboxGetRemainingSeats
470
- summary: 메가박스 잔여 좌석 조회
471
- description: 영화/지점/날짜 조건으로 회차별 잔여 좌석 수를 조회합니다.
472
- parameters:
473
- - name: playDate
266
+ - name: bizNoArr
474
267
  in: query
475
268
  required: false
476
- description: 조회 날짜 (YYYYMMDD)
269
+ description: 이마트24 사업자번호 목록
477
270
  schema:
478
271
  type: string
479
- example: 20260304
480
- - name: theaterId
272
+ - name: label
481
273
  in: query
482
274
  required: false
483
- description: 지점 ID
275
+ description: 세븐일레븐 인기 검색어 라벨
484
276
  schema:
485
277
  type: string
486
- - name: movieId
278
+ - name: sort
487
279
  in: query
488
280
  required: false
489
- description: 영화 ID
281
+ description: 정렬 기준
490
282
  schema:
491
283
  type: string
492
- - name: areaCode
284
+ - name: searchSort
493
285
  in: query
494
286
  required: false
495
- description: "지역 코드 (기본값: 11, 서울)"
287
+ description: CU 검색 정렬 기준
496
288
  schema:
497
289
  type: string
498
- default: 11
499
- - name: limit
290
+ - name: service24h
500
291
  in: query
501
292
  required: false
502
- description: 최대 결과 수
293
+ description: 이마트24 24시간 필터
503
294
  schema:
504
- type: integer
505
- default: 50
506
- minimum: 1
507
- maximum: 200
508
- responses:
509
- 200:
510
- description: 조회 성공
511
- content:
512
- application/json:
513
- schema:
514
- $ref: "#/components/schemas/MegaboxSeatListResponse"
515
- 500:
516
- description: 메가박스 API 호출 실패
517
- content:
518
- application/json:
519
- schema:
520
- $ref: "#/components/schemas/ErrorResponse"
521
- /api/cgv/theaters:
522
- get:
523
- operationId: cgvFindTheaters
524
- summary: CGV 극장 목록 조회
525
- description: 날짜/지역 코드 조건으로 CGV 극장 목록을 조회합니다.
526
- parameters:
527
- - name: playDate
295
+ type: boolean
296
+ - name: includeSoldOut
528
297
  in: query
529
298
  required: false
530
- description: 조회 날짜 (YYYYMMDD)
299
+ description: 올리브영 품절 포함 여부
531
300
  schema:
532
- type: string
533
- example: 20260304
534
- - name: regionCode
301
+ type: boolean
302
+ - name: includeIssues
535
303
  in: query
536
304
  required: false
537
- description: "지역 코드 (예: 01 서울)"
305
+ description: 세븐일레븐 이달의 행사지 포함 여부
538
306
  schema:
539
- type: string
540
- example: 01
541
- - name: limit
307
+ type: boolean
308
+ - name: includeExhibition
542
309
  in: query
543
310
  required: false
544
- description: 최대 결과 수
311
+ description: 세븐일레븐 전시상품 포함 여부
312
+ schema:
313
+ type: boolean
314
+ - name: timeoutMs
315
+ in: query
316
+ required: false
317
+ description: 세븐일레븐 inventory 타임아웃
545
318
  schema:
546
319
  type: integer
547
- default: 30
548
- minimum: 1
549
- maximum: 100
550
320
  responses:
551
321
  200:
552
- description: 조회 성공
322
+ description: 프록시 호출 성공
553
323
  content:
554
324
  application/json:
555
325
  schema:
556
- $ref: "#/components/schemas/CgvTheaterSearchResponse"
557
- 500:
558
- description: CGV API 호출 실패
559
- content:
560
- application/json:
561
- schema:
562
- $ref: "#/components/schemas/ErrorResponse"
563
- /api/cgv/movies:
564
- get:
565
- operationId: cgvSearchMovies
566
- summary: CGV 영화 목록 조회
567
- description: 날짜/극장 조건으로 CGV 영화 목록을 조회합니다.
568
- parameters:
569
- - name: playDate
570
- in: query
571
- required: false
572
- description: 조회 날짜 (YYYYMMDD)
573
- schema:
574
- type: string
575
- example: 20260304
576
- - name: theaterCode
577
- in: query
578
- required: false
579
- description: "극장 코드 (예: 0056)"
580
- schema:
581
- type: string
582
- example: 0056
583
- responses:
584
- 200:
585
- description: 조회 성공
586
- content:
587
- application/json:
588
- schema:
589
- $ref: "#/components/schemas/CgvMovieSearchResponse"
590
- 500:
591
- description: CGV API 호출 실패
592
- content:
593
- application/json:
594
- schema:
595
- $ref: "#/components/schemas/ErrorResponse"
596
- /api/cgv/timetable:
597
- get:
598
- operationId: cgvGetTimetable
599
- summary: CGV 시간표 조회
600
- description: 날짜/극장/영화 조건으로 CGV 상영 시간표를 조회합니다.
601
- parameters:
602
- - name: playDate
603
- in: query
604
- required: false
605
- description: 조회 날짜 (YYYYMMDD)
606
- schema:
607
- type: string
608
- example: 20260304
609
- - name: theaterCode
610
- in: query
611
- required: false
612
- description: 극장 코드
613
- schema:
614
- type: string
615
- - name: movieCode
616
- in: query
617
- required: false
618
- description: 영화 코드
619
- schema:
620
- type: string
621
- - name: limit
622
- in: query
623
- required: false
624
- description: 최대 결과 수
625
- schema:
626
- type: integer
627
- default: 50
628
- minimum: 1
629
- maximum: 200
630
- responses:
631
- 200:
632
- description: 조회 성공
633
- content:
634
- application/json:
635
- schema:
636
- $ref: "#/components/schemas/CgvTimetableResponse"
637
- 500:
638
- description: CGV API 호출 실패
326
+ $ref: "#/components/schemas/ActionQueryResponse"
327
+ 400:
328
+ description: 잘못된 요청
639
329
  content:
640
330
  application/json:
641
331
  schema:
@@ -661,7 +351,7 @@ components:
661
351
  imageUrl:
662
352
  type: string
663
353
  description: 제품 이미지 URL
664
- example: "https://img.daisomall.co.kr/..."
354
+ example: "https://cdn.daisomall.co.kr/..."
665
355
  soldOut:
666
356
  type: boolean
667
357
  description: 품절 여부
@@ -703,6 +393,28 @@ components:
703
393
  isNew:
704
394
  type: boolean
705
395
  description: 신상품 여부
396
+ InventoryProduct:
397
+ type: object
398
+ description: 재고 응답에 포함되는 상품 요약 정보
399
+ properties:
400
+ id:
401
+ type: string
402
+ description: 제품 ID
403
+ name:
404
+ type: string
405
+ description: 제품명
406
+ imageUrl:
407
+ type: string
408
+ description: 제품 이미지 URL
409
+ brand:
410
+ type: string
411
+ description: 브랜드명
412
+ soldOut:
413
+ type: boolean
414
+ description: 품절 여부
415
+ isNew:
416
+ type: boolean
417
+ description: 신상품 여부
706
418
  Store:
707
419
  type: object
708
420
  description: 매장 정보
@@ -844,6 +556,8 @@ components:
844
556
  productId:
845
557
  type: string
846
558
  description: 제품 ID
559
+ product:
560
+ $ref: "#/components/schemas/InventoryProduct"
847
561
  location:
848
562
  type: object
849
563
  properties:
@@ -916,22 +630,910 @@ components:
916
630
  goodsName:
917
631
  type: string
918
632
  example: 달바 퍼플 톤업 선크림 듀오 기획
633
+ imageUrl:
634
+ type: string
635
+ example: "https://image.oliveyoung.co.kr/uploads/images/goods/10/0000/0020/A00000020061401ko.jpg"
919
636
  priceToPay:
920
637
  type: integer
921
- example: 32130
922
- originalPrice:
638
+ example: 32130
639
+ originalPrice:
640
+ type: integer
641
+ example: 51000
642
+ discountRate:
643
+ type: integer
644
+ example: 37
645
+ o2oStockFlag:
646
+ type: boolean
647
+ description: 올리브영 원본 재고 가능 플래그
648
+ example: true
649
+ o2oRemainQuantity:
650
+ type: integer
651
+ description: 올리브영 원본 잔여 수량 필드. 0이어도 재고가 있을 수 있음
652
+ example: 0
653
+ inStock:
654
+ type: boolean
655
+ description: 현재 조회한 주변 매장 기준 재고 여부. storeInventory가 있으면 그 결과를 우선 반영
656
+ example: true
657
+ stockStatus:
658
+ type: string
659
+ enum:
660
+ - in_stock
661
+ - out_of_stock
662
+ example: in_stock
663
+ stockSource:
664
+ type: string
665
+ enum:
666
+ - global_search
667
+ - nearby_store
668
+ example: nearby_store
669
+ storeInventory:
670
+ $ref: "#/components/schemas/OliveyoungProductStoreInventory"
671
+ OliveyoungStockStore:
672
+ type: object
673
+ description: 올리브영 상품별 매장 재고 상태
674
+ properties:
675
+ storeCode:
676
+ type: string
677
+ example: B040
678
+ storeName:
679
+ type: string
680
+ example: 안산중앙역점
681
+ address:
682
+ type: string
683
+ example: 경기도 안산시 단원구 고잔2길 65 1층
684
+ latitude:
685
+ type: number
686
+ format: float
687
+ example: 37.3177184
688
+ longitude:
689
+ type: number
690
+ format: float
691
+ example: 126.8385857
692
+ distance:
693
+ type: number
694
+ format: float
695
+ example: 0.07
696
+ pickupYn:
697
+ type: boolean
698
+ example: true
699
+ salesStoreYn:
700
+ type: boolean
701
+ example: true
702
+ remainQuantity:
703
+ type: integer
704
+ example: 3
705
+ o2oRemainQuantity:
706
+ type: integer
707
+ example: 2
708
+ stockStatus:
709
+ type: string
710
+ enum:
711
+ - in_stock
712
+ - out_of_stock
713
+ - not_sold
714
+ example: in_stock
715
+ stockLabel:
716
+ type: string
717
+ example: 재고 3개
718
+ openYn:
719
+ type: boolean
720
+ example: true
721
+ OliveyoungProductStoreInventory:
722
+ type: object
723
+ properties:
724
+ totalCount:
725
+ type: integer
726
+ example: 1
727
+ inStockCount:
728
+ type: integer
729
+ example: 1
730
+ outOfStockCount:
731
+ type: integer
732
+ example: 0
733
+ notSoldCount:
734
+ type: integer
735
+ example: 0
736
+ stores:
737
+ type: array
738
+ items:
739
+ $ref: "#/components/schemas/OliveyoungStockStore"
740
+ OliveyoungStoreSearchResponse:
741
+ type: object
742
+ properties:
743
+ success:
744
+ type: boolean
745
+ example: true
746
+ data:
747
+ type: object
748
+ properties:
749
+ stores:
750
+ type: array
751
+ items:
752
+ $ref: "#/components/schemas/OliveyoungStore"
753
+ meta:
754
+ type: object
755
+ properties:
756
+ total:
757
+ type: integer
758
+ page:
759
+ type: integer
760
+ pageSize:
761
+ type: integer
762
+ OliveyoungProductSearchResponse:
763
+ type: object
764
+ properties:
765
+ success:
766
+ type: boolean
767
+ example: true
768
+ data:
769
+ type: object
770
+ properties:
771
+ keyword:
772
+ type: string
773
+ example: 마스크팩
774
+ count:
775
+ type: integer
776
+ example: 2
777
+ products:
778
+ type: array
779
+ items:
780
+ $ref: "#/components/schemas/OliveyoungProduct"
781
+ meta:
782
+ type: object
783
+ properties:
784
+ total:
785
+ type: integer
786
+ page:
787
+ type: integer
788
+ pageSize:
789
+ type: integer
790
+ nextPage:
791
+ type: boolean
792
+ OliveyoungInventoryResponse:
793
+ type: object
794
+ properties:
795
+ success:
796
+ type: boolean
797
+ example: true
798
+ data:
799
+ type: object
800
+ properties:
801
+ keyword:
802
+ type: string
803
+ example: 선크림
804
+ location:
805
+ type: object
806
+ properties:
807
+ latitude:
808
+ type: number
809
+ format: float
810
+ longitude:
811
+ type: number
812
+ format: float
813
+ nearbyStores:
814
+ type: object
815
+ properties:
816
+ totalCount:
817
+ type: integer
818
+ stores:
819
+ type: array
820
+ items:
821
+ $ref: "#/components/schemas/OliveyoungStore"
822
+ inventory:
823
+ type: object
824
+ properties:
825
+ totalCount:
826
+ type: integer
827
+ nextPage:
828
+ type: boolean
829
+ stockCheckedCount:
830
+ type: integer
831
+ stockUncheckedCount:
832
+ type: integer
833
+ inStockCount:
834
+ type: integer
835
+ outOfStockCount:
836
+ type: integer
837
+ products:
838
+ type: array
839
+ items:
840
+ $ref: "#/components/schemas/OliveyoungProduct"
841
+ meta:
842
+ type: object
843
+ properties:
844
+ total:
845
+ type: integer
846
+ page:
847
+ type: integer
848
+ pageSize:
849
+ type: integer
850
+ MegaboxTheater:
851
+ type: object
852
+ properties:
853
+ theaterId:
854
+ type: string
855
+ example: 1372
856
+ theaterName:
857
+ type: string
858
+ example: 강남
859
+ address:
860
+ type: string
861
+ example: 서울특별시 강남구 강남대로 438
862
+ latitude:
863
+ type: number
864
+ format: float
865
+ example: 37.4982
866
+ longitude:
867
+ type: number
868
+ format: float
869
+ example: 127.0264
870
+ distanceKm:
871
+ type: number
872
+ format: float
873
+ example: 0.5
874
+ MegaboxShowtime:
875
+ type: object
876
+ properties:
877
+ scheduleId:
878
+ type: string
879
+ example: 2603041372011
880
+ movieId:
881
+ type: string
882
+ example: 25104500
883
+ movieName:
884
+ type: string
885
+ example: 미키 17
886
+ theaterId:
887
+ type: string
888
+ example: 1372
889
+ theaterName:
890
+ type: string
891
+ example: 강남
892
+ playDate:
893
+ type: string
894
+ example: 20260304
895
+ startTime:
896
+ type: string
897
+ example: "09:30"
898
+ endTime:
899
+ type: string
900
+ example: "11:20"
901
+ totalSeats:
902
+ type: integer
903
+ example: 120
904
+ remainingSeats:
905
+ type: integer
906
+ example: 42
907
+ MegaboxTheaterSearchResponse:
908
+ type: object
909
+ properties:
910
+ success:
911
+ type: boolean
912
+ example: true
913
+ data:
914
+ type: object
915
+ properties:
916
+ location:
917
+ type: object
918
+ properties:
919
+ latitude:
920
+ type: number
921
+ format: float
922
+ longitude:
923
+ type: number
924
+ format: float
925
+ playDate:
926
+ type: string
927
+ areaCode:
928
+ type: string
929
+ theaters:
930
+ type: array
931
+ items:
932
+ $ref: "#/components/schemas/MegaboxTheater"
933
+ meta:
934
+ type: object
935
+ properties:
936
+ total:
937
+ type: integer
938
+ pageSize:
939
+ type: integer
940
+ MegaboxMovieListResponse:
941
+ type: object
942
+ properties:
943
+ success:
944
+ type: boolean
945
+ example: true
946
+ data:
947
+ type: object
948
+ properties:
949
+ playDate:
950
+ type: string
951
+ filters:
952
+ type: object
953
+ properties:
954
+ theaterId:
955
+ type: string
956
+ nullable: true
957
+ movieId:
958
+ type: string
959
+ nullable: true
960
+ areaCode:
961
+ type: string
962
+ theaters:
963
+ type: array
964
+ items:
965
+ type: object
966
+ properties:
967
+ theaterId:
968
+ type: string
969
+ theaterName:
970
+ type: string
971
+ movies:
972
+ type: array
973
+ items:
974
+ type: object
975
+ properties:
976
+ movieId:
977
+ type: string
978
+ movieName:
979
+ type: string
980
+ movieStatus:
981
+ type: string
982
+ showtimes:
983
+ type: array
984
+ items:
985
+ $ref: "#/components/schemas/MegaboxShowtime"
986
+ meta:
987
+ type: object
988
+ properties:
989
+ total:
990
+ type: integer
991
+ MegaboxSeatListResponse:
992
+ type: object
993
+ properties:
994
+ success:
995
+ type: boolean
996
+ example: true
997
+ data:
998
+ type: object
999
+ properties:
1000
+ playDate:
1001
+ type: string
1002
+ filters:
1003
+ type: object
1004
+ properties:
1005
+ theaterId:
1006
+ type: string
1007
+ nullable: true
1008
+ movieId:
1009
+ type: string
1010
+ nullable: true
1011
+ areaCode:
1012
+ type: string
1013
+ seats:
1014
+ type: array
1015
+ items:
1016
+ $ref: "#/components/schemas/MegaboxShowtime"
1017
+ meta:
1018
+ type: object
1019
+ properties:
1020
+ total:
1021
+ type: integer
1022
+ pageSize:
1023
+ type: integer
1024
+ CuStore:
1025
+ type: object
1026
+ description: CU 매장 정보
1027
+ properties:
1028
+ storeCode:
1029
+ type: string
1030
+ example: 28376
1031
+ storeName:
1032
+ type: string
1033
+ example: 중앙하이츠빌점
1034
+ phone:
1035
+ type: string
1036
+ example: 0315088023
1037
+ address:
1038
+ type: string
1039
+ example: 경기도 안산시 단원구 안산천서로 23
1040
+ latitude:
1041
+ type: number
1042
+ format: float
1043
+ example: 37.318482
1044
+ longitude:
1045
+ type: number
1046
+ format: float
1047
+ example: 126.841838
1048
+ distanceM:
1049
+ type: number
1050
+ example: 97
1051
+ stock:
1052
+ type: integer
1053
+ example: 10
1054
+ deliveryYn:
1055
+ type: boolean
1056
+ example: true
1057
+ pickupYn:
1058
+ type: boolean
1059
+ example: false
1060
+ reserveYn:
1061
+ type: boolean
1062
+ example: false
1063
+ CuInventoryItem:
1064
+ type: object
1065
+ description: CU 재고 검색 상품
1066
+ properties:
1067
+ itemCode:
1068
+ type: string
1069
+ example: 8801728108946
1070
+ itemName:
1071
+ type: string
1072
+ example: 바삭한 감자칩
1073
+ price:
1074
+ type: integer
1075
+ example: 1700
1076
+ pickupYn:
1077
+ type: boolean
1078
+ example: true
1079
+ deliveryYn:
1080
+ type: boolean
1081
+ example: true
1082
+ reserveYn:
1083
+ type: boolean
1084
+ example: false
1085
+ CuStoreSearchResponse:
1086
+ type: object
1087
+ properties:
1088
+ success:
1089
+ type: boolean
1090
+ example: true
1091
+ data:
1092
+ type: object
1093
+ properties:
1094
+ location:
1095
+ type: object
1096
+ properties:
1097
+ latitude:
1098
+ type: number
1099
+ format: float
1100
+ longitude:
1101
+ type: number
1102
+ format: float
1103
+ keyword:
1104
+ type: string
1105
+ stores:
1106
+ type: array
1107
+ items:
1108
+ $ref: "#/components/schemas/CuStore"
1109
+ meta:
1110
+ type: object
1111
+ properties:
1112
+ total:
1113
+ type: integer
1114
+ pageSize:
1115
+ type: integer
1116
+ CuInventoryResponse:
1117
+ type: object
1118
+ properties:
1119
+ success:
1120
+ type: boolean
1121
+ example: true
1122
+ data:
1123
+ type: object
1124
+ properties:
1125
+ keyword:
1126
+ type: string
1127
+ example: 과자
1128
+ location:
1129
+ type: object
1130
+ properties:
1131
+ latitude:
1132
+ type: number
1133
+ format: float
1134
+ longitude:
1135
+ type: number
1136
+ format: float
1137
+ nearbyStores:
1138
+ type: object
1139
+ properties:
1140
+ totalCount:
1141
+ type: integer
1142
+ stores:
1143
+ type: array
1144
+ items:
1145
+ $ref: "#/components/schemas/CuStore"
1146
+ inventory:
1147
+ type: object
1148
+ properties:
1149
+ totalCount:
1150
+ type: integer
1151
+ spellModifyYn:
1152
+ type: string
1153
+ example: Y
1154
+ items:
1155
+ type: array
1156
+ items:
1157
+ $ref: "#/components/schemas/CuInventoryItem"
1158
+ meta:
1159
+ type: object
1160
+ properties:
1161
+ total:
1162
+ type: integer
1163
+ page:
1164
+ type: integer
1165
+ pageSize:
1166
+ type: integer
1167
+ Emart24Store:
1168
+ type: object
1169
+ properties:
1170
+ storeCode:
1171
+ type: string
1172
+ example: 28339
1173
+ storeName:
1174
+ type: string
1175
+ example: 강남스퀘어점
1176
+ address:
1177
+ type: string
1178
+ example: 서울특별시 강남구 강남대로 396
1179
+ phone:
1180
+ type: string
1181
+ example: 02-000-0000
1182
+ latitude:
1183
+ type: number
1184
+ format: float
1185
+ example: 37.4982
1186
+ longitude:
1187
+ type: number
1188
+ format: float
1189
+ example: 127.0276
1190
+ service24h:
1191
+ type: boolean
1192
+ example: true
1193
+ distanceM:
1194
+ type: number
1195
+ nullable: true
1196
+ example: 120
1197
+ Emart24Product:
1198
+ type: object
1199
+ properties:
1200
+ pluCd:
1201
+ type: string
1202
+ example: 8800244010504
1203
+ goodsName:
1204
+ type: string
1205
+ example: 두바이초콜릿
1206
+ originPrice:
1207
+ type: integer
1208
+ example: 3500
1209
+ viewPrice:
1210
+ type: integer
1211
+ example: 3000
1212
+ category:
1213
+ type: string
1214
+ example: 간식
1215
+ kind:
1216
+ type: string
1217
+ example: 초콜릿
1218
+ Emart24StoreSearchResponse:
1219
+ type: object
1220
+ properties:
1221
+ success:
1222
+ type: boolean
1223
+ example: true
1224
+ data:
1225
+ type: object
1226
+ properties:
1227
+ stores:
1228
+ type: array
1229
+ items:
1230
+ $ref: "#/components/schemas/Emart24Store"
1231
+ meta:
1232
+ type: object
1233
+ properties:
1234
+ total:
1235
+ type: integer
1236
+ page:
1237
+ type: integer
1238
+ pageSize:
1239
+ type: integer
1240
+ Emart24ProductSearchResponse:
1241
+ type: object
1242
+ properties:
1243
+ success:
1244
+ type: boolean
1245
+ example: true
1246
+ data:
1247
+ type: object
1248
+ properties:
1249
+ products:
1250
+ type: array
1251
+ items:
1252
+ $ref: "#/components/schemas/Emart24Product"
1253
+ meta:
1254
+ type: object
1255
+ properties:
1256
+ total:
1257
+ type: integer
1258
+ page:
1259
+ type: integer
1260
+ pageSize:
1261
+ type: integer
1262
+ Emart24InventoryResponse:
1263
+ type: object
1264
+ properties:
1265
+ success:
1266
+ type: boolean
1267
+ example: true
1268
+ data:
1269
+ type: object
1270
+ properties:
1271
+ keyword:
1272
+ type: string
1273
+ example: 고양이 츄르
1274
+ pluCd:
1275
+ type: string
1276
+ example: 8800244010504
1277
+ productCandidates:
1278
+ type: array
1279
+ items:
1280
+ $ref: "#/components/schemas/Emart24Product"
1281
+ location:
1282
+ type: object
1283
+ nullable: true
1284
+ properties:
1285
+ latitude:
1286
+ type: number
1287
+ format: float
1288
+ longitude:
1289
+ type: number
1290
+ format: float
1291
+ storeFilters:
1292
+ type: object
1293
+ properties:
1294
+ storeKeyword:
1295
+ type: string
1296
+ example: 안산 중앙역
1297
+ appliedStoreKeyword:
1298
+ type: string
1299
+ example: 안산중앙역
1300
+ area1:
1301
+ type: string
1302
+ example: 경기도
1303
+ area2:
1304
+ type: string
1305
+ example: 안산시
1306
+ service24h:
1307
+ type: boolean
1308
+ example: false
1309
+ storeLimit:
1310
+ type: integer
1311
+ example: 10
1312
+ directBizNos:
1313
+ type: array
1314
+ items:
1315
+ type: string
1316
+ example: 28339
1317
+ nearbyStores:
1318
+ type: object
1319
+ properties:
1320
+ totalCount:
1321
+ type: integer
1322
+ example: 3
1323
+ stores:
1324
+ type: array
1325
+ items:
1326
+ $ref: "#/components/schemas/Emart24Store"
1327
+ goodsInfo:
1328
+ type: object
1329
+ nullable: true
1330
+ count:
1331
+ type: integer
1332
+ example: 1
1333
+ stores:
1334
+ type: array
1335
+ items:
1336
+ type: object
1337
+ properties:
1338
+ bizNo:
1339
+ type: string
1340
+ example: 28339
1341
+ bizQty:
1342
+ type: integer
1343
+ example: 3
1344
+ storeName:
1345
+ type: string
1346
+ example: 강남스퀘어점
1347
+ address:
1348
+ type: string
1349
+ phone:
1350
+ type: string
1351
+ distanceM:
1352
+ type: number
1353
+ nullable: true
1354
+ example: 120
1355
+ LotteMartStore:
1356
+ type: object
1357
+ properties:
1358
+ area:
1359
+ type: string
1360
+ example: 서울
1361
+ storeCode:
1362
+ type: string
1363
+ example: 2301
1364
+ storeName:
1365
+ type: string
1366
+ example: 강변점
1367
+ brandVariant:
1368
+ type: string
1369
+ example: lottemart
1370
+ address:
1371
+ type: string
1372
+ example: 서울 광진구 광나루로 56길 85 테크노마트 B2
1373
+ phone:
1374
+ type: string
1375
+ example: 02-3424-2502
1376
+ openTime:
1377
+ type: string
1378
+ example: "10:00~23:00"
1379
+ closedDays:
1380
+ type: string
1381
+ example: 03/08(일), 03/22(일)
1382
+ parkingType:
1383
+ type: string
1384
+ example: 유료
1385
+ parkingDetails:
1386
+ type: string
1387
+ example: "최초 무료주차 : 1시간"
1388
+ detailUrl:
1389
+ type: string
1390
+ example: /mobiledowa/market/detail_shop.asp?werks=2301
1391
+ latitude:
1392
+ type: number
1393
+ format: float
1394
+ example: 37.5354
1395
+ longitude:
1396
+ type: number
1397
+ format: float
1398
+ example: 127.0958
1399
+ distanceM:
1400
+ type: number
1401
+ nullable: true
1402
+ example: 530
1403
+ LotteMartProduct:
1404
+ type: object
1405
+ properties:
1406
+ area:
1407
+ type: string
1408
+ example: 서울
1409
+ storeCode:
1410
+ type: string
1411
+ example: 2301
1412
+ storeName:
1413
+ type: string
1414
+ example: 강변점
1415
+ keyword:
1416
+ type: string
1417
+ example: 콜라
1418
+ productName:
1419
+ type: string
1420
+ example: 코카콜라
1421
+ barcode:
1422
+ type: string
1423
+ example: 8801094011307
1424
+ spec:
1425
+ type: string
1426
+ example: 1.2L
1427
+ manufacturer:
1428
+ type: string
1429
+ example: 코카콜라음료 주식회사
1430
+ price:
1431
+ type: integer
1432
+ example: 2980
1433
+ stockQuantity:
1434
+ type: integer
1435
+ example: 20
1436
+ LotteMartStoreSearchResponse:
1437
+ type: object
1438
+ properties:
1439
+ success:
1440
+ type: boolean
1441
+ example: true
1442
+ data:
1443
+ type: object
1444
+ properties:
1445
+ stores:
1446
+ type: array
1447
+ items:
1448
+ $ref: "#/components/schemas/LotteMartStore"
1449
+ meta:
1450
+ type: object
1451
+ properties:
1452
+ total:
1453
+ type: integer
1454
+ page:
1455
+ type: integer
1456
+ pageSize:
1457
+ type: integer
1458
+ LotteMartProductSearchResponse:
1459
+ type: object
1460
+ properties:
1461
+ success:
1462
+ type: boolean
1463
+ example: true
1464
+ data:
1465
+ type: object
1466
+ properties:
1467
+ products:
1468
+ type: array
1469
+ items:
1470
+ $ref: "#/components/schemas/LotteMartProduct"
1471
+ meta:
1472
+ type: object
1473
+ properties:
1474
+ total:
1475
+ type: integer
1476
+ page:
1477
+ type: integer
1478
+ pageSize:
1479
+ type: integer
1480
+ Gs25Store:
1481
+ type: object
1482
+ properties:
1483
+ storeCode:
1484
+ type: string
1485
+ example: VE463
1486
+ storeName:
1487
+ type: string
1488
+ example: 강남역점
1489
+ address:
1490
+ type: string
1491
+ example: 서울특별시 강남구 강남대로 396
1492
+ phone:
1493
+ type: string
1494
+ example: 02-1234-5678
1495
+ latitude:
1496
+ type: number
1497
+ format: float
1498
+ example: 37.4982
1499
+ longitude:
1500
+ type: number
1501
+ format: float
1502
+ example: 127.0276
1503
+ realStockQuantity:
1504
+ type: integer
1505
+ example: 3
1506
+ distanceM:
1507
+ type: number
1508
+ nullable: true
1509
+ example: 120
1510
+ propertyNames:
1511
+ type: array
1512
+ items:
1513
+ type: string
1514
+ example:
1515
+ - 반값택배픽업
1516
+ - 와인25플러스
1517
+ Gs25ProductCandidate:
1518
+ type: object
1519
+ properties:
1520
+ name:
1521
+ type: string
1522
+ example: 오리온)오감자50G
1523
+ sellPrice:
1524
+ type: integer
1525
+ nullable: true
1526
+ example: 1700
1527
+ matchedStoreCount:
923
1528
  type: integer
924
- example: 51000
925
- discountRate:
1529
+ example: 120
1530
+ inStockStoreCount:
926
1531
  type: integer
927
- example: 37
928
- o2oStockFlag:
929
- type: boolean
930
- example: true
931
- o2oRemainQuantity:
1532
+ example: 42
1533
+ totalStockQuantity:
932
1534
  type: integer
933
- example: 0
934
- OliveyoungStoreSearchResponse:
1535
+ example: 110
1536
+ Gs25StoreSearchResponse:
935
1537
  type: object
936
1538
  properties:
937
1539
  success:
@@ -943,17 +1545,35 @@ components:
943
1545
  stores:
944
1546
  type: array
945
1547
  items:
946
- $ref: "#/components/schemas/OliveyoungStore"
1548
+ $ref: "#/components/schemas/Gs25Store"
947
1549
  meta:
948
1550
  type: object
949
1551
  properties:
950
1552
  total:
951
1553
  type: integer
952
- page:
1554
+ pageSize:
1555
+ type: integer
1556
+ Gs25ProductSearchResponse:
1557
+ type: object
1558
+ properties:
1559
+ success:
1560
+ type: boolean
1561
+ example: true
1562
+ data:
1563
+ type: object
1564
+ properties:
1565
+ products:
1566
+ type: array
1567
+ items:
1568
+ $ref: "#/components/schemas/Gs25ProductCandidate"
1569
+ meta:
1570
+ type: object
1571
+ properties:
1572
+ total:
953
1573
  type: integer
954
1574
  pageSize:
955
1575
  type: integer
956
- OliveyoungInventoryResponse:
1576
+ Gs25InventoryResponse:
957
1577
  type: object
958
1578
  properties:
959
1579
  success:
@@ -964,103 +1584,272 @@ components:
964
1584
  properties:
965
1585
  keyword:
966
1586
  type: string
967
- example: 선크림
968
- location:
1587
+ example: 오감자
1588
+ product:
969
1589
  type: object
970
1590
  properties:
971
- latitude:
972
- type: number
973
- format: float
974
- longitude:
975
- type: number
976
- format: float
977
- nearbyStores:
1591
+ name:
1592
+ type: string
1593
+ nullable: true
1594
+ example: 오리온)오감자50G
1595
+ sellPrice:
1596
+ type: integer
1597
+ nullable: true
1598
+ example: 1700
1599
+ inventory:
978
1600
  type: object
979
1601
  properties:
980
- totalCount:
1602
+ totalStoreCount:
981
1603
  type: integer
1604
+ example: 17684
1605
+ matchedStoreCount:
1606
+ type: integer
1607
+ example: 100
1608
+ inStockStoreCount:
1609
+ type: integer
1610
+ example: 35
1611
+ totalStockQuantity:
1612
+ type: integer
1613
+ example: 90
982
1614
  stores:
983
1615
  type: array
984
1616
  items:
985
- $ref: "#/components/schemas/OliveyoungStore"
1617
+ $ref: "#/components/schemas/Gs25Store"
1618
+ SevenElevenProduct:
1619
+ type: object
1620
+ properties:
1621
+ itemCode:
1622
+ type: string
1623
+ example: 8801056252243
1624
+ itemName:
1625
+ type: string
1626
+ example: 칠성)핫식스더킹퍼플500ml
1627
+ salePrice:
1628
+ type: integer
1629
+ nullable: true
1630
+ example: 3000
1631
+ imageUrl:
1632
+ type: string
1633
+ nullable: true
1634
+ example:
1635
+ SevenElevenStockError:
1636
+ type: object
1637
+ nullable: true
1638
+ properties:
1639
+ cause:
1640
+ type: string
1641
+ example: api
1642
+ httpStatus:
1643
+ type: integer
1644
+ nullable: true
1645
+ example: 400
1646
+ code:
1647
+ type: integer
1648
+ nullable: true
1649
+ example: 501
1650
+ message:
1651
+ type: string
1652
+ example: RSA 복호화 실패
1653
+ raw:
1654
+ type: string
1655
+ nullable: true
1656
+ SevenElevenStoreInventory:
1657
+ type: object
1658
+ properties:
1659
+ storeCode:
1660
+ type: string
1661
+ example: 54928
1662
+ storeName:
1663
+ type: string
1664
+ example: 안산중앙일번가점
1665
+ address:
1666
+ type: string
1667
+ example: 경기 안산시 단원구 중앙대로 907 2동 2121호
1668
+ latitude:
1669
+ type: number
1670
+ format: float
1671
+ example: 37.317371500357
1672
+ longitude:
1673
+ type: number
1674
+ format: float
1675
+ example: 126.837004318586
1676
+ stockQuantity:
1677
+ type: integer
1678
+ example: 14
1679
+ isSoldOut:
1680
+ type: boolean
1681
+ example: false
1682
+ distanceM:
1683
+ type: integer
1684
+ nullable: true
1685
+ example: 100
1686
+ SevenElevenInventoryResponse:
1687
+ type: object
1688
+ properties:
1689
+ success:
1690
+ type: boolean
1691
+ example: true
1692
+ data:
1693
+ type: object
1694
+ properties:
1695
+ keyword:
1696
+ type: string
1697
+ example: 핫식스
1698
+ storeKeyword:
1699
+ type: string
1700
+ example: 안산 중앙역
1701
+ product:
1702
+ anyOf:
1703
+ - $ref: "#/components/schemas/SevenElevenProduct"
1704
+ - type: null
1705
+ stockAvailable:
1706
+ type: boolean
1707
+ example: true
1708
+ stockError:
1709
+ $ref: "#/components/schemas/SevenElevenStockError"
1710
+ note:
1711
+ type: string
1712
+ example: 실시간 재고 데이터가 포함되어 있습니다.
986
1713
  inventory:
987
1714
  type: object
988
1715
  properties:
989
- totalCount:
1716
+ totalStoreCount:
990
1717
  type: integer
991
- nextPage:
992
- type: boolean
993
- products:
1718
+ example: 4
1719
+ inStockStoreCount:
1720
+ type: integer
1721
+ example: 3
1722
+ count:
1723
+ type: integer
1724
+ example: 4
1725
+ stores:
994
1726
  type: array
995
1727
  items:
996
- $ref: "#/components/schemas/OliveyoungProduct"
1728
+ $ref: "#/components/schemas/SevenElevenStoreInventory"
997
1729
  meta:
998
1730
  type: object
999
1731
  properties:
1000
1732
  total:
1001
1733
  type: integer
1002
- page:
1003
- type: integer
1734
+ example: 4
1004
1735
  pageSize:
1005
1736
  type: integer
1006
- MegaboxTheater:
1737
+ example: 10
1738
+ LotteCinemaTheater:
1007
1739
  type: object
1008
1740
  properties:
1009
1741
  theaterId:
1010
1742
  type: string
1011
- example: 1372
1743
+ example: 1016
1012
1744
  theaterName:
1013
1745
  type: string
1014
- example: 강남
1746
+ example: 월드타워
1747
+ regionCode:
1748
+ type: string
1749
+ example: 1
1750
+ regionDetailCode:
1751
+ type: string
1752
+ example: 0001
1015
1753
  address:
1016
1754
  type: string
1017
- example: 서울특별시 강남구 강남대로 438
1755
+ example: 서울 송파구 올림픽로 300
1018
1756
  latitude:
1019
1757
  type: number
1020
1758
  format: float
1021
- example: 37.4982
1759
+ example: 37.5132941
1022
1760
  longitude:
1023
1761
  type: number
1024
1762
  format: float
1025
- example: 127.0264
1763
+ example: 127.104215
1026
1764
  distanceKm:
1027
1765
  type: number
1028
1766
  format: float
1029
1767
  example: 0.5
1030
- MegaboxShowtime:
1768
+ LotteCinemaResolvedLocation:
1031
1769
  type: object
1032
1770
  properties:
1033
- scheduleId:
1771
+ keyword:
1034
1772
  type: string
1035
- example: 2603041372011
1773
+ nullable: true
1774
+ example: 안산 중앙역
1775
+ latitude:
1776
+ type: number
1777
+ format: float
1778
+ nullable: true
1779
+ example: 37.3172
1780
+ longitude:
1781
+ type: number
1782
+ format: float
1783
+ nullable: true
1784
+ example: 126.839
1785
+ geocodeUsed:
1786
+ type: boolean
1787
+ example: true
1788
+ formattedAddress:
1789
+ type: string
1790
+ nullable: true
1791
+ example: 대한민국 경기도 안산시 단원구 고잔동 535
1792
+ LotteCinemaMovie:
1793
+ type: object
1794
+ properties:
1036
1795
  movieId:
1037
1796
  type: string
1038
- example: 25104500
1797
+ example: 23816
1039
1798
  movieName:
1040
1799
  type: string
1041
- example: 미키 17
1800
+ example: 왕과 사는 남자
1801
+ rating:
1802
+ type: string
1803
+ example: 12세이상관람가
1804
+ durationMinutes:
1805
+ type: integer
1806
+ example: 127
1807
+ releaseDate:
1808
+ type: string
1809
+ example: 2026-03-10
1810
+ LotteCinemaShowtime:
1811
+ type: object
1812
+ properties:
1813
+ scheduleId:
1814
+ type: string
1815
+ example: 20260310-1016-1201-1
1042
1816
  theaterId:
1043
1817
  type: string
1044
- example: 1372
1818
+ example: 1016
1045
1819
  theaterName:
1046
1820
  type: string
1047
- example: 강남
1821
+ example: 월드타워
1822
+ movieId:
1823
+ type: string
1824
+ example: 23816
1825
+ movieName:
1826
+ type: string
1827
+ example: 왕과 사는 남자
1828
+ screenId:
1829
+ type: string
1830
+ example: 1201
1831
+ screenName:
1832
+ type: string
1833
+ example: 1관 샤롯데
1048
1834
  playDate:
1049
1835
  type: string
1050
- example: 20260304
1836
+ example: 20260310
1051
1837
  startTime:
1052
1838
  type: string
1053
- example: "09:30"
1839
+ example: "10:40"
1054
1840
  endTime:
1055
1841
  type: string
1056
- example: "11:20"
1842
+ example: "12:47"
1057
1843
  totalSeats:
1058
1844
  type: integer
1059
- example: 120
1845
+ example: 32
1846
+ bookedSeats:
1847
+ type: integer
1848
+ example: 28
1060
1849
  remainingSeats:
1061
1850
  type: integer
1062
- example: 42
1063
- MegaboxTheaterSearchResponse:
1851
+ example: 4
1852
+ LotteCinemaTheaterSearchResponse:
1064
1853
  type: object
1065
1854
  properties:
1066
1855
  success:
@@ -1069,23 +1858,28 @@ components:
1069
1858
  data:
1070
1859
  type: object
1071
1860
  properties:
1072
- location:
1073
- type: object
1074
- properties:
1075
- latitude:
1076
- type: number
1077
- format: float
1078
- longitude:
1079
- type: number
1080
- format: float
1081
- playDate:
1861
+ keyword:
1082
1862
  type: string
1083
- areaCode:
1863
+ nullable: true
1864
+ latitude:
1865
+ type: number
1866
+ format: float
1867
+ nullable: true
1868
+ longitude:
1869
+ type: number
1870
+ format: float
1871
+ nullable: true
1872
+ geocodeUsed:
1873
+ type: boolean
1874
+ formattedAddress:
1875
+ type: string
1876
+ nullable: true
1877
+ playDate:
1084
1878
  type: string
1085
1879
  theaters:
1086
1880
  type: array
1087
1881
  items:
1088
- $ref: "#/components/schemas/MegaboxTheater"
1882
+ $ref: "#/components/schemas/LotteCinemaTheater"
1089
1883
  meta:
1090
1884
  type: object
1091
1885
  properties:
@@ -1093,7 +1887,7 @@ components:
1093
1887
  type: integer
1094
1888
  pageSize:
1095
1889
  type: integer
1096
- MegaboxMovieListResponse:
1890
+ LotteCinemaMovieListResponse:
1097
1891
  type: object
1098
1892
  properties:
1099
1893
  success:
@@ -1113,38 +1907,39 @@ components:
1113
1907
  movieId:
1114
1908
  type: string
1115
1909
  nullable: true
1116
- areaCode:
1910
+ keyword:
1117
1911
  type: string
1912
+ nullable: true
1913
+ latitude:
1914
+ type: number
1915
+ format: float
1916
+ nullable: true
1917
+ longitude:
1918
+ type: number
1919
+ format: float
1920
+ nullable: true
1921
+ resolvedTheater:
1922
+ anyOf:
1923
+ - $ref: "#/components/schemas/LotteCinemaTheater"
1924
+ - type: null
1118
1925
  theaters:
1119
1926
  type: array
1120
1927
  items:
1121
- type: object
1122
- properties:
1123
- theaterId:
1124
- type: string
1125
- theaterName:
1126
- type: string
1928
+ $ref: "#/components/schemas/LotteCinemaTheater"
1127
1929
  movies:
1128
1930
  type: array
1129
1931
  items:
1130
- type: object
1131
- properties:
1132
- movieId:
1133
- type: string
1134
- movieName:
1135
- type: string
1136
- movieStatus:
1137
- type: string
1932
+ $ref: "#/components/schemas/LotteCinemaMovie"
1138
1933
  showtimes:
1139
1934
  type: array
1140
1935
  items:
1141
- $ref: "#/components/schemas/MegaboxShowtime"
1936
+ $ref: "#/components/schemas/LotteCinemaShowtime"
1142
1937
  meta:
1143
1938
  type: object
1144
1939
  properties:
1145
1940
  total:
1146
1941
  type: integer
1147
- MegaboxSeatListResponse:
1942
+ LotteCinemaSeatListResponse:
1148
1943
  type: object
1149
1944
  properties:
1150
1945
  success:
@@ -1164,12 +1959,25 @@ components:
1164
1959
  movieId:
1165
1960
  type: string
1166
1961
  nullable: true
1167
- areaCode:
1962
+ keyword:
1168
1963
  type: string
1964
+ nullable: true
1965
+ latitude:
1966
+ type: number
1967
+ format: float
1968
+ nullable: true
1969
+ longitude:
1970
+ type: number
1971
+ format: float
1972
+ nullable: true
1973
+ resolvedTheater:
1974
+ anyOf:
1975
+ - $ref: "#/components/schemas/LotteCinemaTheater"
1976
+ - type: null
1169
1977
  seats:
1170
1978
  type: array
1171
1979
  items:
1172
- $ref: "#/components/schemas/MegaboxShowtime"
1980
+ $ref: "#/components/schemas/LotteCinemaShowtime"
1173
1981
  meta:
1174
1982
  type: object
1175
1983
  properties:
@@ -1189,6 +1997,22 @@ components:
1189
1997
  regionCode:
1190
1998
  type: string
1191
1999
  example: 01
2000
+ latitude:
2001
+ type: number
2002
+ nullable: true
2003
+ example: 37.5016
2004
+ longitude:
2005
+ type: number
2006
+ nullable: true
2007
+ example: 127.0264
2008
+ distanceKm:
2009
+ type: number
2010
+ nullable: true
2011
+ example: 0.8
2012
+ address:
2013
+ type: string
2014
+ nullable: true
2015
+ example: 서울특별시 강남구 강남대로 438
1192
2016
  CgvMovie:
1193
2017
  type: object
1194
2018
  properties:
@@ -1251,6 +2075,29 @@ components:
1251
2075
  regionCode:
1252
2076
  type: string
1253
2077
  nullable: true
2078
+ keyword:
2079
+ type: string
2080
+ nullable: true
2081
+ latitude:
2082
+ type: number
2083
+ nullable: true
2084
+ longitude:
2085
+ type: number
2086
+ nullable: true
2087
+ keyword:
2088
+ type: string
2089
+ nullable: true
2090
+ latitude:
2091
+ type: number
2092
+ nullable: true
2093
+ longitude:
2094
+ type: number
2095
+ nullable: true
2096
+ geocodeUsed:
2097
+ type: boolean
2098
+ formattedAddress:
2099
+ type: string
2100
+ nullable: true
1254
2101
  theaters:
1255
2102
  type: array
1256
2103
  items:
@@ -1279,6 +2126,19 @@ components:
1279
2126
  theaterCode:
1280
2127
  type: string
1281
2128
  nullable: true
2129
+ keyword:
2130
+ type: string
2131
+ nullable: true
2132
+ latitude:
2133
+ type: number
2134
+ nullable: true
2135
+ longitude:
2136
+ type: number
2137
+ nullable: true
2138
+ resolvedTheater:
2139
+ anyOf:
2140
+ - $ref: "#/components/schemas/CgvTheater"
2141
+ - type: null
1282
2142
  movies:
1283
2143
  type: array
1284
2144
  items:
@@ -1308,6 +2168,19 @@ components:
1308
2168
  movieCode:
1309
2169
  type: string
1310
2170
  nullable: true
2171
+ keyword:
2172
+ type: string
2173
+ nullable: true
2174
+ latitude:
2175
+ type: number
2176
+ nullable: true
2177
+ longitude:
2178
+ type: number
2179
+ nullable: true
2180
+ resolvedTheater:
2181
+ anyOf:
2182
+ - $ref: "#/components/schemas/CgvTheater"
2183
+ - type: null
1311
2184
  timetable:
1312
2185
  type: array
1313
2186
  items:
@@ -1336,3 +2209,17 @@ components:
1336
2209
  type: string
1337
2210
  description: 에러 메시지
1338
2211
  example: 검색어(q)를 입력해주세요.
2212
+ ActionQueryResponse:
2213
+ type: object
2214
+ properties:
2215
+ success:
2216
+ type: boolean
2217
+ example: true
2218
+ data:
2219
+ type: object
2220
+ additionalProperties: true
2221
+ description: 대상 엔드포인트가 반환한 data 객체
2222
+ meta:
2223
+ type: object
2224
+ additionalProperties: true
2225
+ description: 대상 엔드포인트가 반환한 meta 객체