# Directory Structure ``` ├── .gitignore ├── .python-version ├── Makefile ├── pyproject.toml ├── README.md ├── scripts │ ├── img_1.png │ ├── img_2.png │ ├── img_3.png │ ├── img_4.png │ ├── img.png │ ├── old.py │ ├── output.json │ └── run.sh ├── storm_mcp_server │ ├── __init__.py │ ├── core │ │ ├── __init__.py │ │ ├── file_manager.py │ │ └── internal_api.py │ ├── main.py │ └── tools │ ├── __init__.py │ ├── tool_definitions.py │ ├── tool_handlers.py │ └── tool_upload_file.py └── uv.lock ``` # Files -------------------------------------------------------------------------------- /.python-version: -------------------------------------------------------------------------------- ``` 1 | 3.12 2 | ``` -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- ``` 1 | .idea 2 | storm_mcp_server/__pycache__/ 3 | storm_mcp_server/core/__pycache__/ 4 | storm_mcp_server/tools/__pycache__/ 5 | 6 | ``` -------------------------------------------------------------------------------- /storm_mcp_server/__init__.py: -------------------------------------------------------------------------------- ```python 1 | ``` -------------------------------------------------------------------------------- /storm_mcp_server/core/__init__.py: -------------------------------------------------------------------------------- ```python 1 | ``` -------------------------------------------------------------------------------- /storm_mcp_server/tools/__init__.py: -------------------------------------------------------------------------------- ```python 1 | ``` -------------------------------------------------------------------------------- /pyproject.toml: -------------------------------------------------------------------------------- ```toml 1 | [project] 2 | name = "storm-mcp-server" 3 | version = "0.1.0" 4 | description = "Add your description here" 5 | readme = "README.md" 6 | requires-python = ">=3.12" 7 | dependencies = [ 8 | "fastapi>=0.115.11", 9 | "mcp>=1.3.0", 10 | "requests>=2.32.3", 11 | "uvicorn>=0.34.0", 12 | ] 13 | ``` -------------------------------------------------------------------------------- /storm_mcp_server/core/internal_api.py: -------------------------------------------------------------------------------- ```python 1 | import os 2 | 3 | import requests 4 | from typing import Any, Dict, List 5 | 6 | 7 | def call_internal_api( 8 | method: str, 9 | endpoint: str, 10 | base_url: str = "https://live-stargate.sionic.im", 11 | params: Dict[str, Any] = None, 12 | data: Dict[str, Any] = None, 13 | files: Dict[str, Any] = None, 14 | ) -> Dict[str, Any]: 15 | storm_api_key = os.getenv("STORM_API_KEY") 16 | url = f"{base_url}{endpoint}" 17 | headers = {"Content-Type": "application/json", "storm-api-key": storm_api_key} 18 | 19 | if method.upper() == "GET": 20 | resp = requests.get(url, headers=headers, params=params, timeout=30) 21 | elif method.upper() == "POST": 22 | if files: 23 | # 멀티파트 24 | resp = requests.post( 25 | url, headers=headers, data=data, files=files, timeout=60 26 | ) 27 | else: 28 | resp = requests.post( 29 | url, headers=headers, json=data, params=params, timeout=30 30 | ) 31 | elif method.upper() == "DELETE": 32 | resp = requests.delete(url, headers=headers, params=params, timeout=30) 33 | else: 34 | raise ValueError(f"Unsupported HTTP method: {method}") 35 | 36 | if resp.status_code >= 400: 37 | raise Exception(f"API error: {resp.status_code} - {resp.text}") 38 | 39 | # text/plain 응답 대비 40 | try: 41 | return resp.json() 42 | except Exception: 43 | return {"status": "success", "data": resp.text} 44 | 45 | 46 | def call_chat_api( 47 | question: str, 48 | bucket_ids: List[str] = None, 49 | thread_id: str = None, 50 | webhook_url: str = None, 51 | base_url: str = "https://live-stargate.sionic.im", 52 | ) -> Dict[str, Any]: 53 | """ 54 | /api/v2/answer (non-stream) 호출 예시 55 | - header: storm-api-key: {api_key} 56 | - body: { "question": "...", "bucketIds": [...], "threadId": "...", "webhookUrl": "..." } 57 | """ 58 | url = f"{base_url}/api/v2/answer" 59 | storm_api_key = os.getenv("STORM_API_KEY") 60 | headers = { 61 | "Content-Type": "application/json", 62 | "storm-api-key": storm_api_key, 63 | } 64 | 65 | body = { 66 | "question": question, 67 | } 68 | if bucket_ids: 69 | body["bucketIds"] = bucket_ids 70 | if thread_id: 71 | body["threadId"] = thread_id 72 | if webhook_url: 73 | body["webhookUrl"] = webhook_url 74 | 75 | response = requests.post(url, headers=headers, json=body, timeout=30) 76 | if response.status_code >= 400: 77 | raise Exception(f"API error: {response.status_code} - {response.text}") 78 | 79 | return response.json() 80 | ``` -------------------------------------------------------------------------------- /storm_mcp_server/tools/tool_upload_file.py: -------------------------------------------------------------------------------- ```python 1 | import mimetypes 2 | from mcp.server import Server 3 | from mcp.types import Resource, Tool, TextContent 4 | from typing import List, Dict 5 | 6 | from storm_mcp_server.core.file_manager import FileSystemManager 7 | 8 | 9 | class FileServer: 10 | def __init__(self, base_path): 11 | self.fs = FileSystemManager(base_path) 12 | self.server = Server("file-server") 13 | 14 | def setup_handlers(self): 15 | """MCP 핸들러 설정""" 16 | 17 | @self.server.list_resources() 18 | async def list_resources() -> List[Resource]: 19 | items = await self.fs.list_directory() 20 | return [ 21 | Resource( 22 | uri=f"file:///{item['path']}", 23 | name=item["name"], 24 | mimeType=( 25 | "inode/directory" 26 | if item["type"] == "directory" 27 | else mimetypes.guess_type(item["name"])[0] or "text/plain" 28 | ), 29 | description=f"{'Directory' if item['type'] == 'directory' else 'File'}: {item['path']}", 30 | ) 31 | for item in items 32 | ] 33 | 34 | @self.server.read_resource() 35 | async def read_resource(uri: str) -> str: 36 | path = uri.replace("file:///", "") 37 | content, _ = await self.fs.read_file(path) 38 | return content 39 | 40 | @self.server.list_tools() 41 | async def list_tools() -> List[Tool]: 42 | return [ 43 | Tool( 44 | name="upload_file", 45 | description="파일 업로드(Base64 인코딩된 컨텐츠)", 46 | inputSchema={ 47 | "type": "object", 48 | "properties": { 49 | "path": { 50 | "type": "string", 51 | "description": "업로드할 파일 경로(서버 내)", 52 | }, 53 | "fileContent": { 54 | "type": "string", 55 | "description": "Base64 인코딩된 파일 내용", 56 | }, 57 | }, 58 | "required": ["path", "fileContent"], 59 | }, 60 | ), 61 | Tool( 62 | name="search_files", 63 | description="파일 검색", 64 | inputSchema={ 65 | "type": "object", 66 | "properties": { 67 | "pattern": { 68 | "type": "string", 69 | "description": "검색할 키워드", 70 | } 71 | }, 72 | "required": ["pattern"], 73 | }, 74 | ), 75 | ] 76 | 77 | @self.server.call_tool() 78 | async def call_tool(name: str, arguments: Dict) -> List[TextContent]: 79 | if name == "upload_file": 80 | # 파일 업로드 81 | path = arguments["path"] 82 | b64_content = arguments["fileContent"] 83 | 84 | await self.fs.upload_file(path, b64_content) 85 | return [ 86 | TextContent(type="text", text=f"File uploaded successfully: {path}") 87 | ] 88 | 89 | elif name == "search_files": 90 | # 파일 검색 91 | pattern = arguments["pattern"] 92 | results = await self.fs.search_files(pattern) 93 | if not results: 94 | return [TextContent(type="text", text="No files found")] 95 | 96 | text_output = "\n".join(f"[{r['type']}] {r['path']}" for r in results) 97 | return [TextContent(type="text", text=text_output)] 98 | 99 | raise ValueError(f"Unknown tool: {name}") 100 | ``` -------------------------------------------------------------------------------- /storm_mcp_server/tools/tool_handlers.py: -------------------------------------------------------------------------------- ```python 1 | import asyncio 2 | import base64 3 | import json 4 | from io import BytesIO 5 | from typing import List, Dict, Any 6 | from mcp.types import Tool, TextContent 7 | 8 | from storm_mcp_server.core.internal_api import call_internal_api, call_chat_api 9 | from storm_mcp_server.tools.tool_definitions import TOOLS_DEFINITION 10 | 11 | 12 | async def handle_list_tools() -> List[Tool]: 13 | """ 14 | MCP에서 'tools/list' 이벤트가 오면, 15 | 우리가 보유한 툴(TOOLS_DEFINITION)을 반환. 16 | """ 17 | tool_objects: List[Tool] = [] 18 | for tdef in TOOLS_DEFINITION: 19 | tool_objects.append( 20 | Tool( 21 | name=tdef["name"], 22 | description=tdef["description"], 23 | inputSchema=tdef["inputSchema"], 24 | ) 25 | ) 26 | return tool_objects 27 | 28 | 29 | async def handle_call_tool(name: str, arguments: Dict[str, Any]) -> List[TextContent]: 30 | """ 31 | MCP에서 'tool/call' 이벤트로 특정 툴(name)을 호출하면, 32 | 여기서 그 이름에 맞게 실제 비즈니스 로직(call_chat_api, call_internal_api 등)을 실행. 33 | 34 | 반환값은 List[TextContent] 형태여야 하며, MCP에 문자열 형태로 전달된다. 35 | """ 36 | try: 37 | if name == "send_nonstream_chat": 38 | # -------------------------------------------------------- 39 | # (1) /api/v2/answer (non-stream) - Storm API Key 기반 40 | # -------------------------------------------------------- 41 | question = arguments.get("question", "").strip() 42 | bucket_ids = arguments.get("bucketIds", None) 43 | thread_id = arguments.get("threadId", None) 44 | webhook_url = arguments.get("webhookUrl", None) 45 | 46 | if not question: 47 | raise ValueError("question is required") 48 | 49 | # 실제 호출 50 | response_data = await asyncio.to_thread( 51 | call_chat_api, 52 | question=question, 53 | bucket_ids=bucket_ids, 54 | thread_id=thread_id, 55 | webhook_url=webhook_url, 56 | ) 57 | result_text = json.dumps(response_data, ensure_ascii=False, indent=2) 58 | return [TextContent(type="text", text=result_text)] 59 | 60 | elif name == "list_agents": 61 | page = arguments.get("page", None) 62 | size = arguments.get("size", None) 63 | 64 | params = {} 65 | if page is not None: 66 | params["page"] = page 67 | if size is not None: 68 | params["size"] = size 69 | 70 | response_data = await asyncio.to_thread( 71 | call_internal_api, 72 | method="GET", 73 | endpoint="/api/v2/agents", 74 | params=params, 75 | ) 76 | result_text = json.dumps(response_data, ensure_ascii=False, indent=2) 77 | return [TextContent(type="text", text=result_text)] 78 | 79 | elif name == "list_buckets": 80 | # -------------------------------------------------------- 81 | # (3) /api/v2/buckets (GET) - Storm API Key 82 | # -------------------------------------------------------- 83 | agent_id = arguments.get("agent_id", "").strip() 84 | if not agent_id: 85 | raise ValueError("agent_id is required") 86 | 87 | page = arguments.get("page", None) 88 | size = arguments.get("size", None) 89 | 90 | params = {"agentId": agent_id} 91 | if page is not None: 92 | params["page"] = page 93 | if size is not None: 94 | params["size"] = size 95 | 96 | response_data = await asyncio.to_thread( 97 | call_internal_api, 98 | method="GET", 99 | endpoint="/api/v2/buckets", 100 | params=params, 101 | ) 102 | result_text = json.dumps(response_data, ensure_ascii=False, indent=2) 103 | return [TextContent(type="text", text=result_text)] 104 | 105 | elif name == "upload_document_by_file": 106 | # -------------------------------------------------------- 107 | 108 | # /api/v2/documents/by-file (POST) 109 | 110 | # - file_path (로컬 경로) 111 | 112 | # - file_base64 (Base64) 113 | 114 | # - file_name (Base64 시 파일명) 115 | 116 | # -------------------------------------------------------- 117 | 118 | bucket_id = arguments.get("bucket_id", "").strip() 119 | 120 | file_path = arguments.get("file_path", "").strip() 121 | 122 | file_base64 = arguments.get("file_base64", None) 123 | 124 | file_name = arguments.get("file_name", None) 125 | 126 | webhook_url = arguments.get("webhook_url", None) 127 | 128 | if not bucket_id: 129 | raise ValueError("bucket_id is required") 130 | 131 | # file_path, file_base64 둘 다 없으면 에러 132 | 133 | if not file_path and not file_base64: 134 | raise ValueError("Either file_path or file_base64 must be provided") 135 | 136 | data = {"bucketId": bucket_id} 137 | 138 | if webhook_url: 139 | data["webhookUrl"] = webhook_url 140 | 141 | # --------------------------- 142 | 143 | # 1) file_path 있는 경우 → 로컬 파일 열기 144 | 145 | # --------------------------- 146 | 147 | if file_path: 148 | # 로컬 파일 읽어 multipart 전송 149 | 150 | with open(file_path, "rb") as f: 151 | # MIME 타입은 일단 "application/octet-stream"으로 가정 152 | 153 | files = {"file": (file_path, f, "application/octet-stream")} 154 | 155 | response_data = await asyncio.to_thread( 156 | call_internal_api, 157 | method="POST", 158 | endpoint="/api/v2/documents/by-file", 159 | data=data, 160 | files=files, 161 | ) 162 | 163 | # --------------------------- 164 | 165 | # 2) file_base64 있는 경우 → 메모리에서 BytesIO 166 | 167 | # --------------------------- 168 | 169 | else: 170 | # file_name이 없으면 기본 이름 "uploaded_file" 171 | 172 | if not file_name: 173 | file_name = "uploaded_file" 174 | 175 | raw_data = base64.b64decode(file_base64) 176 | 177 | file_obj = BytesIO(raw_data) 178 | 179 | # 마찬가지로 MIME 타입은 "application/octet-stream" 기본 180 | 181 | files = {"file": (file_name, file_obj, "application/octet-stream")} 182 | 183 | response_data = await asyncio.to_thread( 184 | call_internal_api, 185 | method="POST", 186 | endpoint="/api/v2/documents/by-file", 187 | data=data, 188 | files=files, 189 | ) 190 | 191 | result_text = json.dumps(response_data, ensure_ascii=False, indent=2) 192 | 193 | return [TextContent(type="text", text=result_text)] 194 | 195 | else: 196 | raise ValueError(f"Tool '{name}' not found.") 197 | 198 | except Exception as e: 199 | # 에러 발생 시 MCP 쪽에 오류 메시지를 전달하기 위해 RuntimeError로 래핑 200 | raise RuntimeError(f"Tool call error: {str(e)}") from e 201 | ``` -------------------------------------------------------------------------------- /scripts/output.json: -------------------------------------------------------------------------------- ```json 1 | { 2 | "openapi": "3.0.0", 3 | "info": { 4 | "title": "Storm API", 5 | "description": "Description", 6 | "version": "1.0.0" 7 | }, 8 | "servers": [ 9 | { 10 | "url": "http://localhost:3000/", 11 | "description": "Local server" 12 | }, 13 | { 14 | "url": "https://dev.sionicstorm.ai/api/", 15 | "description": "Development server" 16 | } 17 | ], 18 | "paths": { 19 | "/": { 20 | "get": { 21 | "description": "", 22 | "responses": { 23 | "default": { 24 | "description": "" 25 | } 26 | } 27 | } 28 | }, 29 | "/health": { 30 | "get": { 31 | "description": "", 32 | "responses": { 33 | "default": { 34 | "description": "" 35 | } 36 | } 37 | } 38 | }, 39 | "/auth/login": { 40 | "get": { 41 | "tags": [ 42 | "Auth" 43 | ], 44 | "description": "Email 로그인", 45 | "parameters": [ 46 | { 47 | "name": "email", 48 | "in": "query", 49 | "schema": { 50 | "type": "string" 51 | } 52 | }, 53 | { 54 | "name": "password", 55 | "in": "query", 56 | "schema": { 57 | "type": "string" 58 | } 59 | } 60 | ], 61 | "responses": { 62 | "default": { 63 | "description": "" 64 | } 65 | } 66 | }, 67 | "post": { 68 | "tags": [ 69 | "Auth" 70 | ], 71 | "description": "Email 로그인", 72 | "responses": { 73 | "default": { 74 | "description": "" 75 | } 76 | }, 77 | "requestBody": { 78 | "content": { 79 | "application/json": { 80 | "schema": { 81 | "type": "object", 82 | "properties": { 83 | "email": { 84 | "example": "any" 85 | }, 86 | "password": { 87 | "example": "any" 88 | } 89 | } 90 | } 91 | } 92 | } 93 | } 94 | } 95 | }, 96 | "/auth/cipher-login": { 97 | "get": { 98 | "description": "", 99 | "parameters": [ 100 | { 101 | "name": "userId", 102 | "in": "query", 103 | "schema": { 104 | "type": "string" 105 | } 106 | }, 107 | { 108 | "name": "cipher", 109 | "in": "query", 110 | "schema": { 111 | "type": "string" 112 | } 113 | } 114 | ], 115 | "responses": { 116 | "default": { 117 | "description": "" 118 | } 119 | } 120 | } 121 | }, 122 | "/auth/signup": { 123 | "post": { 124 | "tags": [ 125 | "Auth" 126 | ], 127 | "description": "Email 회원가입", 128 | "responses": { 129 | "default": { 130 | "description": "" 131 | } 132 | }, 133 | "requestBody": { 134 | "content": { 135 | "application/json": { 136 | "schema": { 137 | "$ref": "#/components/schemas/postAuthSignup" 138 | } 139 | }, 140 | "application/xml": { 141 | "schema": { 142 | "$ref": "#/components/schemas/postAuthSignup" 143 | } 144 | } 145 | } 146 | } 147 | } 148 | }, 149 | "/auth/check": { 150 | "get": { 151 | "description": "", 152 | "responses": { 153 | "default": { 154 | "description": "" 155 | } 156 | }, 157 | "security": [ 158 | { 159 | "bearerAuth": [], 160 | "ApiKeyAuth": [] 161 | } 162 | ] 163 | } 164 | }, 165 | "/auth/sso/slack/": { 166 | "get": { 167 | "tags": [ 168 | "Auth" 169 | ], 170 | "description": "", 171 | "parameters": [ 172 | { 173 | "name": "state", 174 | "in": "query", 175 | "schema": { 176 | "type": "string" 177 | } 178 | } 179 | ], 180 | "responses": { 181 | "default": { 182 | "description": "" 183 | } 184 | } 185 | } 186 | }, 187 | "/auth/sso/slack/callback": { 188 | "get": { 189 | "tags": [ 190 | "Auth" 191 | ], 192 | "description": "", 193 | "parameters": [ 194 | { 195 | "name": "code", 196 | "in": "query", 197 | "schema": { 198 | "type": "string" 199 | } 200 | }, 201 | { 202 | "name": "state", 203 | "in": "query", 204 | "schema": { 205 | "type": "string" 206 | } 207 | } 208 | ], 209 | "responses": { 210 | "default": { 211 | "description": "" 212 | } 213 | } 214 | } 215 | }, 216 | "/auth/sso/google/": { 217 | "get": { 218 | "tags": [ 219 | "Auth" 220 | ], 221 | "description": "", 222 | "parameters": [ 223 | { 224 | "name": "state", 225 | "in": "query", 226 | "schema": { 227 | "type": "string" 228 | } 229 | } 230 | ], 231 | "responses": { 232 | "200": { 233 | "description": "OK" 234 | } 235 | } 236 | } 237 | }, 238 | "/auth/sso/google/callback": { 239 | "get": { 240 | "tags": [ 241 | "Auth" 242 | ], 243 | "description": "", 244 | "parameters": [ 245 | { 246 | "name": "code", 247 | "in": "query", 248 | "schema": { 249 | "type": "string" 250 | } 251 | }, 252 | { 253 | "name": "state", 254 | "in": "query", 255 | "schema": { 256 | "type": "string" 257 | } 258 | } 259 | ], 260 | "responses": { 261 | "default": { 262 | "description": "" 263 | } 264 | } 265 | } 266 | }, 267 | "/playground/clova": { 268 | "get": { 269 | "tags": [ 270 | "Playground" 271 | ], 272 | "description": "클로바 사용량 확인", 273 | "responses": { 274 | "default": { 275 | "description": "" 276 | } 277 | }, 278 | "security": [ 279 | { 280 | "bearerAuth": [], 281 | "ApiKeyAuth": [] 282 | } 283 | ] 284 | }, 285 | "post": { 286 | "tags": [ 287 | "Playground" 288 | ], 289 | "description": "클로바 사용", 290 | "responses": { 291 | "default": { 292 | "description": "" 293 | } 294 | }, 295 | "security": [ 296 | { 297 | "bearerAuth": [], 298 | "ApiKeyAuth": [] 299 | } 300 | ] 301 | } 302 | }, 303 | "/slack/install/": { 304 | "get": { 305 | "tags": [ 306 | "Slack" 307 | ], 308 | "description": "", 309 | "responses": { 310 | "default": { 311 | "description": "" 312 | } 313 | } 314 | } 315 | }, 316 | "/slack/install/callback": { 317 | "get": { 318 | "tags": [ 319 | "Slack" 320 | ], 321 | "description": "", 322 | "parameters": [ 323 | { 324 | "name": "code", 325 | "in": "query", 326 | "schema": { 327 | "type": "string" 328 | } 329 | } 330 | ], 331 | "responses": { 332 | "400": { 333 | "description": "Bad Request" 334 | } 335 | } 336 | } 337 | }, 338 | "/slack/event/": { 339 | "post": { 340 | "tags": [ 341 | "Slack" 342 | ], 343 | "description": "", 344 | "responses": { 345 | "200": { 346 | "description": "OK" 347 | }, 348 | "400": { 349 | "description": "Bad Request" 350 | } 351 | }, 352 | "requestBody": { 353 | "content": { 354 | "application/json": { 355 | "schema": { 356 | "type": "object", 357 | "properties": { 358 | "token": { 359 | "example": "any" 360 | }, 361 | "team_id": { 362 | "example": "any" 363 | }, 364 | "payload": { 365 | "example": "any" 366 | }, 367 | "challenge": { 368 | "example": "any" 369 | }, 370 | "type": { 371 | "example": "any" 372 | }, 373 | "api_app_id": { 374 | "example": "any" 375 | }, 376 | "event": { 377 | "example": "any" 378 | }, 379 | "event_id": { 380 | "example": "any" 381 | } 382 | } 383 | } 384 | } 385 | } 386 | } 387 | } 388 | }, 389 | "/slack/interactive/": { 390 | "post": { 391 | "tags": [ 392 | "Slack" 393 | ], 394 | "description": "", 395 | "responses": { 396 | "200": { 397 | "description": "OK" 398 | }, 399 | "400": { 400 | "description": "Bad Request" 401 | } 402 | }, 403 | "requestBody": { 404 | "content": { 405 | "application/json": { 406 | "schema": { 407 | "type": "object", 408 | "properties": { 409 | "token": { 410 | "example": "any" 411 | }, 412 | "team_id": { 413 | "example": "any" 414 | }, 415 | "payload": { 416 | "example": "any" 417 | } 418 | } 419 | } 420 | } 421 | } 422 | } 423 | } 424 | }, 425 | "/slack/command/": { 426 | "post": { 427 | "tags": [ 428 | "Slack" 429 | ], 430 | "description": "", 431 | "responses": { 432 | "200": { 433 | "description": "OK" 434 | }, 435 | "400": { 436 | "description": "Bad Request" 437 | } 438 | }, 439 | "requestBody": { 440 | "content": { 441 | "application/json": { 442 | "schema": { 443 | "type": "object", 444 | "properties": { 445 | "token": { 446 | "example": "any" 447 | }, 448 | "team_id": { 449 | "example": "any" 450 | }, 451 | "payload": { 452 | "example": "any" 453 | }, 454 | "user_id": { 455 | "example": "any" 456 | }, 457 | "channel_id": { 458 | "example": "any" 459 | }, 460 | "text": { 461 | "example": "any" 462 | } 463 | } 464 | } 465 | } 466 | } 467 | } 468 | } 469 | }, 470 | "/channeltalk/event/": { 471 | "post": { 472 | "tags": [ 473 | "ChannelTalk" 474 | ], 475 | "description": "", 476 | "responses": { 477 | "200": { 478 | "description": "OK" 479 | }, 480 | "400": { 481 | "description": "Bad Request" 482 | } 483 | }, 484 | "requestBody": { 485 | "content": { 486 | "application/json": { 487 | "schema": { 488 | "type": "object", 489 | "properties": { 490 | "refers": { 491 | "example": "any" 492 | }, 493 | "event": { 494 | "example": "any" 495 | }, 496 | "type": { 497 | "example": "any" 498 | }, 499 | "entity": { 500 | "example": "any" 501 | } 502 | } 503 | } 504 | } 505 | } 506 | } 507 | } 508 | }, 509 | "/kakaotalk/event/": { 510 | "post": { 511 | "tags": [ 512 | "KakaoTalk" 513 | ], 514 | "description": "", 515 | "responses": { 516 | "200": { 517 | "description": "OK" 518 | }, 519 | "400": { 520 | "description": "Bad Request" 521 | } 522 | }, 523 | "requestBody": { 524 | "content": { 525 | "application/json": { 526 | "schema": { 527 | "type": "object", 528 | "properties": { 529 | "bot": { 530 | "example": "any" 531 | }, 532 | "userRequest": { 533 | "example": "any" 534 | } 535 | } 536 | } 537 | } 538 | } 539 | } 540 | } 541 | }, 542 | "/pylon/callback/agents": { 543 | "post": { 544 | "description": "", 545 | "parameters": [ 546 | { 547 | "name": "c", 548 | "in": "query", 549 | "schema": { 550 | "type": "string" 551 | } 552 | } 553 | ], 554 | "responses": { 555 | "200": { 556 | "description": "OK" 557 | } 558 | }, 559 | "requestBody": { 560 | "content": { 561 | "application/json": { 562 | "schema": { 563 | "type": "object", 564 | "properties": { 565 | "status": { 566 | "example": "any" 567 | } 568 | } 569 | } 570 | } 571 | } 572 | } 573 | } 574 | }, 575 | "/pylon/callback/buckets": { 576 | "post": { 577 | "description": "", 578 | "parameters": [ 579 | { 580 | "name": "c", 581 | "in": "query", 582 | "schema": { 583 | "type": "string" 584 | } 585 | } 586 | ], 587 | "responses": { 588 | "200": { 589 | "description": "OK" 590 | } 591 | }, 592 | "requestBody": { 593 | "content": { 594 | "application/json": { 595 | "schema": { 596 | "type": "object", 597 | "properties": { 598 | "status": { 599 | "example": "any" 600 | } 601 | } 602 | } 603 | } 604 | } 605 | } 606 | } 607 | }, 608 | "/pylon/callback/documents": { 609 | "post": { 610 | "tags": [ 611 | "Pylon" 612 | ], 613 | "description": "", 614 | "parameters": [ 615 | { 616 | "name": "c", 617 | "in": "query", 618 | "schema": { 619 | "type": "string" 620 | } 621 | } 622 | ], 623 | "responses": { 624 | "200": { 625 | "description": "OK" 626 | } 627 | }, 628 | "requestBody": { 629 | "content": { 630 | "application/json": { 631 | "schema": { 632 | "type": "object", 633 | "properties": { 634 | "status": { 635 | "example": "any" 636 | }, 637 | "result": { 638 | "example": "any" 639 | } 640 | } 641 | } 642 | } 643 | } 644 | } 645 | } 646 | }, 647 | "/pylon/callback/advices": { 648 | "post": { 649 | "tags": [ 650 | "Pylon" 651 | ], 652 | "description": "", 653 | "parameters": [ 654 | { 655 | "name": "c", 656 | "in": "query", 657 | "schema": { 658 | "type": "string" 659 | } 660 | } 661 | ], 662 | "responses": { 663 | "200": { 664 | "description": "OK" 665 | } 666 | }, 667 | "requestBody": { 668 | "content": { 669 | "application/json": { 670 | "schema": { 671 | "type": "object", 672 | "properties": { 673 | "status": { 674 | "example": "any" 675 | }, 676 | "result": { 677 | "example": "any" 678 | } 679 | } 680 | } 681 | } 682 | } 683 | } 684 | } 685 | }, 686 | "/pylon/callback/query": { 687 | "post": { 688 | "tags": [ 689 | "Pylon" 690 | ], 691 | "description": "", 692 | "parameters": [ 693 | { 694 | "name": "c", 695 | "in": "query", 696 | "schema": { 697 | "type": "string" 698 | } 699 | } 700 | ], 701 | "responses": { 702 | "200": { 703 | "description": "OK" 704 | } 705 | }, 706 | "requestBody": { 707 | "content": { 708 | "application/json": { 709 | "schema": { 710 | "type": "object", 711 | "properties": { 712 | "task_id": { 713 | "example": "any" 714 | }, 715 | "status": { 716 | "example": "any" 717 | } 718 | } 719 | } 720 | } 721 | } 722 | } 723 | } 724 | }, 725 | "/pylon/callback/deployments": { 726 | "post": { 727 | "tags": [ 728 | "Pylon" 729 | ], 730 | "description": "", 731 | "parameters": [ 732 | { 733 | "name": "c", 734 | "in": "query", 735 | "schema": { 736 | "type": "string" 737 | } 738 | } 739 | ], 740 | "responses": { 741 | "200": { 742 | "description": "OK" 743 | } 744 | }, 745 | "requestBody": { 746 | "content": { 747 | "application/json": { 748 | "schema": { 749 | "type": "object", 750 | "properties": { 751 | "status": { 752 | "example": "any" 753 | }, 754 | "result": { 755 | "example": "any" 756 | } 757 | } 758 | } 759 | } 760 | } 761 | } 762 | } 763 | }, 764 | "/pylon/callback/write": { 765 | "post": { 766 | "tags": [ 767 | "Pylon" 768 | ], 769 | "description": "", 770 | "parameters": [ 771 | { 772 | "name": "c", 773 | "in": "query", 774 | "schema": { 775 | "type": "string" 776 | } 777 | } 778 | ], 779 | "responses": { 780 | "200": { 781 | "description": "OK" 782 | } 783 | }, 784 | "requestBody": { 785 | "content": { 786 | "application/json": { 787 | "schema": { 788 | "type": "object", 789 | "properties": { 790 | "status": { 791 | "example": "any" 792 | }, 793 | "result": { 794 | "example": "any" 795 | } 796 | } 797 | } 798 | } 799 | } 800 | } 801 | } 802 | }, 803 | "/me/": { 804 | "get": { 805 | "tags": [ 806 | "Me" 807 | ], 808 | "description": "내 정보 확인", 809 | "responses": { 810 | "default": { 811 | "description": "" 812 | } 813 | }, 814 | "security": [ 815 | { 816 | "bearerAuth": [], 817 | "ApiKeyAuth": [] 818 | } 819 | ] 820 | } 821 | }, 822 | "/me/teams": { 823 | "get": { 824 | "tags": [ 825 | "Me" 826 | ], 827 | "description": "내가 속한 팀의 리스트 확인", 828 | "parameters": [ 829 | { 830 | "$ref": "#/components/parameters/search" 831 | }, 832 | { 833 | "$ref": "#/components/parameters/order" 834 | }, 835 | { 836 | "$ref": "#/components/parameters/cursor" 837 | }, 838 | { 839 | "$ref": "#/components/parameters/take" 840 | } 841 | ], 842 | "responses": { 843 | "default": { 844 | "description": "" 845 | } 846 | }, 847 | "security": [ 848 | { 849 | "bearerAuth": [], 850 | "ApiKeyAuth": [] 851 | } 852 | ] 853 | } 854 | }, 855 | "/me/teams/invite": { 856 | "post": { 857 | "tags": [ 858 | "Me" 859 | ], 860 | "description": "팀 초대 수락", 861 | "responses": { 862 | "default": { 863 | "description": "" 864 | } 865 | }, 866 | "security": [ 867 | { 868 | "bearerAuth": [], 869 | "ApiKeyAuth": [] 870 | } 871 | ], 872 | "requestBody": { 873 | "content": { 874 | "application/json": { 875 | "schema": { 876 | "$ref": "#/components/schemas/postMeTeamInvite" 877 | } 878 | }, 879 | "application/xml": { 880 | "schema": { 881 | "$ref": "#/components/schemas/postMeTeamInvite" 882 | } 883 | } 884 | } 885 | } 886 | } 887 | }, 888 | "/teams/": { 889 | "post": { 890 | "tags": [ 891 | "Team" 892 | ], 893 | "description": "팀 생성", 894 | "responses": { 895 | "default": { 896 | "description": "" 897 | } 898 | }, 899 | "security": [ 900 | { 901 | "bearerAuth": [], 902 | "ApiKeyAuth": [] 903 | } 904 | ], 905 | "requestBody": { 906 | "content": { 907 | "application/json": { 908 | "schema": { 909 | "$ref": "#/components/schemas/postTeam" 910 | } 911 | }, 912 | "application/xml": { 913 | "schema": { 914 | "$ref": "#/components/schemas/postTeam" 915 | } 916 | } 917 | } 918 | } 919 | } 920 | }, 921 | "/teams/{teamId}": { 922 | "get": { 923 | "tags": [ 924 | "Team" 925 | ], 926 | "description": "팀 정보 획득", 927 | "parameters": [ 928 | { 929 | "name": "teamId", 930 | "in": "path", 931 | "required": true, 932 | "schema": { 933 | "type": "string" 934 | } 935 | } 936 | ], 937 | "responses": { 938 | "default": { 939 | "description": "" 940 | } 941 | }, 942 | "security": [ 943 | { 944 | "bearerAuth": [], 945 | "ApiKeyAuth": [] 946 | } 947 | ] 948 | }, 949 | "patch": { 950 | "tags": [ 951 | "Team" 952 | ], 953 | "description": "팀 속성 변경", 954 | "parameters": [ 955 | { 956 | "name": "teamId", 957 | "in": "path", 958 | "required": true, 959 | "schema": { 960 | "type": "string" 961 | } 962 | } 963 | ], 964 | "responses": { 965 | "default": { 966 | "description": "" 967 | } 968 | }, 969 | "security": [ 970 | { 971 | "bearerAuth": [], 972 | "ApiKeyAuth": [] 973 | } 974 | ], 975 | "requestBody": { 976 | "content": { 977 | "application/json": { 978 | "schema": { 979 | "$ref": "#/components/schemas/patchTeam" 980 | } 981 | }, 982 | "application/xml": { 983 | "schema": { 984 | "$ref": "#/components/schemas/patchTeam" 985 | } 986 | } 987 | } 988 | } 989 | } 990 | }, 991 | "/teams/{teamId}/members": { 992 | "get": { 993 | "tags": [ 994 | "Team" 995 | ], 996 | "description": "팀 멤버 리스트 획득", 997 | "parameters": [ 998 | { 999 | "name": "teamId", 1000 | "in": "path", 1001 | "required": true, 1002 | "schema": { 1003 | "type": "string" 1004 | } 1005 | }, 1006 | { 1007 | "$ref": "#/components/parameters/search" 1008 | }, 1009 | { 1010 | "$ref": "#/components/parameters/order" 1011 | }, 1012 | { 1013 | "$ref": "#/components/parameters/cursor" 1014 | }, 1015 | { 1016 | "$ref": "#/components/parameters/take" 1017 | } 1018 | ], 1019 | "responses": { 1020 | "default": { 1021 | "description": "" 1022 | } 1023 | }, 1024 | "security": [ 1025 | { 1026 | "bearerAuth": [], 1027 | "ApiKeyAuth": [] 1028 | } 1029 | ] 1030 | } 1031 | }, 1032 | "/teams/{teamId}/members/{userId}": { 1033 | "patch": { 1034 | "tags": [ 1035 | "Team" 1036 | ], 1037 | "description": "팀 멤버의 속성 변경", 1038 | "parameters": [ 1039 | { 1040 | "name": "teamId", 1041 | "in": "path", 1042 | "required": true, 1043 | "schema": { 1044 | "type": "string" 1045 | } 1046 | }, 1047 | { 1048 | "name": "userId", 1049 | "in": "path", 1050 | "required": true, 1051 | "schema": { 1052 | "type": "string" 1053 | } 1054 | } 1055 | ], 1056 | "responses": { 1057 | "default": { 1058 | "description": "" 1059 | } 1060 | }, 1061 | "security": [ 1062 | { 1063 | "bearerAuth": [], 1064 | "ApiKeyAuth": [] 1065 | } 1066 | ], 1067 | "requestBody": { 1068 | "content": { 1069 | "application/json": { 1070 | "schema": { 1071 | "$ref": "#/components/schemas/patchTeamMembers" 1072 | } 1073 | }, 1074 | "application/xml": { 1075 | "schema": { 1076 | "$ref": "#/components/schemas/patchTeamMembers" 1077 | } 1078 | } 1079 | } 1080 | } 1081 | } 1082 | }, 1083 | "/teams/{teamId}/invites": { 1084 | "post": { 1085 | "tags": [ 1086 | "Team" 1087 | ], 1088 | "description": "팀 멤버 초대", 1089 | "parameters": [ 1090 | { 1091 | "name": "teamId", 1092 | "in": "path", 1093 | "required": true, 1094 | "schema": { 1095 | "type": "string" 1096 | } 1097 | } 1098 | ], 1099 | "responses": { 1100 | "default": { 1101 | "description": "" 1102 | } 1103 | }, 1104 | "security": [ 1105 | { 1106 | "bearerAuth": [], 1107 | "ApiKeyAuth": [] 1108 | } 1109 | ], 1110 | "requestBody": { 1111 | "content": { 1112 | "application/json": { 1113 | "schema": { 1114 | "$ref": "#/components/schemas/postTeamInvites" 1115 | } 1116 | }, 1117 | "application/xml": { 1118 | "schema": { 1119 | "$ref": "#/components/schemas/postTeamInvites" 1120 | } 1121 | } 1122 | } 1123 | } 1124 | } 1125 | }, 1126 | "/teams/{teamId}/agents": { 1127 | "get": { 1128 | "tags": [ 1129 | "Team" 1130 | ], 1131 | "description": "팀 에이전트 리스트 획득", 1132 | "parameters": [ 1133 | { 1134 | "name": "teamId", 1135 | "in": "path", 1136 | "required": true, 1137 | "schema": { 1138 | "type": "string" 1139 | } 1140 | }, 1141 | { 1142 | "$ref": "#/components/parameters/search" 1143 | }, 1144 | { 1145 | "$ref": "#/components/parameters/order" 1146 | }, 1147 | { 1148 | "$ref": "#/components/parameters/cursor" 1149 | }, 1150 | { 1151 | "$ref": "#/components/parameters/take" 1152 | } 1153 | ], 1154 | "responses": { 1155 | "default": { 1156 | "description": "" 1157 | } 1158 | }, 1159 | "security": [ 1160 | { 1161 | "bearerAuth": [], 1162 | "ApiKeyAuth": [] 1163 | } 1164 | ] 1165 | }, 1166 | "post": { 1167 | "tags": [ 1168 | "Team" 1169 | ], 1170 | "description": "팀 에이전트 등록", 1171 | "parameters": [ 1172 | { 1173 | "name": "teamId", 1174 | "in": "path", 1175 | "required": true, 1176 | "schema": { 1177 | "type": "string" 1178 | } 1179 | } 1180 | ], 1181 | "responses": { 1182 | "default": { 1183 | "description": "" 1184 | } 1185 | }, 1186 | "security": [ 1187 | { 1188 | "bearerAuth": [], 1189 | "ApiKeyAuth": [] 1190 | } 1191 | ], 1192 | "requestBody": { 1193 | "content": { 1194 | "application/json": { 1195 | "schema": { 1196 | "$ref": "#/components/schemas/postTeamAgents" 1197 | } 1198 | }, 1199 | "application/xml": { 1200 | "schema": { 1201 | "$ref": "#/components/schemas/postTeamAgents" 1202 | } 1203 | } 1204 | } 1205 | } 1206 | } 1207 | }, 1208 | "/agents/{agentId}": { 1209 | "get": { 1210 | "tags": [ 1211 | "Agent" 1212 | ], 1213 | "description": "에이전트 정보 획득", 1214 | "parameters": [ 1215 | { 1216 | "name": "agentId", 1217 | "in": "path", 1218 | "required": true, 1219 | "schema": { 1220 | "type": "string" 1221 | } 1222 | } 1223 | ], 1224 | "responses": { 1225 | "default": { 1226 | "description": "" 1227 | } 1228 | }, 1229 | "security": [ 1230 | { 1231 | "bearerAuth": [], 1232 | "ApiKeyAuth": [] 1233 | } 1234 | ] 1235 | }, 1236 | "patch": { 1237 | "tags": [ 1238 | "Agent" 1239 | ], 1240 | "description": "팀 에이전트 수정", 1241 | "parameters": [ 1242 | { 1243 | "name": "agentId", 1244 | "in": "path", 1245 | "required": true, 1246 | "schema": { 1247 | "type": "string" 1248 | } 1249 | } 1250 | ], 1251 | "responses": { 1252 | "default": { 1253 | "description": "" 1254 | } 1255 | }, 1256 | "security": [ 1257 | { 1258 | "bearerAuth": [], 1259 | "ApiKeyAuth": [] 1260 | } 1261 | ], 1262 | "requestBody": { 1263 | "content": { 1264 | "application/json": { 1265 | "schema": { 1266 | "$ref": "#/components/schemas/patchTeamAgents" 1267 | } 1268 | }, 1269 | "application/xml": { 1270 | "schema": { 1271 | "$ref": "#/components/schemas/patchTeamAgents" 1272 | } 1273 | } 1274 | } 1275 | } 1276 | }, 1277 | "delete": { 1278 | "tags": [ 1279 | "Agent" 1280 | ], 1281 | "description": "팀 에이전트 삭제", 1282 | "parameters": [ 1283 | { 1284 | "name": "agentId", 1285 | "in": "path", 1286 | "required": true, 1287 | "schema": { 1288 | "type": "string" 1289 | } 1290 | } 1291 | ], 1292 | "responses": { 1293 | "default": { 1294 | "description": "" 1295 | } 1296 | }, 1297 | "security": [ 1298 | { 1299 | "bearerAuth": [], 1300 | "ApiKeyAuth": [] 1301 | } 1302 | ] 1303 | } 1304 | }, 1305 | "/agents/{agentId}/knowledges": { 1306 | "get": { 1307 | "tags": [ 1308 | "Agent" 1309 | ], 1310 | "description": "에이전트의 Knowledges 리스트 획득", 1311 | "parameters": [ 1312 | { 1313 | "name": "agentId", 1314 | "in": "path", 1315 | "required": true, 1316 | "schema": { 1317 | "type": "string" 1318 | } 1319 | }, 1320 | { 1321 | "$ref": "#/components/parameters/search" 1322 | }, 1323 | { 1324 | "$ref": "#/components/parameters/order" 1325 | }, 1326 | { 1327 | "$ref": "#/components/parameters/cursor" 1328 | }, 1329 | { 1330 | "$ref": "#/components/parameters/take" 1331 | } 1332 | ], 1333 | "responses": { 1334 | "default": { 1335 | "description": "" 1336 | } 1337 | }, 1338 | "security": [ 1339 | { 1340 | "bearerAuth": [], 1341 | "ApiKeyAuth": [] 1342 | } 1343 | ] 1344 | } 1345 | }, 1346 | "/agents/{agentId}/instructions": { 1347 | "delete": { 1348 | "tags": [ 1349 | "Agent" 1350 | ], 1351 | "description": "에이전트의 Knowledges 삭제", 1352 | "parameters": [ 1353 | { 1354 | "name": "agentId", 1355 | "in": "path", 1356 | "required": true, 1357 | "schema": { 1358 | "type": "string" 1359 | } 1360 | } 1361 | ], 1362 | "responses": { 1363 | "default": { 1364 | "description": "" 1365 | } 1366 | }, 1367 | "security": [ 1368 | { 1369 | "bearerAuth": [], 1370 | "ApiKeyAuth": [] 1371 | } 1372 | ], 1373 | "requestBody": { 1374 | "content": { 1375 | "application/json": { 1376 | "schema": { 1377 | "$ref": "#/components/schemas/deleteAgentKnowledges" 1378 | } 1379 | }, 1380 | "application/xml": { 1381 | "schema": { 1382 | "$ref": "#/components/schemas/deleteAgentKnowledges" 1383 | } 1384 | } 1385 | } 1386 | } 1387 | } 1388 | }, 1389 | "/agents/{agentId}/documents/url": { 1390 | "post": { 1391 | "tags": [ 1392 | "Agent" 1393 | ], 1394 | "description": "에이전트에 문서 URL 등록", 1395 | "parameters": [ 1396 | { 1397 | "name": "agentId", 1398 | "in": "path", 1399 | "required": true, 1400 | "schema": { 1401 | "type": "string" 1402 | } 1403 | }, 1404 | { 1405 | "name": "sse-connection-key", 1406 | "in": "header", 1407 | "schema": { 1408 | "type": "string" 1409 | } 1410 | } 1411 | ], 1412 | "responses": { 1413 | "default": { 1414 | "description": "" 1415 | } 1416 | }, 1417 | "security": [ 1418 | { 1419 | "bearerAuth": [], 1420 | "ApiKeyAuth": [] 1421 | } 1422 | ], 1423 | "requestBody": { 1424 | "content": { 1425 | "application/json": { 1426 | "schema": { 1427 | "$ref": "#/components/schemas/postAgentDocumentsUrl" 1428 | } 1429 | }, 1430 | "application/xml": { 1431 | "schema": { 1432 | "$ref": "#/components/schemas/postAgentDocumentsUrl" 1433 | } 1434 | } 1435 | } 1436 | } 1437 | } 1438 | }, 1439 | "/agents/{agentId}/documents/file": { 1440 | "post": { 1441 | "tags": [ 1442 | "Agent" 1443 | ], 1444 | "description": "에이전트에 문서 File 등록", 1445 | "parameters": [ 1446 | { 1447 | "name": "agentId", 1448 | "in": "path", 1449 | "required": true, 1450 | "schema": { 1451 | "type": "string" 1452 | } 1453 | }, 1454 | { 1455 | "name": "sse-connection-key", 1456 | "in": "header", 1457 | "schema": { 1458 | "type": "string" 1459 | } 1460 | }, 1461 | { 1462 | "$ref": "#/components/parameters/files" 1463 | } 1464 | ], 1465 | "responses": { 1466 | "default": { 1467 | "description": "" 1468 | } 1469 | }, 1470 | "security": [ 1471 | { 1472 | "bearerAuth": [], 1473 | "ApiKeyAuth": [] 1474 | } 1475 | ] 1476 | } 1477 | }, 1478 | "/agents/{agentId}/deployments": { 1479 | "post": { 1480 | "description": "", 1481 | "parameters": [ 1482 | { 1483 | "name": "agentId", 1484 | "in": "path", 1485 | "required": true, 1486 | "schema": { 1487 | "type": "string" 1488 | } 1489 | }, 1490 | { 1491 | "name": "sse-connection-key", 1492 | "in": "header", 1493 | "schema": { 1494 | "type": "string" 1495 | } 1496 | } 1497 | ], 1498 | "responses": { 1499 | "default": { 1500 | "description": "" 1501 | } 1502 | }, 1503 | "security": [ 1504 | { 1505 | "bearerAuth": [], 1506 | "ApiKeyAuth": [] 1507 | } 1508 | ], 1509 | "requestBody": { 1510 | "content": { 1511 | "application/json": { 1512 | "schema": { 1513 | "type": "object", 1514 | "properties": { 1515 | "memo": { 1516 | "example": "any" 1517 | }, 1518 | "agentVersionId": { 1519 | "example": "any" 1520 | } 1521 | } 1522 | } 1523 | } 1524 | } 1525 | } 1526 | }, 1527 | "get": { 1528 | "tags": [ 1529 | "Agent" 1530 | ], 1531 | "description": "에이전트의 배포 히스토리 목록 조회", 1532 | "parameters": [ 1533 | { 1534 | "name": "agentId", 1535 | "in": "path", 1536 | "required": true, 1537 | "schema": { 1538 | "type": "string" 1539 | } 1540 | }, 1541 | { 1542 | "name": "agentVersionStatus", 1543 | "in": "query", 1544 | "schema": { 1545 | "type": "string" 1546 | } 1547 | } 1548 | ], 1549 | "responses": { 1550 | "default": { 1551 | "description": "" 1552 | } 1553 | }, 1554 | "security": [ 1555 | { 1556 | "bearerAuth": [], 1557 | "ApiKeyAuth": [] 1558 | } 1559 | ] 1560 | } 1561 | }, 1562 | "/agents/{agentId}/channels": { 1563 | "post": { 1564 | "description": "", 1565 | "parameters": [ 1566 | { 1567 | "name": "agentId", 1568 | "in": "path", 1569 | "required": true, 1570 | "schema": { 1571 | "type": "string" 1572 | } 1573 | } 1574 | ], 1575 | "responses": { 1576 | "default": { 1577 | "description": "" 1578 | } 1579 | }, 1580 | "security": [ 1581 | { 1582 | "bearerAuth": [], 1583 | "ApiKeyAuth": [] 1584 | } 1585 | ], 1586 | "requestBody": { 1587 | "content": { 1588 | "application/json": { 1589 | "schema": { 1590 | "type": "object", 1591 | "properties": { 1592 | "type": { 1593 | "example": "any" 1594 | }, 1595 | "name": { 1596 | "example": "any" 1597 | }, 1598 | "kakaoBotId": { 1599 | "example": "any" 1600 | } 1601 | } 1602 | } 1603 | } 1604 | } 1605 | } 1606 | }, 1607 | "get": { 1608 | "description": "", 1609 | "parameters": [ 1610 | { 1611 | "name": "agentId", 1612 | "in": "path", 1613 | "required": true, 1614 | "schema": { 1615 | "type": "string" 1616 | } 1617 | } 1618 | ], 1619 | "responses": { 1620 | "default": { 1621 | "description": "" 1622 | } 1623 | }, 1624 | "security": [ 1625 | { 1626 | "bearerAuth": [], 1627 | "ApiKeyAuth": [] 1628 | } 1629 | ] 1630 | } 1631 | }, 1632 | "/agents/{agentId}/buckets": { 1633 | "get": { 1634 | "tags": [ 1635 | "Agent" 1636 | ], 1637 | "description": "에이전트의 버킷 리스트 획득", 1638 | "parameters": [ 1639 | { 1640 | "name": "agentId", 1641 | "in": "path", 1642 | "required": true, 1643 | "schema": { 1644 | "type": "string" 1645 | } 1646 | }, 1647 | { 1648 | "$ref": "#/components/parameters/search" 1649 | }, 1650 | { 1651 | "$ref": "#/components/parameters/order" 1652 | }, 1653 | { 1654 | "$ref": "#/components/parameters/cursor" 1655 | }, 1656 | { 1657 | "$ref": "#/components/parameters/take" 1658 | } 1659 | ], 1660 | "responses": { 1661 | "default": { 1662 | "description": "" 1663 | } 1664 | }, 1665 | "security": [ 1666 | { 1667 | "bearerAuth": [], 1668 | "ApiKeyAuth": [] 1669 | } 1670 | ] 1671 | }, 1672 | "post": { 1673 | "tags": [ 1674 | "Agent" 1675 | ], 1676 | "description": "에이전트에 버킷 등록", 1677 | "parameters": [ 1678 | { 1679 | "name": "agentId", 1680 | "in": "path", 1681 | "required": true, 1682 | "schema": { 1683 | "type": "string" 1684 | } 1685 | } 1686 | ], 1687 | "responses": { 1688 | "default": { 1689 | "description": "" 1690 | } 1691 | }, 1692 | "security": [ 1693 | { 1694 | "bearerAuth": [], 1695 | "ApiKeyAuth": [] 1696 | } 1697 | ], 1698 | "requestBody": { 1699 | "content": { 1700 | "application/json": { 1701 | "schema": { 1702 | "$ref": "#/components/schemas/postAgentBuckets" 1703 | } 1704 | }, 1705 | "application/xml": { 1706 | "schema": { 1707 | "$ref": "#/components/schemas/postAgentBuckets" 1708 | } 1709 | } 1710 | } 1711 | } 1712 | }, 1713 | "put": { 1714 | "tags": [ 1715 | "Agent" 1716 | ], 1717 | "description": "에이전트의 버킷 일괄 변경", 1718 | "parameters": [ 1719 | { 1720 | "name": "agentId", 1721 | "in": "path", 1722 | "required": true, 1723 | "schema": { 1724 | "type": "string" 1725 | } 1726 | } 1727 | ], 1728 | "responses": { 1729 | "default": { 1730 | "description": "" 1731 | } 1732 | }, 1733 | "security": [ 1734 | { 1735 | "bearerAuth": [], 1736 | "ApiKeyAuth": [] 1737 | } 1738 | ], 1739 | "requestBody": { 1740 | "content": { 1741 | "application/json": { 1742 | "schema": { 1743 | "$ref": "#/components/schemas/postAgentBuckets" 1744 | } 1745 | }, 1746 | "application/xml": { 1747 | "schema": { 1748 | "$ref": "#/components/schemas/postAgentBuckets" 1749 | } 1750 | } 1751 | } 1752 | } 1753 | } 1754 | }, 1755 | "/agents/{agentId}/threads/report": { 1756 | "get": { 1757 | "tags": [ 1758 | "Agent" 1759 | ], 1760 | "description": "에이전트의 스레드 로그 임시!! 획득", 1761 | "parameters": [ 1762 | { 1763 | "name": "agentId", 1764 | "in": "path", 1765 | "required": true, 1766 | "schema": { 1767 | "type": "string" 1768 | } 1769 | }, 1770 | { 1771 | "name": "googleDriveFolderId", 1772 | "in": "query", 1773 | "schema": { 1774 | "type": "string" 1775 | } 1776 | }, 1777 | { 1778 | "name": "fileName", 1779 | "in": "query", 1780 | "schema": { 1781 | "type": "string" 1782 | } 1783 | } 1784 | ], 1785 | "responses": { 1786 | "default": { 1787 | "description": "" 1788 | } 1789 | }, 1790 | "security": [ 1791 | { 1792 | "bearerAuth": [], 1793 | "ApiKeyAuth": [] 1794 | } 1795 | ] 1796 | } 1797 | }, 1798 | "/agents/{agentId}/versions": { 1799 | "get": { 1800 | "tags": [ 1801 | "Agent" 1802 | ], 1803 | "description": "에이전트의 배포 히스토리 목록 조회", 1804 | "parameters": [ 1805 | { 1806 | "name": "agentId", 1807 | "in": "path", 1808 | "required": true, 1809 | "schema": { 1810 | "type": "string" 1811 | } 1812 | } 1813 | ], 1814 | "responses": { 1815 | "default": { 1816 | "description": "" 1817 | } 1818 | }, 1819 | "security": [ 1820 | { 1821 | "bearerAuth": [], 1822 | "ApiKeyAuth": [] 1823 | } 1824 | ] 1825 | } 1826 | }, 1827 | "/agents/{agentId}/threads": { 1828 | "post": { 1829 | "tags": [ 1830 | "Agent" 1831 | ], 1832 | "description": "에이전트에 스레드 등록", 1833 | "parameters": [ 1834 | { 1835 | "name": "agentId", 1836 | "in": "path", 1837 | "required": true, 1838 | "schema": { 1839 | "type": "string" 1840 | } 1841 | }, 1842 | { 1843 | "name": "sse-connection-key", 1844 | "in": "header", 1845 | "schema": { 1846 | "type": "string" 1847 | } 1848 | } 1849 | ], 1850 | "responses": { 1851 | "default": { 1852 | "description": "" 1853 | } 1854 | }, 1855 | "security": [ 1856 | { 1857 | "bearerAuth": [], 1858 | "ApiKeyAuth": [] 1859 | } 1860 | ] 1861 | } 1862 | }, 1863 | "/agents/{agentId}/basic-instructions": { 1864 | "get": { 1865 | "description": "", 1866 | "parameters": [ 1867 | { 1868 | "name": "agentId", 1869 | "in": "path", 1870 | "required": true, 1871 | "schema": { 1872 | "type": "string" 1873 | } 1874 | } 1875 | ], 1876 | "responses": { 1877 | "default": { 1878 | "description": "" 1879 | } 1880 | }, 1881 | "security": [ 1882 | { 1883 | "bearerAuth": [], 1884 | "ApiKeyAuth": [] 1885 | } 1886 | ] 1887 | }, 1888 | "post": { 1889 | "description": "", 1890 | "parameters": [ 1891 | { 1892 | "name": "agentId", 1893 | "in": "path", 1894 | "required": true, 1895 | "schema": { 1896 | "type": "string" 1897 | } 1898 | } 1899 | ], 1900 | "responses": { 1901 | "default": { 1902 | "description": "" 1903 | } 1904 | }, 1905 | "security": [ 1906 | { 1907 | "bearerAuth": [], 1908 | "ApiKeyAuth": [] 1909 | } 1910 | ] 1911 | }, 1912 | "patch": { 1913 | "description": "", 1914 | "parameters": [ 1915 | { 1916 | "name": "agentId", 1917 | "in": "path", 1918 | "required": true, 1919 | "schema": { 1920 | "type": "string" 1921 | } 1922 | } 1923 | ], 1924 | "responses": { 1925 | "default": { 1926 | "description": "" 1927 | } 1928 | }, 1929 | "security": [ 1930 | { 1931 | "bearerAuth": [], 1932 | "ApiKeyAuth": [] 1933 | } 1934 | ] 1935 | }, 1936 | "delete": { 1937 | "description": "", 1938 | "parameters": [ 1939 | { 1940 | "name": "agentId", 1941 | "in": "path", 1942 | "required": true, 1943 | "schema": { 1944 | "type": "string" 1945 | } 1946 | } 1947 | ], 1948 | "responses": { 1949 | "default": { 1950 | "description": "" 1951 | } 1952 | }, 1953 | "security": [ 1954 | { 1955 | "bearerAuth": [], 1956 | "ApiKeyAuth": [] 1957 | } 1958 | ] 1959 | } 1960 | }, 1961 | "/agents/{agentId}/advices": { 1962 | "post": { 1963 | "tags": [ 1964 | "Agent" 1965 | ], 1966 | "description": "에이전트에 피드백 등록", 1967 | "parameters": [ 1968 | { 1969 | "name": "agentId", 1970 | "in": "path", 1971 | "required": true, 1972 | "schema": { 1973 | "type": "string" 1974 | } 1975 | }, 1976 | { 1977 | "name": "sse-connection-key", 1978 | "in": "header", 1979 | "schema": { 1980 | "type": "string" 1981 | } 1982 | } 1983 | ], 1984 | "responses": { 1985 | "default": { 1986 | "description": "" 1987 | } 1988 | }, 1989 | "security": [ 1990 | { 1991 | "bearerAuth": [], 1992 | "ApiKeyAuth": [] 1993 | } 1994 | ], 1995 | "requestBody": { 1996 | "content": { 1997 | "application/json": { 1998 | "schema": { 1999 | "type": "object", 2000 | "properties": { 2001 | "qnas": { 2002 | "example": "any" 2003 | } 2004 | } 2005 | } 2006 | } 2007 | } 2008 | } 2009 | } 2010 | }, 2011 | "/agents/{agentId}/configs": { 2012 | "post": { 2013 | "description": "", 2014 | "parameters": [ 2015 | { 2016 | "name": "agentId", 2017 | "in": "path", 2018 | "required": true, 2019 | "schema": { 2020 | "type": "string" 2021 | } 2022 | } 2023 | ], 2024 | "responses": { 2025 | "default": { 2026 | "description": "" 2027 | } 2028 | }, 2029 | "security": [ 2030 | { 2031 | "bearerAuth": [], 2032 | "ApiKeyAuth": [] 2033 | } 2034 | ], 2035 | "requestBody": { 2036 | "content": { 2037 | "application/json": { 2038 | "schema": { 2039 | "type": "object", 2040 | "properties": { 2041 | "promptTemplateRecipe": { 2042 | "example": "any" 2043 | }, 2044 | "systemConfig": { 2045 | "example": "any" 2046 | } 2047 | } 2048 | } 2049 | } 2050 | } 2051 | } 2052 | }, 2053 | "get": { 2054 | "description": "", 2055 | "parameters": [ 2056 | { 2057 | "name": "agentId", 2058 | "in": "path", 2059 | "required": true, 2060 | "schema": { 2061 | "type": "string" 2062 | } 2063 | } 2064 | ], 2065 | "responses": { 2066 | "default": { 2067 | "description": "" 2068 | } 2069 | }, 2070 | "security": [ 2071 | { 2072 | "bearerAuth": [], 2073 | "ApiKeyAuth": [] 2074 | } 2075 | ] 2076 | } 2077 | }, 2078 | "/documents/{documentId}": { 2079 | "get": { 2080 | "tags": [ 2081 | "Document" 2082 | ], 2083 | "description": "문서 정보 획득", 2084 | "parameters": [ 2085 | { 2086 | "name": "documentId", 2087 | "in": "path", 2088 | "required": true, 2089 | "schema": { 2090 | "type": "string" 2091 | } 2092 | } 2093 | ], 2094 | "responses": { 2095 | "default": { 2096 | "description": "" 2097 | } 2098 | }, 2099 | "security": [ 2100 | { 2101 | "bearerAuth": [], 2102 | "ApiKeyAuth": [] 2103 | } 2104 | ] 2105 | }, 2106 | "put": { 2107 | "tags": [ 2108 | "Document" 2109 | ], 2110 | "description": "문서 내용 수정 (URL로 등록한 문서)", 2111 | "parameters": [ 2112 | { 2113 | "name": "documentId", 2114 | "in": "path", 2115 | "required": true, 2116 | "schema": { 2117 | "type": "string" 2118 | } 2119 | } 2120 | ], 2121 | "responses": { 2122 | "default": { 2123 | "description": "" 2124 | } 2125 | }, 2126 | "security": [ 2127 | { 2128 | "bearerAuth": [], 2129 | "ApiKeyAuth": [] 2130 | } 2131 | ] 2132 | }, 2133 | "patch": { 2134 | "tags": [ 2135 | "Document" 2136 | ], 2137 | "description": "문서 정보 수정", 2138 | "parameters": [ 2139 | { 2140 | "name": "documentId", 2141 | "in": "path", 2142 | "required": true, 2143 | "schema": { 2144 | "type": "string" 2145 | } 2146 | }, 2147 | { 2148 | "name": "sse-connection-key", 2149 | "in": "header", 2150 | "schema": { 2151 | "type": "string" 2152 | } 2153 | } 2154 | ], 2155 | "responses": { 2156 | "default": { 2157 | "description": "" 2158 | } 2159 | }, 2160 | "security": [ 2161 | { 2162 | "bearerAuth": [], 2163 | "ApiKeyAuth": [] 2164 | } 2165 | ], 2166 | "requestBody": { 2167 | "content": { 2168 | "application/json": { 2169 | "schema": { 2170 | "type": "object", 2171 | "properties": { 2172 | "description": { 2173 | "example": "any" 2174 | }, 2175 | "bucketIds": { 2176 | "example": "any" 2177 | } 2178 | } 2179 | } 2180 | } 2181 | } 2182 | } 2183 | } 2184 | }, 2185 | "/documents/{documentId}/download": { 2186 | "get": { 2187 | "description": "", 2188 | "parameters": [ 2189 | { 2190 | "name": "documentId", 2191 | "in": "path", 2192 | "required": true, 2193 | "schema": { 2194 | "type": "string" 2195 | } 2196 | } 2197 | ], 2198 | "responses": { 2199 | "default": { 2200 | "description": "" 2201 | } 2202 | }, 2203 | "security": [ 2204 | { 2205 | "bearerAuth": [], 2206 | "ApiKeyAuth": [] 2207 | } 2208 | ] 2209 | } 2210 | }, 2211 | "/documents/": { 2212 | "delete": { 2213 | "tags": [ 2214 | "Agent" 2215 | ], 2216 | "description": "여러 개의 document 삭제", 2217 | "responses": { 2218 | "default": { 2219 | "description": "" 2220 | } 2221 | }, 2222 | "security": [ 2223 | { 2224 | "bearerAuth": [], 2225 | "ApiKeyAuth": [] 2226 | } 2227 | ], 2228 | "requestBody": { 2229 | "content": { 2230 | "application/json": { 2231 | "schema": { 2232 | "$ref": "#/components/schemas/deleteAgentKnowledges" 2233 | } 2234 | }, 2235 | "application/xml": { 2236 | "schema": { 2237 | "$ref": "#/components/schemas/deleteAgentKnowledges" 2238 | } 2239 | } 2240 | } 2241 | } 2242 | } 2243 | }, 2244 | "/buckets/{bucketId}": { 2245 | "patch": { 2246 | "tags": [ 2247 | "Bucket" 2248 | ], 2249 | "description": "버킷 정보 수정", 2250 | "parameters": [ 2251 | { 2252 | "name": "bucketId", 2253 | "in": "path", 2254 | "required": true, 2255 | "schema": { 2256 | "type": "string" 2257 | } 2258 | } 2259 | ], 2260 | "responses": { 2261 | "default": { 2262 | "description": "" 2263 | } 2264 | }, 2265 | "security": [ 2266 | { 2267 | "bearerAuth": [], 2268 | "ApiKeyAuth": [] 2269 | } 2270 | ], 2271 | "requestBody": { 2272 | "content": { 2273 | "application/json": { 2274 | "schema": { 2275 | "$ref": "#/components/schemas/patchBucket" 2276 | } 2277 | }, 2278 | "application/xml": { 2279 | "schema": { 2280 | "$ref": "#/components/schemas/patchBucket" 2281 | } 2282 | } 2283 | } 2284 | } 2285 | }, 2286 | "delete": { 2287 | "tags": [ 2288 | "Bucket" 2289 | ], 2290 | "description": "버킷 삭제", 2291 | "parameters": [ 2292 | { 2293 | "name": "bucketId", 2294 | "in": "path", 2295 | "required": true, 2296 | "schema": { 2297 | "type": "string" 2298 | } 2299 | } 2300 | ], 2301 | "responses": { 2302 | "default": { 2303 | "description": "" 2304 | } 2305 | }, 2306 | "security": [ 2307 | { 2308 | "bearerAuth": [], 2309 | "ApiKeyAuth": [] 2310 | } 2311 | ] 2312 | } 2313 | }, 2314 | "/threads/{threadId}/chats": { 2315 | "post": { 2316 | "tags": [ 2317 | "Thread" 2318 | ], 2319 | "description": "스레드에 질문 등록", 2320 | "parameters": [ 2321 | { 2322 | "name": "threadId", 2323 | "in": "path", 2324 | "required": true, 2325 | "schema": { 2326 | "type": "string" 2327 | } 2328 | } 2329 | ], 2330 | "responses": { 2331 | "default": { 2332 | "description": "" 2333 | } 2334 | }, 2335 | "security": [ 2336 | { 2337 | "bearerAuth": [], 2338 | "ApiKeyAuth": [] 2339 | } 2340 | ], 2341 | "requestBody": { 2342 | "content": { 2343 | "application/json": { 2344 | "schema": { 2345 | "$ref": "#/components/schemas/postThreadReply" 2346 | } 2347 | }, 2348 | "application/xml": { 2349 | "schema": { 2350 | "$ref": "#/components/schemas/postThreadReply" 2351 | } 2352 | } 2353 | } 2354 | } 2355 | } 2356 | }, 2357 | "/chats/": { 2358 | "get": { 2359 | "description": "", 2360 | "responses": { 2361 | "default": { 2362 | "description": "" 2363 | } 2364 | }, 2365 | "security": [ 2366 | { 2367 | "bearerAuth": [], 2368 | "ApiKeyAuth": [] 2369 | } 2370 | ] 2371 | } 2372 | }, 2373 | "/chats/download": { 2374 | "post": { 2375 | "description": "", 2376 | "responses": { 2377 | "default": { 2378 | "description": "" 2379 | } 2380 | }, 2381 | "security": [ 2382 | { 2383 | "bearerAuth": [], 2384 | "ApiKeyAuth": [] 2385 | } 2386 | ] 2387 | } 2388 | }, 2389 | "/chats/{chatId}": { 2390 | "get": { 2391 | "tags": [ 2392 | "Chat" 2393 | ], 2394 | "description": "챗 조회", 2395 | "parameters": [ 2396 | { 2397 | "name": "chatId", 2398 | "in": "path", 2399 | "required": true, 2400 | "schema": { 2401 | "type": "string" 2402 | } 2403 | } 2404 | ], 2405 | "responses": { 2406 | "default": { 2407 | "description": "" 2408 | } 2409 | }, 2410 | "security": [ 2411 | { 2412 | "bearerAuth": [], 2413 | "ApiKeyAuth": [] 2414 | } 2415 | ] 2416 | }, 2417 | "patch": { 2418 | "description": "", 2419 | "parameters": [ 2420 | { 2421 | "name": "chatId", 2422 | "in": "path", 2423 | "required": true, 2424 | "schema": { 2425 | "type": "string" 2426 | } 2427 | } 2428 | ], 2429 | "responses": { 2430 | "default": { 2431 | "description": "" 2432 | } 2433 | }, 2434 | "security": [ 2435 | { 2436 | "bearerAuth": [], 2437 | "ApiKeyAuth": [] 2438 | } 2439 | ] 2440 | } 2441 | }, 2442 | "/chats/{chatId}/sources": { 2443 | "get": { 2444 | "tags": [ 2445 | "Chat" 2446 | ], 2447 | "description": "관련 소스 조회", 2448 | "parameters": [ 2449 | { 2450 | "name": "chatId", 2451 | "in": "path", 2452 | "required": true, 2453 | "schema": { 2454 | "type": "string" 2455 | } 2456 | } 2457 | ], 2458 | "responses": { 2459 | "default": { 2460 | "description": "" 2461 | } 2462 | }, 2463 | "security": [ 2464 | { 2465 | "bearerAuth": [], 2466 | "ApiKeyAuth": [] 2467 | } 2468 | ] 2469 | } 2470 | }, 2471 | "/chats/{chatId}/chat-advices": { 2472 | "post": { 2473 | "description": "", 2474 | "parameters": [ 2475 | { 2476 | "name": "chatId", 2477 | "in": "path", 2478 | "required": true, 2479 | "schema": { 2480 | "type": "string" 2481 | } 2482 | }, 2483 | { 2484 | "name": "sse-connection-key", 2485 | "in": "header", 2486 | "schema": { 2487 | "type": "string" 2488 | } 2489 | } 2490 | ], 2491 | "responses": { 2492 | "default": { 2493 | "description": "" 2494 | } 2495 | }, 2496 | "security": [ 2497 | { 2498 | "bearerAuth": [], 2499 | "ApiKeyAuth": [] 2500 | } 2501 | ], 2502 | "requestBody": { 2503 | "content": { 2504 | "application/json": { 2505 | "schema": { 2506 | "type": "object", 2507 | "properties": { 2508 | "type": { 2509 | "example": "any" 2510 | }, 2511 | "qna": { 2512 | "example": "any" 2513 | }, 2514 | "bucketId": { 2515 | "example": "any" 2516 | } 2517 | } 2518 | } 2519 | } 2520 | } 2521 | } 2522 | } 2523 | }, 2524 | "/chats/{chatId}/chat-advices/{chatAdviceId}": { 2525 | "patch": { 2526 | "description": "", 2527 | "parameters": [ 2528 | { 2529 | "name": "chatId", 2530 | "in": "path", 2531 | "required": true, 2532 | "schema": { 2533 | "type": "string" 2534 | } 2535 | }, 2536 | { 2537 | "name": "chatAdviceId", 2538 | "in": "path", 2539 | "required": true, 2540 | "schema": { 2541 | "type": "string" 2542 | } 2543 | }, 2544 | { 2545 | "name": "sse-connection-key", 2546 | "in": "header", 2547 | "schema": { 2548 | "type": "string" 2549 | } 2550 | } 2551 | ], 2552 | "responses": { 2553 | "default": { 2554 | "description": "" 2555 | } 2556 | }, 2557 | "security": [ 2558 | { 2559 | "bearerAuth": [], 2560 | "ApiKeyAuth": [] 2561 | } 2562 | ], 2563 | "requestBody": { 2564 | "content": { 2565 | "application/json": { 2566 | "schema": { 2567 | "type": "object", 2568 | "properties": { 2569 | "qna": { 2570 | "example": "any" 2571 | }, 2572 | "bucketId": { 2573 | "example": "any" 2574 | } 2575 | } 2576 | } 2577 | } 2578 | } 2579 | } 2580 | }, 2581 | "delete": { 2582 | "description": "", 2583 | "parameters": [ 2584 | { 2585 | "name": "chatId", 2586 | "in": "path", 2587 | "required": true, 2588 | "schema": { 2589 | "type": "string" 2590 | } 2591 | }, 2592 | { 2593 | "name": "chatAdviceId", 2594 | "in": "path", 2595 | "required": true, 2596 | "schema": { 2597 | "type": "string" 2598 | } 2599 | }, 2600 | { 2601 | "name": "sse-connection-key", 2602 | "in": "header", 2603 | "schema": { 2604 | "type": "string" 2605 | } 2606 | } 2607 | ], 2608 | "responses": { 2609 | "default": { 2610 | "description": "" 2611 | } 2612 | }, 2613 | "security": [ 2614 | { 2615 | "bearerAuth": [], 2616 | "ApiKeyAuth": [] 2617 | } 2618 | ] 2619 | } 2620 | }, 2621 | "/chat-advices/{chatAdviceId}": { 2622 | "get": { 2623 | "description": "", 2624 | "parameters": [ 2625 | { 2626 | "name": "chatAdviceId", 2627 | "in": "path", 2628 | "required": true, 2629 | "schema": { 2630 | "type": "string" 2631 | } 2632 | } 2633 | ], 2634 | "responses": { 2635 | "default": { 2636 | "description": "" 2637 | } 2638 | }, 2639 | "security": [ 2640 | { 2641 | "bearerAuth": [], 2642 | "ApiKeyAuth": [] 2643 | } 2644 | ] 2645 | } 2646 | }, 2647 | "/chat-advices/": { 2648 | "delete": { 2649 | "description": "", 2650 | "parameters": [ 2651 | { 2652 | "name": "sse-connection-key", 2653 | "in": "header", 2654 | "schema": { 2655 | "type": "string" 2656 | } 2657 | } 2658 | ], 2659 | "responses": { 2660 | "default": { 2661 | "description": "" 2662 | } 2663 | }, 2664 | "security": [ 2665 | { 2666 | "bearerAuth": [], 2667 | "ApiKeyAuth": [] 2668 | } 2669 | ], 2670 | "requestBody": { 2671 | "content": { 2672 | "application/json": { 2673 | "schema": { 2674 | "type": "object", 2675 | "properties": { 2676 | "chatAdviceIds": { 2677 | "example": "any" 2678 | } 2679 | } 2680 | } 2681 | } 2682 | } 2683 | } 2684 | } 2685 | }, 2686 | "/sse/": { 2687 | "post": { 2688 | "tags": [ 2689 | "SSE" 2690 | ], 2691 | "description": "테스트 페이지 접속시 SSE connection 생성", 2692 | "responses": { 2693 | "default": { 2694 | "description": "" 2695 | } 2696 | }, 2697 | "security": [ 2698 | { 2699 | "bearerAuth": [], 2700 | "ApiKeyAuth": [] 2701 | } 2702 | ] 2703 | }, 2704 | "delete": { 2705 | "tags": [ 2706 | "SSE" 2707 | ], 2708 | "description": "SSE connection 해제", 2709 | "parameters": [ 2710 | { 2711 | "name": "sse-connection-key", 2712 | "in": "header", 2713 | "schema": { 2714 | "type": "string" 2715 | } 2716 | } 2717 | ], 2718 | "responses": { 2719 | "default": { 2720 | "description": "" 2721 | } 2722 | }, 2723 | "security": [ 2724 | { 2725 | "bearerAuth": [], 2726 | "ApiKeyAuth": [] 2727 | } 2728 | ] 2729 | } 2730 | }, 2731 | "/admin/teams": { 2732 | "post": { 2733 | "description": "", 2734 | "responses": { 2735 | "default": { 2736 | "description": "" 2737 | } 2738 | }, 2739 | "requestBody": { 2740 | "content": { 2741 | "application/json": { 2742 | "schema": { 2743 | "type": "object", 2744 | "properties": { 2745 | "name": { 2746 | "example": "any" 2747 | }, 2748 | "users": { 2749 | "example": "any" 2750 | } 2751 | } 2752 | } 2753 | } 2754 | } 2755 | } 2756 | } 2757 | }, 2758 | "/admin/documents": { 2759 | "post": { 2760 | "description": "", 2761 | "responses": { 2762 | "default": { 2763 | "description": "" 2764 | } 2765 | }, 2766 | "requestBody": { 2767 | "content": { 2768 | "application/json": { 2769 | "schema": { 2770 | "type": "object", 2771 | "properties": { 2772 | "webhookUrl": { 2773 | "example": "any" 2774 | } 2775 | } 2776 | } 2777 | } 2778 | } 2779 | } 2780 | } 2781 | }, 2782 | "/advices/{adviceId}": { 2783 | "get": { 2784 | "tags": [ 2785 | "Advice" 2786 | ], 2787 | "description": "피드백 정보 조회", 2788 | "parameters": [ 2789 | { 2790 | "name": "adviceId", 2791 | "in": "path", 2792 | "required": true, 2793 | "schema": { 2794 | "type": "string" 2795 | } 2796 | } 2797 | ], 2798 | "responses": { 2799 | "default": { 2800 | "description": "" 2801 | } 2802 | }, 2803 | "security": [ 2804 | { 2805 | "bearerAuth": [], 2806 | "ApiKeyAuth": [] 2807 | } 2808 | ] 2809 | }, 2810 | "patch": { 2811 | "tags": [ 2812 | "Advice" 2813 | ], 2814 | "description": "피드백 정보 수정", 2815 | "parameters": [ 2816 | { 2817 | "name": "adviceId", 2818 | "in": "path", 2819 | "required": true, 2820 | "schema": { 2821 | "type": "string" 2822 | } 2823 | }, 2824 | { 2825 | "name": "sse-connection-key", 2826 | "in": "header", 2827 | "schema": { 2828 | "type": "string" 2829 | } 2830 | } 2831 | ], 2832 | "responses": { 2833 | "default": { 2834 | "description": "" 2835 | } 2836 | }, 2837 | "security": [ 2838 | { 2839 | "bearerAuth": [], 2840 | "ApiKeyAuth": [] 2841 | } 2842 | ] 2843 | } 2844 | }, 2845 | "/advices/": { 2846 | "delete": { 2847 | "tags": [ 2848 | "Advice" 2849 | ], 2850 | "description": "여러 개의 피드백 삭제", 2851 | "parameters": [ 2852 | { 2853 | "name": "sse-connection-key", 2854 | "in": "header", 2855 | "schema": { 2856 | "type": "string" 2857 | } 2858 | } 2859 | ], 2860 | "responses": { 2861 | "default": { 2862 | "description": "" 2863 | } 2864 | }, 2865 | "security": [ 2866 | { 2867 | "bearerAuth": [], 2868 | "ApiKeyAuth": [] 2869 | } 2870 | ], 2871 | "requestBody": { 2872 | "content": { 2873 | "application/json": { 2874 | "schema": { 2875 | "type": "object", 2876 | "properties": { 2877 | "adviceIds": { 2878 | "example": "any" 2879 | } 2880 | } 2881 | } 2882 | } 2883 | } 2884 | } 2885 | } 2886 | }, 2887 | "/api-keys/": { 2888 | "post": { 2889 | "description": "", 2890 | "responses": { 2891 | "default": { 2892 | "description": "" 2893 | } 2894 | }, 2895 | "security": [ 2896 | { 2897 | "bearerAuth": [], 2898 | "ApiKeyAuth": [] 2899 | } 2900 | ], 2901 | "requestBody": { 2902 | "content": { 2903 | "application/json": { 2904 | "schema": { 2905 | "type": "object", 2906 | "properties": { 2907 | "name": { 2908 | "example": "any" 2909 | } 2910 | } 2911 | } 2912 | } 2913 | } 2914 | } 2915 | } 2916 | }, 2917 | "/deployments/{deploymentId}": { 2918 | "delete": { 2919 | "description": "", 2920 | "parameters": [ 2921 | { 2922 | "name": "deploymentId", 2923 | "in": "path", 2924 | "required": true, 2925 | "schema": { 2926 | "type": "string" 2927 | } 2928 | }, 2929 | { 2930 | "name": "sse-connection-key", 2931 | "in": "header", 2932 | "schema": { 2933 | "type": "string" 2934 | } 2935 | } 2936 | ], 2937 | "responses": { 2938 | "default": { 2939 | "description": "" 2940 | } 2941 | }, 2942 | "security": [ 2943 | { 2944 | "bearerAuth": [], 2945 | "ApiKeyAuth": [] 2946 | } 2947 | ] 2948 | } 2949 | }, 2950 | "/api/guest/test/": { 2951 | "post": { 2952 | "description": "", 2953 | "responses": { 2954 | "default": { 2955 | "description": "" 2956 | } 2957 | } 2958 | } 2959 | }, 2960 | "/api/guest/sessions/": { 2961 | "post": { 2962 | "description": "", 2963 | "parameters": [ 2964 | { 2965 | "name": "x-storm-guest-id", 2966 | "in": "header", 2967 | "schema": { 2968 | "type": "string" 2969 | } 2970 | } 2971 | ], 2972 | "responses": { 2973 | "default": { 2974 | "description": "" 2975 | } 2976 | } 2977 | }, 2978 | "delete": { 2979 | "description": "", 2980 | "parameters": [ 2981 | { 2982 | "name": "agentId", 2983 | "in": "query", 2984 | "schema": { 2985 | "type": "string" 2986 | } 2987 | }, 2988 | { 2989 | "name": "ttl", 2990 | "in": "query", 2991 | "schema": { 2992 | "type": "string" 2993 | } 2994 | } 2995 | ], 2996 | "responses": { 2997 | "default": { 2998 | "description": "" 2999 | } 3000 | } 3001 | } 3002 | }, 3003 | "/api/guest/documents/": { 3004 | "post": { 3005 | "tags": [ 3006 | "API v1" 3007 | ], 3008 | "description": "학습 요청", 3009 | "responses": { 3010 | "default": { 3011 | "description": "" 3012 | } 3013 | }, 3014 | "requestBody": { 3015 | "content": { 3016 | "application/json": { 3017 | "schema": { 3018 | "type": "object", 3019 | "properties": { 3020 | "webhookUrl": { 3021 | "example": "any" 3022 | }, 3023 | "urls": { 3024 | "example": "any" 3025 | }, 3026 | "postActions": { 3027 | "example": "any" 3028 | } 3029 | } 3030 | } 3031 | } 3032 | } 3033 | } 3034 | } 3035 | }, 3036 | "/api/guest/documents/{documentId}": { 3037 | "get": { 3038 | "tags": [ 3039 | "API v1" 3040 | ], 3041 | "description": "문서 정보 획득", 3042 | "parameters": [ 3043 | { 3044 | "name": "documentId", 3045 | "in": "path", 3046 | "required": true, 3047 | "schema": { 3048 | "type": "string" 3049 | } 3050 | } 3051 | ], 3052 | "responses": { 3053 | "default": { 3054 | "description": "" 3055 | } 3056 | } 3057 | } 3058 | }, 3059 | "/api/guest/contexts/": { 3060 | "post": { 3061 | "description": "", 3062 | "responses": { 3063 | "default": { 3064 | "description": "" 3065 | } 3066 | }, 3067 | "requestBody": { 3068 | "content": { 3069 | "application/json": { 3070 | "schema": { 3071 | "type": "object", 3072 | "properties": { 3073 | "question": { 3074 | "example": "any" 3075 | } 3076 | } 3077 | } 3078 | } 3079 | } 3080 | } 3081 | } 3082 | }, 3083 | "/api/{version}/buckets/": { 3084 | "post": { 3085 | "tags": [ 3086 | "API v1" 3087 | ], 3088 | "description": "에이전트에 버킷 등록", 3089 | "parameters": [ 3090 | { 3091 | "name": "version", 3092 | "in": "path", 3093 | "required": true, 3094 | "schema": { 3095 | "type": "string" 3096 | } 3097 | } 3098 | ], 3099 | "responses": { 3100 | "default": { 3101 | "description": "" 3102 | } 3103 | } 3104 | } 3105 | }, 3106 | "/api/{version}/buckets/{bucketId}": { 3107 | "patch": { 3108 | "tags": [ 3109 | "API v1" 3110 | ], 3111 | "description": "버킷 정보 수정", 3112 | "parameters": [ 3113 | { 3114 | "name": "version", 3115 | "in": "path", 3116 | "required": true, 3117 | "schema": { 3118 | "type": "string" 3119 | } 3120 | }, 3121 | { 3122 | "name": "bucketId", 3123 | "in": "path", 3124 | "required": true, 3125 | "schema": { 3126 | "type": "string" 3127 | } 3128 | } 3129 | ], 3130 | "responses": { 3131 | "default": { 3132 | "description": "" 3133 | } 3134 | } 3135 | } 3136 | }, 3137 | "/api/{version}/documents/": { 3138 | "post": { 3139 | "tags": [ 3140 | "API v1" 3141 | ], 3142 | "description": "학습 요청", 3143 | "parameters": [ 3144 | { 3145 | "name": "version", 3146 | "in": "path", 3147 | "required": true, 3148 | "schema": { 3149 | "type": "string" 3150 | } 3151 | } 3152 | ], 3153 | "responses": { 3154 | "default": { 3155 | "description": "" 3156 | } 3157 | }, 3158 | "requestBody": { 3159 | "content": { 3160 | "application/json": { 3161 | "schema": { 3162 | "type": "object", 3163 | "properties": { 3164 | "webhookUrl": { 3165 | "example": "any" 3166 | }, 3167 | "urls": { 3168 | "example": "any" 3169 | }, 3170 | "postActions": { 3171 | "example": "any" 3172 | } 3173 | } 3174 | } 3175 | } 3176 | } 3177 | } 3178 | } 3179 | }, 3180 | "/api/{version}/documents/{documentId}": { 3181 | "get": { 3182 | "tags": [ 3183 | "API v1" 3184 | ], 3185 | "description": "문서 정보 획득", 3186 | "parameters": [ 3187 | { 3188 | "name": "version", 3189 | "in": "path", 3190 | "required": true, 3191 | "schema": { 3192 | "type": "string" 3193 | } 3194 | }, 3195 | { 3196 | "name": "documentId", 3197 | "in": "path", 3198 | "required": true, 3199 | "schema": { 3200 | "type": "string" 3201 | } 3202 | } 3203 | ], 3204 | "responses": { 3205 | "default": { 3206 | "description": "" 3207 | } 3208 | } 3209 | } 3210 | }, 3211 | "/api/{version}/threads/": { 3212 | "post": { 3213 | "tags": [ 3214 | "API v1" 3215 | ], 3216 | "description": "스레드 등록", 3217 | "parameters": [ 3218 | { 3219 | "name": "version", 3220 | "in": "path", 3221 | "required": true, 3222 | "schema": { 3223 | "type": "string" 3224 | } 3225 | } 3226 | ], 3227 | "responses": { 3228 | "default": { 3229 | "description": "" 3230 | } 3231 | } 3232 | } 3233 | }, 3234 | "/api/{version}/threads/{threadId}/chats": { 3235 | "post": { 3236 | "tags": [ 3237 | "API v1" 3238 | ], 3239 | "description": "채팅 전송", 3240 | "parameters": [ 3241 | { 3242 | "name": "version", 3243 | "in": "path", 3244 | "required": true, 3245 | "schema": { 3246 | "type": "string" 3247 | } 3248 | }, 3249 | { 3250 | "name": "threadId", 3251 | "in": "path", 3252 | "required": true, 3253 | "schema": { 3254 | "type": "string" 3255 | } 3256 | } 3257 | ], 3258 | "responses": { 3259 | "default": { 3260 | "description": "" 3261 | } 3262 | }, 3263 | "requestBody": { 3264 | "content": { 3265 | "application/json": { 3266 | "schema": { 3267 | "type": "object", 3268 | "properties": { 3269 | "question": { 3270 | "example": "any" 3271 | }, 3272 | "bucketIds": { 3273 | "example": "any" 3274 | }, 3275 | "isStreaming": { 3276 | "example": "any" 3277 | }, 3278 | "isContextOnly": { 3279 | "example": "any" 3280 | }, 3281 | "webhookUrl": { 3282 | "example": "any" 3283 | }, 3284 | "engine": { 3285 | "example": "any" 3286 | } 3287 | } 3288 | } 3289 | } 3290 | } 3291 | } 3292 | } 3293 | }, 3294 | "/api/{version}/answer/": { 3295 | "post": { 3296 | "tags": [ 3297 | "API v1" 3298 | ], 3299 | "description": "채널 API 연동으로 질문 등록", 3300 | "parameters": [ 3301 | { 3302 | "name": "version", 3303 | "in": "path", 3304 | "required": true, 3305 | "schema": { 3306 | "type": "string" 3307 | } 3308 | } 3309 | ], 3310 | "responses": { 3311 | "default": { 3312 | "description": "" 3313 | } 3314 | }, 3315 | "requestBody": { 3316 | "content": { 3317 | "application/json": { 3318 | "schema": { 3319 | "type": "object", 3320 | "properties": { 3321 | "question": { 3322 | "example": "any" 3323 | }, 3324 | "bucketIds": { 3325 | "example": "any" 3326 | }, 3327 | "isStreaming": { 3328 | "example": "any" 3329 | }, 3330 | "isContextOnly": { 3331 | "example": "any" 3332 | }, 3333 | "webhookUrl": { 3334 | "example": "any" 3335 | }, 3336 | "engine": { 3337 | "example": "any" 3338 | } 3339 | } 3340 | } 3341 | } 3342 | } 3343 | } 3344 | } 3345 | }, 3346 | "/api/{version}/agents/{agentId}/deployments": { 3347 | "post": { 3348 | "description": "", 3349 | "parameters": [ 3350 | { 3351 | "name": "version", 3352 | "in": "path", 3353 | "required": true, 3354 | "schema": { 3355 | "type": "string" 3356 | } 3357 | }, 3358 | { 3359 | "name": "agentId", 3360 | "in": "path", 3361 | "required": true, 3362 | "schema": { 3363 | "type": "string" 3364 | } 3365 | } 3366 | ], 3367 | "responses": { 3368 | "default": { 3369 | "description": "" 3370 | } 3371 | }, 3372 | "requestBody": { 3373 | "content": { 3374 | "application/json": { 3375 | "schema": { 3376 | "type": "object", 3377 | "properties": { 3378 | "memo": { 3379 | "example": "any" 3380 | }, 3381 | "agentVersionId": { 3382 | "example": "any" 3383 | } 3384 | } 3385 | } 3386 | } 3387 | } 3388 | } 3389 | } 3390 | }, 3391 | "/channels/{channelId}": { 3392 | "get": { 3393 | "description": "", 3394 | "parameters": [ 3395 | { 3396 | "name": "channelId", 3397 | "in": "path", 3398 | "required": true, 3399 | "schema": { 3400 | "type": "string" 3401 | } 3402 | } 3403 | ], 3404 | "responses": { 3405 | "default": { 3406 | "description": "" 3407 | } 3408 | }, 3409 | "security": [ 3410 | { 3411 | "bearerAuth": [], 3412 | "ApiKeyAuth": [] 3413 | } 3414 | ] 3415 | }, 3416 | "patch": { 3417 | "description": "", 3418 | "parameters": [ 3419 | { 3420 | "name": "channelId", 3421 | "in": "path", 3422 | "required": true, 3423 | "schema": { 3424 | "type": "string" 3425 | } 3426 | } 3427 | ], 3428 | "responses": { 3429 | "default": { 3430 | "description": "" 3431 | } 3432 | }, 3433 | "security": [ 3434 | { 3435 | "bearerAuth": [], 3436 | "ApiKeyAuth": [] 3437 | } 3438 | ], 3439 | "requestBody": { 3440 | "content": { 3441 | "application/json": { 3442 | "schema": { 3443 | "type": "object", 3444 | "properties": { 3445 | "type": { 3446 | "example": "any" 3447 | }, 3448 | "name": { 3449 | "example": "any" 3450 | }, 3451 | "kakaoBotId": { 3452 | "example": "any" 3453 | } 3454 | } 3455 | } 3456 | } 3457 | } 3458 | } 3459 | }, 3460 | "delete": { 3461 | "description": "", 3462 | "parameters": [ 3463 | { 3464 | "name": "channelId", 3465 | "in": "path", 3466 | "required": true, 3467 | "schema": { 3468 | "type": "string" 3469 | } 3470 | } 3471 | ], 3472 | "responses": { 3473 | "default": { 3474 | "description": "" 3475 | } 3476 | }, 3477 | "security": [ 3478 | { 3479 | "bearerAuth": [], 3480 | "ApiKeyAuth": [] 3481 | } 3482 | ] 3483 | } 3484 | }, 3485 | "/channels/{channelId}/renew-token": { 3486 | "post": { 3487 | "description": "", 3488 | "parameters": [ 3489 | { 3490 | "name": "channelId", 3491 | "in": "path", 3492 | "required": true, 3493 | "schema": { 3494 | "type": "string" 3495 | } 3496 | } 3497 | ], 3498 | "responses": { 3499 | "default": { 3500 | "description": "" 3501 | } 3502 | }, 3503 | "security": [ 3504 | { 3505 | "bearerAuth": [], 3506 | "ApiKeyAuth": [] 3507 | } 3508 | ] 3509 | } 3510 | }, 3511 | "/write/": { 3512 | "post": { 3513 | "tags": [ 3514 | "Write" 3515 | ], 3516 | "description": "기사 생성", 3517 | "parameters": [ 3518 | { 3519 | "name": "sse-connection-key", 3520 | "in": "header", 3521 | "schema": { 3522 | "type": "string" 3523 | } 3524 | } 3525 | ], 3526 | "responses": { 3527 | "default": { 3528 | "description": "" 3529 | } 3530 | }, 3531 | "security": [ 3532 | { 3533 | "bearerAuth": [], 3534 | "ApiKeyAuth": [] 3535 | } 3536 | ], 3537 | "requestBody": { 3538 | "content": { 3539 | "application/json": { 3540 | "schema": { 3541 | "type": "object", 3542 | "properties": { 3543 | "testId": { 3544 | "example": "any" 3545 | }, 3546 | "text": { 3547 | "example": "any" 3548 | }, 3549 | "metadata": { 3550 | "example": "any" 3551 | } 3552 | } 3553 | } 3554 | } 3555 | } 3556 | } 3557 | } 3558 | }, 3559 | "/write/refine/title": { 3560 | "post": { 3561 | "tags": [ 3562 | "Write" 3563 | ], 3564 | "description": "기사 제목 정제", 3565 | "parameters": [ 3566 | { 3567 | "name": "sse-connection-key", 3568 | "in": "header", 3569 | "schema": { 3570 | "type": "string" 3571 | } 3572 | } 3573 | ], 3574 | "responses": { 3575 | "default": { 3576 | "description": "" 3577 | } 3578 | }, 3579 | "security": [ 3580 | { 3581 | "bearerAuth": [], 3582 | "ApiKeyAuth": [] 3583 | } 3584 | ], 3585 | "requestBody": { 3586 | "content": { 3587 | "application/json": { 3588 | "schema": { 3589 | "type": "object", 3590 | "properties": { 3591 | "testId": { 3592 | "example": "any" 3593 | }, 3594 | "text": { 3595 | "example": "any" 3596 | }, 3597 | "metadata": { 3598 | "example": "any" 3599 | } 3600 | } 3601 | } 3602 | } 3603 | } 3604 | } 3605 | } 3606 | }, 3607 | "/write/refine/subtitle": { 3608 | "post": { 3609 | "tags": [ 3610 | "Write" 3611 | ], 3612 | "description": "기사 부제목 정제", 3613 | "parameters": [ 3614 | { 3615 | "name": "sse-connection-key", 3616 | "in": "header", 3617 | "schema": { 3618 | "type": "string" 3619 | } 3620 | } 3621 | ], 3622 | "responses": { 3623 | "default": { 3624 | "description": "" 3625 | } 3626 | }, 3627 | "security": [ 3628 | { 3629 | "bearerAuth": [], 3630 | "ApiKeyAuth": [] 3631 | } 3632 | ], 3633 | "requestBody": { 3634 | "content": { 3635 | "application/json": { 3636 | "schema": { 3637 | "type": "object", 3638 | "properties": { 3639 | "testId": { 3640 | "example": "any" 3641 | }, 3642 | "text": { 3643 | "example": "any" 3644 | }, 3645 | "title": { 3646 | "example": "any" 3647 | }, 3648 | "metadata": { 3649 | "example": "any" 3650 | } 3651 | } 3652 | } 3653 | } 3654 | } 3655 | } 3656 | } 3657 | }, 3658 | "/write/refine/lead": { 3659 | "post": { 3660 | "tags": [ 3661 | "Write" 3662 | ], 3663 | "description": "기사 리드문 정제", 3664 | "parameters": [ 3665 | { 3666 | "name": "sse-connection-key", 3667 | "in": "header", 3668 | "schema": { 3669 | "type": "string" 3670 | } 3671 | } 3672 | ], 3673 | "responses": { 3674 | "default": { 3675 | "description": "" 3676 | } 3677 | }, 3678 | "security": [ 3679 | { 3680 | "bearerAuth": [], 3681 | "ApiKeyAuth": [] 3682 | } 3683 | ], 3684 | "requestBody": { 3685 | "content": { 3686 | "application/json": { 3687 | "schema": { 3688 | "type": "object", 3689 | "properties": { 3690 | "testId": { 3691 | "example": "any" 3692 | }, 3693 | "text": { 3694 | "example": "any" 3695 | }, 3696 | "title": { 3697 | "example": "any" 3698 | }, 3699 | "subtitle": { 3700 | "example": "any" 3701 | }, 3702 | "metadata": { 3703 | "example": "any" 3704 | } 3705 | } 3706 | } 3707 | } 3708 | } 3709 | } 3710 | } 3711 | }, 3712 | "/write/refine/body": { 3713 | "post": { 3714 | "tags": [ 3715 | "Write" 3716 | ], 3717 | "description": "기사 바디문 정제", 3718 | "parameters": [ 3719 | { 3720 | "name": "sse-connection-key", 3721 | "in": "header", 3722 | "schema": { 3723 | "type": "string" 3724 | } 3725 | } 3726 | ], 3727 | "responses": { 3728 | "default": { 3729 | "description": "" 3730 | } 3731 | }, 3732 | "security": [ 3733 | { 3734 | "bearerAuth": [], 3735 | "ApiKeyAuth": [] 3736 | } 3737 | ], 3738 | "requestBody": { 3739 | "content": { 3740 | "application/json": { 3741 | "schema": { 3742 | "type": "object", 3743 | "properties": { 3744 | "testId": { 3745 | "example": "any" 3746 | }, 3747 | "text": { 3748 | "example": "any" 3749 | }, 3750 | "title": { 3751 | "example": "any" 3752 | }, 3753 | "subtitle": { 3754 | "example": "any" 3755 | }, 3756 | "metadata": { 3757 | "example": "any" 3758 | } 3759 | } 3760 | } 3761 | } 3762 | } 3763 | } 3764 | } 3765 | }, 3766 | "/write/report": { 3767 | "get": { 3768 | "tags": [ 3769 | "Agent" 3770 | ], 3771 | "description": "write report 생성", 3772 | "parameters": [ 3773 | { 3774 | "name": "testId", 3775 | "in": "query", 3776 | "schema": { 3777 | "type": "string" 3778 | } 3779 | }, 3780 | { 3781 | "name": "googleDriveFolderId", 3782 | "in": "query", 3783 | "schema": { 3784 | "type": "string" 3785 | } 3786 | }, 3787 | { 3788 | "name": "fileName", 3789 | "in": "query", 3790 | "schema": { 3791 | "type": "string" 3792 | } 3793 | } 3794 | ], 3795 | "responses": { 3796 | "default": { 3797 | "description": "" 3798 | } 3799 | }, 3800 | "security": [ 3801 | { 3802 | "bearerAuth": [], 3803 | "ApiKeyAuth": [] 3804 | } 3805 | ] 3806 | } 3807 | }, 3808 | "/models/": { 3809 | "get": { 3810 | "description": "", 3811 | "responses": { 3812 | "default": { 3813 | "description": "" 3814 | } 3815 | }, 3816 | "security": [ 3817 | { 3818 | "bearerAuth": [], 3819 | "ApiKeyAuth": [] 3820 | } 3821 | ] 3822 | } 3823 | } 3824 | }, 3825 | "components": { 3826 | "parameters": { 3827 | "search": { 3828 | "in": "query", 3829 | "name": "search", 3830 | "schema": { 3831 | "type": "string" 3832 | } 3833 | }, 3834 | "order": { 3835 | "in": "query", 3836 | "name": "order", 3837 | "schema": { 3838 | "type": "string" 3839 | } 3840 | }, 3841 | "cursor": { 3842 | "in": "query", 3843 | "name": "cursor", 3844 | "schema": { 3845 | "type": "string" 3846 | } 3847 | }, 3848 | "take": { 3849 | "in": "query", 3850 | "name": "take", 3851 | "schema": { 3852 | "type": "integer", 3853 | "minimun": 1 3854 | } 3855 | }, 3856 | "files": { 3857 | "in": "formData", 3858 | "name": "files", 3859 | "schema": { 3860 | "type": "array", 3861 | "items": { 3862 | "type": "string", 3863 | "format": "binary" 3864 | } 3865 | } 3866 | } 3867 | }, 3868 | "schemas": { 3869 | "postAuthSignup": { 3870 | "type": "object", 3871 | "properties": { 3872 | "email": { 3873 | "type": "string", 3874 | "example": "" 3875 | }, 3876 | "name": { 3877 | "type": "string", 3878 | "example": "" 3879 | }, 3880 | "password": { 3881 | "type": "string", 3882 | "example": "" 3883 | }, 3884 | "code": { 3885 | "type": "string", 3886 | "example": "" 3887 | } 3888 | }, 3889 | "xml": { 3890 | "name": "postAuthSignup" 3891 | } 3892 | }, 3893 | "postTeam": { 3894 | "type": "object", 3895 | "properties": { 3896 | "name": { 3897 | "type": "string", 3898 | "example": "newTeamName" 3899 | } 3900 | }, 3901 | "xml": { 3902 | "name": "postTeam" 3903 | } 3904 | }, 3905 | "patchTeam": { 3906 | "type": "object", 3907 | "properties": { 3908 | "name": { 3909 | "type": "string", 3910 | "example": "newTeamName" 3911 | } 3912 | }, 3913 | "xml": { 3914 | "name": "patchTeam" 3915 | } 3916 | }, 3917 | "patchTeamMembers": { 3918 | "type": "object", 3919 | "properties": { 3920 | "role": { 3921 | "type": "string", 3922 | "example": "member" 3923 | } 3924 | }, 3925 | "xml": { 3926 | "name": "patchTeamMembers" 3927 | } 3928 | }, 3929 | "postTeamInvites": { 3930 | "type": "array", 3931 | "items": { 3932 | "type": "object", 3933 | "properties": { 3934 | "email": { 3935 | "type": "string", 3936 | "example": "[email protected]" 3937 | }, 3938 | "role": { 3939 | "type": "string", 3940 | "example": "member" 3941 | } 3942 | } 3943 | }, 3944 | "xml": { 3945 | "name": "postTeamInvites" 3946 | } 3947 | }, 3948 | "postTeamAgents": { 3949 | "type": "object", 3950 | "properties": { 3951 | "name": { 3952 | "type": "string", 3953 | "example": "newAgentName" 3954 | }, 3955 | "language": { 3956 | "type": "string", 3957 | "example": "ko" 3958 | } 3959 | }, 3960 | "xml": { 3961 | "name": "postTeamAgents" 3962 | } 3963 | }, 3964 | "patchTeamAgents": { 3965 | "type": "object", 3966 | "properties": { 3967 | "name": { 3968 | "type": "string", 3969 | "example": "newAgentName" 3970 | }, 3971 | "language": { 3972 | "type": "string", 3973 | "example": "ko" 3974 | } 3975 | }, 3976 | "xml": { 3977 | "name": "patchTeamAgents" 3978 | } 3979 | }, 3980 | "postTeamWorkspaceIntegrations": { 3981 | "type": "object", 3982 | "properties": { 3983 | "workspaceType": { 3984 | "type": "string", 3985 | "example": "channeltalk" 3986 | }, 3987 | "workspaceId": { 3988 | "type": "string", 3989 | "example": "123456" 3990 | }, 3991 | "accessToken": { 3992 | "type": "string", 3993 | "example": "651xx3f16d1a110a3c11" 3994 | }, 3995 | "accessKey": { 3996 | "type": "string", 3997 | "example": "123123" 3998 | }, 3999 | "accessSecret": { 4000 | "type": "string", 4001 | "example": "7d607xxxxxxxxxxxxxxxxxxxx" 4002 | } 4003 | }, 4004 | "xml": { 4005 | "name": "postTeamWorkspaceIntegrations" 4006 | } 4007 | }, 4008 | "postMeTeamInvite": { 4009 | "type": "object", 4010 | "properties": { 4011 | "code": { 4012 | "type": "string", 4013 | "example": "" 4014 | } 4015 | }, 4016 | "xml": { 4017 | "name": "postMeTeamInvite" 4018 | } 4019 | }, 4020 | "deleteAgentKnowledges": { 4021 | "type": "object", 4022 | "properties": { 4023 | "documentIds": { 4024 | "type": "array", 4025 | "example": [ 4026 | "123456" 4027 | ], 4028 | "items": { 4029 | "type": "string" 4030 | } 4031 | }, 4032 | "adviceIds": { 4033 | "type": "array", 4034 | "example": [ 4035 | "123456" 4036 | ], 4037 | "items": { 4038 | "type": "string" 4039 | } 4040 | } 4041 | }, 4042 | "xml": { 4043 | "name": "deleteAgentKnowledges" 4044 | } 4045 | }, 4046 | "postAgentDocumentsUrl": { 4047 | "type": "object", 4048 | "properties": { 4049 | "documentUrls": { 4050 | "type": "array", 4051 | "example": [ 4052 | "https://examples.com" 4053 | ], 4054 | "items": { 4055 | "type": "string" 4056 | } 4057 | }, 4058 | "bucketIds": { 4059 | "type": "array", 4060 | "example": [ 4061 | "123456" 4062 | ], 4063 | "items": { 4064 | "type": "string" 4065 | } 4066 | } 4067 | }, 4068 | "xml": { 4069 | "name": "postAgentDocumentsUrl" 4070 | } 4071 | }, 4072 | "postAgentDocumentsFile": { 4073 | "type": "object", 4074 | "properties": { 4075 | "bucketIds": { 4076 | "type": "array", 4077 | "example": [ 4078 | "123456" 4079 | ], 4080 | "items": { 4081 | "type": "string" 4082 | } 4083 | } 4084 | }, 4085 | "xml": { 4086 | "name": "postAgentDocumentsFile" 4087 | } 4088 | }, 4089 | "postAgentBuckets": { 4090 | "type": "object", 4091 | "properties": { 4092 | "type": { 4093 | "type": "string", 4094 | "example": "default" 4095 | }, 4096 | "name": { 4097 | "type": "string", 4098 | "example": "newBucketName" 4099 | } 4100 | }, 4101 | "xml": { 4102 | "name": "postAgentBuckets" 4103 | } 4104 | }, 4105 | "putAgentBuckets": { 4106 | "type": "object", 4107 | "properties": { 4108 | "create": { 4109 | "type": "array", 4110 | "items": { 4111 | "type": "object", 4112 | "properties": { 4113 | "type": { 4114 | "type": "string", 4115 | "example": "default" 4116 | }, 4117 | "name": { 4118 | "type": "string", 4119 | "example": "newBucketName" 4120 | } 4121 | } 4122 | } 4123 | }, 4124 | "update": { 4125 | "type": "array", 4126 | "items": { 4127 | "type": "object", 4128 | "properties": { 4129 | "id": { 4130 | "type": "string", 4131 | "example": "123456" 4132 | }, 4133 | "type": { 4134 | "type": "string", 4135 | "example": "optional" 4136 | }, 4137 | "name": { 4138 | "type": "string", 4139 | "example": "newBucketName" 4140 | } 4141 | } 4142 | } 4143 | }, 4144 | "delete": { 4145 | "type": "array", 4146 | "items": { 4147 | "type": "object", 4148 | "properties": { 4149 | "id": { 4150 | "type": "string", 4151 | "example": "123456" 4152 | } 4153 | } 4154 | } 4155 | } 4156 | }, 4157 | "xml": { 4158 | "name": "putAgentBuckets" 4159 | } 4160 | }, 4161 | "patchBucket": { 4162 | "type": "object", 4163 | "properties": { 4164 | "type": { 4165 | "type": "string", 4166 | "example": "optional" 4167 | }, 4168 | "name": { 4169 | "type": "string", 4170 | "example": "newBucketName" 4171 | } 4172 | }, 4173 | "xml": { 4174 | "name": "patchBucket" 4175 | } 4176 | }, 4177 | "postThreadReply": { 4178 | "type": "object", 4179 | "properties": { 4180 | "question": { 4181 | "type": "string", 4182 | "example": "질문 텍스트" 4183 | } 4184 | }, 4185 | "xml": { 4186 | "name": "postThreadReply" 4187 | } 4188 | } 4189 | }, 4190 | "securitySchemes": { 4191 | "bearerAuth": { 4192 | "type": "http", 4193 | "scheme": "bearer", 4194 | "bearerFormat": "JWT" 4195 | }, 4196 | "ApiKeyAuth": { 4197 | "type": "apiKey", 4198 | "in": "header", 4199 | "name": "X-Storm-Token" 4200 | } 4201 | } 4202 | } 4203 | } ```