openapi: 3.0.1
info:
  title: Exodrive API
  version: '2.0'
servers:
  - url: https://dev.api.exodrive.ai
    description: DEV сервер
paths:
  /api/v2/Accident/table/{status}:
    get:
      tags:
        - Аварии
      summary: Получить список аварий
      description: Возвращает список аварий с фильтрацией по статусу
      operationId: GetAccidentTableByStatus
      parameters:
        - name: status
          in: path
          description: "Статус аварии:\r\n`opened` - открытые (новые) убытки,\r\n`closed` - закрытые (обработанные) убытки,\r\n`notvalid` - невалидные аварии (мини-крэши)."
          required: true
          schema:
            type: string
        - name: SortTarget
          in: query
          description: Поле сортировки, ключ из `rowHeaders`.
          schema:
            type: string
        - name: IsDesc
          in: query
          description: 'Направление сортировки: `1` - по убыванию, `0` - по возрастанию.'
          schema:
            type: integer
            format: int32
        - name: Filter
          in: query
          description: "Поле фильтрации, ключ из `rowHeaders`.\r\nПоддерживает операторы фильтрации:\r\n<list type=\"bullet\"><item>`contains` - частичное совпадение (без учета регистра),</item><item>`eq` - точное совпадение.</item></list><br> Формат: `имя_поля~оператор~значение`"
          schema:
            type: string
        - name: Page
          in: query
          description: Номер страницы.
          schema:
            type: integer
            format: int32
        - name: PerPage
          in: query
          description: Элементов на странице. По умолчанию 20, максимум 100.
          schema:
            maximum: 100
            minimum: 1
            type: integer
            format: int32
      responses:
        '200':
          description: Success
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/AccidentTableResponseItemTableResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/AccidentTableResponseItemTableResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/AccidentTableResponseItemTableResponse'
        '401':
          description: Unauthorized
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
        '404':
          description: Not Found
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
        '422':
          description: Client Error
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
        '500':
          description: Server Error
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
  /api/v2/Anomaly/status:
    get:
      tags:
        - Аномалии
      summary: Получить статус аномалий по устройству
      description: Возвращает статус по устройству и историю последних аномалий
      operationId: GetAnomalyStatus
      parameters:
        - name: imei
          in: query
          description: IMEI устройства
          schema:
            type: string
      responses:
        '200':
          description: Success
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/AnomalyStatusInfo'
            application/json:
              schema:
                $ref: '#/components/schemas/AnomalyStatusInfo'
            text/json:
              schema:
                $ref: '#/components/schemas/AnomalyStatusInfo'
        '401':
          description: Unauthorized
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
        '404':
          description: Not Found
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            text/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '422':
          description: Client Error
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
        '500':
          description: Server Error
  /api/v2/Anomaly/history:
    get:
      tags:
        - Аномалии
      summary: Получить историю аномалий по устройству
      description: Возвращает историю последних аномалий по устройству
      operationId: GetAnomalyHistory
      parameters:
        - name: imei
          in: query
          description: IMEI устройства
          schema:
            type: string
        - name: days
          in: query
          description: 'Глубина запроса, дней (default: 30)'
          schema:
            type: integer
            format: int32
            default: 30
      responses:
        '200':
          description: Success
          content:
            text/plain:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/AnomalyHistoryItem'
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/AnomalyHistoryItem'
            text/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/AnomalyHistoryItem'
        '401':
          description: Unauthorized
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
        '404':
          description: Not Found
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            text/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '422':
          description: Client Error
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
        '500':
          description: Server Error
  /api/v2/Billing/vouchers/count:
    get:
      tags:
        - Биллинг
      summary: Получить биллинг
      description: >-
        Возвращает сводную информацию по выбранному типу биллинга запрошенных
        типов контрактов за выбранный отчетный месяц
      operationId: GetBillingVouchersCount
      parameters:
        - name: contractTypeIds
          in: query
          description: Идентификаторы типов контрактов
          schema:
            type: string
        - name: billingType
          in: query
          description: Тип биллинга (`0` - помесячный, `1` - подневный)
          schema:
            $ref: '#/components/schemas/BillingType'
        - name: month
          in: query
          description: Месяц отчетного периода (по умолчанию - предыдущий месяц)
          schema:
            type: integer
            format: int32
        - name: year
          in: query
          description: Год отчетного периода (по умолчанию - текущий год)
          schema:
            type: integer
            format: int32
      responses:
        '200':
          description: Success
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/BillingCountResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/BillingCountResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/BillingCountResponse'
        '401':
          description: Unauthorized
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
        '404':
          description: Not Found
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
        '422':
          description: Client Error
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
        '500':
          description: Server Error
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
  /api/v2/Billing/vouchers/details:
    get:
      tags:
        - Биллинг
      summary: Получить детализацию биллинга
      description: >-
        Возвращает детальную информацию по состоянию биллинга ваучеров в
        отчетном периоде
      operationId: GetBillingVouchersDetails
      parameters:
        - name: contractTypeIds
          in: query
          description: Идентификаторы типов контрактов
          schema:
            type: string
        - name: month
          in: query
          description: Месяц отчетного периода (по умолчанию - предыдущий месяц)
          schema:
            type: integer
            format: int32
        - name: year
          in: query
          description: Год отчетного периода (по умолчанию - текущий год)
          schema:
            type: integer
            format: int32
      responses:
        '200':
          description: Success
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/BillingDetailsResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/BillingDetailsResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/BillingDetailsResponse'
        '401':
          description: Unauthorized
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
        '404':
          description: Not Found
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
        '422':
          description: Client Error
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
        '500':
          description: Server Error
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
  /api/v2/Device/list/imei:
    get:
      tags:
        - Устройства
      summary: Получить список устройств
      description: Возвращает список устройств, доступных для привязки к ваучеру
      operationId: GetDeviceListImei
      parameters:
        - name: search
          in: query
          description: Опциональный параметр поиска
          schema:
            type: string
      responses:
        '200':
          description: Success
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/InfoItemResponseItemPaginationResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/InfoItemResponseItemPaginationResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/InfoItemResponseItemPaginationResponse'
        '401':
          description: Unauthorized
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
        '404':
          description: Not Found
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
        '422':
          description: Client Error
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
        '500':
          description: Server Error
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
  /api/v2/Device/{id}:
    get:
      tags:
        - Устройства
      summary: Получить информацию об устройстве
      description: Возвращает информацию о запрошенном устройстве
      operationId: GetDeviceById
      parameters:
        - name: id
          in: path
          description: Идентификатор устройства
          required: true
          schema:
            type: integer
            format: int32
      responses:
        '200':
          description: Success
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/DeviceItemResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/DeviceItemResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/DeviceItemResponse'
        '401':
          description: Unauthorized
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
        '404':
          description: Not Found
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
        '422':
          description: Client Error
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
        '500':
          description: Server Error
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
  /api/v2/Info/contractTypes:
    get:
      tags:
        - Ваучеры
      summary: Получить список типов контрактов
      description: Возвращает список доступных типов контрактов
      operationId: GetInfoContractTypes
      parameters:
        - name: search
          in: query
          description: Опциональный параметр поиска
          schema:
            type: string
      responses:
        '401':
          description: Unauthorized
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
        '404':
          description: Not Found
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
        '422':
          description: Client Error
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
        '500':
          description: Server Error
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
  /api/v2/Info/vehicleBrands:
    get:
      tags:
        - Справочники
      summary: Получить список марок транспортных средств
      description: Возвращает список марок транспортных средств
      operationId: GetInfoVehicleBrands
      parameters:
        - name: search
          in: query
          description: Опциональный параметр поиска
          schema:
            type: string
      responses:
        '200':
          description: Success
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/InfoItemPaginationResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/InfoItemPaginationResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/InfoItemPaginationResponse'
        '401':
          description: Unauthorized
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
        '404':
          description: Not Found
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
        '422':
          description: Client Error
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
        '500':
          description: Server Error
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
  /api/v2/Info/vehicleModels:
    get:
      tags:
        - Справочники
      summary: Получить список моделей транспортных средств
      description: Возвращает список моделей транспортных средств для заданной марки
      operationId: GetInfoVehicleModels
      parameters:
        - name: brand
          in: query
          description: Идентификатор марки транспортного средства
          schema:
            type: integer
            format: int32
        - name: search
          in: query
          description: Опциональный параметр поиска
          schema:
            type: string
      responses:
        '200':
          description: Success
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/InfoItemPaginationResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/InfoItemPaginationResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/InfoItemPaginationResponse'
        '401':
          description: Unauthorized
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
        '404':
          description: Not Found
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
        '422':
          description: Client Error
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
        '500':
          description: Server Error
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
  /api/v2/Info/vehicleColors:
    get:
      tags:
        - Справочники
      summary: Получить список цветов кузова
      description: Возвращает список цветов кузова транспортного средства
      operationId: GetInfoVehicleColors
      parameters:
        - name: search
          in: query
          description: Опциональный параметр поиска
          schema:
            type: string
      responses:
        '200':
          description: Success
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/InfoItemPaginationResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/InfoItemPaginationResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/InfoItemPaginationResponse'
        '401':
          description: Unauthorized
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
        '404':
          description: Not Found
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
        '422':
          description: Client Error
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
        '500':
          description: Server Error
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
  /api/v2/Info/carTypes:
    get:
      tags:
        - Справочники
      summary: Получить список типов кузова транспортных средств
      description: Возвращает список типов кузова транспортных средств
      operationId: GetInfoCarTypes
      parameters:
        - name: search
          in: query
          description: Опциональный параметр поиска
          schema:
            type: string
      responses:
        '200':
          description: Success
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/InfoItemPaginationResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/InfoItemPaginationResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/InfoItemPaginationResponse'
        '401':
          description: Unauthorized
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
        '404':
          description: Not Found
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
        '422':
          description: Client Error
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
        '500':
          description: Server Error
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
  /api/v2/Info/fuelTypes:
    get:
      tags:
        - Справочники
      summary: Получить список типов топлива
      description: Возвращает список типов топлива
      operationId: GetInfoFuelTypes
      responses:
        '200':
          description: Success
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/InfoItemPaginationResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/InfoItemPaginationResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/InfoItemPaginationResponse'
        '401':
          description: Unauthorized
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
        '404':
          description: Not Found
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
        '422':
          description: Client Error
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
        '500':
          description: Server Error
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
  /api/v2/Info/emissionStandards:
    get:
      tags:
        - Справочники
      summary: Получить список экологических классов
      description: Возвращает список экологических классов
      operationId: GetInfoEmissionStandards
      parameters:
        - name: search
          in: query
          description: Опциональный параметр поиска
          schema:
            type: string
      responses:
        '401':
          description: Unauthorized
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
        '404':
          description: Not Found
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
        '422':
          description: Client Error
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
        '500':
          description: Server Error
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
  /api/v2/StatisticSummingDay:
    get:
      tags:
        - Скоринг
      summary: Получить выборку скоринга по дням
      description: >-
        Возвращает агрегированную скоринговую статистику по дням для конкретного
        ваучера. Опционально включает рекомендации по улучшению вождения.
      operationId: GetStatisticSummingDayByVoucherId
      parameters:
        - name: voucherId
          in: query
          description: Служебный идентификатор ваучера
          schema:
            type: string
        - name: daysCount
          in: query
          description: Количество дней выборки
          schema:
            type: integer
            format: int32
        - name: skipDaysCount
          in: query
          description: Количество дней отступа, по умолчанию `0`
          schema:
            type: integer
            format: int32
            default: 0
        - name: includeRecommendations
          in: query
          description: Включить рекомендации по улучшению вождения (по умолчанию `false`)
          schema:
            type: boolean
            default: false
        - name: includeAnomalyData
          in: query
          description: Включать дни с аномалиями в выборку (по умолчанию `false`)
          schema:
            type: boolean
            default: false
      responses:
        '200':
          description: Success
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/StatisticSummingDayResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/StatisticSummingDayResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/StatisticSummingDayResponse'
        '401':
          description: Unauthorized
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
        '404':
          description: Not Found
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
        '422':
          description: Client Error
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
        '500':
          description: Server Error
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
  /api/v2/StatisticSummingGlobal:
    get:
      tags:
        - Скоринг
      summary: Получить превью-скоринг за все время
      description: >-
        Возвращает скоринг за все время для конкретного ваучера, полученный
        быстрым методом по агрегированным данным.
      operationId: GetStatisticSummingGlobalByVoucherId
      parameters:
        - name: voucherId
          in: query
          description: Служебный идентификатор ваучера
          schema:
            type: string
      responses:
        '200':
          description: Success
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/StatisticSummingGlobalResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/StatisticSummingGlobalResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/StatisticSummingGlobalResponse'
        '401':
          description: Unauthorized
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
        '404':
          description: Not Found
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
        '422':
          description: Client Error
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
        '500':
          description: Server Error
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
  /api/v2/StatisticSummingMonth/all:
    get:
      tags:
        - Скоринг
      summary: Получить выборку скоринга по месяцам
      description: >-
        Возвращает агрегированную скоринговую статистику по месяцам для
        конкретного ваучера
      operationId: GetStatisticSummingMonthAllByVoucherId
      parameters:
        - name: voucherId
          in: query
          description: Служебный идентификатор ваучера
          schema:
            type: string
      responses:
        '200':
          description: Success
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/StatisticSummingMonthResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/StatisticSummingMonthResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/StatisticSummingMonthResponse'
        '401':
          description: Unauthorized
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
        '404':
          description: Not Found
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
        '422':
          description: Client Error
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
        '500':
          description: Server Error
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
  /api/v2/StatisticSummingPeriod:
    get:
      tags:
        - Скоринг
      summary: Получить скоринг за выбранный период
      description: >-
        Возвращает агрегированные показатели скоринга и событий за указанный
        временной период (длиннее 1 часа) для конкретного ваучера. Опционально
        включает данные о крешах (IncludeCrashData=true) и рекомендации по
        улучшению стиля вождения (IncludeRecommendations=true).
      operationId: GetStatisticSummingPeriodByVoucherId
      parameters:
        - name: Id
          in: query
          description: Служебный идентификатор ваучера.
          schema:
            type: string
        - name: From
          in: query
          description: Начало периода в формате Unix timestamp (секунды) по UTC.
          schema:
            type: integer
            format: int64
        - name: To
          in: query
          description: "Конец периода в формате Unix timestamp (секунды) по UTC.\r\nПериод между `From` и `To` должен быть не менее 1 часа."
          schema:
            type: integer
            format: int64
        - name: IncludeCrashData
          in: query
          description: Флаг включения данных о крешах в ответ. По умолчанию `false`.
          schema:
            type: boolean
        - name: IncludeRecommendations
          in: query
          description: Флаг включения рекомендаций в ответ. По умолчанию `false`.
          schema:
            type: boolean
        - name: IncludeAnomalyData
          in: query
          description: "Включать период с аномалиями в выборку (по умолчанию `false`).\r\nЕсли `false` и период содержит аномалии, возвращается ошибка 422."
          schema:
            type: boolean
      responses:
        '200':
          description: Success
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/StatisticSummingPeriodResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/StatisticSummingPeriodResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/StatisticSummingPeriodResponse'
        '400':
          description: Bad Request
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
        '401':
          description: Unauthorized
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
        '404':
          description: Not Found
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
        '422':
          description: Client Error
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
        '500':
          description: Server Error
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
  /api/v2/Voucher:
    post:
      tags:
        - Ваучеры
      summary: Создать новый ваучер
      description: Создает ваучер
      operationId: PostVoucher
      requestBody:
        content:
          application/json-patch+json:
            schema:
              $ref: '#/components/schemas/VoucherContract'
          application/json:
            schema:
              $ref: '#/components/schemas/VoucherContract'
          text/json:
            schema:
              $ref: '#/components/schemas/VoucherContract'
          application/*+json:
            schema:
              $ref: '#/components/schemas/VoucherContract'
      responses:
        '200':
          description: Success
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/Voucher'
            application/json:
              schema:
                $ref: '#/components/schemas/Voucher'
            text/json:
              schema:
                $ref: '#/components/schemas/Voucher'
        '401':
          description: Unauthorized
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
        '404':
          description: Not Found
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
        '422':
          description: Client Error
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
        '500':
          description: Server Error
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
  /api/v2/Voucher/table:
    get:
      tags:
        - Ваучеры
      summary: Получить список ваучеров
      description: Возвращает список ваучеров
      operationId: GetVoucherTable
      parameters:
        - name: SortTarget
          in: query
          description: Поле сортировки, ключ из `rowHeaders`.
          schema:
            type: string
        - name: IsDesc
          in: query
          description: 'Направление сортировки: `1` - по убыванию, `0` - по возрастанию.'
          schema:
            type: integer
            format: int32
        - name: Filter
          in: query
          description: "Поле фильтрации, ключ из `rowHeaders`.\r\nПоддерживает операторы фильтрации:\r\n<list type=\"bullet\"><item>`contains` - частичное совпадение (без учета регистра),</item><item>`eq` - точное совпадение.</item></list><br> Формат: `имя_поля~оператор~значение`"
          schema:
            type: string
        - name: Page
          in: query
          description: Номер страницы.
          schema:
            type: integer
            format: int32
        - name: PerPage
          in: query
          description: Элементов на странице. По умолчанию 20, максимум 100.
          schema:
            maximum: 100
            minimum: 1
            type: integer
            format: int32
      responses:
        '200':
          description: Success
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/VoucherTableResponseItemTableResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/VoucherTableResponseItemTableResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/VoucherTableResponseItemTableResponse'
        '401':
          description: Unauthorized
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
        '404':
          description: Not Found
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
        '422':
          description: Client Error
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
        '500':
          description: Server Error
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
  /api/v2/Voucher/{id}/close:
    post:
      tags:
        - Ваучеры
      summary: Закрыть ваучер
      description: Закрывает выбранный ваучер и прекращает сбор и данных по нему
      operationId: PostVoucherIdClose
      parameters:
        - name: id
          in: path
          description: Идентификатор ваучера
          required: true
          schema:
            type: integer
            format: int32
      responses:
        '200':
          description: Success
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/VoucherChangeStateResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/VoucherChangeStateResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/VoucherChangeStateResponse'
        '401':
          description: Unauthorized
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
        '404':
          description: Not Found
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
        '422':
          description: Client Error
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
        '500':
          description: Server Error
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
  /api/v2/Voucher/{id}/device/attach:
    post:
      tags:
        - Ваучеры
      summary: Привязать устройство к ваучеру
      description: >-
        Привязывает устройство к выбранному ваучеру. Если ваучер не был ранее
        активирован, то данная операция также активирует его.
      operationId: PostVoucherIdDeviceAttach
      parameters:
        - name: id
          in: path
          description: Идентификатор ваучера
          required: true
          schema:
            type: integer
            format: int32
      requestBody:
        description: Данные устройства
        content:
          application/json-patch+json:
            schema:
              $ref: '#/components/schemas/VoucherDeviceAttachContract'
          application/json:
            schema:
              $ref: '#/components/schemas/VoucherDeviceAttachContract'
          text/json:
            schema:
              $ref: '#/components/schemas/VoucherDeviceAttachContract'
          application/*+json:
            schema:
              $ref: '#/components/schemas/VoucherDeviceAttachContract'
      responses:
        '200':
          description: Success
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/VoucherChangeStateResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/VoucherChangeStateResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/VoucherChangeStateResponse'
        '401':
          description: Unauthorized
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
        '404':
          description: Not Found
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
        '422':
          description: Client Error
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
        '500':
          description: Server Error
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
  /api/v2/Voucher/{id}/device/dettach:
    post:
      tags:
        - Ваучеры
      summary: Отвязать устройство от ваучера
      description: Отвязывает устройство от выбранного ваучера
      operationId: PostVoucherIdDeviceDettach
      parameters:
        - name: id
          in: path
          description: Идентификатор ваучера
          required: true
          schema:
            type: integer
            format: int32
      responses:
        '200':
          description: Success
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/VoucherChangeStateResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/VoucherChangeStateResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/VoucherChangeStateResponse'
        '401':
          description: Unauthorized
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
        '404':
          description: Not Found
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
        '422':
          description: Client Error
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
        '500':
          description: Server Error
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
components:
  schemas:
    AccidentContract:
      type: object
      properties:
        damagedCars:
          type: array
          items:
            $ref: '#/components/schemas/AccidentUpdateDamagedCar'
          nullable: true
        ignition:
          type: boolean
        positionSpeed:
          type: number
          format: double
        positionHeading:
          type: number
          format: double
        positionQuality:
          type: number
          format: double
        sensorOffsetX:
          type: number
          format: double
        sensorOffsetY:
          type: number
          format: double
        sensorOffsetZ:
          type: number
          format: double
        tripIdentifier:
          type: integer
          format: int64
        isTriax:
          type: boolean
        octoValidation:
          type: boolean
        carAccidentValidation:
          type: boolean
        crashDebugInfo:
          type: string
          nullable: true
        crashStrength:
          type: string
          nullable: true
        crashId:
          type: integer
          format: int32
        driverName:
          type: string
          nullable: true
        driverPhone:
          type: string
          nullable: true
        descriptionOfCrash:
          type: string
          nullable: true
        numberOfPassengers:
          type: integer
          format: int32
        namesOfPassengers:
          type: string
          nullable: true
        needAnotherCall:
          type: boolean
        dateTimeOfNextCall:
          type: string
          format: date-time
          nullable: true
        numberOfInjured:
          type: integer
          format: int32
        listOfInjured:
          type: string
          nullable: true
        needRoadService:
          type: boolean
        needPolice:
          type: boolean
        otherContactPerson:
          type: string
          nullable: true
        contactPersonPhone:
          type: string
          nullable: true
        otherPhone:
          type: string
          nullable: true
        disagreementSurveyStatus:
          type: boolean
        operatorOnDutyId:
          type: integer
          format: int32
          nullable: true
        statusOfRoadAccidentId:
          type: integer
          format: int32
          nullable: true
        contactPersonStatusId:
          type: integer
          format: int32
          nullable: true
        disagreementSurveyReasonId:
          type: integer
          format: int32
          nullable: true
        unconfirmationReasonId:
          type: integer
          format: int32
          nullable: true
        callReasonId:
          type: integer
          format: int32
          nullable: true
        callResultId:
          type: integer
          format: int32
          nullable: true
        offenderId:
          type: integer
          format: int32
          nullable: true
        contactPersonStatus2Id:
          type: integer
          format: int32
          nullable: true
        otherConfirmCrashAddress:
          type: string
          nullable: true
        numberVehicleCrash:
          type: integer
          format: int32
        numberMotorcycleCrash:
          type: integer
          format: int32
        numberPedestrianCrash:
          type: integer
          format: int32
        numberWitnessesCrash:
          type: integer
          format: int32
        crashConfirmationStatus:
          type: boolean
        otherReasonOfUnconfirmation:
          type: string
          nullable: true
        addressStatus:
          type: boolean
        otherContactPerson2:
          type: string
          nullable: true
        contactPersonPhone2:
          type: string
          nullable: true
        otherPhone2:
          type: string
          nullable: true
      additionalProperties: false
    AccidentImage:
      type: object
      properties:
        id:
          type: string
          nullable: true
        accidentId:
          type: string
          nullable: true
        crashId:
          type: integer
          format: int32
        items:
          type: array
          items:
            $ref: '#/components/schemas/AccidentImageItem'
          nullable: true
      additionalProperties: false
    AccidentImageItem:
      type: object
      properties:
        id:
          type: string
          nullable: true
      additionalProperties: false
    AccidentImageResponseItem:
      type: object
      properties:
        id:
          type: string
          nullable: true
        imageUrl:
          type: string
          nullable: true
      additionalProperties: false
    AccidentImageResponseItemPaginationResponse:
      type: object
      properties:
        total:
          type: integer
          description: Количество элементов.
          format: int64
        items:
          type: array
          items:
            $ref: '#/components/schemas/AccidentImageResponseItem'
          description: Массив элементов.
          nullable: true
      additionalProperties: false
    AccidentImagesContract:
      type: object
      properties:
        images:
          type: array
          items:
            type: string
          nullable: true
      additionalProperties: false
    AccidentNote:
      type: object
      properties:
        id:
          type: string
          nullable: true
        accidentId:
          type: string
          nullable: true
        crashId:
          type: integer
          format: int32
        items:
          type: array
          items:
            $ref: '#/components/schemas/AccidentNoteItem'
          nullable: true
      additionalProperties: false
    AccidentNoteContract:
      type: object
      properties:
        text:
          type: string
          nullable: true
      additionalProperties: false
    AccidentNoteItem:
      type: object
      properties:
        id:
          type: string
          nullable: true
        text:
          type: string
          nullable: true
      additionalProperties: false
    AccidentNoteItemPaginationResponse:
      type: object
      properties:
        total:
          type: integer
          description: Количество элементов.
          format: int64
        items:
          type: array
          items:
            $ref: '#/components/schemas/AccidentNoteItem'
          description: Массив элементов.
          nullable: true
      additionalProperties: false
    AccidentTableResponseItem:
      type: object
      properties:
        id:
          type: integer
          description: Идентификатор убытка.
          format: int32
        voucherNumber:
          type: integer
          description: Номер ваучера.
          format: int32
        crashObjectId:
          type: string
          description: Служебный идентификатор массива данных.
          nullable: true
        accidentObjectId:
          type: string
          description: Служебный идентификатор аварии.
          nullable: true
        crashUniqueIdentifier:
          type: integer
          description: Уникальный идентификатор массива данных.
          format: int32
        crashDateTime:
          type: string
          description: Дата и время аварии.
          format: date-time
        longitude:
          type: number
          description: Долгота.
          format: double
        latitude:
          type: number
          description: Широта.
          format: double
        maximumAcceleration:
          type: number
          description: Максимальное значение ускорения (g).
          format: double
        clientName:
          type: string
          description: Полное имя клиента.
          nullable: true
        clientFirstName:
          type: string
          description: Имя клиента.
          nullable: true
        clientMiddleName:
          type: string
          description: Отчество клиента.
          nullable: true
        clientLastName:
          type: string
          description: Фамилия клиента.
          nullable: true
        clientPhone:
          type: string
          description: Телефон клиента.
          nullable: true
        vehicleRegNumber:
          type: string
          description: Регномер транспортного средства.
          nullable: true
        statusOfRoadAccidentId:
          type: integer
          format: int32
          nullable: true
        validationType:
          $ref: '#/components/schemas/OctoSource'
      additionalProperties: false
      description: Представляет информацию о записи аварии в таблице.
    AccidentTableResponseItemTableResponse:
      type: object
      properties:
        total:
          type: integer
          description: Количество элементов.
          format: int64
        items:
          type: array
          items:
            $ref: '#/components/schemas/AccidentTableResponseItem'
          description: Массив элементов.
          nullable: true
        rowHeaders:
          type: object
          additionalProperties:
            type: string
            nullable: true
          description: Словарь доступных для сортировки или фильтрации полей.
          nullable: true
      additionalProperties: false
    AccidentUpdateDamagedCar:
      type: object
      properties:
        damagedParts:
          type: array
          items:
            $ref: '#/components/schemas/AccidentUpdateDamagedPart'
          nullable: true
        id:
          type: integer
          format: int32
          nullable: true
        vehicleIdentifier:
          type: string
          nullable: true
        driver:
          type: string
          nullable: true
        driverPhone:
          type: string
          nullable: true
        impact:
          $ref: '#/components/schemas/Impact'
        participated:
          type: integer
          format: int32
          nullable: true
        damage:
          $ref: '#/components/schemas/Damage'
        crashDynamicsId:
          type: integer
          format: int32
          nullable: true
        crashDynamicsDescription:
          type: string
          nullable: true
        passengersCount:
          type: integer
          format: int32
          nullable: true
        passengersNames:
          type: string
          nullable: true
        damageDescriptionId:
          type: integer
          format: int32
          nullable: true
      additionalProperties: false
    AccidentUpdateDamagedPart:
      type: object
      properties:
        id:
          type: integer
          format: int32
          nullable: true
        carPartId:
          type: integer
          format: int32
        isDamaged:
          type: boolean
        declaredAsDamaged:
          type: boolean
      additionalProperties: false
    AccidentUpdateResponse:
      type: object
      properties:
        accidentId:
          type: integer
          format: int32
      additionalProperties: false
    AccountInfoResponse:
      type: object
      properties:
        userId:
          type: integer
          format: int32
        fullName:
          type: string
          nullable: true
        abbrv:
          type: string
          nullable: true
        companyName:
          type: string
          nullable: true
        isAdmin:
          type: boolean
        email:
          type: string
          nullable: true
        roles:
          type: array
          items:
            type: string
          nullable: true
        companyFlag:
          $ref: '#/components/schemas/CompanyFlag'
        color:
          type: string
          nullable: true
        hostRegex:
          type: string
          nullable: true
        imageData:
          type: string
          nullable: true
      additionalProperties: false
    AnomalyCode:
      enum:
        - 0
        - 1
        - 2
        - 3
        - 4
        - 5
        - 6
        - 7
        - 8
        - 9
        - 10
        - 11
        - 13
        - 14
      type: integer
      description: "Коды аномалий телематических устройств:\r\n`0` - нет аномалии (None),\r\n`1` - большие расстояния между позициями (LargeDistanceBetweenPositions),\r\n`2` - движение с выключенным зажиганием (MovementWithIgnitionOff),\r\n`3` - включение/выключение зажигания без движения (IgnitionWithoutMovement),\r\n`4` - нет связи с устройством более 30 дней (NoConnectionOver30Days),\r\n`5` - нет данных с момента активации (NoDataSinceActivation),\r\n`6` - множественные сбои питания (MultiplePowerFailures),\r\n`7` - большое количество аварий (LargeNumberOfCrashes),\r\n`8` - смещение датчика ускорения (AccelerometerShift),\r\n`9` - нет данных спустя 10 дней с момента привязки (NotActivatedSinceBinding),\r\n`10` - слишком много эвентов (TooManyEvents),\r\n`11` - повторное отсутствие связи (RepeatedConnectionLoss),\r\n`13` - устройство отсутствует в парсере (DeviceNotInParser),\r\n`14` - некорректные показания акселерометра (IncorrectAccelerometerValues)"
      format: int32
    AnomalyHistoryItem:
      type: object
      properties:
        anomalyCode:
          $ref: '#/components/schemas/AnomalyCode'
        severity:
          type: integer
          description: Уровень тяжести
          format: int32
          nullable: true
        createdAt:
          type: string
          description: Дата возникновения
          format: date-time
          nullable: true
      additionalProperties: false
    AnomalySeverityLevel:
      enum:
        - 0
        - 1
        - 2
        - 3
        - 4
        - 5
      type: integer
      description: "Уровни серьезности аномалий телематических устройств:\r\n`0` - нет аномалий (None),\r\n`1` - незначительная аномалия (Low),\r\n`2` - низкая серьезность - возможны ложные срабатывания (Minor),\r\n`3` - средняя серьезность - может влиять на качество данных (Medium),\r\n`4` - высокая серьезность - проблемы с основными функциями (High),\r\n`5` - критическая серьезность - отсутствие данных, потеря связи (Critical)"
      format: int32
    AnomalyStatusInfo:
      type: object
      properties:
        severityLevel:
          $ref: '#/components/schemas/AnomalySeverityLevel'
        anomalyCode:
          $ref: '#/components/schemas/AnomalyCode'
        lastOccurrence:
          type: string
          description: Дата последнего возникновения аномалии
          format: date-time
          nullable: true
        daysSinceLastCritical:
          type: integer
          description: Количество дней с момента последней критической аномалии
          format: int32
        daysSinceLastAnomaly:
          type: integer
          description: Количество дней с момента последней аномалии
          format: int32
        recentHistory:
          type: array
          items:
            $ref: '#/components/schemas/AnomalyHistoryItem'
          description: История недавних аномалий
          nullable: true
      additionalProperties: false
      description: Информация о статусе аномалий устройства
    AuthRequest:
      type: object
      properties:
        login:
          type: string
          nullable: true
        password:
          type: string
          nullable: true
      additionalProperties: false
    AuthResponse:
      type: object
      properties:
        accessToken:
          type: string
          nullable: true
      additionalProperties: false
    BillingCountResponse:
      type: object
      properties:
        contractTypeIds:
          type: string
          description: Идентификаторы типов контрактов через запятую.
          nullable: true
        billingType:
          $ref: '#/components/schemas/BillingType'
        billingPeriod:
          type: string
          description: Биллинговый период, в формате  `YYYY-mm`
          nullable: true
        count:
          type: number
          description: Количество ваучеров, зависит от типа биллинга
          format: double
        isEstimate:
          type: boolean
          description: >-
            Флаг, является ли данное значение оценочным (если запрошен еще не
            завершившийся период)
      additionalProperties: false
      description: Ответ с количественной информацией о биллинге
    BillingDetailsResponse:
      type: object
      properties:
        contractTypeIds:
          type: string
          description: Идентификаторы типов контрактов
          nullable: true
        billingPeriod:
          type: string
          description: Биллинговый период, в формате  `YYYY-mm`
          nullable: true
        activeVoucherCount:
          type: integer
          description: Количество активных ваучеров в отчетном периоде
          format: int32
        closedVoucherCount:
          type: integer
          description: Количество закрытых ваучеров в отчетном периоде
          format: int32
        totalVoucherCount:
          type: integer
          description: Общее количество ваучеров в отчетном периоде
          format: int32
        daysInPeriod:
          type: integer
          description: Количество дней в отчетном периоде
          format: int32
        totalActiveDays:
          type: number
          description: Сумма активных дней для всех ваучеров
          format: double
        activeDaysRatio:
          type: number
          description: Коэффициент активности ваучеров
          format: double
        dailyEquivalentCount:
          type: number
          description: >-
            Эквивалент количества ваучеров, рассчитанный на основе активных дней
            (подневный биллинг)
          format: double
        isEstimate:
          type: boolean
          description: >-
            Флаг, является ли данное значение оценочным (если запрошен еще не
            завершившийся период)
        activeVouchers:
          type: array
          items:
            $ref: '#/components/schemas/VoucherDetailsItem'
          description: Список активных ваучеров
          nullable: true
        closedVouchers:
          type: array
          items:
            $ref: '#/components/schemas/VoucherDetailsItem'
          description: Список закрытых ваучеров
          nullable: true
      additionalProperties: false
      description: Детальный ответ с информацией о биллинге ваучеров
    BillingType:
      enum:
        - 0
        - 1
      type: integer
      description: 'Тип биллинга: `0` - помесячный,`1` - подневный.'
      format: int32
    ClientContractStatus:
      enum:
        - 0
        - 1
      type: integer
      description: 'Статус ваучера: `1` - открыт, `0` - закрыт.'
      format: int32
    ClientCreationData:
      type: object
      properties:
        companyFlag:
          $ref: '#/components/schemas/CompanyFlag'
        id:
          type: integer
          format: int32
          nullable: true
        address:
          type: string
          nullable: true
        birthDate:
          type: string
          format: date-time
          nullable: true
        email:
          type: string
          description: >-
            Адрес электронной почты, на который будет выслан пароль от учетной
            записи ваучера. Не высылается если оставить поле пустым.
          nullable: true
        firstDrivingLicenseDate:
          type: string
          format: date-time
          nullable: true
        firstName:
          type: string
          nullable: true
        middleName:
          type: string
          nullable: true
        lastName:
          type: string
          description: >-
            В режиме `companyFlag=1` обычно используется регномер или бортовой
            номер ТС.
          nullable: true
        phone:
          type: string
          nullable: true
        phone2:
          type: string
          nullable: true
        phone3:
          type: string
          nullable: true
        homeAddress:
          type: string
          nullable: true
        drivingLicenseNumber:
          type: string
          nullable: true
        postCode:
          type: integer
          format: int32
          nullable: true
        gender:
          $ref: '#/components/schemas/Gender'
      additionalProperties: false
    ClientDetails:
      type: object
      properties:
        id:
          type: integer
          format: int32
        firstName:
          type: string
          nullable: true
        middleName:
          type: string
          nullable: true
        lastName:
          type: string
          nullable: true
        birthDate:
          type: string
          format: date-time
          nullable: true
        gender:
          $ref: '#/components/schemas/Gender'
        firstDrivingLicenseDate:
          type: string
          format: date-time
          nullable: true
        address:
          type: string
          nullable: true
        clientZIPCode:
          type: integer
          format: int32
        homeAddress:
          type: string
          nullable: true
        phone:
          type: string
          nullable: true
        phone2:
          type: string
          nullable: true
        phone3:
          type: string
          nullable: true
        email:
          type: string
          nullable: true
        clientCity:
          type: string
          nullable: true
      additionalProperties: false
    CodeItem:
      type: object
      properties:
        id:
          type: integer
          format: int32
        code:
          type: string
          nullable: true
        title:
          type: string
          nullable: true
      additionalProperties: false
    CodeItemPaginationResponse:
      type: object
      properties:
        total:
          type: integer
          description: Количество элементов.
          format: int64
        items:
          type: array
          items:
            $ref: '#/components/schemas/CodeItem'
          description: Массив элементов.
          nullable: true
      additionalProperties: false
    CompanyFlag:
      enum:
        - 0
        - 1
      type: integer
      description: "Признак типа транспортного средства:\r\n<list type=\"bullet\"><item>`1` - корпоративное,</item><item>`0` - личное.</item></list>\r\nПо умолчанию `1` для парков, что позволяет не заполнять много полей по физлицу."
      format: int32
    ContractDetails:
      type: object
      properties:
        number:
          type: string
          nullable: true
        signatureDate:
          type: string
          format: date-time
          nullable: true
        commencementDate:
          type: string
          format: date-time
          nullable: true
        closureDate:
          type: string
          format: date-time
          nullable: true
        closureTestDate:
          type: string
          format: date-time
          nullable: true
        paymentDate:
          type: string
          format: date-time
          nullable: true
        fullInsurancePremium:
          type: integer
          format: int32
        branch:
          type: string
          nullable: true
        management:
          type: string
          nullable: true
        country:
          $ref: '#/components/schemas/InfoItem'
        contractType:
          $ref: '#/components/schemas/InfoItem'
        terminalAffiliation:
          $ref: '#/components/schemas/InfoItem'
      additionalProperties: false
    CrashData:
      type: object
      properties:
        numCrash:
          type: integer
          description: Количество FNOL.
          format: int32
        numMiniCrash:
          type: integer
          description: Количество мини-крэшей.
          format: int32
      additionalProperties: false
      description: Представляет информацию о крешах за указанный период времени.
    Damage:
      enum:
        - 0
        - 1
        - 2
        - 3
        - 4
        - 5
        - 6
        - 7
        - 8
        - 9
        - 10
        - 11
        - 12
        - 13
        - 14
        - 15
        - 16
        - 17
        - 18
        - 19
        - 20
        - 21
        - 22
        - 23
        - 24
        - 25
      type: integer
      format: int32
    DayOfWeek:
      enum:
        - 0
        - 1
        - 2
        - 3
        - 4
        - 5
        - 6
      type: integer
      format: int32
    DeviceDetails:
      type: object
      properties:
        imei:
          type: string
          nullable: true
        iccIdentifier:
          type: string
          nullable: true
        deviceIdentifier:
          type: string
          nullable: true
        id:
          type: integer
          format: int32
        modelName:
          type: string
          nullable: true
        brandName:
          type: string
          nullable: true
      additionalProperties: false
    DeviceItemResponse:
      type: object
      properties:
        id:
          type: integer
          description: Уникальный идентификатор устройства в системе.
          format: int32
        imei:
          type: string
          description: "Международный идентификатор мобильного оборудования (IMEI).\r\nОсновной внешний идентификатор устройства."
          nullable: true
        serialNumber:
          type: string
          description: "Серийный номер устройства.\r\nИспользуется для дополнительной идентификации и учета."
          nullable: true
        terminalOctoStatus:
          $ref: '#/components/schemas/TerminalOctoStatus'
      additionalProperties: false
      description: "Представляет детальную информацию об устройстве в системе.\r\nСодержит ключевые идентификаторы и статус терминала."
    Driver:
      type: object
      properties:
        id:
          type: integer
          format: int32
        firstName:
          type: string
          nullable: true
        middleName:
          type: string
          nullable: true
        lastName:
          type: string
          nullable: true
        birthDate:
          type: string
          format: date-time
        gender:
          type: integer
          format: int32
        drivingLicenseNumber:
          type: string
          nullable: true
        firstDrivingLicenseDate:
          type: string
          format: date-time
        email:
          type: string
          nullable: true
        phone:
          type: string
          nullable: true
        employerUserId:
          type: integer
          format: int32
        hidden:
          type: boolean
        sortOrder:
          type: number
          format: float
        rowVersion:
          type: string
          format: byte
          nullable: true
        phone2:
          type: string
          nullable: true
        phone3:
          type: string
          nullable: true
      additionalProperties: false
    DriverCategory:
      enum:
        - 10
        - 20
        - 30
        - 40
        - 50
        - 60
        - 70
        - 80
        - 90
        - 100
        - 110
        - 120
        - 130
        - 140
        - 150
        - 160
      type: integer
      description: "Категории водительских прав:\r\n<list type=\"bullet\"><item>`10` - мотоциклы (A),</item><item>`20` - легкие мотоциклы (A1),</item><item>`30` - легковые автомобили (B),</item><item>`40` - легковые автомобили с прицепом (BE),</item><item>`50` - легкие автомобили (B1),</item><item>`60` - грузовые автомобили (С),</item><item>`70` - грузовые автомобили с прицепом (CE),</item><item>`80` - средние грузовые автомобили (С1),</item><item>`90` - средние грузовые автомобили с прицепом (C1E),</item><item>`100` - пассажирские автобусы (D),</item><item>`110` - пассажирские автобусы с прицепом (DE),</item><item>`120` - небольшие пассажирские автобусы (D1),</item><item>`130` - небольшие пассажирские автобусы с прицепом (D1E),</item><item>`140` - мопеды и легкие квадроциклы (M),</item><item>`150` - трамваи (Tm),</item><item>`160` - троллейбусы (Tb).</item></list>"
      format: int32
    EventAnalysis:
      type: object
      properties:
        eventType:
          $ref: '#/components/schemas/EventType'
        currentDensity:
          type: number
          description: Текущая плотность событий (количество на км).
          format: double
        currentPercentile:
          type: number
          description: "Текущий процентиль относительно всех (0-100).\r\nБольше значение = больше событий = хуже."
          format: double
        currentImpact:
          type: number
          description: >-
            Текущее влияние на скоринг (отрицательное значение означает потерю
            баллов).
          format: double
        potentialScoreGain:
          $ref: '#/components/schemas/ScoreGainRange'
        difficultyLevel:
          type: integer
          description: "Уровень сложности достижения цели:\r\n`1` = поддержание текущего уровня\r\n`2` = легкая сложность  \r\n`3` = средняя сложность\r\n`4` = высокая сложность\r\n`5` = очень высокая сложность"
          format: int32
        targetPercentile:
          type: integer
          description: Целевой процентиль для улучшения вождения.
          format: int32
        targetDensity:
          type: number
          description: Целевая плотность событий (количество на км)
          format: double
        eventsPerDay:
          type: number
          description: Текущее количество событий в день
          format: double
        eventsPerHour:
          type: number
          description: Текущее количество событий в час
          format: double
        targetEventsPerDay:
          type: number
          description: Целевое количество событий в день
          format: double
        targetEventsPerHour:
          type: number
          description: Целевое количество событий в час
          format: double
      additionalProperties: false
      description: Анализ отдельного типа события
    EventDensityAnalysisResult:
      type: object
      properties:
        baselineAnalyses:
          type: array
          items:
            $ref: '#/components/schemas/EventAnalysis'
          nullable: true
        totalPotentialImpact:
          type: number
          description: Потенциальный прирост скоринга при достижении целевого уровня.
          format: double
        overallPercentile:
          type: number
          description: "Общий процентиль водителя относительно всех водителей (0-100).\r\nМеньше значение = лучше результат (0 = лучший, 100 = худший)"
          format: double
        daysCount:
          type: integer
          description: Количество дней в анализируемом периоде
          format: int32
        hoursCount:
          type: integer
          description: Количество часов в анализируемом периоде
          format: int32
      additionalProperties: false
      description: Результат анализа плотности событий
    EventType:
      enum:
        - 1
        - 2
        - 5
        - 6
      type: integer
      description: "Типы событий:\r\n`1` - ускорения,\r\n`2` - торможения,  \r\n`5` - повороты,\r\n`6` - смены направления (виляния)."
      format: int32
    ExceptionResponse:
      type: object
      properties:
        message:
          type: string
          nullable: true
      additionalProperties: false
    ExoStoryItemBackgroundType:
      enum:
        - 0
        - 1
      type: integer
      format: int32
    ExoStoryItemHeaderPositionType:
      enum:
        - 0
        - 1
        - 2
      type: integer
      format: int32
    ExoStoryResponse:
      type: object
      properties:
        items:
          type: array
          items:
            $ref: '#/components/schemas/ExoStoryResponseStory'
          nullable: true
      additionalProperties: false
    ExoStoryResponseStory:
      type: object
      properties:
        id:
          type: string
          nullable: true
        imageUrl:
          type: string
          nullable: true
        header:
          type: string
          nullable: true
        items:
          type: array
          items:
            $ref: '#/components/schemas/ExoStoryResponseStoryItem'
          nullable: true
        colorCode:
          type: string
          nullable: true
        backgroundType:
          $ref: '#/components/schemas/ExoStoryItemBackgroundType'
      additionalProperties: false
    ExoStoryResponseStoryItem:
      type: object
      properties:
        imageUrl:
          type: string
          nullable: true
        header:
          type: string
          nullable: true
        url:
          type: string
          nullable: true
        colorCode:
          type: string
          nullable: true
        headerPosition:
          $ref: '#/components/schemas/ExoStoryItemHeaderPositionType'
        subHeader:
          type: string
          nullable: true
        backgroundType:
          $ref: '#/components/schemas/ExoStoryItemBackgroundType'
      additionalProperties: false
    FuelType:
      enum:
        - 0
        - 10
        - 20
        - 30
      type: integer
      description: "Типы топлива:\r\n<list type=\"bullet\"><item>`0` - бензин,</item><item>`10` - дизель,</item><item>`20` - гибридный двигатель,</item><item>`30` - электрический двигатель.</item></list>"
      format: int32
    Gender:
      enum:
        - 0
        - 1
      type: integer
      format: int32
    Impact:
      enum:
        - 1
        - 2
        - 3
      type: integer
      format: int32
    InfoItem:
      type: object
      properties:
        id:
          type: integer
          description: "Уникальный идентификатор элемента.\r\nМожет быть не указан (null)."
          format: int32
          nullable: true
        title:
          type: string
          description: Название или описание элемента справочника.
          nullable: true
      additionalProperties: false
      description: "Базовый класс для элементов справочника с идентификатором и названием.\r\nИспользуется для представления простых справочных сущностей в системе."
    InfoItemPaginationResponse:
      type: object
      properties:
        total:
          type: integer
          description: Количество элементов.
          format: int64
        items:
          type: array
          items:
            $ref: '#/components/schemas/InfoItem'
          description: Массив элементов.
          nullable: true
      additionalProperties: false
    InfoItemResponseItem:
      type: object
      properties:
        id:
          type: integer
          description: "Уникальный идентификатор элемента.\r\nМожет быть не указан (null)."
          format: int32
          nullable: true
        title:
          type: string
          description: Название или описание элемента справочника.
          nullable: true
      additionalProperties: false
      description: "Базовый класс для элементов справочника с идентификатором и названием.\r\nИспользуется для представления простых справочных сущностей в системе."
    InfoItemResponseItemPaginationResponse:
      type: object
      properties:
        total:
          type: integer
          description: Количество элементов.
          format: int64
        items:
          type: array
          items:
            $ref: '#/components/schemas/InfoItemResponseItem'
          description: Массив элементов.
          nullable: true
      additionalProperties: false
    ListResponseVehicleBrandItem:
      type: object
      properties:
        id:
          type: string
          nullable: true
        name:
          type: string
          nullable: true
      additionalProperties: false
    ListResponseVehicleBrandItemListResponse:
      type: object
      properties:
        items:
          type: array
          items:
            $ref: '#/components/schemas/ListResponseVehicleBrandItem'
          nullable: true
      additionalProperties: false
    ListResponseVehicleModelItem:
      type: object
      properties:
        id:
          type: string
          nullable: true
      additionalProperties: false
    ListResponseVehicleModelItemListResponse:
      type: object
      properties:
        items:
          type: array
          items:
            $ref: '#/components/schemas/ListResponseVehicleModelItem'
          nullable: true
      additionalProperties: false
    OctoProcessingStatus:
      enum:
        - 0
        - 1
        - 2
        - 3
      type: integer
      format: int32
    OctoSource:
      enum:
        - 0
        - 1
      type: integer
      description: "Тип убытка, присваивается во время валидации:\r\n<list type=\"bullet\"><item>`0` - FNOL,</item><item>`1` - мини-крэш.</item></list>"
      format: int32
    OperatorContract:
      type: object
      properties:
        insCompanyId:
          type: integer
          format: int32
          nullable: true
        role:
          type: integer
          format: int32
        email:
          type: string
          nullable: true
        firstName:
          type: string
          nullable: true
        middleName:
          type: string
          nullable: true
        lastName:
          type: string
          nullable: true
      additionalProperties: false
    OperatorCreationResponse:
      type: object
      properties:
        operatorId:
          type: integer
          format: int32
      additionalProperties: false
    OperatorTableResponseItem:
      type: object
      properties:
        id:
          type: integer
          format: int32
        categoryId:
          type: integer
          format: int32
        categoryTitle:
          type: string
          nullable: true
        email:
          type: string
          nullable: true
        firstName:
          type: string
          nullable: true
        lastName:
          type: string
          nullable: true
        middleName:
          type: string
          nullable: true
        isActive:
          type: boolean
        sysName:
          type: string
          nullable: true
      additionalProperties: false
    OperatorTableResponseItemTableResponse:
      type: object
      properties:
        total:
          type: integer
          description: Количество элементов.
          format: int64
        items:
          type: array
          items:
            $ref: '#/components/schemas/OperatorTableResponseItem'
          description: Массив элементов.
          nullable: true
        rowHeaders:
          type: object
          additionalProperties:
            type: string
            nullable: true
          description: Словарь доступных для сортировки или фильтрации полей.
          nullable: true
      additionalProperties: false
    ProblemDetails:
      type: object
      properties:
        type:
          type: string
          nullable: true
        title:
          type: string
          nullable: true
        status:
          type: integer
          format: int32
          nullable: true
        detail:
          type: string
          nullable: true
        instance:
          type: string
          nullable: true
      additionalProperties: {}
    RougeHeatmapResponse:
      type: object
      properties:
        items:
          type: array
          items:
            $ref: '#/components/schemas/RougeHeatmapResponseItem'
          nullable: true
      additionalProperties: false
    RougeHeatmapResponseItem:
      type: object
      properties:
        count:
          type: integer
          format: int32
        range:
          type: number
          format: double
        longitude:
          type: number
          format: double
        latitude:
          type: number
          format: double
        density:
          type: number
          format: double
      additionalProperties: false
    RougeTripEventType:
      enum:
        - 0
        - 1
        - 2
        - 3
        - 5
        - 6
      type: integer
      format: int32
    RougeTripResponse:
      type: object
      properties:
        id:
          type: string
          nullable: true
        voucherId:
          type: string
          nullable: true
        flespiTripId:
          type: integer
          format: int64
        fromDate:
          type: integer
          format: int64
        toDate:
          type: integer
          format: int64
        maxSpeed:
          type: integer
          format: int32
        weekIncluded:
          type: boolean
        globalIncluded:
          type: boolean
        metricGeocodingCount:
          type: integer
          format: int32
        metricEventCount:
          type: integer
          format: int32
        metricPointCount:
          type: integer
          format: int32
        fromPosition:
          $ref: '#/components/schemas/RougeTripResponsePoint'
        toPosition:
          $ref: '#/components/schemas/RougeTripResponsePoint'
        imei:
          type: string
          nullable: true
        positions:
          type: array
          items:
            $ref: '#/components/schemas/RougeTripResponsePoint'
          nullable: true
        events:
          type: array
          items:
            $ref: '#/components/schemas/RougeTripResponseEvent'
          nullable: true
        distance:
          type: number
          format: double
        cityDistance:
          type: number
          format: double
        cityTime:
          type: integer
          format: int64
        highwayDistance:
          type: number
          format: double
        highwayTime:
          type: integer
          format: int64
        notUrbanDistance:
          type: number
          format: double
          readOnly: true
        notUrbanTime:
          type: integer
          format: int64
          readOnly: true
        nightDistance:
          type: number
          format: double
        nightTime:
          type: integer
          format: int64
        dayDistance:
          type: number
          format: double
          readOnly: true
        dayTime:
          type: integer
          format: int64
          readOnly: true
        weekKey:
          type: string
          nullable: true
        totalTime:
          type: integer
          format: int64
          readOnly: true
        sundayDrivingDistance:
          type: number
          format: double
        saturdayDrivingDistance:
          type: number
          format: double
        fridayDrivingDistance:
          type: number
          format: double
        thursdayDrivingDistance:
          type: number
          format: double
        wednesdayDrivingDistance:
          type: number
          format: double
        tuesdayDrivingDistance:
          type: number
          format: double
        mondayDrivingDistance:
          type: number
          format: double
        sundayDrivingTime:
          type: integer
          format: int64
        saturdayDrivingTime:
          type: integer
          format: int64
        fridayDrivingTime:
          type: integer
          format: int64
        thursdayDrivingTime:
          type: integer
          format: int64
        wednesdayDrivingTime:
          type: integer
          format: int64
        tuesdayDrivingTime:
          type: integer
          format: int64
        mondayDrivingTime:
          type: integer
          format: int64
        rougeTripNoteTypes:
          type: array
          items:
            type: integer
            format: int32
          nullable: true
        customNotes:
          type: array
          items:
            type: string
          nullable: true
      additionalProperties: false
    RougeTripResponseEvent:
      type: object
      properties:
        position:
          $ref: '#/components/schemas/RougeTripResponsePoint'
        type:
          $ref: '#/components/schemas/RougeTripEventType'
      additionalProperties: false
    RougeTripResponsePoint:
      type: object
      properties:
        latitude:
          type: number
          format: double
        longitude:
          type: number
          format: double
        address:
          type: string
          nullable: true
        speed:
          type: integer
          format: int32
        speedLimit:
          type: integer
          format: int32
        heading:
          type: integer
          format: int32
        meters:
          type: integer
          format: int32
        timestamp:
          type: integer
          format: int64
        isNightPoint:
          type: boolean
        isHighWay:
          type: boolean
        isInCity:
          type: boolean
      additionalProperties: false
    RougeTripUpdateNotesContract:
      type: object
      properties:
        noteTypes:
          type: array
          items:
            type: integer
            format: int32
          nullable: true
        customNotes:
          type: array
          items:
            type: string
          nullable: true
      additionalProperties: false
    RougeTripsListResponse:
      type: object
      properties:
        items:
          type: array
          items:
            $ref: '#/components/schemas/RougeTripResponse'
          nullable: true
      additionalProperties: false
    ScoreGainRange:
      type: object
      properties:
        minGain:
          type: number
          description: Минимальный прирост баллов при достижении цели
          format: double
        maxGain:
          type: number
          description: Максимальный прирост баллов при достижении цели
          format: double
      additionalProperties: false
      description: Диапазон потенциального прироста баллов
    StatisticSummingDayResponse:
      type: object
      properties:
        items:
          type: array
          items:
            $ref: '#/components/schemas/StatisticSummingDayResponseItem'
          description: Список скоринговых показателей по дням.
          nullable: true
        recommendations:
          $ref: '#/components/schemas/EventDensityAnalysisResult'
      additionalProperties: false
      description: >-
        Представляет выборку скоринговых показателей за определенный период с
        грануляцией 1 день.
    StatisticSummingDayResponseItem:
      type: object
      properties:
        numEvents:
          type: integer
          description: Количество событий.
          format: int64
        scoring:
          type: number
          description: Скоринговая оценка.
          format: double
        ecoIndex:
          type: number
          description: Эко-индекс.
          format: double
        fuelConsumption:
          type: number
          description: Расход топлива (мл/100 км).
          format: double
        totalHoursRunning:
          type: number
          description: Общее время в движении (часы).
          format: double
        totalDistance:
          type: number
          description: Общий пробег (км).
          format: double
        hoursTravelledInTheNight:
          type: number
          description: Время движения в ночное время (часы).
          format: double
        unixTimeDay:
          type: integer
          description: Unix timestamp начала дня (00:00:00 UTC).
          format: int64
        fromTimeMin:
          type: integer
          description: "Количество секунд от начала дня до начала первой поездки.\r\nДля получения точного времени нужно прибавить к UnixTimeDay."
          format: int32
        fromTimeMax:
          type: integer
          description: "Количество секунд от начала дня до начала последней поездки.\r\nДля получения точного времени нужно прибавить к UnixTimeDay."
          format: int32
        toTimeMax:
          type: integer
          description: "Количество секунд от начала дня до окончания последней поездки.\r\nДля получения точного времени нужно прибавить к UnixTimeDay."
          format: int32
        day:
          type: integer
          description: День месяца.
          format: int32
        month:
          type: integer
          description: Месяц.
          format: int32
        year:
          type: integer
          description: Год.
          format: int32
        distanceInUrbanAreas:
          type: number
          description: Пробег в городской черте (км).
          format: double
        distanceOnMotorways:
          type: number
          description: Пробег по магистралям (км).
          format: double
        distanceOnOtherTypesOfRoad:
          type: number
          description: Пробег по другим типам дорог (км).
          format: double
        hasAnomaly:
          type: boolean
          description: Флаг наличия аномалий для данного дня.
      additionalProperties: false
      description: Содержит агрегированные скоринговые показатели за один день.
    StatisticSummingGlobalResponse:
      type: object
      properties:
        voucherId:
          type: string
          description: Служебный идентификатор ваучера
          nullable: true
        totalDays:
          type: integer
          description: Общее количество дней в выборке
          format: int64
        score:
          type: number
          description: Итоговый скоринговый балл
          format: double
        totalDistanceAvg:
          type: number
          description: Средний пробег за день
          format: double
        totalDistanceSum:
          type: number
          description: Суммарный пробег за весь период
          format: double
        totalTimeRunningAvg:
          type: number
          description: Среднее время в движении за день
          format: double
        totalTimeRunningSum:
          type: integer
          description: Суммарное время в движении за весь период
          format: int64
      additionalProperties: false
      description: Глобальная агрегированная статистика скоринга
    StatisticSummingGlobalResponseTableResponse:
      type: object
      properties:
        total:
          type: integer
          description: Количество элементов.
          format: int64
        items:
          type: array
          items:
            $ref: '#/components/schemas/StatisticSummingGlobalResponse'
          description: Массив элементов.
          nullable: true
        rowHeaders:
          type: object
          additionalProperties:
            type: string
            nullable: true
          description: Словарь доступных для сортировки или фильтрации полей.
          nullable: true
      additionalProperties: false
    StatisticSummingMonthResponse:
      type: object
      properties:
        items:
          type: array
          items:
            $ref: '#/components/schemas/StatisticSummingMonthResponseItem'
          description: Список элементов месячной статистики
          nullable: true
      additionalProperties: false
      description: Ответ с агрегированной статистикой по месяцам
    StatisticSummingMonthResponseItem:
      type: object
      properties:
        numEvents:
          type: integer
          description: Количество событий.
          format: int64
        scoring:
          type: number
          description: Скоринговая оценка.
          format: double
        ecoIndex:
          type: number
          description: Эко-индекс.
          format: double
        fuelConsumption:
          type: number
          description: Расход топлива (мл/100 км).
          format: double
        totalHoursRunning:
          type: number
          description: Общее время в движении (часы).
          format: double
        totalDistance:
          type: number
          description: Общий пробег (км).
          format: double
        hoursTravelledInTheNight:
          type: number
          description: Время движения в ночное время (часы).
          format: double
        unixTimeDay:
          type: integer
          description: Unix timestamp начала дня (00:00:00 UTC).
          format: int64
        fromTimeMin:
          type: integer
          description: "Количество секунд от начала дня до начала первой поездки.\r\nДля получения точного времени нужно прибавить к UnixTimeDay."
          format: int32
        fromTimeMax:
          type: integer
          description: "Количество секунд от начала дня до начала последней поездки.\r\nДля получения точного времени нужно прибавить к UnixTimeDay."
          format: int32
        toTimeMax:
          type: integer
          description: "Количество секунд от начала дня до окончания последней поездки.\r\nДля получения точного времени нужно прибавить к UnixTimeDay."
          format: int32
        day:
          type: integer
          description: День месяца.
          format: int32
        month:
          type: integer
          description: Месяц.
          format: int32
        year:
          type: integer
          description: Год.
          format: int32
        distanceInUrbanAreas:
          type: number
          description: Пробег в городской черте (км).
          format: double
        distanceOnMotorways:
          type: number
          description: Пробег по магистралям (км).
          format: double
        distanceOnOtherTypesOfRoad:
          type: number
          description: Пробег по другим типам дорог (км).
          format: double
        hasAnomaly:
          type: boolean
          description: Флаг наличия аномалий для данного дня.
        stdRegularity:
          type: integer
          description: Показатель регулярности поездок в течение месяца (в процентах)
          format: int32
      additionalProperties: false
      description: Элемент месячной статистики, расширяющий базовую дневную статистику
    StatisticSummingPeriodResponse:
      type: object
      properties:
        scoring:
          type: number
          description: Скоринговая оценка за выбранный период.
          format: double
          nullable: true
        numBraking:
          type: number
          description: Количество событий торможения.
          format: double
          nullable: true
        numAcceleration:
          type: number
          description: Количество событий ускорения.
          format: double
          nullable: true
        numCornering:
          type: number
          description: Количество событий поворота.
          format: double
          nullable: true
        numDirectionChange:
          type: number
          description: Количество событий смены направления (виляния).
          format: double
          nullable: true
        numNightDriving:
          type: number
          description: Количество событий ночного вождения.
          format: double
          nullable: true
        totalDistance:
          type: number
          description: Общий пробег за выбранный период в километрах.
          format: double
          nullable: true
        crashData:
          $ref: '#/components/schemas/CrashData'
        recommendations:
          $ref: '#/components/schemas/EventDensityAnalysisResult'
        hasAnomaly:
          type: boolean
          description: Флаг наличия аномалий в периоде.
      additionalProperties: false
      description: >-
        Представляет агрегированные скоринговые показатели и информацию о
        событиях за указанный период времени.
    StatisticUnitDayNightMileageResponse:
      type: object
      properties:
        items:
          type: array
          items:
            $ref: '#/components/schemas/StatisticUnitDayNightMileageResponseItem'
          nullable: true
      additionalProperties: false
    StatisticUnitDayNightMileageResponseItem:
      type: object
      properties:
        weekDay:
          $ref: '#/components/schemas/DayOfWeek'
        dayMileage:
          type: number
          format: double
        nightMileage:
          type: number
          format: double
      additionalProperties: false
    StatisticsDetails:
      type: object
      properties:
        anomalyStatus:
          $ref: '#/components/schemas/AnomalyStatusInfo'
        deviceLastDateTime:
          type: string
          format: date-time
          nullable: true
      additionalProperties: false
    SuperUserAuthRequest:
      type: object
      properties:
        login:
          type: string
          nullable: true
        password:
          type: string
          nullable: true
      additionalProperties: false
    SuperUserAuthResponse:
      type: object
      properties:
        token:
          type: string
          nullable: true
        permissions:
          type: array
          items:
            $ref: '#/components/schemas/SuperUserPermission'
          nullable: true
      additionalProperties: false
    SuperUserPermission:
      type: object
      properties:
        type:
          type: integer
          format: int32
        canRead:
          type: boolean
        canEdit:
          type: boolean
        canDelete:
          type: boolean
      additionalProperties: false
    TerminalAffiliation:
      enum:
        - 0
        - 1
      type: integer
      format: int32
    TerminalOctoStatus:
      enum:
        - 0
        - 1
        - 2
        - 3
        - 4
      type: integer
      description: "Статус устройства в системе:\r\n<list type=\"bullet\"><item>`0` - не импортировано,</item><item>`1` - ожидает подтверждения,</item><item>`2` - готово к использованию,</item><item>`3` - отклонено,</item><item>`4` - уже используется.</item></list>"
      format: int32
    TotalScoringReviewResponse:
      type: object
      properties:
        voucherId:
          type: integer
          format: int32
          nullable: true
        voucherNumber:
          type: integer
          format: int32
          nullable: true
        vin:
          type: string
          nullable: true
        contractNumber:
          type: string
          nullable: true
        regNumber:
          type: string
          nullable: true
        absoluteScore:
          type: number
          format: double
        ecoIndex:
          type: integer
          format: int32
        fuelConsumptionVolume:
          type: number
          format: double
        metresTravelled:
          type: integer
          format: int32
        metresTravelledOnMotorways:
          type: integer
          format: int32
        metresTravelledInUrbanAreas:
          type: integer
          format: int32
        metresTravelledOnOtherTypesOfRoad:
          type: integer
          format: int32
        metresTravelledOnUnknownTypesOfRoad:
          type: integer
          format: int32
        secondsTravelled:
          type: integer
          format: int64
        secondsTravelledOnMotorways:
          type: integer
          format: int64
        secondsTravelledInUrbanAreas:
          type: integer
          format: int64
        secondsTravelledOnOtherTypesOfRoad:
          type: integer
          format: int64
        secondsTravelledOnUnknownTypesOfRoad:
          type: integer
          format: int64
        metresTravelledInTheDay:
          type: integer
          format: int32
        metresTravelledInTheNight:
          type: integer
          format: int32
        secondsTravelledInTheDay:
          type: integer
          format: int64
        secondsTravelledInTheNight:
          type: integer
          format: int64
        metresTravelledOnMonday:
          type: integer
          format: int32
        metresTravelledOnTuesday:
          type: integer
          format: int32
        metresTravelledOnWednesday:
          type: integer
          format: int32
        metresTravelledOnThursday:
          type: integer
          format: int32
        metresTravelledOnFriday:
          type: integer
          format: int32
        metresTravelledOnSaturday:
          type: integer
          format: int32
        metresTravelledOnSunday:
          type: integer
          format: int32
        secondsTravelledOnMonday:
          type: integer
          format: int64
        secondsTravelledOnTuesday:
          type: integer
          format: int64
        secondsTravelledOnWednesday:
          type: integer
          format: int64
        secondsTravelledOnThursday:
          type: integer
          format: int64
        secondsTravelledOnFriday:
          type: integer
          format: int64
        secondsTravelledOnSaturday:
          type: integer
          format: int64
        secondsTravelledOnSunday:
          type: integer
          format: int64
        accelerationScore:
          type: number
          format: double
        brakingScore:
          type: number
          format: double
        directionChangeScore:
          type: number
          format: double
        corneringScore:
          type: number
          format: double
        lastUpdate:
          type: string
          format: date-time
          nullable: true
        statCount:
          type: integer
          format: int32
        dataFlowGenerated:
          type: string
          format: date-time
          nullable: true
        referenceWeek:
          type: string
          nullable: true
        ecoIndexAdviceTitle:
          type: string
          nullable: true
        ecoIndexAdviceColor:
          type: string
          nullable: true
        absoluteScoreAdviceTitle:
          type: string
          nullable: true
        absoluteScoreAdviceColor:
          type: string
          nullable: true
        crashes:
          type: integer
          format: int32
        carbonDioxide:
          type: integer
          format: int32
        carbonMonoxide:
          type: integer
          format: int32
        nitrogenOxides:
          type: integer
          format: int32
      additionalProperties: false
    VehicleDetails:
      type: object
      properties:
        id:
          type: integer
          format: int32
        vehicleNumber:
          type: string
          nullable: true
        vehicleBrand:
          $ref: '#/components/schemas/InfoItem'
        vehicleModel:
          $ref: '#/components/schemas/InfoItem'
        vehicleType:
          $ref: '#/components/schemas/InfoItem'
        vehicleColor:
          $ref: '#/components/schemas/InfoItem'
        vehicleVinNum:
          type: string
          nullable: true
        vehicleManufactureYear:
          type: integer
          format: int32
          nullable: true
        vehicleEngineMileage:
          type: integer
          format: int32
          nullable: true
        vehicleEngineDisplacement:
          type: integer
          format: int32
          nullable: true
        vehicleEmissionStandard:
          $ref: '#/components/schemas/InfoItem'
        vehicleFuelType:
          $ref: '#/components/schemas/InfoItem'
        vehicleDriverCategory:
          $ref: '#/components/schemas/InfoItem'
        vehicleRegistrationDate:
          type: string
          format: date-time
          nullable: true
      additionalProperties: false
    Voucher:
      type: object
      properties:
        id:
          type: integer
          format: int32
        octoProcessingStatus:
          $ref: '#/components/schemas/OctoProcessingStatus'
        actions:
          type: string
          nullable: true
        number:
          type: integer
          format: int32
          nullable: true
        contractNumber:
          type: string
          nullable: true
        contractTypeId:
          type: integer
          format: int32
          nullable: true
        installersCode:
          type: integer
          format: int32
          nullable: true
        groupId:
          type: string
          nullable: true
        voucherObjectId:
          type: string
          nullable: true
        creationDate:
          type: string
          format: date-time
          nullable: true
        firstInstallAppointmentSet:
          type: string
          format: date-time
          nullable: true
        firstInstallAppointment:
          type: string
          format: date-time
          nullable: true
        activationDate:
          type: string
          format: date-time
          nullable: true
        installationPerformedBy:
          type: integer
          format: int32
          nullable: true
        mobileTerminalMaintenanceAppointmentSet:
          type: string
          format: date-time
          nullable: true
        mobileTerminalMaintenanceAppointment:
          type: string
          format: date-time
          nullable: true
        mobileTerminalMaintenance:
          type: string
          format: date-time
          nullable: true
        closureDate:
          type: string
          format: date-time
          nullable: true
        terminalUninstallDate:
          type: string
          format: date-time
          nullable: true
        signatureDate:
          type: string
          format: date-time
          nullable: true
        commencementDate:
          type: string
          format: date-time
          nullable: true
        contractClosureDate:
          type: string
          format: date-time
          nullable: true
        closureTestDate:
          type: string
          format: date-time
          nullable: true
        branch:
          type: string
          nullable: true
        management:
          type: string
          nullable: true
        fullInsurancePremium:
          type: integer
          format: int32
        paymentDate:
          type: string
          format: date-time
          nullable: true
        shippingFirstName:
          type: string
          nullable: true
        shippingLastName:
          type: string
          nullable: true
        shippingAddress:
          type: string
          nullable: true
        shippingZipcode:
          type: string
          nullable: true
        shippingCity:
          type: string
          nullable: true
        contactFirstName:
          type: string
          nullable: true
        contactLastName:
          type: string
          nullable: true
        contactEmail:
          type: string
          nullable: true
        contactPrimaryPhone:
          type: string
          nullable: true
        contactSecondaryPhone:
          type: string
          nullable: true
        requestResultCode:
          type: integer
          format: int32
          nullable: true
        requestStatusCode:
          $ref: '#/components/schemas/VoucherRequestStatusCode'
        contractStatus:
          $ref: '#/components/schemas/ClientContractStatus'
        terminalAffiliation:
          $ref: '#/components/schemas/TerminalAffiliation'
        userId:
          type: integer
          format: int32
        obuId:
          type: integer
          format: int32
          nullable: true
        vehicleId:
          type: integer
          format: int32
          nullable: true
        countryId:
          type: integer
          format: int32
          nullable: true
        recordVersion:
          type: integer
          format: int32
        hidden:
          type: boolean
        sortOrder:
          type: number
          format: float
        rowVersion:
          type: string
          format: byte
          nullable: true
        voucherStatusCycle:
          $ref: '#/components/schemas/VoucherStatusCycle'
        companyFlag:
          type: integer
          format: int32
          nullable: true
        clientLastOrCompanyName:
          type: string
          nullable: true
        clientFirstName:
          type: string
          nullable: true
        address:
          type: string
          nullable: true
        zipCode:
          type: string
          nullable: true
        city:
          type: string
          nullable: true
        userFirstContractIdentifier:
          type: string
          nullable: true
        clientEmail:
          type: string
          nullable: true
        contactAdditionalPhone:
          type: string
          nullable: true
        vip:
          type: boolean
      additionalProperties: false
    VoucherChangeStateResponse:
      type: object
      properties:
        voucherId:
          type: integer
          description: Идентификатор ваучера
          format: int32
      additionalProperties: false
      description: Результат операции изменения состояния ваучера
    VoucherContract:
      type: object
      properties:
        vip:
          type: boolean
          description: "Признак VIP-статуса клиента.\r\nПо умолчанию не передается в запросе."
          nullable: true
        clientUserId:
          type: integer
          description: "Идентификатор клиента.\r\nПо умолчанию не передается в запросе."
          format: int32
          nullable: true
        alterClient:
          type: boolean
          description: "Флаг возможности изменения данных клиента.\r\nПо умолчанию не передается в запросе."
          nullable: true
        alterDriver:
          type: boolean
          description: "Флаг возможности изменения данных водителя.\r\nПо умолчанию не передается в запросе."
          nullable: true
        client:
          $ref: '#/components/schemas/ClientCreationData'
        contract:
          $ref: '#/components/schemas/VoucherContractData'
        vehicle:
          $ref: '#/components/schemas/VoucherCreationVehicleRsa'
        driver:
          $ref: '#/components/schemas/Driver'
        serviceIds:
          type: array
          items:
            type: integer
            format: int32
          description: Список идентификаторов подключаемых сервисов.
          nullable: true
        contractTypeId:
          type: integer
          description: "Уникальный идентификатор типа контракта.\r\nИспользуется для различных целей, включая биллинг, тип подключаемых моделей или тип транспортного средства.\r\nПолучается через метод информации о типах контрактов."
          format: int32
      additionalProperties: false
      description: "Контракт для создания ваучера с гибкой структурой заполнения.\r\nМногие поля являются необязательными и могут быть пропущены."
    VoucherContractData:
      type: object
      properties:
        branch:
          type: string
          description: Филиал, к которому относится транспортное средство.
          nullable: true
        closureDate:
          type: string
          format: date-time
          nullable: true
        closureTestDate:
          type: string
          format: date-time
          nullable: true
        commencementDate:
          type: string
          format: date-time
          nullable: true
        countryId:
          type: integer
          format: int32
          nullable: true
        paymentDate:
          type: string
          format: date-time
          nullable: true
        fullInsurPremium:
          type: integer
          format: int32
          nullable: true
        management:
          type: string
          nullable: true
        number:
          type: string
          description: "Номер договора или полиса.\r\nДолжен быть уникальной комбинацией символов. В режиме `companyFlag=1` обычно используется регномер или бортовой номер транспортного средства."
          nullable: true
        signatureDate:
          type: string
          format: date-time
          nullable: true
        terminalAffiliation:
          $ref: '#/components/schemas/TerminalAffiliation'
      additionalProperties: false
    VoucherContractResponse:
      type: object
      properties:
        signatureDate:
          type: string
          format: date-time
          nullable: true
        сommencementDate:
          type: string
          format: date-time
          nullable: true
        closureDate:
          type: string
          format: date-time
          nullable: true
        closureTestDate:
          type: string
          format: date-time
          nullable: true
        paymentDate:
          type: string
          format: date-time
          nullable: true
        fullInsurancePremium:
          type: integer
          format: int32
        branch:
          type: string
          nullable: true
        management:
          type: string
          nullable: true
        countryID:
          type: integer
          format: int32
          nullable: true
        country:
          type: string
          nullable: true
        insCompanyID:
          type: integer
          format: int32
          nullable: true
        insCompany:
          type: string
          nullable: true
        terminalAffiliation:
          $ref: '#/components/schemas/TerminalAffiliation'
        userID:
          type: integer
          format: int32
        clientNumber:
          type: string
          nullable: true
        gender:
          $ref: '#/components/schemas/Gender'
        firstName:
          type: string
          nullable: true
        middleName:
          type: string
          nullable: true
        lastName:
          type: string
          nullable: true
        birthDate:
          type: string
          format: date-time
          nullable: true
        companyFlag:
          $ref: '#/components/schemas/CompanyFlag'
        firstDrivingLicenseDate:
          type: string
          format: date-time
          nullable: true
        clientAddress:
          type: string
          nullable: true
        zipCode:
          type: integer
          format: int32
          nullable: true
        homeAddress:
          type: string
          nullable: true
        phone:
          type: string
          nullable: true
        phone2:
          type: string
          nullable: true
        phone3:
          type: string
          nullable: true
        email:
          type: string
          nullable: true
        city:
          type: string
          nullable: true
        contractTypeID:
          type: integer
          format: int32
        contractType:
          type: string
          nullable: true
        vip:
          type: boolean
      additionalProperties: false
    VoucherCreationVehicleRsa:
      type: object
      properties:
        vehicleIdentifier:
          type: integer
          format: int32
          nullable: true
        regNumber:
          type: string
          description: "Регистрационный номер транспортного средства.\r\nДолжен быть в верхнем регистре и латинской транслитерации, без пробелов и спецсимволов."
          nullable: true
        registrationDate:
          type: string
          format: date-time
          nullable: true
        serialNumber:
          type: string
          nullable: true
        vin:
          type: string
          description: "VIN-номер или номер шасси транспортного средства.\r\nДлина строго 17 символов."
          nullable: true
        policyNumber:
          type: string
          nullable: true
        power:
          type: integer
          format: int32
          nullable: true
        engineDisplacement:
          type: integer
          description: "Объем двигателя в см³.\r\nВлияет на расчет эко-индекса."
          format: int32
        engineMileage:
          type: integer
          description: "Показания одометра.\r\nЛюбое положительное число.\r\nВлияет на расчет эко-индекса."
          format: int32
        emissionStandardId:
          type: integer
          description: "Экологический класс транспортного средства.\r\nИдентификатор из справочника экологических стандартов.\r\nВлияет на расчет эко-индекса."
          format: int32
        fuelType:
          $ref: '#/components/schemas/FuelType'
        modelVehicleId:
          type: integer
          description: "Идентификатор модели транспортного средства.\r\nПолучается через метод информации о моделях транспортных средств."
          format: int32
        carTypeId:
          type: integer
          description: "Идентификатор типа кузова.\r\nПолучается из справочника типов кузовов."
          format: int32
        colorId:
          type: integer
          description: "Идентификатор цвета транспортного средства.\r\nПолучается из справочника цветов."
          format: int32
        driverCategory:
          $ref: '#/components/schemas/DriverCategory'
        productionYear:
          type: integer
          description: Год выпуска транспортного средства.
          format: int32
      additionalProperties: false
    VoucherDetailsItem:
      type: object
      properties:
        id:
          type: integer
          description: Идентификатор ваучера
          format: int32
        voucherObjectId:
          type: string
          description: Служебный идентификатор ваучера
          nullable: true
        number:
          type: integer
          description: Номер ваучера
          format: int32
          nullable: true
        contractTypeId:
          type: integer
          description: Идентификатор типа контракта
          format: int32
        contractNumber:
          type: string
          description: Номер контракта
          nullable: true
        activationDate:
          type: string
          description: Дата активации ваучера
          format: date-time
          nullable: true
        closeDate:
          type: string
          description: Дата закрытия ваучера
          format: date-time
          nullable: true
        clientLastName:
          type: string
          description: Клиент
          nullable: true
        vehicleRegNumber:
          type: string
          description: Регномер транспортного средства
          nullable: true
        status:
          $ref: '#/components/schemas/VoucherStatusCycle'
        contractStatus:
          $ref: '#/components/schemas/ClientContractStatus'
        activeDays:
          type: integer
          description: Количество активных дней
          format: int32
        activeDaysRatio:
          type: number
          description: Коэффициент активных дней
          format: double
        lifeCycleStatusDateTime:
          type: string
          description: Дата последнего изменения статуса ваучера
          format: date-time
          nullable: true
      additionalProperties: false
      description: Представляет детальную информацию о ваучере
    VoucherDeviceAttachContract:
      type: object
      properties:
        voucherId:
          type: integer
          description: Идентификатор ваучера
          format: int32
        imei:
          type: string
          description: IMEI устройства
          nullable: true
        deviceSerialNumber:
          type: string
          description: Серийный номер устройства
          nullable: true
      additionalProperties: false
      description: Данные для привязки устройства к ваучеру
    VoucherExtendedResponse:
      type: object
      properties:
        id:
          type: integer
          format: int32
        activationDate:
          type: string
          format: date-time
          nullable: true
        contract:
          $ref: '#/components/schemas/ContractDetails'
        client:
          $ref: '#/components/schemas/ClientDetails'
        vehicle:
          $ref: '#/components/schemas/VehicleDetails'
        services:
          type: array
          items:
            $ref: '#/components/schemas/InfoItem'
          nullable: true
        device:
          $ref: '#/components/schemas/DeviceDetails'
        statistics:
          $ref: '#/components/schemas/StatisticsDetails'
        vip:
          type: boolean
        number:
          type: integer
          format: int32
          nullable: true
        contractStatus:
          $ref: '#/components/schemas/ClientContractStatus'
        deviceStatus:
          $ref: '#/components/schemas/VoucherStatusCycle'
      additionalProperties: false
    VoucherRequestStatusCode:
      enum:
        - 0
        - 1
        - 9
        - 12
        - 13
        - 14
      type: integer
      format: int32
    VoucherStatusCycle:
      enum:
        - 0
        - 1
        - 2
        - 3
        - 4
        - 5
        - 6
        - 7
        - 8
      type: integer
      description: "Статус привязанного устройства:\r\n<list type=\"bullet\"><item>`0` - ожидает привязки,</item><item>`1` - ожидает активации,</item><item>`2` - активировано,</item><item>`3` - ошибка активации,</item><item>`4` - замена транспортного средства,</item><item>`5` - ошибка замены транспортного средства,</item><item>`6` - ожидает деактивации,</item><item>`7` - деактивировано,</item><item>`8` - ошибка деактивации.</item></list>"
      format: int32
    VoucherTableResponseItem:
      type: object
      properties:
        id:
          type: integer
          description: Идентификатор ваучера.
          format: int32
        voucherNumber:
          type: integer
          description: Номер ваучера, выдается при первичной активации.
          format: int32
          nullable: true
        voucherObjectId:
          type: string
          description: Служебный идентификатор ваучера.
          nullable: true
        contratName:
          type: string
          description: Название контракта.
          nullable: true
        statusDate:
          type: integer
          description: Unix таймштамп изменения статуса ваучера.
          format: int64
        activationDate:
          type: string
          description: Дата открытия ваучера.
          format: date-time
          nullable: true
        closeDate:
          type: string
          description: Дата закрытия ваучера.
          format: date-time
          nullable: true
        contractStatus:
          $ref: '#/components/schemas/ClientContractStatus'
        driverSurname:
          type: string
          nullable: true
        driverName:
          type: string
          description: Имя водителя.
          nullable: true
        driverPhone:
          type: string
          description: Телефон водителя.
          nullable: true
        vehicleName:
          type: string
          description: Имя транспортного средства. `Марка` + `Модель` + `Год выпуска`.
          nullable: true
        vehicleRegNumber:
          type: string
          description: Регномер транспортного средства.
          nullable: true
        imei:
          type: string
          description: IMEI привязанного устройства.
          nullable: true
        deviceStatus:
          $ref: '#/components/schemas/VoucherStatusCycle'
        totalDays:
          type: integer
          description: Количество дней с момента активации.
          format: int64
        score:
          type: number
          description: Скоринг за все время.
          format: double
        totalDistanceAvg:
          type: number
          description: Средний пробег.
          format: double
        totalDistanceSum:
          type: number
          description: Пробег за все время.
          format: double
        totalTimeRunningAvg:
          type: number
          description: Средняя продолжительность поездок.
          format: double
        totalTimeRunningSum:
          type: integer
          description: Продолжительность поездок за все время.
          format: int64
        contractType:
          type: integer
          format: int32
          nullable: true
        anomalySeverity:
          type: integer
          description: "Уровень серьезности аномалии. При наличии нескольких одновременных аномалий \r\nвозвращается значение с наивысшим уровнем серьезности."
          format: int32
          nullable: true
        anomalyCode:
          $ref: '#/components/schemas/AnomalyCode'
        daysSinceLast:
          type: integer
          description: >-
            Количество дней, прошедших с момента последнего обнаружения
            аномалии.
          format: int32
        lastAnomalyDate:
          type: string
          description: Дата и время последнего обнаружения аномалии.
          format: date-time
          nullable: true
        isActiveAnomaly:
          type: boolean
          description: "Индикатор активности аномалии. \r\nЗначение True указывает, что аномалия была обнаружена в течение последних 30 дней\r\nи требует внимания."
      additionalProperties: false
    VoucherTableResponseItemTableResponse:
      type: object
      properties:
        total:
          type: integer
          description: Количество элементов.
          format: int64
        items:
          type: array
          items:
            $ref: '#/components/schemas/VoucherTableResponseItem'
          description: Массив элементов.
          nullable: true
        rowHeaders:
          type: object
          additionalProperties:
            type: string
            nullable: true
          description: Словарь доступных для сортировки или фильтрации полей.
          nullable: true
      additionalProperties: false
    VoucherVehicleContract:
      type: object
      properties:
        vehicleNumber:
          type: string
          nullable: true
        vehicleModelId:
          type: integer
          format: int32
          nullable: true
        vehicleBrandId:
          type: integer
          format: int32
          nullable: true
        vehicleColorId:
          type: integer
          format: int32
          nullable: true
        vehicleTypeId:
          type: integer
          format: int32
          nullable: true
        vehicleVinNum:
          type: string
          nullable: true
        vehicleManufactureYear:
          type: integer
          format: int32
          nullable: true
        vehicleEngineMileage:
          type: integer
          format: int32
          nullable: true
        vehicleEngineDisplacementId:
          type: integer
          format: int32
          nullable: true
        vehicleEmissionStandardId:
          type: integer
          format: int32
          nullable: true
        vehicleFuelTypeId:
          $ref: '#/components/schemas/FuelType'
        vehicleDriverCategoryId:
          $ref: '#/components/schemas/DriverCategory'
        vehicleRegistrationDate:
          type: string
          format: date-time
          nullable: true
      additionalProperties: false
    VoucherVehicleResponse:
      type: object
      properties:
        id:
          type: integer
          format: int32
        vehicleNumber:
          type: string
          nullable: true
        vehicleRegistrationDate:
          type: string
          format: date-time
          nullable: true
        vehicleBrandTitle:
          type: string
          nullable: true
        vehicleModelTitle:
          type: string
          nullable: true
        vehicleVinNum:
          type: string
          nullable: true
        vehicleManufactureYear:
          type: integer
          format: int32
          nullable: true
        vehicleEngineMileage:
          type: integer
          format: int32
          nullable: true
        vehicleEngineDisplacement:
          type: integer
          format: int32
          nullable: true
        vehicleFuelTypeTitle:
          type: string
          nullable: true
        vehicleDriverCategoryTitle:
          type: string
          nullable: true
        vehicleColorTitle:
          type: string
          nullable: true
        vehicleTypeTitle:
          type: string
          nullable: true
        vehicleEmissionStandardTitle:
          type: string
          nullable: true
      additionalProperties: false
  securitySchemes:
    Bearer:
      type: apiKey
      description: "JWT Authorization header using the Bearer scheme. \r\n\r\n Enter 'Bearer' [Space] and then your token in the text input below.\r\n\r\nExample: \"Bearer 12345abcdef\""
      name: Authorization
      in: header
security:
  - Bearer: []
