99 lines
3.7 KiB
YAML
99 lines
3.7 KiB
YAML
openapi: 3.0.3
|
|
info:
|
|
title: Document Chat Subsystem API
|
|
description: API endpoints for interacting with the document-isolated AI Assistant (ADR-026)
|
|
version: 1.0.0
|
|
paths:
|
|
/api/ai/chat:
|
|
post:
|
|
summary: Send a query to the AI Assistant within a specific document context
|
|
description: |
|
|
Processes a natural language query under a strict CASL-guarded document context.
|
|
The AI Gateway uses the provided `context` to fetch context-specific data via the AI Tool Layer (ADR-025)
|
|
before forwarding the enriched prompt to the local Ollama LLM.
|
|
security:
|
|
- BearerAuth: []
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
required:
|
|
- query
|
|
- context
|
|
properties:
|
|
query:
|
|
type: string
|
|
example: "ช่วยสรุปรายการ Drawing ใน RFA นี้หน่อย"
|
|
context:
|
|
type: object
|
|
required:
|
|
- type
|
|
- publicId
|
|
properties:
|
|
type:
|
|
type: string
|
|
enum: [drawing, rfa, transmittal, correspondence]
|
|
example: "rfa"
|
|
publicId:
|
|
type: string
|
|
format: uuid
|
|
example: "019505a1-7c3e-7000-8000-abc123def456"
|
|
responses:
|
|
'200':
|
|
description: Successful response returning AI reply and optional action chips
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
required:
|
|
- messageId
|
|
- role
|
|
- content
|
|
- latencyMs
|
|
properties:
|
|
messageId:
|
|
type: string
|
|
format: uuid
|
|
example: "019505a4-569d-7000-8000-f1f2f3f4f5f6"
|
|
role:
|
|
type: string
|
|
enum: [assistant]
|
|
example: "assistant"
|
|
content:
|
|
type: string
|
|
description: Markdown-formatted AI response
|
|
example: "จากการตรวจสอบ RFA-0042 นี้ มี Drawing ที่เกี่ยวข้องทั้งหมด 3 รายการ..."
|
|
suggestedActions:
|
|
type: array
|
|
items:
|
|
type: object
|
|
required:
|
|
- label
|
|
- query
|
|
properties:
|
|
label:
|
|
type: string
|
|
example: "ดู Drawing ฉบับใหม่ล่าสุด"
|
|
query:
|
|
type: string
|
|
example: "ขอรายละเอียดเกี่ยวกับ Drawing ล่าสุด"
|
|
latencyMs:
|
|
type: integer
|
|
example: 2450
|
|
'400':
|
|
description: Invalid input parameters or malformed UUIDv7
|
|
'401':
|
|
description: Unauthorized access (Missing or invalid JWT token)
|
|
'403':
|
|
description: Forbidden (User fails CASL security guard for the specified project/document context)
|
|
'504':
|
|
description: AI Gateway Timeout (Ollama pipeline took more than 10 seconds to respond)
|
|
components:
|
|
securitySchemes:
|
|
BearerAuth:
|
|
type: http
|
|
scheme: bearer
|
|
bearerFormat: JWT
|