#
tokens: 36240/50000 10/10 files
lines: on (toggle) GitHub
raw markdown copy reset
# 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 | }
```