Восстановление команд и неизвестный результат
Если ответ потерялся, используйте исходный ID команды.
AlphaОтвет потерян
Назначьте один ID логическому изменению и сохраните неизменное тело запроса. Повторное использование ID с другим содержимым отклоняется.
Поддерживаемые методы Client для проекта, файлов и runtime не повторяют POST автоматически. Они ограниченное время ищут результат по исходному ID. ApiCommandOutcomeUnknownException.CommandId содержит ID при неизвестном результате; отмена вызывающей стороны может вызвать ApiCommandCanceledException, но не доказывает отмену команды в Core.
Подключитесь с теми же подтверждёнными учётными данными и идентичностью и вызовите GetCommandResultAsync(originalCommandId, token). Продолжайте отслеживать уже существующую операцию, а не создавайте новую. Для обновлений предусмотрен отдельный поиск.
Если приложению нужно восстановление после собственного перезапуска, до отправки сохраняйте журнал ID команд и неизменных запросов. Учётные данные храните отдельно и защищённо. Новый ID означает новую работу, а не отметку повтора.
Поиск по HTTP
Для поддерживаемых команд проекта, файлов, runtime и настроек используйте GET /api/v1/commands/{commandId}; для запуска runtime — GET /api/v1/runtime/commands/{commandId}; для обновлений — GET /api/v1/updates/commands/{commandId}. Поиск проверяет разрешения для соответствующей группы операций и идентичности. Одного runtime.control для поиска runtime-команды недостаточно: нужен также runtime.read.
Если результат указывает на файловую операцию или запуск, продолжайте отслеживать существующий ID. Неизвестный или вытесненный результат не доказывает, что ничего не произошло. Обновите состояние и позвольте пользователю решить, что делать, если внешние эффекты установить нельзя.
Ограничения хранения
Результаты команд ограничены по объёму и привязаны к работающему Host. Истечение срока, вытеснение или перезапуск Host могут сделать результат неизвестным. Прежде чем отправлять новую команду, сверьте реальное состояние.
Общей гарантии однократного выполнения внешних действий нет: таймаут может возникнуть уже после принятия действия. История запусков и сохранённый результат установки существуют отдельно от кэша команд. Сохранённый запуск не восстанавливает старый сеанс и не даёт права повторить изменение.