Files

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