#
tokens: 22404/50000 10/10 files
lines: off (toggle) GitHub
raw markdown copy
# 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:
--------------------------------------------------------------------------------

```
3.12

```

--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------

```
.idea
        storm_mcp_server/__pycache__/
        storm_mcp_server/core/__pycache__/
        storm_mcp_server/tools/__pycache__/


```

--------------------------------------------------------------------------------
/storm_mcp_server/__init__.py:
--------------------------------------------------------------------------------

```python

```

--------------------------------------------------------------------------------
/storm_mcp_server/core/__init__.py:
--------------------------------------------------------------------------------

```python

```

--------------------------------------------------------------------------------
/storm_mcp_server/tools/__init__.py:
--------------------------------------------------------------------------------

```python

```

--------------------------------------------------------------------------------
/pyproject.toml:
--------------------------------------------------------------------------------

```toml
[project]
name = "storm-mcp-server"
version = "0.1.0"
description = "Add your description here"
readme = "README.md"
requires-python = ">=3.12"
dependencies = [
    "fastapi>=0.115.11",
    "mcp>=1.3.0",
    "requests>=2.32.3",
    "uvicorn>=0.34.0",
]

```

--------------------------------------------------------------------------------
/storm_mcp_server/core/internal_api.py:
--------------------------------------------------------------------------------

```python
import os

import requests
from typing import Any, Dict, List


def call_internal_api(
    method: str,
    endpoint: str,
    base_url: str = "https://live-stargate.sionic.im",
    params: Dict[str, Any] = None,
    data: Dict[str, Any] = None,
    files: Dict[str, Any] = None,
) -> Dict[str, Any]:
    storm_api_key = os.getenv("STORM_API_KEY")
    url = f"{base_url}{endpoint}"
    headers = {"Content-Type": "application/json", "storm-api-key": storm_api_key}

    if method.upper() == "GET":
        resp = requests.get(url, headers=headers, params=params, timeout=30)
    elif method.upper() == "POST":
        if files:
            # 멀티파트
            resp = requests.post(
                url, headers=headers, data=data, files=files, timeout=60
            )
        else:
            resp = requests.post(
                url, headers=headers, json=data, params=params, timeout=30
            )
    elif method.upper() == "DELETE":
        resp = requests.delete(url, headers=headers, params=params, timeout=30)
    else:
        raise ValueError(f"Unsupported HTTP method: {method}")

    if resp.status_code >= 400:
        raise Exception(f"API error: {resp.status_code} - {resp.text}")

    # text/plain 응답 대비
    try:
        return resp.json()
    except Exception:
        return {"status": "success", "data": resp.text}


def call_chat_api(
    question: str,
    bucket_ids: List[str] = None,
    thread_id: str = None,
    webhook_url: str = None,
    base_url: str = "https://live-stargate.sionic.im",
) -> Dict[str, Any]:
    """
    /api/v2/answer (non-stream) 호출 예시
    - header: storm-api-key: {api_key}
    - body: { "question": "...", "bucketIds": [...], "threadId": "...", "webhookUrl": "..." }
    """
    url = f"{base_url}/api/v2/answer"
    storm_api_key = os.getenv("STORM_API_KEY")
    headers = {
        "Content-Type": "application/json",
        "storm-api-key": storm_api_key,
    }

    body = {
        "question": question,
    }
    if bucket_ids:
        body["bucketIds"] = bucket_ids
    if thread_id:
        body["threadId"] = thread_id
    if webhook_url:
        body["webhookUrl"] = webhook_url

    response = requests.post(url, headers=headers, json=body, timeout=30)
    if response.status_code >= 400:
        raise Exception(f"API error: {response.status_code} - {response.text}")

    return response.json()

```

--------------------------------------------------------------------------------
/storm_mcp_server/tools/tool_upload_file.py:
--------------------------------------------------------------------------------

```python
import mimetypes
from mcp.server import Server
from mcp.types import Resource, Tool, TextContent
from typing import List, Dict

from storm_mcp_server.core.file_manager import FileSystemManager


class FileServer:
    def __init__(self, base_path):
        self.fs = FileSystemManager(base_path)
        self.server = Server("file-server")

    def setup_handlers(self):
        """MCP 핸들러 설정"""

        @self.server.list_resources()
        async def list_resources() -> List[Resource]:
            items = await self.fs.list_directory()
            return [
                Resource(
                    uri=f"file:///{item['path']}",
                    name=item["name"],
                    mimeType=(
                        "inode/directory"
                        if item["type"] == "directory"
                        else mimetypes.guess_type(item["name"])[0] or "text/plain"
                    ),
                    description=f"{'Directory' if item['type'] == 'directory' else 'File'}: {item['path']}",
                )
                for item in items
            ]

        @self.server.read_resource()
        async def read_resource(uri: str) -> str:
            path = uri.replace("file:///", "")
            content, _ = await self.fs.read_file(path)
            return content

        @self.server.list_tools()
        async def list_tools() -> List[Tool]:
            return [
                Tool(
                    name="upload_file",
                    description="파일 업로드(Base64 인코딩된 컨텐츠)",
                    inputSchema={
                        "type": "object",
                        "properties": {
                            "path": {
                                "type": "string",
                                "description": "업로드할 파일 경로(서버 내)",
                            },
                            "fileContent": {
                                "type": "string",
                                "description": "Base64 인코딩된 파일 내용",
                            },
                        },
                        "required": ["path", "fileContent"],
                    },
                ),
                Tool(
                    name="search_files",
                    description="파일 검색",
                    inputSchema={
                        "type": "object",
                        "properties": {
                            "pattern": {
                                "type": "string",
                                "description": "검색할 키워드",
                            }
                        },
                        "required": ["pattern"],
                    },
                ),
            ]

        @self.server.call_tool()
        async def call_tool(name: str, arguments: Dict) -> List[TextContent]:
            if name == "upload_file":
                # 파일 업로드
                path = arguments["path"]
                b64_content = arguments["fileContent"]

                await self.fs.upload_file(path, b64_content)
                return [
                    TextContent(type="text", text=f"File uploaded successfully: {path}")
                ]

            elif name == "search_files":
                # 파일 검색
                pattern = arguments["pattern"]
                results = await self.fs.search_files(pattern)
                if not results:
                    return [TextContent(type="text", text="No files found")]

                text_output = "\n".join(f"[{r['type']}] {r['path']}" for r in results)
                return [TextContent(type="text", text=text_output)]

            raise ValueError(f"Unknown tool: {name}")

```

--------------------------------------------------------------------------------
/storm_mcp_server/tools/tool_handlers.py:
--------------------------------------------------------------------------------

