Объекты запросов и ответов
Минимальная последовательность команд, обязательные и рекомендуемые поля запроса, envelope ответа и обработка ошибок.
Каждое сообщение — обычный JSON-объект. Поле id выбирает клиент; Rust возвращает его без изменения. Поэтому ответы можно сопоставлять с запросами даже при параллельной работе.
Минимальная последовательность
Заголовок раздела «Минимальная последовательность»{"id":"ping-1","cmd":"ping"}{"id":"open-1","cmd":"open","path":"/absolute/input.docx","document_id":"my-document"}{"id":"model-1","cmd":"model"}{"id":"insert-1","cmd":"mutate","operation_kind":"insert-text","paragraph_index":0,"offset":0,"text":"Привет из API. ","document_id":"my-document","transaction_order":1,"transition_kind":"api-insert"}{"id":"save-1","cmd":"save","path":"/absolute/output.docx"}{"id":"shutdown-1","cmd":"shutdown"}Обязательные и рекомендуемые поля
Заголовок раздела «Обязательные и рекомендуемые поля»| Поле | Назначение | Правило |
|---|---|---|
| id | Корреляция запроса и ответа | Уникально в пределах активных запросов |
| cmd | Имя команды сессии | Одно из supported_commands bootstrap |
| path | Входной или выходной файл | Только абсолютный путь |
| document_id | Стабильная идентичность документа | Передавайте в open и мутациях |
| transaction_order | Порядок изменений | Монотонно растёт: 1, 2, 3… |
| transition_kind | Причина/тип перехода | Короткая диагностическая метка |
| operation_kind | Семантическая операция | Например insert-text |
Envelope ответа
Заголовок раздела «Envelope ответа»// Успех{"id":"ping-1","ok":true,"cmd":"ping","elapsed_ms":0,"result":{"pong":true}}
// Ошибка{"id":"bad-1","ok":false,"cmd":"mutate","elapsed_ms":0,"error":"..."}ШАГ 4