Ответ после решения задачи оптимизации тура, содержащий маршруты, по которым движется каждое транспортное средство, пропущенные поставки и общую стоимость решения.
| JSON-представление | 
|---|
| { "routes": [ { object ( | 
| Поля | |
|---|---|
| routes[] |   Маршруты рассчитываются для каждого транспортного средства; i-й маршрут соответствует i-му транспортному средству в модели. | 
| requestLabel |    Копия  | 
| skippedShipments[] |   Список всех отправлений пропущен. | 
| validationErrors[] |    Список всех ошибок валидации, которые нам удалось обнаружить самостоятельно. См. объяснение «НЕСКОЛЬКО ОШИБОК» для сообщения  | 
| metrics |   Показатели продолжительности, расстояния и использования для этого решения. | 
Оптимизетурсвалидатионеррор
 Описывает ошибку или предупреждение, возникающее при проверке OptimizeToursRequest . 
| JSON-представление | 
|---|
| {
  "code": integer,
  "displayName": string,
  "fields": [
    {
      object ( | 
| Поля | |
|---|---|
| code |    Ошибка проверки определяется парой (  Поля, следующие за этим разделом, предоставляют дополнительную информацию об ошибке.  НЕСКОЛЬКО ОШИБОК : при наличии нескольких ошибок процесс проверки пытается вывести несколько из них. Как и компилятор, это несовершенный процесс. Некоторые ошибки проверки будут «фатальными», то есть они останавливают весь процесс проверки. Это относится, среди прочего, к ошибкам   СТАБИЛЬНОСТЬ :  | 
| displayName |   Отображаемое имя ошибки. | 
| fields[] |   Контекст ошибки может включать 0, 1 (в большинстве случаев) или более полей. Например, обращение к транспортному средству № 4 и первому забору груза № 2 можно выполнить следующим образом:  Однако обратите внимание, что количество  | 
| errorMessage |    Читаемая человеком строка, описывающая ошибку. Между   СТАБИЛЬНОСТЬ : Нестабильно: сообщение об ошибке, связанное с данным  | 
| offendingValues |   Может содержать значения полей. Это не всегда доступно. На него совершенно не следует полагаться и использовать его только для ручной отладки модели. | 
ПолеReference
 Указывает контекст для ошибки проверки. FieldReference всегда ссылается на данное поле в этом файле и имеет одну и ту же иерархическую структуру. Например, мы можем указать элемент №2 в startTimeWindows транспортного средства №5, используя:
name: "vehicles" index: 5 subField { name: "endTimeWindows" index: 2 }
 Однако мы опускаем объекты верхнего уровня, такие как OptimizeToursRequest или ShipmentModel чтобы не перегружать сообщение. 
| JSON-представление | 
|---|
| { "name": string, "subField": { object ( | 
| Поля | |
|---|---|
| name |   Имя поля, например, «транспортные средства». | 
| subField |   Рекурсивно вложенное подполе, если необходимо. | 
|  Поле объединения    | |
| index |   Индекс поля, если оно повторяется. | 
| key |   Ключ, если поле является картой. | 
Метрики
Общие показатели, агрегированные по всем маршрутам.
| JSON-представление | 
|---|
| {
  "aggregatedRouteMetrics": {
    object ( | 
| Поля | |
|---|---|
| aggregatedRouteMetrics |    Агрегировано по маршрутам. Каждая метрика представляет собой сумму (или максимум для загрузок) по всем одноименным полям  | 
| skippedMandatoryShipmentCount |   Количество пропущенных обязательных отправок. | 
| usedVehicleCount |    Количество используемых автомобилей. Примечание. Если маршрут транспортного средства пуст и  | 
| earliestVehicleStartTime |    Самое раннее время начала подержанного автомобиля, вычисляемое как минимальное для всех подержанных автомобилей   Временная метка в формате RFC3339 UTC «Зулу» с наносекундным разрешением и до девяти дробных цифр. Примеры:  | 
| latestVehicleEndTime |    Самое позднее время окончания для подержанного автомобиля, вычисляемое как максимальное для всех подержанных автомобилей   Временная метка в формате RFC3339 UTC «Зулу» с наносекундным разрешением и до девяти дробных цифр. Примеры:  | 
| costs |   Стоимость решения с разбивкой по полям запроса, связанным со стоимостью. Ключи — это пути прототипов относительно входных данных OptimizeToursRequest, например «model.shipments.pickups.cost», а значения — это общая стоимость, сгенерированная соответствующим полем стоимости, агрегированная по всему решению. Другими словами, затраты["model.shipments.pickups.cost"] — это сумма всех затрат на самовывоз в рамках решения. Здесь подробно представлены все затраты, определенные в модели, за исключением затрат, связанных с TransitionAttributes, которые по состоянию на 2022/01 год сообщаются только в агрегированном виде. | 
| totalCost |   Полная стоимость решения. Сумма всех значений на карте затрат. |