780 lines
20 KiB
YAML
780 lines
20 KiB
YAML
openapi: 3.1.0
|
|
info:
|
|
title: 1C Agent API
|
|
version: 0.1.0
|
|
description: Independent 1C agent API for project/chat orchestration with model calls, RAG and adapter calls.
|
|
servers:
|
|
- url: http://localhost:8090
|
|
paths:
|
|
/v1/health:
|
|
get:
|
|
operationId: getHealth
|
|
summary: Service health
|
|
responses:
|
|
"200":
|
|
description: Service is alive.
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/HealthResponse"
|
|
/v1/state:
|
|
get:
|
|
operationId: getState
|
|
summary: Service state and counters
|
|
responses:
|
|
"200":
|
|
description: Current internal state.
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/StateResponse"
|
|
/v1/projects:
|
|
get:
|
|
operationId: listProjects
|
|
summary: List projects
|
|
responses:
|
|
"200":
|
|
description: Project list
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/ProjectsListResponse"
|
|
post:
|
|
operationId: createProject
|
|
summary: Create project
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/ProjectCreateRequest"
|
|
responses:
|
|
"201":
|
|
description: Project created
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/ProjectResponse"
|
|
/v1/projects/{project_id}:
|
|
get:
|
|
operationId: getProject
|
|
summary: Get project by id
|
|
parameters:
|
|
- $ref: "#/components/parameters/ProjectId"
|
|
responses:
|
|
"200":
|
|
description: Project
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/ProjectResponse"
|
|
patch:
|
|
operationId: updateProject
|
|
summary: Update project metadata
|
|
parameters:
|
|
- $ref: "#/components/parameters/ProjectId"
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/ProjectUpdateRequest"
|
|
responses:
|
|
"200":
|
|
description: Updated project
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/ProjectResponse"
|
|
delete:
|
|
operationId: deleteProject
|
|
summary: Delete project
|
|
parameters:
|
|
- $ref: "#/components/parameters/ProjectId"
|
|
responses:
|
|
"204":
|
|
description: Project deleted
|
|
/v1/projects/{project_id}/chats:
|
|
get:
|
|
operationId: listChats
|
|
summary: List chats in project
|
|
parameters:
|
|
- $ref: "#/components/parameters/ProjectId"
|
|
responses:
|
|
"200":
|
|
description: Chats list
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/ChatsListResponse"
|
|
post:
|
|
operationId: createChat
|
|
summary: Create chat in project
|
|
parameters:
|
|
- $ref: "#/components/parameters/ProjectId"
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/ChatCreateRequest"
|
|
responses:
|
|
"201":
|
|
description: Chat created
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/ChatResponse"
|
|
/v1/projects/{project_id}/chats/{chat_id}:
|
|
get:
|
|
operationId: getChat
|
|
summary: Get chat config
|
|
parameters:
|
|
- $ref: "#/components/parameters/ProjectId"
|
|
- $ref: "#/components/parameters/ChatId"
|
|
responses:
|
|
"200":
|
|
description: Chat
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/ChatResponse"
|
|
patch:
|
|
operationId: updateChat
|
|
summary: Update chat config
|
|
parameters:
|
|
- $ref: "#/components/parameters/ProjectId"
|
|
- $ref: "#/components/parameters/ChatId"
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/ChatUpdateRequest"
|
|
responses:
|
|
"200":
|
|
description: Updated chat
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/ChatResponse"
|
|
delete:
|
|
operationId: deleteChat
|
|
summary: Delete chat
|
|
parameters:
|
|
- $ref: "#/components/parameters/ProjectId"
|
|
- $ref: "#/components/parameters/ChatId"
|
|
responses:
|
|
"204":
|
|
description: Chat deleted
|
|
/v1/projects/{project_id}/chats/{chat_id}/messages:
|
|
get:
|
|
operationId: listMessages
|
|
summary: List chat messages
|
|
parameters:
|
|
- $ref: "#/components/parameters/ProjectId"
|
|
- $ref: "#/components/parameters/ChatId"
|
|
- name: limit
|
|
in: query
|
|
required: false
|
|
schema:
|
|
type: integer
|
|
minimum: 1
|
|
default: 200
|
|
responses:
|
|
"200":
|
|
description: Message history
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/MessagesListResponse"
|
|
post:
|
|
operationId: addMessage
|
|
summary: Add message to chat
|
|
parameters:
|
|
- $ref: "#/components/parameters/ProjectId"
|
|
- $ref: "#/components/parameters/ChatId"
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/AddMessageRequest"
|
|
responses:
|
|
"201":
|
|
description: Message added
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/MessageResponse"
|
|
/v1/projects/{project_id}/chats/{chat_id}/runtime:
|
|
get:
|
|
operationId: getChatRuntime
|
|
summary: Resolve runtime context for project/chat
|
|
parameters:
|
|
- $ref: "#/components/parameters/ProjectId"
|
|
- $ref: "#/components/parameters/ChatId"
|
|
responses:
|
|
"200":
|
|
description: Runtime snapshot
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/ChatRuntimeResponse"
|
|
/v1/projects/{project_id}/chats/{chat_id}/turn:
|
|
post:
|
|
operationId: chatTurn
|
|
summary: Make one agent turn
|
|
parameters:
|
|
- $ref: "#/components/parameters/ProjectId"
|
|
- $ref: "#/components/parameters/ChatId"
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/TurnRequest"
|
|
responses:
|
|
"200":
|
|
description: Turn result
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/TurnResponse"
|
|
/v1/projects/{project_id}/chats/{chat_id}/onec-tool:
|
|
post:
|
|
operationId: callOneCTool
|
|
summary: Call 1C adapter tool
|
|
parameters:
|
|
- $ref: "#/components/parameters/ProjectId"
|
|
- $ref: "#/components/parameters/ChatId"
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/ToolCallRequest"
|
|
responses:
|
|
"200":
|
|
description: Tool result
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/ToolCallResponse"
|
|
/v1/models:
|
|
get:
|
|
operationId: listModels
|
|
summary: List candidate models from registry
|
|
responses:
|
|
"200":
|
|
description: Models list
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/ModelsResponse"
|
|
/v1/providers:
|
|
get:
|
|
operationId: listProviders
|
|
summary: List provider registry
|
|
responses:
|
|
"200":
|
|
description: Providers list
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/ProvidersResponse"
|
|
components:
|
|
parameters:
|
|
ProjectId:
|
|
name: project_id
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
ChatId:
|
|
name: chat_id
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
schemas:
|
|
TraceEnvelope:
|
|
type: object
|
|
properties:
|
|
trace_id:
|
|
type: string
|
|
required:
|
|
- trace_id
|
|
ErrorPayload:
|
|
allOf:
|
|
- $ref: "#/components/schemas/TraceEnvelope"
|
|
- type: object
|
|
properties:
|
|
status:
|
|
type: string
|
|
enum: [error]
|
|
error:
|
|
type: object
|
|
required:
|
|
- message
|
|
properties:
|
|
message:
|
|
type: string
|
|
code:
|
|
type: string
|
|
required: [status, error]
|
|
Project:
|
|
type: object
|
|
required: [id, name, description, metadata, created_at, updated_at]
|
|
properties:
|
|
id:
|
|
type: string
|
|
name:
|
|
type: string
|
|
description:
|
|
type: string
|
|
metadata:
|
|
type: object
|
|
additionalProperties: true
|
|
created_at:
|
|
type: string
|
|
updated_at:
|
|
type: string
|
|
Chat:
|
|
type: object
|
|
required: [id, project_id, title, provider_id, temperature, max_tokens, rag_profile, created_at, updated_at]
|
|
properties:
|
|
id:
|
|
type: string
|
|
project_id:
|
|
type: string
|
|
title:
|
|
type: string
|
|
model_id:
|
|
type: string
|
|
nullable: true
|
|
provider_id:
|
|
type: string
|
|
base_url:
|
|
type: string
|
|
nullable: true
|
|
served_model_name:
|
|
type: string
|
|
nullable: true
|
|
temperature:
|
|
type: number
|
|
max_tokens:
|
|
type: integer
|
|
rag_profile:
|
|
type: string
|
|
rag_limit:
|
|
type: integer
|
|
nullable: true
|
|
system_prompt:
|
|
type: string
|
|
metadata:
|
|
type: object
|
|
additionalProperties: true
|
|
created_at:
|
|
type: string
|
|
updated_at:
|
|
type: string
|
|
Message:
|
|
type: object
|
|
required: [id, project_id, chat_id, role, content, payload, created_at]
|
|
properties:
|
|
id:
|
|
type: string
|
|
project_id:
|
|
type: string
|
|
chat_id:
|
|
type: string
|
|
role:
|
|
type: string
|
|
enum: [user, assistant, system, tool]
|
|
content:
|
|
type: string
|
|
payload:
|
|
type: object
|
|
additionalProperties: true
|
|
created_at:
|
|
type: string
|
|
ProjectCreateRequest:
|
|
type: object
|
|
required: [name]
|
|
properties:
|
|
name:
|
|
type: string
|
|
description:
|
|
type: string
|
|
metadata:
|
|
type: object
|
|
additionalProperties: true
|
|
ProjectUpdateRequest:
|
|
type: object
|
|
properties:
|
|
name:
|
|
type: string
|
|
description:
|
|
type: string
|
|
metadata:
|
|
type: object
|
|
additionalProperties: true
|
|
ChatCreateRequest:
|
|
type: object
|
|
required: [title]
|
|
properties:
|
|
title:
|
|
type: string
|
|
model_id:
|
|
type: string
|
|
provider_id:
|
|
type: string
|
|
base_url:
|
|
type: string
|
|
served_model_name:
|
|
type: string
|
|
temperature:
|
|
type: number
|
|
max_tokens:
|
|
type: integer
|
|
rag_profile:
|
|
type: string
|
|
rag_limit:
|
|
type: integer
|
|
system_prompt:
|
|
type: string
|
|
metadata:
|
|
type: object
|
|
additionalProperties: true
|
|
ChatUpdateRequest:
|
|
type: object
|
|
properties:
|
|
title:
|
|
type: string
|
|
model_id:
|
|
type: string
|
|
provider_id:
|
|
type: string
|
|
base_url:
|
|
type: string
|
|
served_model_name:
|
|
type: string
|
|
temperature:
|
|
type: number
|
|
max_tokens:
|
|
type: integer
|
|
rag_profile:
|
|
type: string
|
|
rag_limit:
|
|
type: integer
|
|
system_prompt:
|
|
type: string
|
|
metadata:
|
|
type: object
|
|
additionalProperties: true
|
|
AddMessageRequest:
|
|
type: object
|
|
required: [role, content]
|
|
properties:
|
|
role:
|
|
type: string
|
|
enum: [user, assistant, system, tool]
|
|
content:
|
|
type: string
|
|
payload:
|
|
type: object
|
|
additionalProperties: true
|
|
ToolCallRequest:
|
|
type: object
|
|
required: [method]
|
|
properties:
|
|
method:
|
|
type: string
|
|
params:
|
|
type: object
|
|
additionalProperties: true
|
|
TurnRequest:
|
|
type: object
|
|
required: [message]
|
|
properties:
|
|
message:
|
|
type: string
|
|
use_rag:
|
|
type: boolean
|
|
default: true
|
|
rag_profile:
|
|
type: string
|
|
rag_limit:
|
|
type: integer
|
|
provider_id:
|
|
type: string
|
|
temperature:
|
|
type: number
|
|
max_tokens:
|
|
type: integer
|
|
history_limit:
|
|
type: integer
|
|
minimum: 1
|
|
adapter_calls:
|
|
type: array
|
|
items:
|
|
type: object
|
|
required: [method]
|
|
properties:
|
|
method:
|
|
type: string
|
|
params:
|
|
type: object
|
|
additionalProperties: true
|
|
served_model_name:
|
|
type: string
|
|
base_url:
|
|
type: string
|
|
HealthResponse:
|
|
allOf:
|
|
- $ref: "#/components/schemas/TraceEnvelope"
|
|
- type: object
|
|
properties:
|
|
status:
|
|
type: string
|
|
service:
|
|
type: string
|
|
time:
|
|
type: string
|
|
required: [status, service, time]
|
|
StateResponse:
|
|
allOf:
|
|
- $ref: "#/components/schemas/TraceEnvelope"
|
|
- type: object
|
|
required:
|
|
- service
|
|
- started_at
|
|
- uptime_seconds
|
|
- state
|
|
- providers
|
|
- paths
|
|
properties:
|
|
service:
|
|
type: string
|
|
started_at:
|
|
type: string
|
|
uptime_seconds:
|
|
type: number
|
|
state:
|
|
type: object
|
|
required: [projects, chats, messages]
|
|
properties:
|
|
projects:
|
|
type: integer
|
|
chats:
|
|
type: integer
|
|
messages:
|
|
type: integer
|
|
providers:
|
|
type: object
|
|
required: [count, ids]
|
|
properties:
|
|
count:
|
|
type: integer
|
|
ids:
|
|
type: array
|
|
items:
|
|
type: string
|
|
paths:
|
|
type: object
|
|
required: [adapter_url, database]
|
|
properties:
|
|
adapter_url:
|
|
type: string
|
|
nullable: true
|
|
database:
|
|
type: string
|
|
ProjectsListResponse:
|
|
allOf:
|
|
- $ref: "#/components/schemas/TraceEnvelope"
|
|
- type: object
|
|
properties:
|
|
projects:
|
|
type: array
|
|
items:
|
|
$ref: "#/components/schemas/Project"
|
|
ProjectResponse:
|
|
allOf:
|
|
- $ref: "#/components/schemas/TraceEnvelope"
|
|
- type: object
|
|
properties:
|
|
project:
|
|
$ref: "#/components/schemas/Project"
|
|
ChatsListResponse:
|
|
allOf:
|
|
- $ref: "#/components/schemas/TraceEnvelope"
|
|
- type: object
|
|
properties:
|
|
project_id:
|
|
type: string
|
|
chats:
|
|
type: array
|
|
items:
|
|
$ref: "#/components/schemas/Chat"
|
|
ChatResponse:
|
|
allOf:
|
|
- $ref: "#/components/schemas/TraceEnvelope"
|
|
- type: object
|
|
properties:
|
|
chat:
|
|
$ref: "#/components/schemas/Chat"
|
|
routing:
|
|
type: object
|
|
nullable: true
|
|
MessageResponse:
|
|
allOf:
|
|
- $ref: "#/components/schemas/TraceEnvelope"
|
|
- type: object
|
|
properties:
|
|
message:
|
|
$ref: "#/components/schemas/Message"
|
|
MessagesListResponse:
|
|
allOf:
|
|
- $ref: "#/components/schemas/TraceEnvelope"
|
|
- type: object
|
|
properties:
|
|
project_id:
|
|
type: string
|
|
chat_id:
|
|
type: string
|
|
messages:
|
|
type: array
|
|
items:
|
|
$ref: "#/components/schemas/Message"
|
|
ChatRuntimeResponse:
|
|
allOf:
|
|
- $ref: "#/components/schemas/TraceEnvelope"
|
|
- type: object
|
|
properties:
|
|
project_id:
|
|
type: string
|
|
chat_id:
|
|
type: string
|
|
runtime:
|
|
type: object
|
|
required:
|
|
- project
|
|
- chat
|
|
- provider
|
|
- model
|
|
- runtime_settings
|
|
- adapter
|
|
properties:
|
|
project:
|
|
type: object
|
|
properties:
|
|
id:
|
|
type: string
|
|
name:
|
|
type: string
|
|
chat:
|
|
type: object
|
|
properties:
|
|
id:
|
|
type: string
|
|
title:
|
|
type: string
|
|
provider:
|
|
type: object
|
|
properties:
|
|
id:
|
|
type: string
|
|
type:
|
|
type: string
|
|
base_url:
|
|
type: string
|
|
model:
|
|
type: string
|
|
model:
|
|
type: object
|
|
properties:
|
|
chat_model_id:
|
|
type: string
|
|
nullable: true
|
|
selected_model_id:
|
|
type: string
|
|
served_model:
|
|
type: string
|
|
base_url:
|
|
type: string
|
|
route:
|
|
type: object
|
|
additionalProperties: true
|
|
runtime_settings:
|
|
type: object
|
|
properties:
|
|
temperature:
|
|
type: number
|
|
max_tokens:
|
|
type: integer
|
|
rag_profile:
|
|
type: string
|
|
rag_limit:
|
|
type: integer
|
|
nullable: true
|
|
system_prompt:
|
|
type: string
|
|
adapter:
|
|
type: object
|
|
properties:
|
|
url:
|
|
type: string
|
|
nullable: true
|
|
TurnResponse:
|
|
allOf:
|
|
- $ref: "#/components/schemas/TraceEnvelope"
|
|
- type: object
|
|
properties:
|
|
project_id:
|
|
type: string
|
|
chat_id:
|
|
type: string
|
|
user_message:
|
|
$ref: "#/components/schemas/Message"
|
|
assistant_message:
|
|
$ref: "#/components/schemas/Message"
|
|
rag:
|
|
type: object
|
|
nullable: true
|
|
tools:
|
|
type: array
|
|
items:
|
|
type: object
|
|
nullable: true
|
|
guardrail:
|
|
type: object
|
|
nullable: true
|
|
ToolCallResponse:
|
|
allOf:
|
|
- $ref: "#/components/schemas/TraceEnvelope"
|
|
- type: object
|
|
properties:
|
|
tool_result:
|
|
type: object
|
|
message:
|
|
$ref: "#/components/schemas/Message"
|
|
ModelsResponse:
|
|
allOf:
|
|
- $ref: "#/components/schemas/TraceEnvelope"
|
|
- type: object
|
|
properties:
|
|
models:
|
|
type: array
|
|
items:
|
|
type: object
|
|
ProvidersResponse:
|
|
allOf:
|
|
- $ref: "#/components/schemas/TraceEnvelope"
|
|
- type: object
|
|
properties:
|
|
providers:
|
|
type: object
|
|
additionalProperties:
|
|
type: object
|