```python
import asyncio
import base64
import json
from io import BytesIO
from typing import List, Dict, Any
from mcp.types import Tool, TextContent

from storm_mcp_server.core.internal_api import call_internal_api, call_chat_api
from storm_mcp_server.tools.tool_definitions import TOOLS_DEFINITION


async def handle_list_tools() -> List[Tool]:
    """
    MCP에서 'tools/list' 이벤트가 오면,
    우리가 보유한 툴(TOOLS_DEFINITION)을 반환.
    """
    tool_objects: List[Tool] = []
    for tdef in TOOLS_DEFINITION:
        tool_objects.append(
            Tool(
                name=tdef["name"],
                description=tdef["description"],
                inputSchema=tdef["inputSchema"],
            )
        )
    return tool_objects


async def handle_call_tool(name: str, arguments: Dict[str, Any]) -> List[TextContent]:
    """
    MCP에서 'tool/call' 이벤트로 특정 툴(name)을 호출하면,
    여기서 그 이름에 맞게 실제 비즈니스 로직(call_chat_api, call_internal_api 등)을 실행.

    반환값은 List[TextContent] 형태여야 하며, MCP에 문자열 형태로 전달된다.
    """
    try:
        if name == "send_nonstream_chat":
            # --------------------------------------------------------
            # (1) /api/v2/answer (non-stream) - Storm API Key 기반
            # --------------------------------------------------------
            question = arguments.get("question", "").strip()
            bucket_ids = arguments.get("bucketIds", None)
            thread_id = arguments.get("threadId", None)
            webhook_url = arguments.get("webhookUrl", None)

            if not question:
                raise ValueError("question is required")

            # 실제 호출
            response_data = await asyncio.to_thread(
                call_chat_api,
                question=question,
                bucket_ids=bucket_ids,
                thread_id=thread_id,
                webhook_url=webhook_url,
            )
            result_text = json.dumps(response_data, ensure_ascii=False, indent=2)
            return [TextContent(type="text", text=result_text)]

        elif name == "list_agents":
            page = arguments.get("page", None)
            size = arguments.get("size", None)

            params = {}
            if page is not None:
                params["page"] = page
            if size is not None:
                params["size"] = size

            response_data = await asyncio.to_thread(
                call_internal_api,
                method="GET",
                endpoint="/api/v2/agents",
                params=params,
            )
            result_text = json.dumps(response_data, ensure_ascii=False, indent=2)
            return [TextContent(type="text", text=result_text)]

        elif name == "list_buckets":
            # --------------------------------------------------------
            # (3) /api/v2/buckets (GET) - Storm API Key
            # --------------------------------------------------------
            agent_id = arguments.get("agent_id", "").strip()
            if not agent_id:
                raise ValueError("agent_id is required")

            page = arguments.get("page", None)
            size = arguments.get("size", None)

            params = {"agentId": agent_id}
            if page is not None:
                params["page"] = page
            if size is not None:
                params["size"] = size

            response_data = await asyncio.to_thread(
                call_internal_api,
                method="GET",
                endpoint="/api/v2/buckets",
                params=params,
            )
            result_text = json.dumps(response_data, ensure_ascii=False, indent=2)
            return [TextContent(type="text", text=result_text)]

        elif name == "upload_document_by_file":
            # --------------------------------------------------------

            #  /api/v2/documents/by-file (POST)

            #   - file_path (로컬 경로)

            #   - file_base64 (Base64)

            #   - file_name (Base64 시 파일명)

            # --------------------------------------------------------

            bucket_id = arguments.get("bucket_id", "").strip()

            file_path = arguments.get("file_path", "").strip()

            file_base64 = arguments.get("file_base64", None)

            file_name = arguments.get("file_name", None)

            webhook_url = arguments.get("webhook_url", None)

            if not bucket_id:
                raise ValueError("bucket_id is required")

            # file_path, file_base64 둘 다 없으면 에러

            if not file_path and not file_base64:
                raise ValueError("Either file_path or file_base64 must be provided")

            data = {"bucketId": bucket_id}

            if webhook_url:
                data["webhookUrl"] = webhook_url

            # ---------------------------

            # 1) file_path 있는 경우 → 로컬 파일 열기

            # ---------------------------

            if file_path:
                # 로컬 파일 읽어 multipart 전송

                with open(file_path, "rb") as f:
                    # MIME 타입은 일단 "application/octet-stream"으로 가정

                    files = {"file": (file_path, f, "application/octet-stream")}

                    response_data = await asyncio.to_thread(
                        call_internal_api,
                        method="POST",
                        endpoint="/api/v2/documents/by-file",
                        data=data,
                        files=files,
                    )

            # ---------------------------

            # 2) file_base64 있는 경우 → 메모리에서 BytesIO

            # ---------------------------

            else:
                # file_name이 없으면 기본 이름 "uploaded_file"

                if not file_name:
                    file_name = "uploaded_file"

                raw_data = base64.b64decode(file_base64)

                file_obj = BytesIO(raw_data)

                # 마찬가지로 MIME 타입은 "application/octet-stream" 기본

                files = {"file": (file_name, file_obj, "application/octet-stream")}

                response_data = await asyncio.to_thread(
                    call_internal_api,
                    method="POST",
                    endpoint="/api/v2/documents/by-file",
                    data=data,
                    files=files,
                )

            result_text = json.dumps(response_data, ensure_ascii=False, indent=2)

            return [TextContent(type="text", text=result_text)]

        else:
            raise ValueError(f"Tool '{name}' not found.")

    except Exception as e:
        # 에러 발생 시 MCP 쪽에 오류 메시지를 전달하기 위해 RuntimeError로 래핑
        raise RuntimeError(f"Tool call error: {str(e)}") from e

```

--------------------------------------------------------------------------------
/scripts/output.json:
--------------------------------------------------------------------------------

