8000 daiso-mcp/openapi.yaml at v1.2.8 · hmmhmmhm/daiso-mcp · GitHub
[go: up one dir, main page]

Skip to content

Latest commit

 

History

History
2333 lines (2329 loc) · 61 KB

openapi.yaml

File metadata and controls

2333 lines (2329 loc) · 61 KB
openapi: 3.1.0
info:
title: 다이소 MCP API (OpenAI Actions용)
description: |
OpenAI 챗봇의 OpenAPI import 개수 제한을 피하기 위해 모든 GET API를 단일 facade 엔드포인트로 집약한 스펙입니다.
실제 런타임은 기존 /api/{service}/... 엔드포인트로 위임하며, 이 스펙은 OpenAI Actions 등록 전용으로 사용합니다.
브랜드명이 요청 앞부분에 나오면 뒤의 상품/재고 요청까지 같은 브랜드로 해석해야 합니다. 예: "안산 중앙역 주변 다이소 찾아주시고 핫식스 재고 찾아주세요"는 다이소 기준 조회를 먼저 수행하고, 결과가 없을 때만 다른 브랜드를 제안합니다.
전체 개별 엔드포인트 스펙이 필요하면 /openapi-full.json 또는 /openapi-full.yaml 을 사용하세요.
version: 1.0.0
contact:
name: GitHub Repository
url: "https://github.com/hmmhmmhm/daiso-mcp"
servers:
- url: "https://mcp.aka.page"
description: Production Server
paths:
/api/actions/query:
get:
operationId: queryAction
summary: 공통 GET 액션 실행
description: action 값에 따라 기존 GET API 엔드포인트로 프록시합니다. OpenAI Actions 등록 시 이 단일 엔드포인트를 사용하세요.
parameters:
- name: cinemaCode
in: query
required: false
description: 디트릭스 극장 코드
schema:
type: string
- name: brandCode
in: query
required: false
description: 디트릭스 브랜드 코드
schema:
type: string
- name: region
in: query
required: false
description: 디트릭스 광역 지역명
schema:
type: string
- name: movieName
in: query
required: false
description: 디트릭스 영화명 부분 일치
schema:
type: string
- name: includePlayDates
in: query
required: false
description: 디트릭스 상영 가능 날짜 포함
schema:
type: boolean
- name: action
in: query
required: true
description: 실행할 액션 이름입니다. 사용 가능한 값은 enum 목록을 참고하세요.
schema:
type: string
enum:
- dtryxListCinemas
- dtryxListNowShowing
- dtryxGetRemainingSeats
- daisoSearchProducts
- daisoGetProduct
- daisoFindStores
- daisoCheckInventory
- daisoGetDisplayLocation
- oliveyoungSearchProducts
- oliveyoungFindStores
- oliveyoungCheckInventory
- cuFindStores
- cuCheckInventory
- emart24FindStores
- emart24SearchProducts
- emart24CheckInventory
- lottemartFindStores
- lottemartSearchProducts
- gs25FindStores
- gs25SearchProducts
- gs25CheckInventory
- sevenelevenSearchProducts
- sevenelevenSearchStores
- sevenelevenCheckInventory
- sevenelevenGetPopwords
- sevenelevenGetCatalog
- compareProducts
- placesSearchNearby
- submitDeveloperRequest
- megaboxFindTheaters
- megaboxListMovies
- megaboxGetSeats
- lottecinemaFindTheaters
- lottecinemaListMovies
- lottecinemaGetSeats
- cgvFindTheaters
- cgvSearchMovies
- cgvGetTimetable
- name: q
in: query
required: false
description: 다이소 제품 검색어
schema:
type: string
- name: query
in: query
required: false
description: 세븐일레븐 상품 검색어
schema:
type: string
- name: itemCode
in: query
required: false
description: GS25 상품 코드
schema:
type: string
- name: productId
in: query
required: false
description: 제품 ID 또는 상세 조회용 path 파라미터. 상품명만 알면 먼저 daisoSearchProducts 또는 /api/daiso/products로 productId를 확인하세요.
schema:
type: string
- name: keyword
in: query
required: false
description: 공통 키워드 파라미터
schema:
type: string
- name: location
in: query
required: false
description: 주변 장소 검색 지역/역/주소 키워드
schema:
type: string
- name: category
in: query
required: false
description: 주변 장소 카테고리(restaurant, cafe, food, dessert, all)
schema:
type: string
- name: services
in: query
required: false
description: 통합 비교 서비스 목록(daiso,gs25,seveneleven,emart24)
schema:
type: string
- name: type
in: query
required: false
description: 개발자 요청 유형(bug, improvement, feature, docs, other)
schema:
type: string
- name: severity
in: query
required: false
description: 개발자 요청 영향도(low, medium, high, critical)
schema:
type: string
- name: title
in: query
required: false
description: 개발자 요청 제목
schema:
type: string
- name: description
in: query
required: false
description: 개발자 요청 상세 설명
schema:
type: string
- name: toolName
in: query
required: false
description: 문제가 발생했거나 개선이 필요한 MCP 도구 이름
schema:
type: string
- name: reproduction
in: query
required: false
description: 오류 재현 방법
schema:
type: string
- name: expected
in: query
required: false
description: 기대 결과
schema:
type: string
- name: actual
in: query
required: false
description: 실제 결과
schema:
type: string
- name: source
in: query
required: false
description: 요청 출처(mcp, chatgpt, claude, cli, api, other)
schema:
type: string
- name: sido
in: query
required: false
description: 다이소 시/도
schema:
type: string
- name: gugun
in: query
required: false
description: 다이소 구/군
schema:
type: string
- name: dong
in: query
required: false
description: 다이소 동
schema:
type: string
- name: area
in: query
required: false
description: 롯데마트 지역
schema:
type: string
- name: area1
in: query
required: false
description: 이마트24 1차 지역
schema:
type: string
- name: area2
in: query
required: false
description: 이마트24 2차 지역
schema:
type: string
- name: areaCode
in: query
required: false
description: 메가박스 지역 코ë“ 8BD0 œ
schema:
type: string
- name: brandVariant
in: query
required: false
description: 롯데마트 브랜드 변형
schema:
type: string
- name: lat
in: query
required: false
description: 위도
schema:
type: number
format: float
- name: lng
in: query
required: false
description: 경도
schema:
type: number
format: float
- name: page
in: query
required: false
description: 페이지 번호
schema:
type: integer
- name: pageIdx
in: query
required: false
description: 올리브영 페이지 번호
schema:
type: integer
- name: pageLimit
in: query
required: false
description: 롯데마트 추가 페이지 수
schema:
type: integer
- name: pageSize
in: query
required: false
description: 페이지 크기
schema:
type: integer
- name: size
in: query
required: false
description: 페이지 크기 또는 검색 크기
schema:
type: integer
- name: offset
in: query
required: false
description: CU 검색 오프셋
schema:
type: integer
- name: limit
in: query
required: false
description: 최대 결과 수
schema:
type: integer
- name: storeLimit
in: query
required: false
description: 매장 결과 제한 수
schema:
type: integer
- name: storeCode
in: query
required: false
description: 매장 코드. 다이소 진열 위치는 /api/daiso/inventory 응답의 storeInventory.stores[].storeCode에서 확인하세요.
schema:
type: string
- name: storeName
in: query
required: false
description: 매장명. 롯데마트 상품 조회에서 storeCode가 없을 때 사용하며, 모르면 먼저 lottemartFindNearbyStores 또는 /api/lottemart/stores로 확인하세요.
schema:
type: string
- name: storeKeyword
in: query
required: false
description: 매장 키워드
schema:
type: string
- name: playDate
in: query
required: false
description: 상영일(YYYYMMDD)
schema:
type: string
- name: regionCode
in: query
required: false
description: CGV 지역 코드
schema:
type: string
- name: theaterCode
in: query
required: false
description: CGV 극장 코드
schema:
type: string
- name: theaterId
in: query
required: false
description: 메가박스/롯데시네마 지점 ID
schema:
type: string
- name: movieCode
in: query
required: false
description: CGV 영화 코드
schema:
type: string
- name: movieId
in: query
required: false
description: 메가박스/롯데시네마 영화 ID
schema:
type: string
- name: pluCd
in: query
required: false
description: 이마트24 상품 PLU 코드
schema:
type: string
- name: bizNoArr
in: query
required: false
description: 이마트24 사업자번호 목록
schema:
type: string
- name: label
in: query
required: false
description: 세븐일레븐 인기 검색어 라벨
schema:
type: string
- name: sort
in: query
required: false
description: 정렬 기준
schema:
type: string
- name: searchSort
in: query
required: false
description: CU 검색 정렬 기준
schema:
type: string
- name: service24h
in: query
required: false
description: 이마트24 24시간 필터
schema:
type: boolean
- name: includeSoldOut
in: query
required: false
description: 올리브영 품절 포함 여부
schema:
type: boolean
- name: includeIssues
in: query
required: false
description: 세븐일레븐 이달의 행사지 포함 여부
schema:
type: boolean
- name: includeExhibition
in: query
required: false
description: 세븐일레븐 전시상품 포함 여부
schema:
type: boolean
- name: timeoutMs
in: query
required: false
description: 원본 요청 타임아웃(ms), 디트릭스는 1~60000
schema:
type: integer
responses:
200:
description: 프록시 호출 성공
content:
application/json:
schema:
$ref: "#/components/schemas/ActionQueryResponse"
400:
description: 잘못된 요청
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
components:
schemas:
Product:
type: object
description: 제품 정보
properties:
id:
type: string
description: 제품 ID
example: 1234567890
name:
type: string
description: 제품명
example: PP 수납박스 대형
price:
type: integer
description: 가격 (원)
example: 5000
imageUrl:
type: string
description: 제품 이미지 URL
example: "https://cdn.daisomall.co.kr/..."
soldOut:
type: boolean
description: 품절 여부
example: false
isNew:
type: boolean
description: 신상품 여부
example: false
pickupAvailable:
type: boolean
description: 매장 픽업 가능 여부
example: true
ProductDetail:
type: object
description: 제품 상세 정보
properties:
id:
type: string
description: 제품 ID
name:
type: string
description: 제품명
price:
type: integer
description: 가격 (원)
currency:
type: string
description: 통화
example: KRW
imageUrl:
type: string
description: 제품 이미지 URL
brand:
type: string
description: 브랜드명
soldOut:
type: boolean
description: 품절 여부
isNew:
type: boolean
description: 신상품 여부
InventoryProduct:
type: object
description: 재고 응답에 포함되는 상품 요약 정보
properties:
id:
type: string
description: 제품 ID
name:
type: string
description: 제품명
imageUrl:
type: string
description: 제품 이미지 URL
brand:
type: string
description: 브랜드명
soldOut:
type: boolean
description: 품절 여부
isNew:
type: boolean
description: 신상품 여부
Store:
type: object
description: 매장 정보
properties:
name:
type: string
description: 매장명
example: 다이소 강남역점
phone:
type: string
description: 전화번호
example: 02-1234-5678
address:
type: string
description: 주소
example: 서울특별시 강남구 강남대로 123
lat:
type: number
format: float
description: 위도
example: 37.4979
lng:
type: number
format: float
description: 경도
example: 127.0276
openTime:
type: string
description: 영업 시작 시간
example: "10:00"
closeTime:
type: string
description: 영업 종료 시간
example: "22:00"
options:
type: object
description: 매장 옵션
properties:
parking:
type: boolean
description: 주차 가능 여부
pickup:
type: boolean
description: 픽업 가능 여부
taxFree:
type: boolean
description: 면세 가능 여부
StoreInventory:
type: object
description: 매장 재고 정보
properties:
storeCode:
type: string
description: 매장 코드
example: ST001
storeName:
type: string
description: 매장명
example: 다이소 강남역점
address:
type: string
description: 주소
distance:
type: string
description: 거리
example: 0.5km
quantity:
type: integer
description: 재고 수량
example: 12
options:
type: object
properties:
parking:
type: boolean
pickup:
type: boolean
ProductSearchResponse:
type: object
properties:
success:
type: boolean
example: true
data:
type: object
properties:
products:
type: array
items:
$ref: "#/components/schemas/Product"
meta:
type: object
properties:
total:
type: integer
description: 전체 결과 수
page:
type: integer
description: 현재 페이지
pageSize:
type: integer
description: 페이지당 결과 수
ProductDetailResponse:
type: object
properties:
success:
type: boolean
example: true
data:
$ref: "#/components/schemas/ProductDetail"
StoreSearchResponse:
type: object
properties:
success:
type: boolean
example: true
data:
type: object
properties:
stores:
type: array
items:
$ref: "#/components/schemas/Store"
meta:
type: object
properties:
total:
type: integer
description: 전체 결과 수
InventoryResponse:
type: object
properties:
success:
type: boolean
example: true
data:
type: object
properties:
productId:
type: string
description: 제품 ID
product:
$ref: "#/components/schemas/InventoryProduct"
location:
type: object
properties:
latitude:
type: number
format: float
longitude:
type: number
format: float
onlineStock:
type: integer
description: 온라인 재고 수량
example: 150
storeInventory:
type: object
properties:
totalStores:
type: integer
description: 전체 매장 수
inStockCount:
type: integer
description: 재고 있는 매장 수
stores:
type: array
items:
$ref: "#/components/schemas/StoreInventory"
meta:
type: object
properties:
total:
type: integer
page:
type: integer
pageSize:
type: integer
OliveyoungStore:
type: object
description: 올리브영 매장 정보
properties:
storeCode:
type: string
example: D176
storeName:
type: string
example: 올리브영 명동 타운
address:
type: string
example: 서울특별시 중구 명동길 53
latitude:
type: number
format: float
example: 37.56409158
longitude:
type: number
format: float
example: 126.9851771
pickupYn:
type: boolean
example: false
o2oRemainQuantity:
type: integer
example: 0
OliveyoungProduct:
type: object
description: 올리브영 상품 재고 정보
properties:
goodsNumber:
type: string
example: A000000200614
goodsName:
type: string
example: 달바 퍼플 톤업 선크림 듀오 기획
imageUrl:
type: string
example: "https://image.oliveyoung.co.kr/uploads/images/goods/10/0000/0020/A00000020061401ko.jpg"
priceToPay:
type: integer
example: 32130
originalPrice:
type: integer
example: 51000
discountRate:
type: integer
example: 37
o2oStockFlag:
type: boolean
description: 올리브영 원본 재고 가능 플래그
example: true
o2oRemainQuantity:
type: integer
description: 올리브영 원본 잔여 수량 필드. 0이어도 재고가 있을 수 있음
example: 0
inStock:
type: boolean
description: 현재 조회한 주변 매장 기준 재고 여부. storeInventory가 있으면 그 결과를 우선 반영
example: true
stockStatus:
type: string
enum:
- in_stock
- out_of_stock
example: in_stock
stockSource:
type: string
enum:
- global_search
- nearby_store
example: nearby_store
storeInventory:
$ref: "#/components/schemas/OliveyoungProductStoreInventory"
OliveyoungStockStore:
type: object
description: 올리브영 상품별 매장 재고 상태
properties:
storeCode:
type: string
example: B040
storeName:
type: string
example: 안산중앙역점
address:
type: string
example: 경기도 안산시 단원구 고잔2길 65 1층
latitude:
type: number
format: float
example: 37.3177184
longitude:
type: number
format: float
example: 126.8385857
distance:
type: number
format: float
example: 0.07
pickupYn:
type: boolean
example: true
salesStoreYn:
type: boolean
example: true
remainQuantity:
type: integer
example: 3
o2oRemainQuantity:
type: integer
example: 2
stockStatus:
type: string
enum:
- in_stock
- out_of_stock
- not_sold
example: in_stock
stockLabel:
type: string
example: 재고 3개
openYn:
type: boolean
example: true
OliveyoungProductStoreInventory:
type: object
properties:
totalCount:
type: integer
example: 1
inStockCount:
type: integer
example: 1
outOfStockCount:
type: integer
example: 0
notSoldCount:
type: integer
example: 0
stores:
type: array
items:
$ref: "#/components/schemas/OliveyoungStockStore"
OliveyoungStoreSearchResponse:
type: object
properties:
success:
type: boolean
example: true
data:
type: object
properties:
stores:
type: array
items:
$ref: "#/components/schemas/OliveyoungStore"
meta:
type: object
properties:
total:
type: integer
page:
type: integer
pageSize:
type: integer
OliveyoungProductSearchResponse:
type: object
properties:
success:
type: boolean
example: true
data:
type: object
properties:
keyword:
type: string
example: 마스크팩
count:
type: integer
example: 2
products:
type: array
items:
$ref: "#/components/schemas/OliveyoungProduct"
meta:
type: object
properties:
total:
type: integer
page:
type: integer
pageSize:
type: integer
nextPage:
type: boolean
OliveyoungInventoryResponse:
type: object
properties:
success:
type: boolean
example: true
data:
type: object
properties:
keyword:
type: string
example: 선크림
location:
type: object
properties:
latitude:
type: number
format: float
longitude:
type: number
format: float
nearbyStores:
type: object
properties:
totalCount:
type: integer
stores:
type: array
items:
$ref: "#/components/schemas/OliveyoungStore"
inventory:
type: object
properties:
totalCount:
type: integer
nextPage:
type: boolean
stockCheckedCount:
type: integer
stockUncheckedCount:
type: integer
inStockCount:
type: integer
outOfStockCount:
type: integer
products:
type: array
items:
$ref: "#/components/schemas/OliveyoungProduct"
meta:
type: object
properties:
total:
type: integer
page:
type: integer
pageSize:
type: integer
MegaboxTheater:
type: object
properties:
theaterId:
type: string
example: 1372
theaterName:
type: string
example: 강남
address:
type: string
example: 서울특별시 강남구 강남대로 438
latitude:
type: number
format: float
example: 37.4982
longitude:
type: number
format: float
example: 127.0264
distanceKm:
type: number
format: float
example: 0.5
MegaboxShowtime:
type: object
properties:
scheduleId:
type: string
example: 2603041372011
movieId:
type: string
example: 25104500
movieName:
type: string
example: 미키 17
theaterId:
type: string
example: 1372
theaterName:
type: string
example: 강남
playDate:
0