File size: 18,715 Bytes
0dbc9de | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 | ---
title: ์๋ฒ
description: HTTP๋ฅผ ํตํด OpenCode ์๋ฒ์ ์ํธ ์์ฉํฉ๋๋ค.
---
import config from "../../../../config.mjs"
export const typesUrl = `${config.github}/blob/dev/packages/sdk/js/src/gen/types.gen.ts`
`opencode serve` ๋ช
๋ น์ opencode ํด๋ผ์ด์ธํธ๊ฐ ์ฌ์ฉํ ์ ์๋ OpenAPI ์๋ํฌ์ธํธ๋ฅผ ๋
ธ์ถํ๋ headless HTTP ์๋ฒ๋ฅผ ์คํํฉ๋๋ค.
---
### ์ฌ์ฉ๋ฒ
```bash
opencode serve [--port <number>] [--hostname <string>] [--cors <origin>]
```
#### ์ต์
| ํ๋๊ทธ | ์ค๋ช
| ๊ธฐ๋ณธ๊ฐ |
| --------------- | ------------------------------------- | ---------------- |
| `--port` | ์์ ๋๊ธฐํ ํฌํธ | `4096` |
| `--hostname` | ์์ ๋๊ธฐํ ํธ์คํธ๋ช
| `127.0.0.1` |
| `--mdns` | mDNS ํ์ง ํ์ฑํ | `false` |
| `--mdns-domain` | mDNS ์๋น์ค์ ์ฌ์ฉ์ ์ง์ ๋๋ฉ์ธ ์ด๋ฆ | `opencode.local` |
| `--cors` | ํ์ฉํ ์ถ๊ฐ ๋ธ๋ผ์ฐ์ origin | `[]` |
`--cors`๋ ๋ค์ ์๊ฐ์ ํต๊ณผ๋ ์ ์์ต๋๋ค:
```bash
opencode serve --cors http://localhost:5173 --cors https://app.example.com
```
---
### ์ธ์ฆ
`OPENCODE_SERVER_PASSWORD`๋ฅผ ์ค์ ํ์ฌ ์๋ฒ๋ฅผ HTTP Basic auth๋ก ๋ณดํธํฉ๋๋ค. `opencode` ๋๋ `OPENCODE_SERVER_USERNAME`๋ฅผ ์ค๋ฒ๋ผ์ด๋๋ก ์ค์ ํ๋ ์ฌ์ฉ์์ ๊ธฐ๋ณธ๊ฐ. ์ด๊ฒ์ `opencode serve`์ `opencode web` ๋ ๋ค์ ์ ์ฉํฉ๋๋ค.
```bash
OPENCODE_SERVER_PASSWORD=your-password opencode serve
```
---
### ์๋ ๋ฐฉ์
`opencode`๋ฅผ ์คํํ๋ฉด TUI์ ์๋ฒ๋ฅผ ์์ํฉ๋๋ค. TUI๋ ์ด๋์ ์์ต๋๊น?
์๋ฒ์ ๋ํํ๋ ํด๋ผ์ด์ธํธ. ์๋ฒ๋ OpenAPI 3.1 spec์ ๋
ธ์ถ
๋์ . ์ด ์๋ํฌ์ธํธ๋ [SDK](/docs/sdk)์ ์์ฑํ๋ ๋ฐ๋ ์ฌ์ฉ๋ฉ๋๋ค.
:::tip
opencode ์๋ฒ๋ฅผ ์ฌ์ฉํ์ฌ opencode programmatically์ ์ํธ ์์ฉํฉ๋๋ค.
:::
์ด ์ํคํ
์ฒ๋ opencode ์ง์ ์ฌ๋ฌ ํด๋ผ์ด์ธํธ๋ฅผ ํ์ฉํ๊ณ opencode programmatically์ ์ํธ ์์ฉ ํ ์ ์์ต๋๋ค.
๋
๋ฆฝ ์๋ฒ๋ฅผ ์์ํ๋ ค๋ฉด `opencode serve`๋ฅผ ์คํํ ์ ์์ต๋๋ค. ๋น์ ์ด ์๋ ๊ฒฝ์ฐ์
opencode TUI ์คํ, `opencode serve` ์๋ก์ด ์๋ฒ๋ฅผ ์์ํฉ๋๋ค.
---
#### ๊ธฐ์กด ์๋ฒ์ ์ฐ๊ฒฐ
TUI๋ฅผ ์์ํ๋ฉด ๋ฌด์์๋ก ํฌํธ์ ํธ์คํธ ์ด๋ฆ์ ํ ๋นํฉ๋๋ค. ๋์ `--hostname`์ `--port` [flags](/docs/cli)์์ ์ ๋ฌํ ์ ์์ต๋๋ค. ๊ทธ๋ฐ ๋ค์ ์๋ฒ์ ์ฐ๊ฒฐํ์ญ์์ค.
[`/tui`](#tui) ์๋ํฌ์ธํธ๋ ์๋ฒ๋ฅผ ํตํด TUI๋ฅผ ๊ตฌ๋ํ๋ ๋ฐ ์ฌ์ฉ๋ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด ๋ฏธ๋ฆฌ ์์ฑํ๊ฑฐ๋ ํ๋กฌํํธ๋ฅผ ์คํํ ์ ์์ต๋๋ค. ์ด ์ค์ ์ opencode [IDE](/docs/ide) ํ๋ฌ๊ทธ์ธ์ ์ํด ์ฌ์ฉ๋ฉ๋๋ค.
---
## ์ฌ์
์๋ฒ๋ OpenAPI 3.1 spec์ ๊ฒ์ํฉ๋๋ค.
```
http://<hostname>:<port>/doc
```
์๋ฅผ ๋ค์ด, `http://localhost:4096/doc`. ํด๋ผ์ด์ธํธ๋ฅผ ์์ฑํ๊ฑฐ๋ ์์ฒญ ๋ฐ ์๋ต ์ ํ์ ๊ฒ์ฌํ๋ spec๋ฅผ ์ฌ์ฉํ์ญ์์ค. ๋๋ Swagger ํํ๊ฐ์์ ๋ณผ ์ ์์ต๋๋ค.
---
## API
opencode ์๋ฒ๋ ๋ค์๊ณผ ๊ฐ์ API๋ฅผ ๋
ธ์ถํฉ๋๋ค.
---
## ๊ธ๋ก๋ฒ
| ๋ฐฉ๋ฒ | ๊ฒฝ๋ก | ์ค๋ช
| ์๋ต |
| ----- | ---------------- | ------------------------- | ------------------------------------ |
| `GET` | `/global/health` | ์๋ฒ ๊ฑด๊ฐ ๋ฐ ๋ฒ์ | `{ healthy: true, version: string }` |
| `GET` | `/global/event` | ๊ธ๋ก๋ฒ ์ด๋ฒคํธ(SSE ์คํธ๋ฆผ) | ์ด๋ฒคํธ ์คํธ๋ฆผ |
---
## ํ๋ก์ ํธ
| ๋ฐฉ๋ฒ | ๊ฒฝ๋ก | ์ค๋ช
| ์๋ต |
| ----- | ------------------ | ----------------------- | --------------------------------------------- |
| `GET` | `/project` | ๋ชจ๋ ํ๋ก์ ํธ ๋ณด๊ธฐ | <a href={typesUrl}><code>Project[]</code></a> |
| `GET` | `/project/current` | ํ์ฌ ํ๋ก์ ํธ ๊ฐ์ ธ ์ค๊ธฐ | <a href={typesUrl}><code>ํ๋ก์ ํธ</code></a> |
---
### ๊ฒฝ๋ก & VCS
| ๋ฐฉ๋ฒ | ๊ฒฝ๋ก | ์ค๋ช
| ์๋ต |
| ----- | ------- | ----------------------------- | ------------------------------------------- |
| `GET` | `/path` | ํ์ฌ ๊ฒฝ๋ก ๋ฐ๊ธฐ | <a href={typesUrl}><code>Path</code></a> |
| `GET` | `/vcs` | ํ์ฌ ํ๋ก์ ํธ์ VCS ์ ๋ณด ๋ฐ๊ธฐ | <a href={typesUrl}><code>VcsInfo</code></a> |
---
### ์ธ์คํด์ค
| ๋ฐฉ๋ฒ | ๊ฒฝ๋ก | ์ค๋ช
| ์๋ต |
| ------ | ------------------- | -------------------- | --------- |
| `POST` | `/instance/dispose` | ํ์ฌ ์ธ์คํด์ค๋ฅผ ํด์ | `boolean` |
---
### ๊ตฌ์ฑ
| ๋ฐฉ๋ฒ | ๊ฒฝ๋ก | ์ค๋ช
| ์๋ต |
| ------- | ------------------- | -------------------------- | ---------------------------------------------------------------------------------------- |
| `GET` | `/config` | ๊ตฌ์ฑ์ ๋ณด | <a href={typesUrl}><code>Config</code></a> |
| `PATCH` | `/config` | ์
๋ฐ์ดํธ ๊ตฌ์ฑ | <a href={typesUrl}><code>Config</code></a> |
| `GET` | `/config/providers` | ๋ชฉ๋ก ์ ๊ณต์
์ฒด ๋ฐ ๊ธฐ๋ณธ ๋ชจ๋ธ | `{ providers: `<a href={typesUrl}> ์ฌ์ดํธ ๋งต</a>`, default: { [key: string]: string } }` |
---
## ๊ณต๊ธ์
| ๋ฐฉ๋ฒ | ๊ฒฝ๋ก | ์ค๋ช
| ์๋ต |
| ------ | -------------------------------- | --------------------------- | ----------------------------------------------------------------------------------- |
| `GET` | `/provider` | ๋ชจ๋ ๊ณต๊ธ์ ๋ชฉ๋ก | `{ all: `<a href={typesUrl}>Provider[]</a>`, default: {...}, connected: string[] }` |
| `GET` | `/provider/auth` | ๊ณต๊ธ์ ์ธ์ฆ ๋ฉ์๋ ๊ฐ์ ธ์ค๊ธฐ | `{ [providerID: string]: `<a href={typesUrl}>ProviderAuthMethod[]</a>` }` |
| `POST` | `/provider/{id}/oauth/authorize` | OAuth๋ฅผ ์ฌ์ฉํ ๊ณต๊ธ์ ํ๊ฐ | <a href={typesUrl}><code>ProviderAuthAuthorization</code></a> |
| `POST` | `/provider/{id}/oauth/callback` | ๊ณต๊ธ์๋ฅผ ์ํ OAuth ์ฝ๋ฐฑ | `boolean` |
---
## ์ธ์
| ๋ฉ์๋ | ๊ฒฝ๋ก | ์ค๋ช
| ๋น๊ณ |
| -------- | ---------------------------------------- | ---------------------------------- | ----------------------------------------------------------------------------- |
| `GET` | `/session` | ๋ชจ๋ ์ธ์
์ผ๋ํ | ๋ฐํ <a href={typesUrl}><code>Session[]</code></a> |
| `POST` | `/session` | ์ ์ธ์
๋ง๋ค๊ธฐ | ๋ชธ: `{ parentID?, title? }`, ๋ฐํ <a href={typesUrl}><code>Session</code></a> |
| `GET` | `/session/status` | ๋ชจ๋ ์ธ์
์ ์ธ์
์ํ๋ฅผ ๊ฐ์ ธ์ต๋๋ค | `{ [sessionID: string]: `<a href={typesUrl}>SessionStatus</a>` }` |
| `GET` | `/session/:id` | ์ธ์
์์ธ๋ณด๊ธฐ | ๋ฐํ <a href={typesUrl}><code>Session</code></a> |
| `DELETE` | `/session/:id` | ์ธ์
์ญ์ ๋ฐ ๋ชจ๋ ๋ฐ์ดํฐ | `boolean` |
| `PATCH` | `/session/:id` | ์
๋ฐ์ดํธ ์ธ์
์์ฑ | ๋ณธ์ฒด: `{ title? }`, ๋ฐํ <a href={typesUrl}><code>Session</code></a> |
| `GET` | `/session/:id/children` | ์ธ์
์ ํ์ ์ธ์
| ๋ฆฌํด <a href={typesUrl}><code>Session[]</code></a> |
| `GET` | `/session/:id/todo` | ์ธ์
์ ํ ์ผ(Todo) ๋ชฉ๋ก ๋ฐ๊ธฐ | <a href={typesUrl}><code>Todo[]</code></a> |
| `POST` | `/session/:id/init` | ์ฑ ์ด๊ธฐํ ๋ฐ `AGENTS.md` ๋ถ์ | ๋ชธ: `{ messageID, providerID, modelID }`, ๋ฐํ `boolean` |
| `POST` | `/session/:id/fork` | ๋ฉ์์ง์ ๊ธฐ์กด ์ธ์
| ๋ชธ: `{ messageID? }`, ๋ฐํ <a href={typesUrl}><code>Session</code></a> |
| `POST` | `/session/:id/abort` | ์ด์ ์ค์ธ ์ธ์
| ๋ฐํ `boolean` |
| `POST` | `/session/:id/share` | ์ธ์
๊ณต์ | <a href={typesUrl}><code>Session</code></a> |
| `DELETE` | `/session/:id/share` | ์ธ์
๊ณต์ | <a href={typesUrl}><code>Session</code></a> |
| `GET` | `/session/:id/diff` | `/session/:id/diff` | `messageID?`, ๋ฐํ <a href={typesUrl}><code>FileDiff[]</code></a> |
| `POST` | `/session/:id/summarize` | ์ธ์
์ ์์ฝ | ๋ณธ์ฒด: `{ providerID, modelID }`, `boolean` ๋ฐํ |
| `POST` | `/session/:id/revert` | ๋ฉ์์ง ์ฌ์ | ๋ชธ: `{ messageID, partID? }`, ๋ฐํ `boolean` |
| `POST` | `/session/:id/unrevert` | ๋ฉ์์ง ๋๋๋ฆฌ๊ธฐ ์ทจ์ | ๋ฐํ `boolean` |
| `POST` | `/session/:id/permissions/:permissionID` | ํ๊ฐ ์์ฒญ ๋์ | ๋ณธ์ฒด: `{ response, remember? }`, `boolean` |
---
## ๋ฉ์์ง
| ๋ฐฉ๋ฒ | ๊ฒฝ๋ก | ์ค๋ช
| ์ฃผ |
| ------ | --------------------------------- | -------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `GET` | `/session/:id/message` | ์ธ์
์ ๋ชฉ๋ก ๋ฉ์์ง | ์ฟผ๋ฆฌ: `limit?`, `{ info: `<a href={typesUrl}>Message</a>`, parts: `<a href={typesUrl}>Part[]</a>`}[]` |
| `POST` | `/session/:id/message` | ์๋ต์ ์ํด ๋ฉ์์ง๋ฅผ ๋ณด๋ด๊ณ ๊ธฐ๋ค๋ฆฝ๋๋ค | ๋ชธ: `{ messageID?, model?, agent?, noReply?, system?, tools?, parts }`, ๋ฐํ `{ info: `<a href={typesUrl}>Message</a>`, parts: `<a href={typesUrl}>Part[]</a>`}` |
| `GET` | `/session/:id/message/:messageID` | ๋ฉ์์ง ๋ณด๋ด๊ธฐ | `{ info: `<a href={typesUrl}>Message</a>`, parts: `<a href={typesUrl}>Part[]</a>`}` |
| `POST` | `/session/:id/prompt_async` | ๋น๋๊ธฐ์ ์ผ๋ก ๋ฉ์์ง ๋ณด๋ด๊ธฐ | ๋ชธ: `/session/:id/message`์ ๋์ผ, `204 No Content`๋ฅผ ๋ฐํ |
| `POST` | `/session/:id/command` | ์ฌ๋์ ๋ช
๋ น์ด ์คํ | ๋ณธ์ฒด: `{ messageID?, agent?, model?, command, arguments }`, ๋ฐํ `{ info: `<a href={typesUrl}>Message</a>`, parts: `<a href={typesUrl}>Part[]</a>`}` |
| `POST` | `/session/:id/shell` | shell ๋ช
๋ น ์คํ | ์ฒด: `{ agent, model?, command }`, ๋ฐํ `{ info: `<a href={typesUrl}>Message</a>`, parts: `<a href={typesUrl}>Part[]</a>`}` |
---
## ๋ช
๋ น
| ๋ฐฉ๋ฒ | ๊ฒฝ๋ก | ์ค๋ช
| ์๋ต |
| ----- | ---------- | --------- | --------------------------------------------- |
| `GET` | `/command` | ๋ชจ๋ ๋ช
๋ น | <a href={typesUrl}><code>Command[]</code></a> |
---
## ํ์ผ
| ๋ฐฉ๋ฒ | ๊ฒฝ๋ก | ์ค๋ช
| ์๋ต |
| ----- | ------------------------ | ---------------------------- | --------------------------------------------------------------------------------------- |
| `GET` | `/find?pattern=<pat>` | ํ์ผ์์ ํ
์คํธ ๊ฒ์ | `path`, `lines`, `line_number`, `absolute_offset`, `submatches`๊ฐ ํฌํจ๋ ์ผ์น ๊ฐ์ฒด ๋ฐฐ์ด |
| `GET` | `/find/file?query=<q>` | ์ด๋ฆ์ผ๋ก ํ์ผ/๋๋ ํฐ๋ฆฌ ์ฐพ๊ธฐ | `string[]` (๊ฒฝ๋ก) |
| `GET` | `/find/symbol?query=<q>` | ์ํฌ์คํ์ด์ค ์ฌ๋ณผ ์ฐพ๊ธฐ | <a href={typesUrl}><code>Symbol[]</code></a> |
| `GET` | `/file?path=<path>` | ํ์ผ ๋ฐ ๋๋ ํฐ๋ฆฌ ๋ชฉ๋ก | <a href={typesUrl}><code>FileNode[]</code></a> |
| `GET` | `/file/content?path=<p>` | ํ์ผ ์ฝ๊ธฐ | <a href={typesUrl}><code>FileContent</code></a> |
| `GET` | `/file/status` | ์ถ์ ์ค์ธ ํ์ผ ์ํ ๊ฐ์ ธ์ค๊ธฐ | <a href={typesUrl}><code>File[]</code></a> |
#### `/find/file` ์ฟผ๋ฆฌ ๋งค๊ฐ ๋ณ์
- `query` (required) - ๊ฒ์ ๋ฌธ์์ด (fuzzy ์ผ์น)
- `type` (์ ํ ์ฌํญ) - `"file"` ๋๋ `"directory"`์ ์ ํ ๊ฒฐ๊ณผ
- `directory` (์ ํ ์ฌํญ) - ๊ฒ์์ ๋ํ ํ๋ก์ ํธ ๋ฃจํธ๋ฅผ ๋ฌด์
- (์ ํ) `limit` - ์ต๋ ๊ฒฐ๊ณผ (1-200)
- `dirs` (์ต์
) - ๋ ๊ฑฐ์ ํ๋๊ทธ (`"false"`๋ ํ์ผ๋ง ๋ฐํ)
---
## ๋๊ตฌ (์คํ์ )
| ๋ฐฉ๋ฒ | ๊ฒฝ๋ก | ์ค๋ช
| ์๋ต |
| ----- | ------------------------------------------- | ----------------------- | --------------------------------------------- |
| `GET` | `/experimental/tool/ids` | ๋ชจ๋ ๋๊ตฌ ID | <a href={typesUrl}><code>๋๊ตฌ</code></a> |
| `GET` | `/experimental/tool?provider=<p>&model=<m>` | ๋ชจ๋ธ์ฉ JSON ์คํค๋ง ๋ชฉ๋ก | <a href={typesUrl}><code>๋๊ตฌ ๋ชฉ๋ก</code></a> |
---
### LSP, ํฌ๋งคํฐ & MCP
| ๋ฐฉ๋ฒ | ๊ฒฝ๋ก | ์ค๋ช
| ์๋ต |
| ------ | ------------ | ---------------------- | -------------------------------------------------------- |
| `GET` | `/lsp` | LSP ์๋ฒ ์ํ | <a href={typesUrl}><code>LSPStatus[]</code></a> |
| `GET` | `/formatter` | ํ์์ ์ํ๋ฅผ ํ์ธ | <a href={typesUrl}><code>FormatterStatus[]</code></a> |
| `GET` | `/mcp` | MCP ์๋ฒ ์ํ๋ฅผ ์ป๋๋ค | `{ [name: string]: `<a href={typesUrl}>MCPStatus</a>` }` |
| `POST` | `/mcp` | MCP ์๋ฒ๊ฐ ๋์ | ๋ณธ์ฒด: `{ name, config }`, MCP ์ํ ๊ฐ์ฒด๋ฅผ ๋ฐํ |
---
## ์์ด์ ํธ
| ๋ฐฉ๋ฒ | ๊ฒฝ๋ก | ์ค๋ช
| ์๋ต |
| ----- | -------- | ------------------------- | ----------------------------------------------- |
| `GET` | `/agent` | ์ด์ฉ ๊ฐ๋ฅํ ๋ชจ๋ ์์ด์ ํธ | <a href={typesUrl}><code> ์์ด์ ํธ[]</code></a> |
---
### ๋ก๊น
| ๋ฐฉ๋ฒ | ๊ฒฝ๋ก | ์ค๋ช
| ์๋ต |
| ------ | ------ | ----------------------------------------------------- | --------- |
| `POST` | `/log` | ๋ก๊ทธ ์
๋ ฅ ๋ฐ๋: `{ service, level, message, extra? }` | `boolean` |
---
### TUI
| ๋ฐฉ๋ฒ | ๊ฒฝ๋ก | ์ค๋ช
| ์๋ต |
| ------ | ----------------------- | ----------------------------------------- | -------------- |
| `POST` | `/tui/append-prompt` | ํ๋กฌํํธ์ ํ
์คํธ๋ฅผ ๋ถ์ฌ | `boolean` |
| `POST` | `/tui/open-help` | ๋์๋ง ๋ํ ์ด๊ธฐ | `boolean` |
| `POST` | `/tui/open-sessions` | ์ธ์
์ ํ ์๋ด | `boolean` |
| `POST` | `/tui/open-themes` | ํ
๋ง ์ ํ ์๋ด | `boolean` |
| `POST` | `/tui/open-models` | ๋ชจ๋ธ ์ ํ ์๋ด | `boolean` |
| `POST` | `/tui/submit-prompt` | ํ์ฌ ํ๋กฌํํธ ์ ์ถ | `boolean` |
| `POST` | `/tui/clear-prompt` | ์ํํธ ํด๋ฆฌ์ด | `boolean` |
| `POST` | `/tui/execute-command` | ๋ช
๋ น์ด ์คํ(`{ command }`) | `boolean` |
| `POST` | `/tui/show-toast` | ์ผ ํ ์คํธ(`{ title?, message, variant }`) | `boolean` |
| `GET` | `/tui/control/next` | ๋ค์ ์ปจํธ๋กค ์์ฒญ ์ ๊ธฐ๋ค๋ฆฌ๊ณ | ์ ์ด ์์ฒญ ๊ฐ์ฒด |
| `POST` | `/tui/control/response` | ํต์ ์์ฒญ(`{ body }`) ๋์ | `boolean` |
---
### ์ธ์ฆ
| ๋ฐฉ๋ฒ | ๊ฒฝ๋ก | ์ค๋ช
| ์๋ต |
| ----- | ----------- | --------------------------------------------------- | --------- |
| `PUT` | `/auth/:id` | ์ธ์ฆ ์๊ฒฉ ์ฆ๋ช
๋ชธ์ ๊ณต๊ธ์ ์คํค๋ง๋ฅผ ์ผ์นํด์ผ ํฉ๋๋ค | `boolean` |
---
## ์ด๋ฒคํธ
| ๋ฐฉ๋ฒ | ๊ฒฝ๋ก | ์ค๋ช
| ์๋ต |
| ----- | -------- | ------------------------------------------------------------------------------- | ------------------------ |
| `GET` | `/event` | ์๋ฒ ์ ์ก ์ด๋ฒคํธ ์คํธ๋ฆผ. ์ฒซ ๋ฒ์งธ ์ด๋ฒคํธ๋ `server.connected`, ๊ทธ ํ ๋ฒ์ค ์ด๋ฒคํธ | Server-sent event stream |
---
### ๋ฌธ์
| ๋ฐฉ๋ฒ | ๊ฒฝ๋ก | ์ค๋ช
| ์๋ต |
| ----- | ------ | ---------------- | ------------------------ |
| `GET` | `/doc` | OpenAPI 3.1 ์ฌ์ | HTML ํ์ด์ง OpenAPI ์ฌ์ |
|