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

Skip to content

Latest commit

 

History

History
3340 lines (3340 loc) · 88.9 KB

openapi.json

File metadata and controls

3340 lines (3340 loc) · 88.9 KB
{
"openapi": "3.1.0",
"info": {
"title": "다이소 MCP API (OpenAI Actions용)",
"description": "OpenAI 챗봇의 OpenAPI import 개수 제한을 피하기 위해 모든 GET API를 단일 facade 엔드포인트로 집약한 스펙입니다.\n\n실제 런타임은 기존 /api/{service}/... 엔드포인트로 위임하며, 이 스펙은 OpenAI Actions 등록 전용으로 사용합니다.\n\n브랜드명이 요청 앞부분에 나오면 뒤의 상품/재고 요청까지 같은 브랜드로 해석해야 합니다. 예: \"안산 중앙역 주변 다이소 찾아주시고 핫식스 재고 찾아주세요\"는 다이소 기준 조회를 먼저 수행하고, 결과가 없을 때만 다른 브랜드를 제안합니다.\n\n전체 개별 엔드포인트 스펙이 필요하면 /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": "메가박스 지역 코드",
"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": {
0