```json
{
  "openapi": "3.0.0",
  "info": {
    "title": "Storm API",
    "description": "Description",
    "version": "1.0.0"
  },
  "servers": [
    {
      "url": "http://localhost:3000/",
      "description": "Local server"
    },
    {
      "url": "https://dev.sionicstorm.ai/api/",
      "description": "Development server"
    }
  ],
  "paths": {
    "/": {
      "get": {
        "description": "",
        "responses": {
          "default": {
            "description": ""
          }
        }
      }
    },
    "/health": {
      "get": {
        "description": "",
        "responses": {
          "default": {
            "description": ""
          }
        }
      }
    },
    "/auth/login": {
      "get": {
        "tags": [
          "Auth"
        ],
        "description": "Email 로그인",
        "parameters": [
          {
            "name": "email",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "password",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "default": {
            "description": ""
          }
        }
      },
      "post": {
        "tags": [
          "Auth"
        ],
        "description": "Email 로그인",
        "responses": {
          "default": {
            "description": ""
          }
        },
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "email": {
                    "example": "any"
                  },
                  "password": {
                    "example": "any"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/auth/cipher-login": {
      "get": {
        "description": "",
        "parameters": [
          {
            "name": "userId",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "cipher",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "default": {
            "description": ""
          }
        }
      }
    },
    "/auth/signup": {
      "post": {
        "tags": [
          "Auth"
        ],
        "description": "Email 회원가입",
        "responses": {
          "default": {
            "description": ""
          }
        },
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/postAuthSignup"
              }
            },
            "application/xml": {
              "schema": {
                "$ref": "#/components/schemas/postAuthSignup"
              }
            }
          }
        }
      }
    },
    "/auth/check": {
      "get": {
        "description": "",
        "responses": {
          "default": {
            "description": ""
          }
        },
        "security": [
          {
            "bearerAuth": [],
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/auth/sso/slack/": {
      "get": {
        "tags": [
          "Auth"
        ],
        "description": "",
        "parameters": [
          {
            "name": "state",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "default": {
            "description": ""
          }
        }
      }
    },
    "/auth/sso/slack/callback": {
      "get": {
        "tags": [
          "Auth"
        ],
        "description": "",
        "parameters": [
          {
            "name": "code",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "state",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "default": {
            "description": ""
          }
        }
      }
    },
    "/auth/sso/google/": {
      "get": {
        "tags": [
          "Auth"
        ],
        "description": "",
        "parameters": [
          {
            "name": "state",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/auth/sso/google/callback": {
      "get": {
        "tags": [
          "Auth"
        ],
        "description": "",
        "parameters": [
          {
            "name": "code",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "state",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "default": {
            "description": ""
          }
        }
      }
    },
    "/playground/clova": {
      "get": {
        "tags": [
          "Playground"
        ],
        "description": "클로바 사용량 확인",
        "responses": {
          "default": {
            "description": ""
          }
        },
        "security": [
          {
            "bearerAuth": [],
            "ApiKeyAuth": []
          }
        ]
      },
      "post": {
        "tags": [
          "Playground"
        ],
        "description": "클로바 사용",
        "responses": {
          "default": {
            "description": ""
          }
        },
        "security": [
          {
            "bearerAuth": [],
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/slack/install/": {
      "get": {
        "tags": [
          "Slack"
        ],
        "description": "",
        "responses": {
          "default": {
            "description": ""
          }
        }
      }
    },
    "/slack/install/callback": {
      "get": {
        "tags": [
          "Slack"
        ],
        "description": "",
        "parameters": [
          {
            "name": "code",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/slack/event/": {
      "post": {
        "tags": [
          "Slack"
        ],
        "description": "",
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad Request"
          }
        },
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "token": {
                    "example": "any"
                  },
                  "team_id": {
                    "example": "any"
                  },
                  "payload": {
                    "example": "any"
                  },
                  "challenge": {
                    "example": "any"
                  },
                  "type": {
                    "example": "any"
                  },
                  "api_app_id": {
                    "example": "any"
                  },
                  "event": {
                    "example": "any"
                  },
                  "event_id": {
                    "example": "any"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/slack/interactive/": {
      "post": {
        "tags": [
          "Slack"
        ],
        "description": "",
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad Request"
          }
        },
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "token": {
                    "example": "any"
                  },
                  "team_id": {
                    "example": "any"
                  },
                  "payload": {
                    "example": "any"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/slack/command/": {
      "post": {
        "tags": [
          "Slack"
        ],
        "description": "",
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad Request"
          }
        },
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "token": {
                    "example": "any"
                  },
                  "team_id": {
                    "example": "any"
                  },
                  "payload": {
                    "example": "any"
                  },
                  "user_id": {
                    "example": "any"
                  },
                  "channel_id": {
                    "example": "any"
                  },
                  "text": {
                    "example": "any"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/channeltalk/event/": {
      "post": {
        "tags": [
          "ChannelTalk"
        ],
        "description": "",
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad Request"
          }
        },
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "refers": {
                    "example": "any"
                  },
                  "event": {
                    "example": "any"
                  },
                  "type": {
                    "example": "any"
                  },
                  "entity": {
                    "example": "any"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/kakaotalk/event/": {
      "post": {
        "tags": [
          "KakaoTalk"
        ],
        "description": "",
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad Request"
          }
        },
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "bot": {
                    "example": "any"
                  },
                  "userRequest": {
                    "example": "any"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/pylon/callback/agents": {
      "post": {
        "description": "",
        "parameters": [
          {
            "name": "c",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        },
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "status": {
                    "example": "any"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/pylon/callback/buckets": {
      "post": {
        "description": "",
        "parameters": [
          {
            "name": "c",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        },
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "status": {
                    "example": "any"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/pylon/callback/documents": {
      "post": {
        "tags": [
          "Pylon"
        ],
        "description": "",
        "parameters": [
          {
            "name": "c",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        },
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "status": {
                    "example": "any"
                  },
                  "result": {
                    "example": "any"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/pylon/callback/advices": {
      "post": {
        "tags": [
          "Pylon"
        ],
        "description": "",
        "parameters": [
          {
            "name": "c",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        },
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "status": {
                    "example": "any"
                  },
                  "result": {
                    "example": "any"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/pylon/callback/query": {
      "post": {
        "tags": [
          "Pylon"
        ],
        "description": "",
        "parameters": [
          {
            "name": "c",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        },
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "task_id": {
                    "example": "any"
                  },
                  "status": {
                    "example": "any"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/pylon/callback/deployments": {
      "post": {
        "tags": [
          "Pylon"
        ],
        "description": "",
        "parameters": [
          {
            "name": "c",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        },
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "status": {
                    "example": "any"
                  },
                  "result": {
                    "example": "any"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/pylon/callback/write": {
      "post": {
        "tags": [
          "Pylon"
        ],
        "description": "",
        "parameters": [
          {
            "name": "c",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        },
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "status": {
                    "example": "any"
                  },
                  "result": {
                    "example": "any"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/me/": {
      "get": {
        "tags": [
          "Me"
        ],
        "description": "내 정보 확인",
        "responses": {
          "default": {
            "description": ""
          }
        },
        "security": [
          {
            "bearerAuth": [],
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/me/teams": {
      "get": {
        "tags": [
          "Me"
        ],
        "description": "내가 속한 팀의 리스트 확인",
        "parameters": [
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "$ref": "#/components/parameters/order"
          },
          {
            "$ref": "#/components/parameters/cursor"
          },
          {
            "$ref": "#/components/parameters/take"
          }
        ],
        "responses": {
          "default": {
            "description": ""
          }
        },
        "security": [
          {
            "bearerAuth": [],
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/me/teams/invite": {
      "post": {
        "tags": [
          "Me"
        ],
        "description": "팀 초대 수락",
        "responses": {
          "default": {
            "description": ""
          }
        },
        "security": [
          {
            "bearerAuth": [],
            "ApiKeyAuth": []
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/postMeTeamInvite"
              }
            },
            "application/xml": {
              "schema": {
                "$ref": "#/components/schemas/postMeTeamInvite"
              }
            }
          }
        }
      }
    },
    "/teams/": {
      "post": {
        "tags": [
          "Team"
        ],
        "description": "팀 생성",
        "responses": {
          "default": {
            "description": ""
          }
        },
        "security": [
          {
            "bearerAuth": [],
            "ApiKeyAuth": []
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/postTeam"
              }
            },
            "application/xml": {
              "schema": {
                "$ref": "#/components/schemas/postTeam"
              }
            }
          }
        }
      }
    },
    "/teams/{teamId}": {
      "get": {
        "tags": [
          "Team"
        ],
        "description": "팀 정보 획득",
        "parameters": [
          {
            "name": "teamId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "default": {
            "description": ""
          }
        },
        "security": [
          {
            "bearerAuth": [],
            "ApiKeyAuth": []
          }
        ]
      },
      "patch": {
        "tags": [
          "Team"
        ],
        "description": "팀 속성 변경",
        "parameters": [
          {
            "name": "teamId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "default": {
            "description": ""
          }
        },
        "security": [
          {
            "bearerAuth": [],
            "ApiKeyAuth": []
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/patchTeam"
              }
            },
            "application/xml": {
              "schema": {
                "$ref": "#/components/schemas/patchTeam"
              }
            }
          }
        }
      }
    },
    "/teams/{teamId}/members": {
      "get": {
        "tags": [
          "Team"
        ],
        "description": "팀 멤버 리스트 획득",
        "parameters": [
          {
            "name": "teamId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "$ref": "#/components/parameters/order"
          },
          {
            "$ref": "#/components/parameters/cursor"
          },
          {
            "$ref": "#/components/parameters/take"
          }
        ],
        "responses": {
          "default": {
            "description": ""
          }
        },
        "security": [
          {
            "bearerAuth": [],
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/teams/{teamId}/members/{userId}": {
      "patch": {
        "tags": [
          "Team"
        ],
        "description": "팀 멤버의 속성 변경",
        "parameters": [
          {
            "name": "teamId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "userId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "default": {
            "description": ""
          }
        },
        "security": [
          {
            "bearerAuth": [],
            "ApiKeyAuth": []
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/patchTeamMembers"
              }
            },
            "application/xml": {
              "schema": {
                "$ref": "#/components/schemas/patchTeamMembers"
              }
            }
          }
        }
      }
    },
    "/teams/{teamId}/invites": {
      "post": {
        "tags": [
          "Team"
        ],
        "description": "팀 멤버 초대",
        "parameters": [
          {
            "name": "teamId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "default": {
            "description": ""
          }
        },
        "security": [
          {
            "bearerAuth": [],
            "ApiKeyAuth": []
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/postTeamInvites"
              }
            },
            "application/xml": {
              "schema": {
                "$ref": "#/components/schemas/postTeamInvites"
              }
            }
          }
        }
      }
    },
    "/teams/{teamId}/agents": {
      "get": {
        "tags": [
          "Team"
        ],
        "description": "팀 에이전트 리스트 획득",
        "parameters": [
          {
            "name": "teamId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "$ref": "#/components/parameters/order"
          },
          {
            "$ref": "#/components/parameters/cursor"
          },
          {
            "$ref": "#/components/parameters/take"
          }
        ],
        "responses": {
          "default": {
            "description": ""
          }
        },
        "security": [
          {
            "bearerAuth": [],
            "ApiKeyAuth": []
          }
        ]
      },
      "post": {
        "tags": [
          "Team"
        ],
        "description": "팀 에이전트 등록",
        "parameters": [
          {
            "name": "teamId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "default": {
            "description": ""
          }
        },
        "security": [
          {
            "bearerAuth": [],
            "ApiKeyAuth": []
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/postTeamAgents"
              }
            },
            "application/xml": {
              "schema": {
                "$ref": "#/components/schemas/postTeamAgents"
              }
            }
          }
        }
      }
    },
    "/agents/{agentId}": {
      "get": {
        "tags": [
          "Agent"
        ],
        "description": "에이전트 정보 획득",
        "parameters": [
          {
            "name": "agentId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "default": {
            "description": ""
          }
        },
        "security": [
          {
            "bearerAuth": [],
            "ApiKeyAuth": []
          }
        ]
      },
      "patch": {
        "tags": [
          "Agent"
        ],
        "description": "팀 에이전트 수정",
        "parameters": [
          {
            "name": "agentId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "default": {
            "description": ""
          }
        },
        "security": [
          {
            "bearerAuth": [],
            "ApiKeyAuth": []
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/patchTeamAgents"
              }
            },
            "application/xml": {
              "schema": {
                "$ref": "#/components/schemas/patchTeamAgents"
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Agent"
        ],
        "description": "팀 에이전트 삭제",
        "parameters": [
          {
            "name": "agentId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "default": {
            "description": ""
          }
        },
        "security": [
          {
            "bearerAuth": [],
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/agents/{agentId}/knowledges": {
      "get": {
        "tags": [
          "Agent"
        ],
        "description": "에이전트의 Knowledges 리스트 획득",
        "parameters": [
          {
            "name": "agentId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "$ref": "#/components/parameters/order"
          },
          {
            "$ref": "#/components/parameters/cursor"
          },
          {
            "$ref": "#/components/parameters/take"
          }
        ],
        "responses": {
          "default": {
            "description": ""
          }
        },
        "security": [
          {
            "bearerAuth": [],
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/agents/{agentId}/instructions": {
      "delete": {
        "tags": [
          "Agent"
        ],
        "description": "에이전트의 Knowledges 삭제",
        "parameters": [
          {
            "name": "agentId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "default": {
            "description": ""
          }
        },
        "security": [
          {
            "bearerAuth": [],
            "ApiKeyAuth": []
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/deleteAgentKnowledges"
              }
            },
            "application/xml": {
              "schema": {
                "$ref": "#/components/schemas/deleteAgentKnowledges"
              }
            }
          }
        }
      }
    },
    "/agents/{agentId}/documents/url": {
      "post": {
        "tags": [
          "Agent"
        ],
        "description": "에이전트에 문서 URL 등록",
        "parameters": [
          {
            "name": "agentId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "sse-connection-key",
            "in": "header",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "default": {
            "description": ""
          }
        },
        "security": [
          {
            "bearerAuth": [],
            "ApiKeyAuth": []
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/postAgentDocumentsUrl"
              }
            },
            "application/xml": {
              "schema": {
                "$ref": "#/components/schemas/postAgentDocumentsUrl"
              }
            }
          }
        }
      }
    },
    "/agents/{agentId}/documents/file": {
      "post": {
        "tags": [
          "Agent"
        ],
        "description": "에이전트에 문서 File 등록",
        "parameters": [
          {
            "name": "agentId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "sse-connection-key",
            "in": "header",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/files"
          }
        ],
        "responses": {
          "default": {
            "description": ""
          }
        },
        "security": [
          {
            "bearerAuth": [],
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/agents/{agentId}/deployments": {
      "post": {
        "description": "",
        "parameters": [
          {
            "name": "agentId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "sse-connection-key",
            "in": "header",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "default": {
            "description": ""
          }
        },
        "security": [
          {
            "bearerAuth": [],
            "ApiKeyAuth": []
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "memo": {
                    "example": "any"
                  },
                  "agentVersionId": {
                    "example": "any"
                  }
                }
              }
            }
          }
        }
      },
      "get": {
        "tags": [
          "Agent"
        ],
        "description": "에이전트의 배포 히스토리 목록 조회",
        "parameters": [
          {
            "name": "agentId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "agentVersionStatus",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "default": {
            "description": ""
          }
        },
        "security": [
          {
            "bearerAuth": [],
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/agents/{agentId}/channels": {
      "post": {
        "description": "",
        "parameters": [
          {
            "name": "agentId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "default": {
            "description": ""
          }
        },
        "security": [
          {
            "bearerAuth": [],
            "ApiKeyAuth": []
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "type": {
                    "example": "any"
                  },
                  "name": {
                    "example": "any"
                  },
                  "kakaoBotId": {
                    "example": "any"
                  }
                }
              }
            }
          }
        }
      },
      "get": {
        "description": "",
        "parameters": [
          {
            "name": "agentId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "default": {
            "description": ""
          }
        },
        "security": [
          {
            "bearerAuth": [],
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/agents/{agentId}/buckets": {
      "get": {
        "tags": [
          "Agent"
        ],
        "description": "에이전트의 버킷 리스트 획득",
        "parameters": [
          {
            "name": "agentId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "$ref": "#/components/parameters/order"
          },
          {
            "$ref": "#/components/parameters/cursor"
          },
          {
            "$ref": "#/components/parameters/take"
          }
        ],
        "responses": {
          "default": {
            "description": ""
          }
        },
        "security": [
          {
            "bearerAuth": [],
            "ApiKeyAuth": []
          }
        ]
      },
      "post": {
        "tags": [
          "Agent"
        ],
        "description": "에이전트에 버킷 등록",
        "parameters": [
          {
            "name": "agentId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "default": {
            "description": ""
          }
        },
        "security": [
          {
            "bearerAuth": [],
            "ApiKeyAuth": []
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/postAgentBuckets"
              }
            },
            "application/xml": {
              "schema": {
                "$ref": "#/components/schemas/postAgentBuckets"
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Agent"
        ],
        "description": "에이전트의 버킷 일괄 변경",
        "parameters": [
          {
            "name": "agentId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "default": {
            "description": ""
          }
        },
        "security": [
          {
            "bearerAuth": [],
            "ApiKeyAuth": []
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/postAgentBuckets"
              }
            },
            "application/xml": {
              "schema": {
                "$ref": "#/components/schemas/postAgentBuckets"
              }
            }
          }
        }
      }
    },
    "/agents/{agentId}/threads/report": {
      "get": {
        "tags": [
          "Agent"
        ],
        "description": "에이전트의 스레드 로그 임시!! 획득",
        "parameters": [
          {
            "name": "agentId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "googleDriveFolderId",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "fileName",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "default": {
            "description": ""
          }
        },
        "security": [
          {
            "bearerAuth": [],
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/agents/{agentId}/versions": {
      "get": {
        "tags": [
          "Agent"
        ],
        "description": "에이전트의 배포 히스토리 목록 조회",
        "parameters": [
          {
            "name": "agentId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "default": {
            "description": ""
          }
        },
        "security": [
          {
            "bearerAuth": [],
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/agents/{agentId}/threads": {
      "post": {
        "tags": [
          "Agent"
        ],
        "description": "에이전트에 스레드 등록",
        "parameters": [
          {
            "name": "agentId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "sse-connection-key",
            "in": "header",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "default": {
            "description": ""
          }
        },
        "security": [
          {
            "bearerAuth": [],
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/agents/{agentId}/basic-instructions": {
      "get": {
        "description": "",
        "parameters": [
          {
            "name": "agentId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "default": {
            "description": ""
          }
        },
        "security": [
          {
            "bearerAuth": [],
            "ApiKeyAuth": []
          }
        ]
      },
      "post": {
        "description": "",
        "parameters": [
          {
            "name": "agentId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "default": {
            "description": ""
          }
        },
        "security": [
          {
            "bearerAuth": [],
            "ApiKeyAuth": []
          }
        ]
      },
      "patch": {
        "description": "",
        "parameters": [
          {
            "name": "agentId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "default": {
            "description": ""
          }
        },
        "security": [
          {
            "bearerAuth": [],
            "ApiKeyAuth": []
          }
        ]
      },
      "delete": {
        "description": "",
        "parameters": [
          {
            "name": "agentId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "default": {
            "description": ""
          }
        },
        "security": [
          {
            "bearerAuth": [],
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/agents/{agentId}/advices": {
      "post": {
        "tags": [
          "Agent"
        ],
        "description": "에이전트에 피드백 등록",
        "parameters": [
          {
            "name": "agentId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "sse-connection-key",
            "in": "header",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "default": {
            "description": ""
          }
        },
        "security": [
          {
            "bearerAuth": [],
            "ApiKeyAuth": []
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "qnas": {
                    "example": "any"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/agents/{agentId}/configs": {
      "post": {
        "description": "",
        "parameters": [
          {
            "name": "agentId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "default": {
            "description": ""
          }
        },
        "security": [
          {
            "bearerAuth": [],
            "ApiKeyAuth": []
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "promptTemplateRecipe": {
                    "example": "any"
                  },
                  "systemConfig": {
                    "example": "any"
                  }
                }
              }
            }
          }
        }
      },
      "get": {
        "description": "",
        "parameters": [
          {
            "name": "agentId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "default": {
            "description": ""
          }
        },
        "security": [
          {
            "bearerAuth": [],
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/documents/{documentId}": {
      "get": {
        "tags": [
          "Document"
        ],
        "description": "문서 정보 획득",
        "parameters": [
          {
            "name": "documentId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "default": {
            "description": ""
          }
        },
        "security": [
          {
            "bearerAuth": [],
            "ApiKeyAuth": []
          }
        ]
      },
      "put": {
        "tags": [
          "Document"
        ],
        "description": "문서 내용 수정 (URL로 등록한 문서)",
        "parameters": [
          {
            "name": "documentId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "default": {
            "description": ""
          }
        },
        "security": [
          {
            "bearerAuth": [],
            "ApiKeyAuth": []
          }
        ]
      },
      "patch": {
        "tags": [
          "Document"
        ],
        "description": "문서 정보 수정",
        "parameters": [
          {
            "name": "documentId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "sse-connection-key",
            "in": "header",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "default": {
            "description": ""
          }
        },
        "security": [
          {
            "bearerAuth": [],
            "ApiKeyAuth": []
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "description": {
                    "example": "any"
                  },
                  "bucketIds": {
                    "example": "any"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/documents/{documentId}/download": {
      "get": {
        "description": "",
        "parameters": [
          {
            "name": "documentId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "default": {
            "description": ""
          }
        },
        "security": [
          {
            "bearerAuth": [],
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/documents/": {
      "delete": {
        "tags": [
          "Agent"
        ],
        "description": "여러 개의 document 삭제",
        "responses": {
          "default": {
            "description": ""
          }
        },
        "security": [
          {
            "bearerAuth": [],
            "ApiKeyAuth": []
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/deleteAgentKnowledges"
              }
            },
            "application/xml": {
              "schema": {
                "$ref": "#/components/schemas/deleteAgentKnowledges"
              }
            }
          }
        }
      }
    },
    "/buckets/{bucketId}": {
      "patch": {
        "tags": [
          "Bucket"
        ],
        "description": "버킷 정보 수정",
        "parameters": [
          {
            "name": "bucketId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "default": {
            "description": ""
          }
        },
        "security": [
          {
            "bearerAuth": [],
            "ApiKeyAuth": []
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/patchBucket"
              }
            },
            "application/xml": {
              "schema": {
                "$ref": "#/components/schemas/patchBucket"
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Bucket"
        ],
        "description": "버킷 삭제",
        "parameters": [
          {
            "name": "bucketId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "default": {
            "description": ""
          }
        },
        "security": [
          {
            "bearerAuth": [],
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/threads/{threadId}/chats": {
      "post": {
        "tags": [
          "Thread"
        ],
        "description": "스레드에 질문 등록",
        "parameters": [
          {
            "name": "threadId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "default": {
            "description": ""
          }
        },
        "security": [
          {
            "bearerAuth": [],
            "ApiKeyAuth": []
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/postThreadReply"
              }
            },
            "application/xml": {
              "schema": {
                "$ref": "#/components/schemas/postThreadReply"
              }
            }
          }
        }
      }
    },
    "/chats/": {
      "get": {
        "description": "",
        "responses": {
          "default": {
            "description": ""
          }
        },
        "security": [
          {
            "bearerAuth": [],
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/chats/download": {
      "post": {
        "description": "",
        "responses": {
          "default": {
            "description": ""
          }
        },
        "security": [
          {
            "bearerAuth": [],
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/chats/{chatId}": {
      "get": {
        "tags": [
          "Chat"
        ],
        "description": "챗 조회",
        "parameters": [
          {
            "name": "chatId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "default": {
            "description": ""
          }
        },
        "security": [
          {
            "bearerAuth": [],
            "ApiKeyAuth": []
          }
        ]
      },
      "patch": {
        "description": "",
        "parameters": [
          {
            "name": "chatId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "default": {
            "description": ""
          }
        },
        "security": [
          {
            "bearerAuth": [],
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/chats/{chatId}/sources": {
      "get": {
        "tags": [
          "Chat"
        ],
        "description": "관련 소스 조회",
        "parameters": [
          {
            "name": "chatId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "default": {
            "description": ""
          }
        },
        "security": [
          {
            "bearerAuth": [],
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/chats/{chatId}/chat-advices": {
      "post": {
        "description": "",
        "parameters": [
          {
            "name": "chatId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "sse-connection-key",
            "in": "header",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "default": {
            "description": ""
          }
        },
        "security": [
          {
            "bearerAuth": [],
            "ApiKeyAuth": []
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "type": {
                    "example": "any"
                  },
                  "qna": {
                    "example": "any"
                  },
                  "bucketId": {
                    "example": "any"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/chats/{chatId}/chat-advices/{chatAdviceId}": {
      "patch": {
        "description": "",
        "parameters": [
          {
            "name": "chatId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "chatAdviceId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "sse-connection-key",
            "in": "header",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "default": {
            "description": ""
          }
        },
        "security": [
          {
            "bearerAuth": [],
            "ApiKeyAuth": []
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "qna": {
                    "example": "any"
                  },
                  "bucketId": {
                    "example": "any"
                  }
                }
              }
            }
          }
        }
      },
      "delete": {
        "description": "",
        "parameters": [
          {
            "name": "chatId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "chatAdviceId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "sse-connection-key",
            "in": "header",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "default": {
            "description": ""
          }
        },
        "security": [
          {
            "bearerAuth": [],
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/chat-advices/{chatAdviceId}": {
      "get": {
        "description": "",
        "parameters": [
          {
            "name": "chatAdviceId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "default": {
            "description": ""
          }
        },
        "security": [
          {
            "bearerAuth": [],
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/chat-advices/": {
      "delete": {
        "description": "",
        "parameters": [
          {
            "name": "sse-connection-key",
            "in": "header",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "default": {
            "description": ""
          }
        },
        "security": [
          {
            "bearerAuth": [],
            "ApiKeyAuth": []
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "chatAdviceIds": {
                    "example": "any"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/sse/": {
      "post": {
        "tags": [
          "SSE"
        ],
        "description": "테스트 페이지 접속시 SSE connection 생성",
        "responses": {
          "default": {
            "description": ""
          }
        },
        "security": [
          {
            "bearerAuth": [],
            "ApiKeyAuth": []
          }
        ]
      },
      "delete": {
        "tags": [
          "SSE"
        ],
        "description": "SSE connection 해제",
        "parameters": [
          {
            "name": "sse-connection-key",
            "in": "header",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "default": {
            "description": ""
          }
        },
        "security": [
          {
            "bearerAuth": [],
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/admin/teams": {
      "post": {
        "description": "",
        "responses": {
          "default": {
            "description": ""
          }
        },
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "name": {
                    "example": "any"
                  },
                  "users": {
                    "example": "any"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/admin/documents": {
      "post": {
        "description": "",
        "responses": {
          "default": {
            "description": ""
          }
        },
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "webhookUrl": {
                    "example": "any"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/advices/{adviceId}": {
      "get": {
        "tags": [
          "Advice"
        ],
        "description": "피드백 정보 조회",
        "parameters": [
          {
            "name": "adviceId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "default": {
            "description": ""
          }
        },
        "security": [
          {
            "bearerAuth": [],
            "ApiKeyAuth": []
          }
        ]
      },
      "patch": {
        "tags": [
          "Advice"
        ],
        "description": "피드백 정보 수정",
        "parameters": [
          {
            "name": "adviceId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "sse-connection-key",
            "in": "header",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "default": {
            "description": ""
          }
        },
        "security": [
          {
            "bearerAuth": [],
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/advices/": {
      "delete": {
        "tags": [
          "Advice"
        ],
        "description": "여러 개의 피드백 삭제",
        "parameters": [
          {
            "name": "sse-connection-key",
            "in": "header",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "default": {
            "description": ""
          }
        },
        "security": [
          {
            "bearerAuth": [],
            "ApiKeyAuth": []
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "adviceIds": {
                    "example": "any"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api-keys/": {
      "post": {
        "description": "",
        "responses": {
          "default": {
            "description": ""
          }
        },
        "security": [
          {
            "bearerAuth": [],
            "ApiKeyAuth": []
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "name": {
                    "example": "any"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/deployments/{deploymentId}": {
      "delete": {
        "description": "",
        "parameters": [
          {
            "name": "deploymentId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "sse-connection-key",
            "in": "header",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "default": {
            "description": ""
          }
        },
        "security": [
          {
            "bearerAuth": [],
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/api/guest/test/": {
      "post": {
        "description": "",
        "responses": {
          "default": {
            "description": ""
          }
        }
      }
    },
    "/api/guest/sessions/": {
      "post": {
        "description": "",
        "parameters": [
          {
            "name": "x-storm-guest-id",
            "in": "header",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "default": {
            "description": ""
          }
        }
      },
      "delete": {
        "description": "",
        "parameters": [
          {
            "name": "agentId",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "ttl",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "default": {
            "description": ""
          }
        }
      }
    },
    "/api/guest/documents/": {
      "post": {
        "tags": [
          "API v1"
        ],
        "description": "학습 요청",
        "responses": {
          "default": {
            "description": ""
          }
        },
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "webhookUrl": {
                    "example": "any"
                  },
                  "urls": {
                    "example": "any"
                  },
                  "postActions": {
                    "example": "any"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/guest/documents/{documentId}": {
      "get": {
        "tags": [
          "API v1"
        ],
        "description": "문서 정보 획득",
        "parameters": [
          {
            "name": "documentId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "default": {
            "description": ""
          }
        }
      }
    },
    "/api/guest/contexts/": {
      "post": {
        "description": "",
        "responses": {
          "default": {
            "description": ""
          }
        },
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "question": {
                    "example": "any"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/{version}/buckets/": {
      "post": {
        "tags": [
          "API v1"
        ],
        "description": "에이전트에 버킷 등록",
        "parameters": [
          {
            "name": "version",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "default": {
            "description": ""
          }
        }
      }
    },
    "/api/{version}/buckets/{bucketId}": {
      "patch": {
        "tags": [
          "API v1"
        ],
        "description": "버킷 정보 수정",
        "parameters": [
          {
            "name": "version",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "bucketId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "default": {
            "description": ""
          }
        }
      }
    },
    "/api/{version}/documents/": {
      "post": {
        "tags": [
          "API v1"
        ],
        "description": "학습 요청",
        "parameters": [
          {
            "name": "version",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "default": {
            "description": ""
          }
        },
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "webhookUrl": {
                    "example": "any"
                  },
                  "urls": {
                    "example": "any"
                  },
                  "postActions": {
                    "example": "any"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/{version}/documents/{documentId}": {
      "get": {
        "tags": [
          "API v1"
        ],
        "description": "문서 정보 획득",
        "parameters": [
          {
            "name": "version",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "documentId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "default": {
            "description": ""
          }
        }
      }
    },
    "/api/{version}/threads/": {
      "post": {
        "tags": [
          "API v1"
        ],
        "description": "스레드 등록",
        "parameters": [
          {
            "name": "version",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "default": {
            "description": ""
          }
        }
      }
    },
    "/api/{version}/threads/{threadId}/chats": {
      "post": {
        "tags": [
          "API v1"
        ],
        "description": "채팅 전송",
        "parameters": [
          {
            "name": "version",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "threadId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "default": {
            "description": ""
          }
        },
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "question": {
                    "example": "any"
                  },
                  "bucketIds": {
                    "example": "any"
                  },
                  "isStreaming": {
                    "example": "any"
                  },
                  "isContextOnly": {
                    "example": "any"
                  },
                  "webhookUrl": {
                    "example": "any"
                  },
                  "engine": {
                    "example": "any"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/{version}/answer/": {
      "post": {
        "tags": [
          "API v1"
        ],
        "description": "채널 API 연동으로 질문 등록",
        "parameters": [
          {
            "name": "version",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "default": {
            "description": ""
          }
        },
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "question": {
                    "example": "any"
                  },
                  "bucketIds": {
                    "example": "any"
                  },
                  "isStreaming": {
                    "example": "any"
                  },
                  "isContextOnly": {
                    "example": "any"
                  },
                  "webhookUrl": {
                    "example": "any"
                  },
                  "engine": {
                    "example": "any"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/{version}/agents/{agentId}/deployments": {
      "post": {
        "description": "",
        "parameters": [
          {
            "name": "version",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "agentId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "default": {
            "description": ""
          }
        },
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "memo": {
                    "example": "any"
                  },
                  "agentVersionId": {
                    "example": "any"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/channels/{channelId}": {
      "get": {
        "description": "",
        "parameters": [
          {
            "name": "channelId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "default": {
            "description": ""
          }
        },
        "security": [
          {
            "bearerAuth": [],
            "ApiKeyAuth": []
          }
        ]
      },
      "patch": {
        "description": "",
        "parameters": [
          {
            "name": "channelId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "default": {
            "description": ""
          }
        },
        "security": [
          {
            "bearerAuth": [],
            "ApiKeyAuth": []
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "type": {
                    "example": "any"
                  },
                  "name": {
                    "example": "any"
                  },
                  "kakaoBotId": {
                    "example": "any"
                  }
                }
              }
            }
          }
        }
      },
      "delete": {
        "description": "",
        "parameters": [
          {
            "name": "channelId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "default": {
            "description": ""
          }
        },
        "security": [
          {
            "bearerAuth": [],
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/channels/{channelId}/renew-token": {
      "post": {
        "description": "",
        "parameters": [
          {
            "name": "channelId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "default": {
            "description": ""
          }
        },
        "security": [
          {
            "bearerAuth": [],
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/write/": {
      "post": {
        "tags": [
          "Write"
        ],
        "description": "기사 생성",
        "parameters": [
          {
            "name": "sse-connection-key",
            "in": "header",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "default": {
            "description": ""
          }
        },
        "security": [
          {
            "bearerAuth": [],
            "ApiKeyAuth": []
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "testId": {
                    "example": "any"
                  },
                  "text": {
                    "example": "any"
                  },
                  "metadata": {
                    "example": "any"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/write/refine/title": {
      "post": {
        "tags": [
          "Write"
        ],
        "description": "기사 제목 정제",
        "parameters": [
          {
            "name": "sse-connection-key",
            "in": "header",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "default": {
            "description": ""
          }
        },
        "security": [
          {
            "bearerAuth": [],
            "ApiKeyAuth": []
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "testId": {
                    "example": "any"
                  },
                  "text": {
                    "example": "any"
                  },
                  "metadata": {
                    "example": "any"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/write/refine/subtitle": {
      "post": {
        "tags": [
          "Write"
        ],
        "description": "기사 부제목 정제",
        "parameters": [
          {
            "name": "sse-connection-key",
            "in": "header",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "default": {
            "description": ""
          }
        },
        "security": [
          {
            "bearerAuth": [],
            "ApiKeyAuth": []
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "testId": {
                    "example": "any"
                  },
                  "text": {
                    "example": "any"
                  },
                  "title": {
                    "example": "any"
                  },
                  "metadata": {
                    "example": "any"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/write/refine/lead": {
      "post": {
        "tags": [
          "Write"
        ],
        "description": "기사 리드문 정제",
        "parameters": [
          {
            "name": "sse-connection-key",
            "in": "header",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "default": {
            "description": ""
          }
        },
        "security": [
          {
            "bearerAuth": [],
            "ApiKeyAuth": []
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "testId": {
                    "example": "any"
                  },
                  "text": {
                    "example": "any"
                  },
                  "title": {
                    "example": "any"
                  },
                  "subtitle": {
                    "example": "any"
                  },
                  "metadata": {
                    "example": "any"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/write/refine/body": {
      "post": {
        "tags": [
          "Write"
        ],
        "description": "기사 바디문 정제",
        "parameters": [
          {
            "name": "sse-connection-key",
            "in": "header",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "default": {
            "description": ""
          }
        },
        "security": [
          {
            "bearerAuth": [],
            "ApiKeyAuth": []
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "testId": {
                    "example": "any"
                  },
                  "text": {
                    "example": "any"
                  },
                  "title": {
                    "example": "any"
                  },
                  "subtitle": {
                    "example": "any"
                  },
                  "metadata": {
                    "example": "any"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/write/report": {
      "get": {
        "tags": [
          "Agent"
        ],
        "description": "write report 생성",
        "parameters": [
          {
            "name": "testId",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "googleDriveFolderId",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "fileName",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "default": {
            "description": ""
          }
        },
        "security": [
          {
            "bearerAuth": [],
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/models/": {
      "get": {
        "description": "",
        "responses": {
          "default": {
            "description": ""
          }
        },
        "security": [
          {
            "bearerAuth": [],
            "ApiKeyAuth": []
          }
        ]
      }
    }
  },
  "components": {
    "parameters": {
      "search": {
        "in": "query",
        "name": "search",
        "schema": {
          "type": "string"
        }
      },
      "order": {
        "in": "query",
        "name": "order",
        "schema": {
          "type": "string"
        }
      },
      "cursor": {
        "in": "query",
        "name": "cursor",
        "schema": {
          "type": "string"
        }
      },
      "take": {
        "in": "query",
        "name": "take",
        "schema": {
          "type": "integer",
          "minimun": 1
        }
      },
      "files": {
        "in": "formData",
        "name": "files",
        "schema": {
          "type": "array",
          "items": {
            "type": "string",
            "format": "binary"
          }
        }
      }
    },
    "schemas": {
      "postAuthSignup": {
        "type": "object",
        "properties": {
          "email": {
            "type": "string",
            "example": ""
          },
          "name": {
            "type": "string",
            "example": ""
          },
          "password": {
            "type": "string",
            "example": ""
          },
          "code": {
            "type": "string",
            "example": ""
          }
        },
        "xml": {
          "name": "postAuthSignup"
        }
      },
      "postTeam": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "example": "newTeamName"
          }
        },
        "xml": {
          "name": "postTeam"
        }
      },
      "patchTeam": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "example": "newTeamName"
          }
        },
        "xml": {
          "name": "patchTeam"
        }
      },
      "patchTeamMembers": {
        "type": "object",
        "properties": {
          "role": {
            "type": "string",
            "example": "member"
          }
        },
        "xml": {
          "name": "patchTeamMembers"
        }
      },
      "postTeamInvites": {
        "type": "array",
        "items": {
          "type": "object",
          "properties": {
            "email": {
              "type": "string",
              "example": "[email protected]"
            },
            "role": {
              "type": "string",
              "example": "member"
            }
          }
        },
        "xml": {
          "name": "postTeamInvites"
        }
      },
      "postTeamAgents": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "example": "newAgentName"
          },
          "language": {
            "type": "string",
            "example": "ko"
          }
        },
        "xml": {
          "name": "postTeamAgents"
        }
      },
      "patchTeamAgents": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "example": "newAgentName"
          },
          "language": {
            "type": "string",
            "example": "ko"
          }
        },
        "xml": {
          "name": "patchTeamAgents"
        }
      },
      "postTeamWorkspaceIntegrations": {
        "type": "object",
        "properties": {
          "workspaceType": {
            "type": "string",
            "example": "channeltalk"
          },
          "workspaceId": {
            "type": "string",
            "example": "123456"
          },
          "accessToken": {
            "type": "string",
            "example": "651xx3f16d1a110a3c11"
          },
          "accessKey": {
            "type": "string",
            "example": "123123"
          },
          "accessSecret": {
            "type": "string",
            "example": "7d607xxxxxxxxxxxxxxxxxxxx"
          }
        },
        "xml": {
          "name": "postTeamWorkspaceIntegrations"
        }
      },
      "postMeTeamInvite": {
        "type": "object",
        "properties": {
          "code": {
            "type": "string",
            "example": ""
          }
        },
        "xml": {
          "name": "postMeTeamInvite"
        }
      },
      "deleteAgentKnowledges": {
        "type": "object",
        "properties": {
          "documentIds": {
            "type": "array",
            "example": [
              "123456"
            ],
            "items": {
              "type": "string"
            }
          },
          "adviceIds": {
            "type": "array",
            "example": [
              "123456"
            ],
            "items": {
              "type": "string"
            }
          }
        },
        "xml": {
          "name": "deleteAgentKnowledges"
        }
      },
      "postAgentDocumentsUrl": {
        "type": "object",
        "properties": {
          "documentUrls": {
            "type": "array",
            "example": [
              "https://examples.com"
            ],
            "items": {
              "type": "string"
            }
          },
          "bucketIds": {
            "type": "array",
            "example": [
              "123456"
            ],
            "items": {
              "type": "string"
            }
          }
        },
        "xml": {
          "name": "postAgentDocumentsUrl"
        }
      },
      "postAgentDocumentsFile": {
        "type": "object",
        "properties": {
          "bucketIds": {
            "type": "array",
            "example": [
              "123456"
            ],
            "items": {
              "type": "string"
            }
          }
        },
        "xml": {
          "name": "postAgentDocumentsFile"
        }
      },
      "postAgentBuckets": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "example": "default"
          },
          "name": {
            "type": "string",
            "example": "newBucketName"
          }
        },
        "xml": {
          "name": "postAgentBuckets"
        }
      },
      "putAgentBuckets": {
        "type": "object",
        "properties": {
          "create": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "type": {
                  "type": "string",
                  "example": "default"
                },
                "name": {
                  "type": "string",
                  "example": "newBucketName"
                }
              }
            }
          },
          "update": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "example": "123456"
                },
                "type": {
                  "type": "string",
                  "example": "optional"
                },
                "name": {
                  "type": "string",
                  "example": "newBucketName"
                }
              }
            }
          },
          "delete": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "example": "123456"
                }
              }
            }
          }
        },
        "xml": {
          "name": "putAgentBuckets"
        }
      },
      "patchBucket": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "example": "optional"
          },
          "name": {
            "type": "string",
            "example": "newBucketName"
          }
        },
        "xml": {
          "name": "patchBucket"
        }
      },
      "postThreadReply": {
        "type": "object",
        "properties": {
          "question": {
            "type": "string",
            "example": "질문 텍스트"
          }
        },
        "xml": {
          "name": "postThreadReply"
        }
      }
    },
    "securitySchemes": {
      "bearerAuth": {
        "type": "http",
        "scheme": "bearer",
        "bearerFormat": "JWT"
      },
      "ApiKeyAuth": {
        "type": "apiKey",
        "in": "header",
        "name": "X-Storm-Token"
      }
    }
  }
}
```