This commit is contained in:
seb
2026-10-03 23:13:36 +02:00
parent 1786879c4e
commit 9a7f345d8b
39 changed files with 4611 additions and 50 deletions

View File

@@ -0,0 +1,44 @@
# `GET /modelconversation/{id}/message`
Protected. Requires a valid session cookie (`credentials: 'include'`).
List conversation messages
Lists messages of one of the user's own conversations, oldest first.
## Path parameters
| Param | Required | Type | Description |
|-------|----------|------|-------------|
| `id` | yes | integer | Conversation ID |
## Response `200`
List of messages
```json
{
"messages": [
{
"id": 1,
"conversation_id": 1,
"created_at": "…",
"role": "system",
"message": "…"
}
]
}
```
## Errors
| Status | Description |
|--------|-------------|
| 400 | Invalid ID or no company selected — `{"error":"…"}` |
| 401 | Unauthorized — `{"error":"…"}` |
| 403 | Not authorized — `{"error":"…"}` |
| 404 | Conversation not found — `{"error":"…"}` |
---
_Generated from `@openapi` JSDoc. Do not edit by hand — run `npm run docs:api`._

View File

@@ -0,0 +1,65 @@
# `POST /modelconversation/{id}/message`
Protected. Requires a valid session cookie (`credentials: 'include'`).
Post a user message
Appends a message with role `user` to the conversation.
Refused with 409 unless the conversation state is `idle`.
## Path parameters
| Param | Required | Type | Description |
|-------|----------|------|-------------|
| `id` | yes | integer | Conversation ID |
## Body (JSON)
| Field | Required | Type | Description |
|-------|----------|------|-------------|
| `message` | no | string | User message text or fallback content |
| `role` | no | string | Message role ('user' or 'tool') |
| `tool_call_id` | no | string | Target tool call ID when responding to a tool like ask_user |
| `content` | no | | Tool response content payload |
| `answer` | no | | Shorthand answer for ask_user response |
```json
{
"message": "…",
"role": "user",
"tool_call_id": "…",
"content": "…",
"answer": "…"
}
```
## Response `201`
Created message
```json
{
"message": {
"id": 1,
"conversation_id": 1,
"created_at": "…",
"role": "system",
"message": "…"
}
}
```
## Errors
| Status | Description |
|--------|-------------|
| 400 | Invalid ID, empty message or no company selected — `{"error":"…"}` |
| 401 | Unauthorized — `{"error":"…"}` |
| 403 | Not authorized — `{"error":"…"}` |
| 404 | Conversation not found — `{"error":"…"}` |
| 409 | Conversation is not idle — `{"error":"…"}` |
---
_Generated from `@openapi` JSDoc. Do not edit by hand — run `npm run docs:api`._

View File

@@ -0,0 +1,37 @@
# `GET /modelconversation/{id}/stream`
Protected. Requires a valid session cookie (`credentials: 'include'`).
Stream conversation events (SSE)
Opens a Server-Sent Events stream for the specified conversation.
Streams `message` events (persisted user/assistant messages), live `delta`
text chunks of the model answer, and `state` events (`thinking`, `working`,
`done`). The SSE states are not stored; the database only knows `idle`/`busy`.
`done` carries `usage` (`input`, `cached`, `output`, `cost`) on success or
`error` (string) if the run failed.
## Path parameters
| Param | Required | Type | Description |
|-------|----------|------|-------------|
| `id` | yes | integer | Conversation ID |
## Response `200`
SSE stream (`text/event-stream`). Emits `state`, `delta`, and `message` events.
## Errors
| Status | Description |
|--------|-------------|
| 400 | Invalid ID or no company selected — `{"error":"…"}` |
| 401 | Unauthorized — `{"error":"…"}` |
| 403 | Not authorized — `{"error":"…"}` |
| 404 | Conversation not found — `{"error":"…"}` |
---
_Generated from `@openapi` JSDoc. Do not edit by hand — run `npm run docs:api`._