В этом документе рассматриваются важные поля транспортных средств, которые вы можете обновить при создании и управлении транспортными средствами. 
  | Полный список полей транспортного средства см. здесь: 
  | 
Поле состояния транспортного средства
 Ваша система может установить состояние автомобиля OFFLINE » или ONLINE . Например, вы можете установить состояние автомобиля « ONLINE каждый день в 9:00 и OFFLINE каждый день в 17:00.
| ОФФЛАЙН-режим | ОНЛАЙН-режим | 
|---|---|
 Используйте OFFLINE чтобы указать, что транспортное средство не принимает новые рейсы. Обратите внимание, что в этом состоянии транспортное средство может выполнять назначенные рейсы. | 
  | 
Поле атрибутов транспортного средства
 Используйте поле attributes транспортного средства» для создания настраиваемых критериев, которые позволят вашим клиентам или операторам автопарков находить автомобили в вашем автопарке по более широкому спектру критериев поиска. Это расширяет возможности ваших приложений по предоставлению более точных результатов поиска по сравнению с использованием критериев поиска, основанных исключительно на других полях. У каждого транспортного средства может быть не более 100 атрибутов, и каждый должен иметь уникальный ключ. Значения могут быть строковыми, логическими или числовыми.
 Например, вы можете объявить пользовательский атрибут class , чтобы различать автомобили для совместных поездок по классам. Для обозначения классов автомобилей можно использовать следующие строковые значения: ECONOMY , STANDARD и LUXURY .
Однако значения настраиваемых атрибутов не обязательно должны быть взаимоисключающими. Вы можете использовать такие критерии, как «разрешено проживание с домашними животными» , «некурящий» и «возможны длительные поездки» . Каждый из них может быть отдельным настраиваемым атрибутом, использующим логические значения. Транспортному средству можно назначить все три этих настраиваемых атрибута вместе с настраиваемым атрибутом «класс» , которому присвоено соответствующее строковое значение.
Использование атрибутов таким образом может предоставить вам широкий спектр функций, полезных для поиска транспортных средств для поездок с особыми потребностями. Инструкции по использованию настраиваемых атрибутов в качестве фильтров запросов см. в разделе Поиск транспортных средств .
Обновить атрибуты транспортного средства
 Атрибуты транспортного средства можно обновить с помощью UpdateVehicle или UpdateVehicleAttributes . Каждый ключ attributes может иметь только одно значение для транспортного средства . Пользовательские атрибуты транспортного средства объявляются с помощью attributes в маске поля, а затем задаются значения, используя метод, описанный ниже.
 UpdateVehicle |  UpdateVehicleAttributes | |
|---|---|---|
 Этот API не позволяет обновлять только один атрибут. При использовании этого метода любое использование поля attributes в маске поля приводит к переопределению всего набора атрибутов транспортного средства. Это приводит к перезаписи любого ранее существовавшего атрибута, не включённого явно в маску поля. При использовании этого метода для объявления нового настраиваемого атрибута необходимо также переопределить каждый настраиваемый атрибут, который должен быть сохранен в транспортном средстве. Если исключить attributes из маски поля, этот метод оставит существующие настраиваемые атрибуты такими, какими они были ранее определены для транспортного средства. Использование attributes в маске поля без установки значений эквивалентно удалению всех настраиваемых атрибутов транспортного средства. | Этот метод принимает указанный список атрибутов для обновления. Запрос обновляет или добавляет только те атрибуты, которые указаны в маске поля. Существующие атрибуты, которые не указаны, остаются без изменений. | 
Пример обновления полей транспортного средства
 В этом разделе показано, как обновлять поля транспортного средства с помощью UpdateVehicleRequest , который включает update_mask для указания обновляемых полей. Подробнее см. в документации Protocol Buffers о масках полей .
 Для обновления полей, отличных от last_location требуются права администратора Fleet Engine On-demand . 
Пример: включить новый тип поездки и настраиваемый атрибут
 В этом примере разрешены поездки back_to_back для транспортного средства, а также указан новый атрибут: class . Как отмечалось ранее в разделе «Обновление атрибутов транспортного средства» , при обновлении поля attributes с использованием этого подхода требуется указать все настраиваемые атрибуты, которые необходимо сохранить. Поэтому в примере показано значение cash_only записанное для защиты от перезаписи во время операции обновления, которая определяет поле attributes .
 Чтобы обновить только значение одной пары атрибутов «ключ-значение», используйте метод UpdateVehicleAttributes и не включайте поле attribute в маску поля для запроса UpdateVehicle .
 См. справочник providers.vehicles.update для gRPC и REST . 
gRPC
static final String PROJECT_ID = "project-id";
static final String VEHICLE_ID = "vid-8241890";
VehicleServiceBlockingStub vehicleService = VehicleService.newBlockingStub(channel);
String vehicleName = "providers/" + PROJECT_ID + "/vehicles/" + VEHICLE_ID;
Vehicle updatedVehicle = Vehicle.newBuilder()
    .setVehicleState(VehicleState.ONLINE)
    .addAllAttributes(ImmutableList.of(
        VehicleAttribute.newBuilder().setKey("class").setValue("ECONOMY").build(),
        VehicleAttribute.newBuilder().setKey("cash_only").setValue("false").build()))
    .setBackToBackEnabled(true)
    .build();
UpdateVehicleRequest updateVehicleRequest = UpdateVehicleRequest.newBuilder()
    .setName(vehicleName)
    .setVehicle(updatedVehicle)
    .setUpdateMask(FieldMask.newBuilder()
        .addPaths("vehicle_state")
        .addPaths("attributes")
        .addPaths("back_to_back_enabled"))
    .build();
try {
  Vehicle updatedVehicle =
      vehicleService.updateVehicle(updateVehicleRequest);
} catch (StatusRuntimeException e) {
  Status s = e.getStatus();
  switch (s.getCode()) {
    case NOT_FOUND:
      // Most implementations will call CreateVehicle in this case
      break;
    case PERMISSION_DENIED:
      break;
  }
  return;
}
// If no Exception, Vehicle updated successfully.
ОТДЫХ
curl -X PUT \
  "https://fleetengine.googleapis.com/v1/providers/project-id/vehicles/vid-8241890?updateMask=vehicle_state,attributes,back_to_back_enabled" \
  -H "Authorization: Bearer $JWT" \
  -H "Content-Type: application/json" \
  --data-binary @- << EOM
{
    "vehicleState": "ONLINE",
    "attributes": [
      {"key": "class", "value": "LUXURY"},
      {"key": "cash_only", "value": "false"}
    ],
    "backToBackEnabled": true
}
EOM