# АТИ Водитель

## Работа с приложением «АТИ Водитель»

АТИ Водитель — сервис для мониторинга заказов в режиме реального времени. Сервис позволяет отправлять заказы водителю, получать актуальные статусы перевозки и отслеживать местоположение груза на карте.

### До начала выполнения заказа

Для начала работы с приложением «АТИ Водитель» необходимо, чтобы в справочнике транспортных средств был водитель, с установленным приложением «АТИ Водитель». Проверить наличие у водителя приложения можно двумя способами:

1. [По driverId](https://ati.su/developers/raw/api/catalogs/autopark.md#get-v1.2-catalogs-drivers-%7bdriverId%7d)
1. [По номерам телефонов](#post-v1-driver-public-presence)

Если у водителя не установлено приложение, его можно пригласить.

#### Приглашение водителя установить приложение

Перевозчик приглашает водителя установить приложение в разделе [Справочники](https://help.ati.su/avtopark). Водитель устанавливает приложение и регистрируется в нем. Водитель также может зарегистрироваться самостоятельно.

- [Приглашение водителя в приложение](#post-v1-driver-public-invite)

#### Взятие груза

Чтобы воспользоваться возможностями АТИ Водителя, необходимо, чтобы в заказе участвовал водитель, зарегистрированный в приложении. Также при взятии груза можно разрешить грузоотправителю доступ к данным из приложения - тогда он сможет видеть маршрут водителя на карте.

- [Установка доступа грузовладельца к данным из АТИ Водителя](#post-v1.2-orders-carrier-%7bdealId%7d-tracker_access)

### Выполнение заказа

#### Назначение заказа на водителя

После того как заказ перейдет в исполнение, необходимо отправить водителю данные о заказе — адреса точек загрузки и разгрузки, дату и время, информацию о контактных лицах на месте. После этого водитель в приложении сможет изменять статусы заказа, а приложение будет отправлять данные о его местоположении.

1. [Назначить заказ водителю](#put-v1.2-orders-carrier-%7bdealId%7d-driver_tracker_points)
2. [Получение информации по заказу для водителя](#get-v1.2-orders-carrier-%7bdealId%7d-driver_tracker_points)
3. [Обновить данные по заказу](#post-v1.2-orders-carrier-%7bdealId%7d-driver_tracker_points)
4. [Снять водителя с заказа](#delete-v1.2-orders-carrier-%7bdealId%7d-driver_tracker_points)

#### Получение истории заказа

По мере выполнения заказа можно следить за передвижением водителя по карте и отслеживать историю выполнения заказа.

1. [Получение информации о пройденном маршруте АТИ Водителя](#get-v1.2-orders-carrier-map_route-by_deal)
2. [Получение истории](#get-v1.2-orders-carrier-map-history)

## Методы для работы с Заказами с участием АТИ Водителя

#### Проверка наличия приложения у водителя по номерам телефонов

Возвращает информацию о наличии приложения «АТИ Водитель» и последней активности пользователей. Также здесь можно узнать об смс приглашении водителя в приложение, когда был приглашён, каким контактом вашей фирмы и дошло ли оповещение до адресата.

<a id="post-v1-driver-public-presence"></a>

Получение информации о наличии пользователя по телефону

**Пример запроса (curl):**

```bash
curl 'https://api.ati.su/v1/driver/public/presence' \
  -X 'POST' \
  -H 'Authorization: Bearer {authorizationToken}' \
  -H 'Content-Type: application/json' \
  --data-raw '{
  "phones": [
    "string"
  ]
}'
```

**OpenAPI схема:** [JSON](https://ati.su/developers/raw/api/orders/ati-driver.openapi.json)

**Описание полей запроса**
- `phones` — Номера телефонов

**Пример ответа (200)**

```json
[
  {
    "phone": "string",
    "initial_phone": "string",
    "last_active": "1970-01-01T00:00:00.000Z",
    "has_tracker": false,
    "sms_invite_status": {
      "invite_sent": false,
      "contact_name": "string",
      "ati_id": 0,
      "contact_id": 0,
      "sms_status": "empty",
      "when": "1970-01-01T00:00:00.000Z"
    }
  }
]
```

**Пример ответа (4XX)**

```json
{
  "error_code": "validation_error",
  "reason": "Ошибка валидации полей phone и device_id"
}
```

**Описание полей ответа**
- `error_code` — Код ошибки
- `reason` — Описание ошибки для разработчиков


#### Отправление смс-приглашения с просьбой установить приложение

Отправляет по указанному номеру смс со ссылкой на приложение «АТИ Водитель». Метод имеет ограничения: один контакт может приглашать водителя по одному номеру только раз в 10 минут и 3 раза в сутки, лимит на количество смс для фирмы — 30 смс в сутки. Лимиты сбрасываются по ночам.

<a id="post-v1-driver-public-invite"></a>

Отправление смс-приглашения с просьбой установить приложение

**Пример запроса (curl):**

```bash
curl 'https://api.ati.su/v1/driver/public/invite' \
  -X 'POST' \
  -H 'Authorization: Bearer {authorizationToken}' \
  -H 'Content-Type: application/json' \
  --data-raw '{
  "phone": "string"
}'
```

**OpenAPI схема:** [JSON](https://ati.su/developers/raw/api/orders/ati-driver.openapi.json)

**Описание полей запроса**
- `phone` — Номер телефона

**Пример ответа (200)**

```json
{
  "ok": false,
  "details": "string"
}
```

**Пример ответа (4XX)**

```json
{
  "error_code": "validation_error",
  "reason": "Ошибка валидации полей phone и device_id"
}
```

**Описание полей ответа**
- `error_code` — Код ошибки
- `reason` — Описание ошибки для разработчиков


#### Получение информации по заказу для водителя

Возвращает массив точек маршрута, по которым водитель будет следовать, используя приложение «АТИ Водитель». Каждая точка соответствует загрузке или разгрузке, и также содержит информацию об адресе, географических координатах, дате и времени, контактном лице на точке.

<a id="get-gw-driver-v1-carrier-deals-{dealId}-transportations"></a>

Получение информации по заказу для водителя

**Пример запроса (curl):**

```bash
curl 'https://api.ati.su/gw/driver/v1/carrier/deals/3fa85f64-5717-4562-b3fc-2c963f66afa6/transportations' \
  -X 'GET' \
  -H 'Authorization: Bearer {authorizationToken}' \
  -H 'Content-Type: application/json'
```

**OpenAPI схема:** [JSON](https://ati.su/developers/raw/api/orders/ati-driver.openapi.json)

**Пример ответа (200)**

```json
[
  {
    "deal_point_id": "2fb965f2-85e9-4213-90e7-f396e47219e7",
    "ordinal_id": 1,
    "time": "10:00",
    "date": "2.1.2019",
    "time_to": "1:00",
    "date_to": "13.2.2019",
    "lat": 30.3330562,
    "lon": 59.974006,
    "address": "гор. Санкт-Петербург",
    "city_id": 0,
    "region_id": 0,
    "country_id": 0,
    "point_type": {},
    "contact_persons": [
      {
        "name": "string",
        "phone": "string",
        "ordinal_id": 1
      }
    ],
    "note": "string",
    "timeslots_warehouse_id": 0
  }
]
```

**Описание полей ответа**
- `[].deal_point_id` — Id точки из Заказа
- `[].ordinal_id` — Порядковый номер точки
- `[].time` — Время
- `[].date` — Дата
- `[].time_to` — Время до (если есть)
- `[].date_to` — Дата до (если есть)
- `[].lat` — Широта точки
- `[].lon` — Долгота точки
- `[].address` — Адрес
- `[].city_id` — Id города\ Значение из [словаря городов АТИ](https://ati.su/developers/api/dictionaries/geo/)
- `[].region_id` — Id региона\ Значение из [словаря регионов АТИ](https://ati.su/developers/api/dictionaries/geo/)
- `[].country_id` — Id страны\ Значение из [словаря стран АТИ](https://ati.su/developers/api/dictionaries/geo/)
- `[].point_type` — Тип точки * `1` — Загрузка * `2` — Разгрузка
- `[].contact_persons` — Список контактов (не более 10 контактов)
- `[].contact_persons[].name` — Контактное лицо
- `[].contact_persons[].phone` — Телефон контактного лица
- `[].contact_persons[].ordinal_id` — Порядковый номер добавления контактного лица (от 1 до 10)
- `[].note` — Примечание (до 1000 символов)
- `[].timeslots_warehouse_id` — Айди склада из временных окон

**Пример ответа (4XX)**

```json
{
  "error_code": "validation_error",
  "reason": "Ошибка валидации полей phone и device_id"
}
```

**Описание полей ответа**
- `error_code` — Код ошибки
- `reason` — Описание ошибки для разработчиков


#### Назначение заказа на водителя

Привязывает водителя к заказу, создает информацию, необходимую водителю для использования приложения «АТИ Водитель» и отправляет ее на приложение. В тело метода включается информация о типе точки (загрузка или разгрузка), а также информация об адресе, географических координатах, дате и времени, контактном лице на точке.

<a id="post-gw-driver-v1-carrier-deals-{dealId}-transportations"></a>

Назначение заказа на водителя.

**Пример запроса (curl):**

```bash
curl 'https://api.ati.su/gw/driver/v1/carrier/deals/3fa85f64-5717-4562-b3fc-2c963f66afa6/transportations' \
  -X 'POST' \
  -H 'Authorization: Bearer {authorizationToken}' \
  -H 'Content-Type: application/json' \
  --data-raw '[
  {
    "deal_point_id": "2fb965f2-85e9-4213-90e7-f396e47219e7",
    "time": "10:00",
    "date": "02.01.2019",
    "time_to": "01:00",
    "date_to": "13.02.2019",
    "lat": 30.3330562,
    "lon": 59.974006,
    "address": "гор. Санкт-Петербург",
    "contact_persons": [
      {
        "name": "string",
        "phone": "string",
        "ordinal_id": 1
      }
    ],
    "note": "string",
    "timeslots_warehouse_id": 0
  }
]'
```

**OpenAPI схема:** [JSON](https://ati.su/developers/raw/api/orders/ati-driver.openapi.json)

**Описание полей запроса**
- `[].deal_point_id` — Id точки из Заказа
- `[].time` — Время
- `[].date` — Дата
- `[].time_to` — Время до (если есть)
- `[].date_to` — Дата до (если есть)
- `[].lat` — Широта точки
- `[].lon` — Долгота точки
- `[].address` — Адрес
- `[].contact_persons` — Список контактов (не более 10 контактов)
- `[].contact_persons[].name` — Контактное лицо
- `[].contact_persons[].phone` — Телефон контактного лица
- `[].contact_persons[].ordinal_id` — Порядковый номер добавления контактного лица (от 1 до 10)
- `[].note` — Примечание (до 1000 символов)
- `[].timeslots_warehouse_id` — Айди склада из временных окон

**Пример ответа (200)**

```json
[
  {
    "deal_point_id": "2fb965f2-85e9-4213-90e7-f396e47219e7",
    "ordinal_id": 1,
    "time": "10:00",
    "date": "2.1.2019",
    "time_to": "1:00",
    "date_to": "13.2.2019",
    "lat": 30.3330562,
    "lon": 59.974006,
    "address": "гор. Санкт-Петербург",
    "city_id": 0,
    "region_id": 0,
    "country_id": 0,
    "point_type": {},
    "contact_persons": [
      {
        "name": "string",
        "phone": "string",
        "ordinal_id": 1
      }
    ],
    "note": "string",
    "timeslots_warehouse_id": 0
  }
]
```

**Описание полей ответа**
- `[].deal_point_id` — Id точки из Заказа
- `[].ordinal_id` — Порядковый номер точки
- `[].time` — Время
- `[].date` — Дата
- `[].time_to` — Время до (если есть)
- `[].date_to` — Дата до (если есть)
- `[].lat` — Широта точки
- `[].lon` — Долгота точки
- `[].address` — Адрес
- `[].city_id` — Id города\ Значение из [словаря городов АТИ](https://ati.su/developers/api/dictionaries/geo/)
- `[].region_id` — Id региона\ Значение из [словаря регионов АТИ](https://ati.su/developers/api/dictionaries/geo/)
- `[].country_id` — Id страны\ Значение из [словаря стран АТИ](https://ati.su/developers/api/dictionaries/geo/)
- `[].point_type` — Тип точки * `1` — Загрузка * `2` — Разгрузка
- `[].contact_persons` — Список контактов (не более 10 контактов)
- `[].contact_persons[].name` — Контактное лицо
- `[].contact_persons[].phone` — Телефон контактного лица
- `[].contact_persons[].ordinal_id` — Порядковый номер добавления контактного лица (от 1 до 10)
- `[].note` — Примечание (до 1000 символов)
- `[].timeslots_warehouse_id` — Айди склада из временных окон

**Пример ответа (4XX)**

```json
{
  "error_code": "validation_error",
  "reason": "Ошибка валидации полей phone и device_id"
}
```

**Описание полей ответа**
- `error_code` — Код ошибки
- `reason` — Описание ошибки для разработчиков


#### Обновление заказа для АТИ Водителя

Обновляет информацию, необходимую водителю для использования приложения «АТИ Водитель» и отправляет ее на приложение. В тело метода включается информация о типе точки (загрузка или разгрузка), а также информация об адресе, географических координатах, дате и времени, контактном лице на точке.

<a id="put-gw-driver-v1-carrier-deals-{dealId}-transportations"></a>

Обновление заказа для АТИ Водителя.

**Пример запроса (curl):**

```bash
curl 'https://api.ati.su/gw/driver/v1/carrier/deals/3fa85f64-5717-4562-b3fc-2c963f66afa6/transportations' \
  -X 'PUT' \
  -H 'Authorization: Bearer {authorizationToken}' \
  -H 'Content-Type: application/json' \
  --data-raw '[
  {
    "deal_point_id": "2fb965f2-85e9-4213-90e7-f396e47219e7",
    "time": "10:00",
    "date": "02.01.2019",
    "time_to": "01:00",
    "date_to": "13.02.2019",
    "lat": 30.3330562,
    "lon": 59.974006,
    "address": "гор. Санкт-Петербург",
    "contact_persons": [
      {
        "name": "string",
        "phone": "string",
        "ordinal_id": 1
      }
    ],
    "note": "string",
    "timeslots_warehouse_id": 0
  }
]'
```

**OpenAPI схема:** [JSON](https://ati.su/developers/raw/api/orders/ati-driver.openapi.json)

**Описание полей запроса**
- `[].deal_point_id` — Id точки из Заказа
- `[].time` — Время
- `[].date` — Дата
- `[].time_to` — Время до (если есть)
- `[].date_to` — Дата до (если есть)
- `[].lat` — Широта точки
- `[].lon` — Долгота точки
- `[].address` — Адрес
- `[].contact_persons` — Список контактов (не более 10 контактов)
- `[].contact_persons[].name` — Контактное лицо
- `[].contact_persons[].phone` — Телефон контактного лица
- `[].contact_persons[].ordinal_id` — Порядковый номер добавления контактного лица (от 1 до 10)
- `[].note` — Примечание (до 1000 символов)
- `[].timeslots_warehouse_id` — Айди склада из временных окон

**Пример ответа (200)**

```json
[
  {
    "deal_point_id": "2fb965f2-85e9-4213-90e7-f396e47219e7",
    "ordinal_id": 1,
    "time": "10:00",
    "date": "2.1.2019",
    "time_to": "1:00",
    "date_to": "13.2.2019",
    "lat": 30.3330562,
    "lon": 59.974006,
    "address": "гор. Санкт-Петербург",
    "city_id": 0,
    "region_id": 0,
    "country_id": 0,
    "point_type": {},
    "contact_persons": [
      {
        "name": "string",
        "phone": "string",
        "ordinal_id": 1
      }
    ],
    "note": "string",
    "timeslots_warehouse_id": 0
  }
]
```

**Описание полей ответа**
- `[].deal_point_id` — Id точки из Заказа
- `[].ordinal_id` — Порядковый номер точки
- `[].time` — Время
- `[].date` — Дата
- `[].time_to` — Время до (если есть)
- `[].date_to` — Дата до (если есть)
- `[].lat` — Широта точки
- `[].lon` — Долгота точки
- `[].address` — Адрес
- `[].city_id` — Id города\ Значение из [словаря городов АТИ](https://ati.su/developers/api/dictionaries/geo/)
- `[].region_id` — Id региона\ Значение из [словаря регионов АТИ](https://ati.su/developers/api/dictionaries/geo/)
- `[].country_id` — Id страны\ Значение из [словаря стран АТИ](https://ati.su/developers/api/dictionaries/geo/)
- `[].point_type` — Тип точки * `1` — Загрузка * `2` — Разгрузка
- `[].contact_persons` — Список контактов (не более 10 контактов)
- `[].contact_persons[].name` — Контактное лицо
- `[].contact_persons[].phone` — Телефон контактного лица
- `[].contact_persons[].ordinal_id` — Порядковый номер добавления контактного лица (от 1 до 10)
- `[].note` — Примечание (до 1000 символов)
- `[].timeslots_warehouse_id` — Айди склада из временных окон

**Пример ответа (4XX)**

```json
{
  "error_code": "validation_error",
  "reason": "Ошибка валидации полей phone и device_id"
}
```

**Описание полей ответа**
- `error_code` — Код ошибки
- `reason` — Описание ошибки для разработчиков


#### Снятие водителя с заказа

Отвязывает водителя от заказа и удаляет информацию, созданную при назначении заказа на водителя.

<a id="delete-gw-driver-v1-carrier-deals-{dealId}-transportations"></a>

Снятие водителя с заказа.

**Пример запроса (curl):**

```bash
curl 'https://api.ati.su/gw/driver/v1/carrier/deals/3fa85f64-5717-4562-b3fc-2c963f66afa6/transportations' \
  -X 'DELETE' \
  -H 'Authorization: Bearer {authorizationToken}' \
  -H 'Content-Type: application/json'
```

**OpenAPI схема:** [JSON](https://ati.su/developers/raw/api/orders/ati-driver.openapi.json)

**Пример ответа (200)**

```json
{}
```

**Пример ответа (4XX)**

```json
{
  "error_code": "validation_error",
  "reason": "Ошибка валидации полей phone и device_id"
}
```

**Описание полей ответа**
- `error_code` — Код ошибки
- `reason` — Описание ошибки для разработчиков


### Методы для работы с GPS-мониторингом в Заказах

#### Получение информации о пройденном маршруте

Возвращает информацию о маршруте, пройденном водителем с использованием приложения, датчиков Wialon или GPS-устройств, добавленных с помощью API, а также о начальной, конечной и промежуточных точках маршрута. Ответ метода можно использовать, например, для отображения маршрута на карте.

<a id="get-v1.2-orders-carrier-map_route-by_deal"></a>

Получение информации о пройденном маршруте АТИ Водителя

**Пример запроса (curl):**

```bash
curl 'https://api.ati.su/v1.2/orders/carrier/map_route/by_deal?deal_id=3fa85f64-5717-4562-b3fc-2c963f66afa6&south_west_lat=0.5&south_west_lng=0.5&north_east_lat=0.5&north_east_lng=0.5&zoom=0.5' \
  -X 'GET' \
  -H 'Authorization: Bearer {authorizationToken}' \
  -H 'Content-Type: application/json'
```

**OpenAPI схема:** [JSON](https://ati.su/developers/raw/api/orders/ati-driver.openapi.json)

**Пример ответа (200)**

```json
[
  {
    "goals": [
      {
        "longitude": 0.5,
        "latitude": 0.5,
        "events": [
          {
            "type": {},
            "tag": "string",
            "date": "1970-01-01T00:00:00.000Z",
            "date_to": "1970-01-01T00:00:00.000Z",
            "time": "string",
            "time_to": "string",
            "location_name": {
              "country": "string",
              "region": "string",
              "city": "string",
              "address": "string"
            }
          }
        ],
        "ordinal_id": 0,
        "trace": false
      }
    ],
    "traces": [
      {
        "car": {
          "driver_phone": "string",
          "car_status": {}
        },
        "first_action": "1970-01-01T00:00:00.000Z",
        "last_action": "1970-01-01T00:00:00.000Z",
        "points": [
          {
            "longitude": 0.5,
            "latitude": 0.5,
            "events": [
              {
                "type": {},
                "tag": "string",
                "date": "1970-01-01T00:00:00.000Z",
                "date_to": "1970-01-01T00:00:00.000Z",
                "time": "string",
                "time_to": "string",
                "location_name": {
                  "country": "string",
                  "region": "string",
                  "city": "string",
                  "address": "string"
                }
              }
            ],
            "location_date": "1970-01-01T00:00:00.000Z",
            "is_fake": false,
            "is_disabled": false,
            "is_no_data": false,
            "is_power_saving": false,
            "is_empty_run": false,
            "is_parking": false
          }
        ]
      }
    ]
  }
]
```

**Описание полей ответа**
- `[].goals` — Точки загрузки/разгрузки
- `[].goals[].longitude` — Долгота
- `[].goals[].latitude` — Широта
- `[].goals[].events` — События
- `[].goals[].events[].type` — Тип события * `0` — Значение по умолчанию * `1` — Метаинформация об устройстве. Включает в себя события выключения GPS, подмены GPS координат, выключения телефона. * `2` — Информация о статусе заказа (статусы выбираются водителем в приложении)
- `[].goals[].events[].tag` — Тэг произошедшего события
- `[].goals[].events[].date` — Дата начала
- `[].goals[].events[].date_to` — Дата окончания
- `[].goals[].events[].time` — Время начала
- `[].goals[].events[].time_to` — Время окончания
- `[].goals[].events[].location_name` — Информация о местоположении
- `[].goals[].events[].location_name.country` — Страна
- `[].goals[].events[].location_name.region` — Регион
- `[].goals[].events[].location_name.city` — Город
- `[].goals[].events[].location_name.address` — Адрес
- `[].goals[].ordinal_id` — Номер по порядку
- `[].goals[].trace` — Нужно ли прокладывать маршрут для этой точки
- `[].traces` — Точки траектории движения водителя
- `[].traces[].car` — Транспортное средство
- `[].traces[].car.driver_phone` — Номер телефона водителя
- `[].traces[].car.car_status` — Тип события * `0` — Без происшествий * `1` — GPS был выключен * `2` — Попытка подделки GPS * `3` — Не было данных * `4` — Режим энергосбережения * `5` — Стоянка
- `[].traces[].first_action` — Время начала действия
- `[].traces[].last_action` — Время окончания действия
- `[].traces[].points` — Точки маршрута
- `[].traces[].points[].longitude` — Долгота
- `[].traces[].points[].latitude` — Широта
- `[].traces[].points[].events` — События
- `[].traces[].points[].events[].type` — Тип события * `0` — Значение по умолчанию * `1` — Метаинформация об устройстве. Включает в себя события выключения GPS, подмены GPS координат, выключения телефона. * `2` — Информация о статусе заказа (статусы выбираются водителем в приложении)
- `[].traces[].points[].events[].tag` — Тэг произошедшего события
- `[].traces[].points[].events[].date` — Дата начала
- `[].traces[].points[].events[].date_to` — Дата окончания
- `[].traces[].points[].events[].time` — Время начала
- `[].traces[].points[].events[].time_to` — Время окончания
- `[].traces[].points[].events[].location_name` — Информация о местоположении
- `[].traces[].points[].events[].location_name.country` — Страна
- `[].traces[].points[].events[].location_name.region` — Регион
- `[].traces[].points[].events[].location_name.city` — Город
- `[].traces[].points[].events[].location_name.address` — Адрес
- `[].traces[].points[].location_date` — Время местоположения
- `[].traces[].points[].is_fake` — Флаг поддельного сигнала GPS
- `[].traces[].points[].is_disabled` — Фдаг выключенности GPS
- `[].traces[].points[].is_no_data` — Флаг наличия данных
- `[].traces[].points[].is_power_saving` — Флаг включенности режима энергосбережения
- `[].traces[].points[].is_empty_run` — Флаг холостого хода
- `[].traces[].points[].is_parking` — Стоянка

**Пример ответа (4XX)**

```json
{
  "reason": "string",
  "error": "string"
}
```

**Описание полей ответа**
- `reason` — Причина ошибки
- `error` — Ключ ошибки


#### Получение истории

Массив событий, произошедших в пути следования водителя. Например: поломка, ДТП.

<a id="get-v1.2-orders-carrier-map-history"></a>

Получение истории

**Пример запроса (curl):**

```bash
curl 'https://api.ati.su/v1.2/orders/carrier/map/history?deal_id=3fa85f64-5717-4562-b3fc-2c963f66afa6' \
  -X 'GET' \
  -H 'Authorization: Bearer {authorizationToken}' \
  -H 'Content-Type: application/json'
```

**OpenAPI схема:** [JSON](https://ati.su/developers/raw/api/orders/ati-driver.openapi.json)

**Пример ответа (200)**

```json
[
  {
    "events": [
      {
        "date": "1970-01-01T00:00:00.000Z",
        "event": {
          "type": {},
          "tag": "string",
          "date": "1970-01-01T00:00:00.000Z",
          "date_to": "1970-01-01T00:00:00.000Z",
          "time": "string",
          "time_to": "string",
          "location_name": {
            "country": "string",
            "region": "string",
            "city": "string",
            "address": "string"
          }
        },
        "longitude": 0.5,
        "latitude": 0.5,
        "params": [
          "string"
        ]
      }
    ]
  }
]
```

**Описание полей ответа**
- `[].events` — События в пути
- `[].events[].date` — Время события
- `[].events[].event` — Событие
- `[].events[].event.type` — Тип события * `0` — Значение по умолчанию * `1` — Метаинформация об устройстве. Включает в себя события выключения GPS, подмены GPS координат, выключения телефона. * `2` — Информация о статусе заказа (статусы выбираются водителем в приложении)
- `[].events[].event.tag` — Тэг произошедшего события
- `[].events[].event.date` — Дата начала
- `[].events[].event.date_to` — Дата окончания
- `[].events[].event.time` — Время начала
- `[].events[].event.time_to` — Время окончания
- `[].events[].event.location_name` — Информация о местоположении
- `[].events[].event.location_name.country` — Страна
- `[].events[].event.location_name.region` — Регион
- `[].events[].event.location_name.city` — Город
- `[].events[].event.location_name.address` — Адрес
- `[].events[].longitude` — Долгота
- `[].events[].latitude` — Широта

**Пример ответа (4XX)**

```json
{
  "reason": "string",
  "error": "string"
}
```

**Описание полей ответа**
- `reason` — Причина ошибки
- `error` — Ключ ошибки


#### Установка доступа грузовладельца к данным из АТИ Водителя

По умолчанию грузовладелец не может следить за водителем на карте. С помощью метода можно открывать и закрывать грузовладельцу доступ к этой информации (данные, возвращаемые методом `/map_route/by_deal`).

<a id="post-v1.2-orders-carrier-{dealId}-tracker_access"></a>

Установка доступа грузовладельца к данным из АТИ Водителя.

**Пример запроса (curl):**

```bash
curl 'https://api.ati.su/v1.2/orders/carrier/3fa85f64-5717-4562-b3fc-2c963f66afa6/tracker_access?value=%5Bobject%20Object%5D' \
  -X 'POST' \
  -H 'Authorization: Bearer {authorizationToken}' \
  -H 'Content-Type: application/json'
```

**OpenAPI схема:** [JSON](https://ati.su/developers/raw/api/orders/ati-driver.openapi.json)

**Пример ответа (4XX)**

```json
{
  "reason": "string",
  "error": "string"
}
```

**Описание полей ответа**
- `reason` — Причина ошибки
- `error` — Ключ ошибки


#### Метод получения последней существующей локации водителя

Если у водителя установлено приложение АТИ.Водитель можно запросить его последнее местоположение.

<a id="post-v1-driver-public-deal-users_activity"></a>

Получение последних локаций пользователей

**Пример запроса (curl):**

```bash
curl 'https://api.ati.su/v1/driver/public/deal/users_activity' \
  -X 'POST' \
  -H 'Authorization: Bearer {authorizationToken}' \
  -H 'Content-Type: application/json' \
  --data-raw '{
  "deals": [
    {
      "phone": "string",
      "deal_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
    }
  ]
}'
```

**OpenAPI схема:** [JSON](https://ati.su/developers/raw/api/orders/ati-driver.openapi.json)

**Описание полей запроса**
- `deals[].phone` — Номер телефона водителя
- `deals[].deal_id` — Id сделки в формате GUID

**Пример ответа (200)**

```json
{
  "deals": [
    {
      "deal_id": "string",
      "initial_phone": "string",
      "phone": "string",
      "tracker_offer_status": "none",
      "reason_changing_offer_status": "string",
      "status": "none",
      "extended_status": "none",
      "tracker_finished_at": "1970-01-01T00:00:00.000Z",
      "last_active": "1970-01-01T00:00:00.000Z",
      "has_tracker": false,
      "last_location": {
        "lon": 0.5,
        "lat": 0.5,
        "events": [
          {
            "type": "not_set",
            "tag": "string",
            "date": "1970-01-01T00:00:00.000Z",
            "date_to": "1970-01-01T00:00:00.000Z",
            "time": "string",
            "time_to": "string",
            "location_name": {
              "country": "string",
              "region": "string",
              "city": "string",
              "address": "string"
            },
            "company_info": {
              "ati_id": "string",
              "name": "string"
            }
          }
        ],
        "is_fake": false,
        "is_disabled": false,
        "is_no_data": false,
        "is_power_saving": false
      },
      "gps_status_date": "1970-01-01T00:00:00.000Z"
    }
  ]
}
```

**Описание полей ответа**
- `deals[].deal_id` — Id сделки в формате GUID
- `deals[].initial_phone` — Номер телефона водителя в изначальном виде
- `deals[].phone` — Отформатированный номер телефона водителя
- `deals[].tracker_finished_at` — Дата и время завершения перевозки водителем
- `deals[].last_active` — Дата и время когда водитель последний раз заходил в приложение
- `deals[].has_tracker` — Установлено ли приложение у водителя

**Пример ответа (4XX)**

```json
{
  "error_code": "validation_error",
  "reason": "Ошибка валидации полей phone и device_id"
}
```

**Описание полей ответа**
- `error_code` — Код ошибки
- `reason` — Описание ошибки для разработчиков
---

## llms.txt

Индекс ключевых страниц документации для LLM и AI-агентов доступен в [основном llms.txt](https://ati.su/developers/llms.txt).
