openapi: 3.0.3
info:
  version: 6.41.0
  title: INVERS Vehicle Management API
  contact:
    name: INVERS GmbH
    url: https://developers.invers.com/vehicle-management/management/
  x-api-id: b9c0ec5f-1ccb-403e-9a20-24e80a50ced8
  x-audience: external-public
  description: |
    The INVERS Vehicle Management API is intended for INVERS customers who need programmatic access to integrate their applications with the INVERS platform.

    The base URL for all endpoints described here is `https://api.invers.com`.
    Learn more in our [Integration Guide](https://developers.invers.com/integration-guide/) and
    [common API rules](https://developers.invers.com/integration-guide/api-basics/).

    The "Vehicle Management API" allows you to manage your vehicles in a fleet.
servers:
  - url: https://api.invers.com
    description: Vehicle Management API
tags:
  - name: Vehicle
    description: Resources to manage vehicles
  - name: Vehicle tags
    description: Resources to manage vehicle tags
  - name: Vehicle custom fields
    description: Resources to manage vehicle custom fields
  - name: Archived vehicles
    description: Resources to manage archived vehicles
  - name: Vehicle sharing
    description: Resources to manage shared vehicles or to share vehicles
  - name: Vehicle rental
    description: Resources to manage vehicle rental status
paths:
  /vehicles:
    get:
      parameters:
        - $ref: '#/components/parameters/listVehicleQuery'
        - $ref: '#/components/parameters/lifeStatus'
        - $ref: '#/components/parameters/operationStatus'
        - $ref: '#/components/parameters/setupStatus'
        - $ref: '#/components/parameters/customFields'
        - $ref: '#/components/parameters/limit'
        - $ref: '#/components/parameters/cursor'
        - $ref: '#/components/parameters/embed'
      tags:
        - Vehicle
      summary: Get list of vehicles
      x-invers-permission: vehicles.ro
      operationId: list-vehicles
      externalDocs:
        description: Find out more about vehicles in our documentation.
        url: https://developers.invers.com/overview/vehicles/
      security:
        - OAuth2:
            - VEHICLES_READ
      description: |
        Returns a list of vehicles.
        When using the FleetShare feature, vehicles which are shared with you are also included in the result.

        This route offers cursor-based pagination. If needed use `limit` to narrow down the result list.
        In order to navigate through the results, use the cursors provided in the result object in subsequent calls, and
        omit `limit`.
      responses:
        '200':
          $ref: '#/components/responses/vehicleList'
        '400':
          $ref: '#/components/responses/CursorBasedValidationErrorResponse'
  /vehicles/{id}:
    parameters:
      - $ref: '#/components/parameters/vehicleId'
    get:
      parameters:
        - $ref: '#/components/parameters/embed'
      tags:
        - Vehicle
      summary: Get a vehicle
      x-invers-permission: vehicles.ro
      operationId: get-vehicle
      externalDocs:
        description: Find out more about vehicles in our documentation.
        url: https://developers.invers.com/overview/vehicles/
      security:
        - OAuth2:
            - VEHICLES_READ
      description: |
        All currently available information about a vehicle can be requested via this endpoint.
        A vehicle includes the master data of a vehicle, the telematics unit, the last known vehicle state and the capabilities.
        Shared vehicles will include a `sharing` property with details.
      responses:
        '200':
          $ref: '#/components/responses/vehicleWithEmbedding'
        '404':
          $ref: '#/components/responses/vehicleNotFoundErrorResponse'
    patch:
      tags:
        - Vehicle
      summary: Update a vehicle
      x-invers-permission: vehicles
      operationId: patch-vehicle
      externalDocs:
        description: Find out more about vehicles in our documentation.
        url: https://developers.invers.com/overview/vehicles/
      security:
        - OAuth2:
            - VEHICLES_WRITE
      description: Endpoint for changing the master data, operation status, tags and custom fields of a vehicle.
      requestBody:
        $ref: '#/components/requestBodies/patchVehicle'
      responses:
        '200':
          $ref: '#/components/responses/vehicleWithEmbedding'
        '400':
          $ref: '#/components/responses/validationErrorResponse'
        '404':
          $ref: '#/components/responses/vehicleNotFoundErrorResponse'
        '409':
          $ref: '#/components/responses/uniqueIdentifierAlreadyExistsErrorResponse'
  /sharing-partners:
    get:
      tags:
        - Vehicle sharing
      summary: Get list of sharing partners
      x-invers-permission: fleet-sharing:share
      security:
        - OAuth2:
            - VEHICLES_WRITE
      description: Endpoint to get all sharing partners. If the FleetShare feature is not subscribed an empty list will be returned.
      operationId: get-sharing-partners
      responses:
        '200':
          $ref: '#/components/responses/sharingPartners'
        '400':
          $ref: '#/components/responses/fleetNotSupportedErrorResponse'
  /vehicles/{id}/sharing:
    parameters:
      - $ref: '#/components/parameters/vehicleId'
    post:
      tags:
        - Vehicle sharing
      summary: Start sharing
      x-invers-permission: fleet-sharing:share
      security:
        - OAuth2:
            - VEHICLES_WRITE
      description: |
        Endpoint to share a vehicle with another fleet. Following restrictions apply to a shared vehicle
        - The partner cannot change the `master_data`,`custom_fields`, `tags` or `operation_status` of the vehicle
        - The owner cannot send commands to the vehicle
      operationId: post-vehicle-sharing
      requestBody:
        $ref: '#/components/requestBodies/postVehicleSharing'
      responses:
        '200':
          $ref: '#/components/responses/vehicleWithSharing'
        '400':
          $ref: '#/components/responses/validationErrorResponse'
        '404':
          $ref: '#/components/responses/notFoundErrorResponse'
        '409':
          $ref: '#/components/responses/vehicleAlreadyShared'
    patch:
      tags:
        - Vehicle sharing
      summary: Update sharing
      x-invers-permission: fleet-sharing:share
      security:
        - OAuth2:
            - VEHICLES_WRITE
      description: |
        Endpoint to update the sharing of a vehicle.
        Only the owner is allowed to update the sharing.
      operationId: patch-vehicle-sharing
      requestBody:
        $ref: '#/components/requestBodies/patchVehicleSharing'
      responses:
        '200':
          $ref: '#/components/responses/vehicleWithSharing'
        '400':
          $ref: '#/components/responses/validationErrorResponse'
        '404':
          $ref: '#/components/responses/notFoundErrorResponse'
        '409':
          $ref: '#/components/responses/vehicleNotSharedErrorResponse'
    delete:
      tags:
        - Vehicle sharing
      summary: End sharing
      x-invers-permission: fleet-sharing:share
      security:
        - OAuth2:
            - VEHICLES_WRITE
      description: |
        Endpoint to end the sharing of a vehicle.
        The partner will not be able to send commands to, or fetch data for the vehicle after the sharing ends.
      operationId: delete-vehicle-sharing
      responses:
        '200':
          $ref: '#/components/responses/vehicle'
        '404':
          $ref: '#/components/responses/notFoundErrorResponse'
        '409':
          $ref: '#/components/responses/vehicleNotSharedErrorResponse'
  /vehicles/{id}/rental-status:
    parameters:
      - $ref: '#/components/parameters/vehicleId'
      - $ref: '#/components/parameters/requestNewVehicleState'
    put:
      tags:
        - Vehicle rental
      summary: Set the rental status of the vehicle
      x-invers-permission: vehicles
      security:
        - OAuth2:
            - VEHICLES_WRITE
      description: |
        Endpoint to set the `rental_status` for this vehicle
        - `IN_RENTAL` - signals the start of the data protection mode
        - `NOT_IN_RENTAL` - signals the end of the data protection mode
      operationId: put-vehicle-rental-status
      requestBody:
        $ref: '#/components/requestBodies/putRentalStatus'
      responses:
        '200':
          $ref: '#/components/responses/vehicleRentalChanged'
        '404':
          $ref: '#/components/responses/notFoundErrorResponse'
        '409':
          $ref: '#/components/responses/vehicleRentalStatusConflict'
  /vehicles/{id}/sharing/partner:
    parameters:
      - $ref: '#/components/parameters/vehicleId'
    delete:
      tags:
        - Vehicle sharing
      summary: End sharing as partner
      x-invers-permission: fleet-sharing:return
      security:
        - OAuth2:
            - VEHICLES_WRITE
      description: |
        Endpoint to end the sharing of a vehicle.
        You will not be able to send commands to, or fetch data for the vehicle after the sharing ends.
      operationId: delete-vehicle-sharing-partner
      responses:
        '200':
          $ref: '#/components/responses/vehicle'
        '404':
          $ref: '#/components/responses/notFoundErrorResponse'
        '409':
          $ref: '#/components/responses/vehicleNotSharedErrorResponse'
  /vehicles/custom-fields:
    get:
      tags:
        - Vehicle custom fields
      summary: Get all custom field keys for vehicles
      x-invers-permission: vehicles.ro
      operationId: list-vehicle-custom-field-keys
      security:
        - OAuth2:
            - VEHICLES_READ
      externalDocs:
        description: Find out more about vehicle custom fields in our documentation.
        url: https://developers.invers.com/vehicle-management/management/#custom-fields
      description: Returns all custom field keys, in alphabetically ascending order, which are currently used for the queried fleet.
      responses:
        '200':
          $ref: '#/components/responses/customFieldList'
  /vehicles/custom-fields/{key}:
    parameters:
      - $ref: '#/components/parameters/customFieldKey'
    get:
      tags:
        - Vehicle custom fields
      summary: Get all custom field values for key
      x-invers-permission: vehicles.ro
      operationId: list-vehicle-custom-field-values
      security:
        - OAuth2:
            - VEHICLES_READ
      externalDocs:
        description: Find out more about vehicle custom fields in our documentation.
        url: https://developers.invers.com/vehicle-management/management/#custom-fields
      description: Returns all custom field values for the specified `key` in alphabetical ascending order.
      responses:
        '200':
          $ref: '#/components/responses/customFieldValueList'
  /vehicles/{id}/tags/{tag}:
    parameters:
      - $ref: '#/components/parameters/vehicleId'
      - $ref: '#/components/parameters/tag'
    put:
      tags:
        - Vehicle tags
      summary: Add tag to vehicle
      x-invers-permission: vehicles
      security:
        - OAuth2:
            - VEHICLES_WRITE
      externalDocs:
        description: Find out more about vehicle tags data in our documentation.
        url: https://developers.invers.com/vehicle-management/management/#tags
      description: |
        Adds the specified tag to the vehicle.

        Tags for a vehicle are distinct, so adding the same tag twice will not duplicate it.
      operationId: put-vehicle-tag
      responses:
        '200':
          $ref: '#/components/responses/tagsModifiedResponse'
        '400':
          $ref: '#/components/responses/validationErrorResponse'
        '404':
          $ref: '#/components/responses/notFoundErrorResponse'
    delete:
      tags:
        - Vehicle tags
      summary: Remove tag from vehicle
      x-invers-permission: vehicles
      security:
        - OAuth2:
            - VEHICLES_WRITE
      externalDocs:
        description: Find out more about vehicle tags data in our documentation.
        url: https://developers.invers.com/vehicle-management/management/#tags
      description: |
        Removes the specified tag from the vehicle.
      operationId: remove-vehicle-tag
      responses:
        '200':
          $ref: '#/components/responses/tagsModifiedResponse'
        '404':
          $ref: '#/components/responses/notFoundErrorResponse'
  /vehicles/tags:
    get:
      tags:
        - Vehicle tags
      summary: Get all tags for fleet
      x-invers-permission: vehicles.ro
      operationId: list-vehicle-tags
      security:
        - OAuth2:
            - VEHICLES_READ
      externalDocs:
        description: Find out more about vehicle tags data in our documentation.
        url: https://developers.invers.com/vehicle-management/management/#tags
      description: |
        Returns all tags in alphabetical ascending order, which are currently used for the queried fleet.
      responses:
        '200':
          $ref: '#/components/responses/tagsList'
  /vehicles/tags-bulk:
    post:
      tags:
        - Vehicle tags
      summary: Update the tags of one or multiple vehicles
      x-invers-permission: vehicles
      security:
        - OAuth2:
            - VEHICLES_WRITE
      description: |
        This route offers updates of vehicle tags in a bulk. You can specify an update request of the tags for multiple vehicles.
        Each update request requires a vehicle ID, an operation and a list of tags.
        In addition, a Bulk Request is restricted to contain a maximum of 1000 update requests. If there are no validation errors,
        the response contains a multi-status. There is a result for each single update request of the whole request.
      operationId: post-vehicle-tags-bulk
      requestBody:
        $ref: '#/components/requestBodies/postVehicleTagsBulk'
      responses:
        '207':
          $ref: '#/components/responses/vehicleTagsBulk'
        '400':
          $ref: '#/components/responses/validationErrorResponse'
  /archived-vehicles:
    parameters:
      - $ref: '#/components/parameters/listArchivedVehicleQuery'
      - $ref: '#/components/parameters/limit'
      - $ref: '#/components/parameters/cursor'
    get:
      tags:
        - Archived vehicles
      summary: Get list of archived vehicles
      x-invers-permission: vehicles.ro
      operationId: list-archived-vehicles
      externalDocs:
        description: Find out more about vehicles in our documentation.
        url: https://developers.invers.com/overview/vehicles/
      security:
        - OAuth2:
            - VEHICLES_READ
      description: |
        Returns a list of archived vehicles.

        This route offers cursor-based pagination. If needed use `limit` to narrow down the result list.
        In order to navigate through the results, use the cursors provided in the result object in subsequent calls, and
        omit `limit`.
      responses:
        '200':
          $ref: '#/components/responses/archivedVehicleList'
        '400':
          $ref: '#/components/responses/CursorBasedValidationErrorResponse'
  /archived-vehicles/{id}:
    parameters:
      - $ref: '#/components/parameters/archivedVehicleId'
    get:
      tags:
        - Archived vehicles
      summary: Get an archived vehicle
      x-invers-permission: vehicles.ro
      operationId: get-archived-vehicle
      security:
        - OAuth2:
            - VEHICLES_READ
      description: Returns an archived vehicle.
      responses:
        '200':
          $ref: '#/components/responses/archivedVehicleResponse'
        '404':
          $ref: '#/components/responses/archivedVehicleNotFoundErrorResponse'
components:
  securitySchemes:
    OAuth2:
      type: oauth2
      flows:
        clientCredentials:
          tokenUrl: /auth/oauth/token
          scopes:
            VEHICLES_WRITE: Write access to vehicles
            VEHICLES_READ: Read access to vehicles
        authorizationCode:
          authorizationUrl: /auth/oauth/authorize
          tokenUrl: /auth/oauth/token
          scopes:
            VEHICLES_WRITE: Write access to vehicles
            VEHICLES_READ: Read access to vehicles
  parameters:
    listVehicleQuery:
      name: q
      description: |
        Narrows down the list of vehicles based on one or multiple keywords (multiple
        keywords must be separated by a space character). Vehicles are only included
        in the result list if each of the provided keywords is contained in at least
        one of the **following fields**:

        `id`, `master_data.vin`, `master_data.license_plate`, `master_data.custom_name`,
        `telematics_unit.id`, `telematics_unit.secondary_id.value`

        Example 1: If a single keyword `foo` is given, a vehicle matches if `foo` is contained
        in one or more of the vehicle's search fields (as listed above).

        Example 2: If two keywords `foo` and `bar` are given, a vehicle matches if `foo` and
        `bar` are each contained in one or more of the vehicle's search fields (see above).
        Both keywords do not need to occur in the same field - e.g. a vehicle matches
        if `foo` is part of the `master_data.vin` and `bar` is part of the `telematics_unit.id`.

        Search matching is case-insensitive.
      in: query
      schema:
        type: string
        example: JQ7
    lifeStatus:
      name: life_status
      description: |
        Narrow down the result to vehicles that match the `life_status` filter.
        To filter for more than one `life_status`, combine the fields and separate them by a comma.
      in: query
      schema:
        $ref: '#/components/schemas/lifeStatus'
    operationStatus:
      name: operation_status
      description: |
        Narrow down the result to vehicles that match the `operation_status` filter.
        To filter for more than one `operation_status`, combine the fields with a comma as separator.
      in: query
      schema:
        $ref: '#/components/schemas/operationStatus'
    setupStatus:
      name: setup_status
      description: |
        Narrow down the result to vehicles whose `telematics_unit.setup.status` field match the `setup_status` filter.

        To filter for more than one `setup_status`, combine the fields with a comma as separator.
      in: query
      schema:
        $ref: '#/components/schemas/setupStatus'
    customFields:
      name: custom_fields
      description: |
        Narrow down the result to vehicles that match the `custom_fields` filter.

        The example narrows down the result to vehicles with `custom_fields.seats=5` and `custom_fields.color=black` or `custom_fields.color=blue`.

        There are two special values for custom field filters
        - `$exists` narrows down the result to vehicles where the specified custom field key is set
        - `$empty` narrows down the result to vehicles where the specified custom field key is not set
      in: query
      schema:
        $ref: '#/components/schemas/customFields'
      style: deepObject
      explode: true
      example:
        seats: '5'
        color: blue
    limit:
      name: limit
      description: Number of items to return at most.
      in: query
      schema:
        type: integer
        format: int32
        minimum: 1
        maximum: 100
        default: 20
        example: 25
    cursor:
      name: cursor
      description: The cursor object used to navigate through the results.
      in: query
      schema:
        type: string
        example: eyJ2IjpbIjIwMjAtMTEtMTZUMDk6NTc6MjUuNzY2MDAwMFoiLCJaOTVSUyJdLCJkIjpmYWxzZSwicSI6eyJsIjozfX0=
    embed:
      name: embed
      description: |
        Values to embed - embeddable properties are omitted by default.
        To embed more than one property, use a comma-separated list.

        * `feature_configuration` - includes `telematics_unit.feature_configuration` in the response
        * `cloudboxx_settings` - includes `telematics_unit.cloudboxx_configuration.settings` in the response
      in: query
      schema:
        type: string
        example: feature_configuration,cloudboxx_settings
    vehicleId:
      name: id
      description: Unique ID of the vehicle.
      required: true
      in: path
      schema:
        $ref: '#/components/schemas/vehicleId'
    requestNewVehicleState:
      name: request_new_vehicle_state
      description: |
        If set to `true`, a new vehicle state will be requested from the vehicle and returned
        in the response. An error will be thrown should that request fail (e.g., due to a timeout).

        If set to `false`, the `latest_vehicle_state` stored in our database will be returned in the response.
      required: false
      in: query
      schema:
        type: boolean
        default: false
        example: true
    customFieldKey:
      name: key
      description: The custom field key to be queried.
      required: true
      in: path
      schema:
        type: string
        example: color
    tag:
      name: tag
      description: Name of a vehicle tag. Tags must not be empty or consist entirely of whitespace.
      required: true
      in: path
      schema:
        $ref: '#/components/schemas/tag'
    listArchivedVehicleQuery:
      name: q
      description: |
        Narrows down the list of archived vehicles based on one or multiple keywords (multiple
        keywords must be separated by a space character). Archived vehicles are only included
        in the result list if each of the provided keywords is contained in at least
        one of the **following fields**:

        `id`, `snapshot.id`, `snapshot.master_data.vin`, `snapshot.master_data.license_plate`,
        `snapshot.master_data.custom_name`, `snapshot.telematics_unit.id`, `snapshot.telematics_unit.secondary_id.value`

        Example 1: If a single keyword `foo` is given, an archived vehicle matches if `foo` is contained
        in one or more of the archived vehicle's search fields (as listed above).

        Example 2: If two keywords `foo` and `bar` are given, an archived vehicle matches if `foo` and
        `bar` are each contained in one or more of the archived vehicle's search fields (see above).
        Both keywords do not need to occur in the same field - e.g. a archived vehicle matches
        if `foo` is part of the `snapshot.master_data.vin` and `bar` is part of the `snapshot.telematics_unit.id`.

        Search matching is case-insensitive.
      in: query
      schema:
        type: string
        example: JQ7
    archivedVehicleId:
      name: id
      description: Unique ID of the archived vehicle.
      required: true
      in: path
      schema:
        $ref: '#/components/schemas/vehicleId'
  examples:
    VehicleListCloudBoxxExample:
      value:
        items:
          - id: JQ7RP
            fleet_id: F48XD
            last_contact_at: '2021-02-17T14:33:12.42Z'
            created_at: '2021-01-19T13:13:09.952Z'
            master_data:
              modified_at: '2021-01-19T13:13:09.952Z'
              vin: R1NBDNB16J1000135
              license_plate: RKL-832
              brand: Audi
              model: A3
              custom_name: MyAudiA3
              fuel_type: GASOLINE
              year_of_production: '2020'
              transmission: AUTOMATIC
              vehicle_type: CAR
            capabilities:
              commands:
                - DISABLE_DRIVING
                - DRAW_ATTENTION
                - ENABLE_DRIVING
              vehicle_state:
                - CELLULAR_SIGNAL_QUALITY
                - DRIVING_ENABLED
                - MILEAGE_IN_KILOMETERS
                - POSITION
                - REMAINING_RANGE_IN_KILOMETERS
                - STATE_OF_CHARGE_OR_FUEL_LEVEL_IN_PERCENT
            telematics_unit:
              id: 38429DA427AB7C25
              attached_at: '2021-02-08T10:29:00Z'
              manufacturer: INVERS
              brand: CLOUDBOXX
              model: 4G
              model_variant: EU
              type: AFTER_MARKET
              setup:
                vehicle_model_id: 01F4XW6QHWKT4HMSFDZ9CCQH1G
                modified_at: '2021-02-08T10:31:00Z'
                status: SUCCEEDED
              firmware_versions:
                telematics_unit:
                  value: 2.0.0
                  timestamp: '2021-02-08T10:31:00Z'
                bluetooth:
                  value: 1.5.7
                  timestamp: '2021-02-08T10:31:00Z'
                modem:
                  value: 1.0.2
                  timestamp: '2021-02-08T10:31:00Z'
              secondary_id:
                value: '102010000000'
                name: serial_number
              accessories:
                damage_detection_module:
                  connection_status: CONNECTED
                  firmware_version: 1.0.0-0
                  hardware_revision: 1
                cloudboxx_cardholder:
                  connection_status: CONNECTED
                  variant: LOW_FREQUENCY
                  card_1: 00000000A566685F
                  card_2: 00000000A655585F
                  vehicle_key: 00000000FEAB1234
                cloudboxx_card_reader:
                  connection_status: CONNECTED
                  firmware_version: 1.2.3-4
                particulate_matter_sensor:
                  connection_status: CONNECTED
                  firmware_version: 1.0.0-0
                  hardware_revision: 1
              feature_configuration:
                tracking:
                  time_interval_in_seconds: 123
                  distance_interval_in_meters: 100
                  heading_change_threshold_in_degrees: 50
                  modified_at: '2023-07-19T14:33:01Z'
              connectivity:
                active_service_provider:
                  name: SIERRA_WIRELESS
                  active_since: '2023-08-08T12:34:56Z'
              cloudboxx_configuration:
                workshop_mode:
                  enabled: false
                  modified_at: '2023-07-19T14:33:01Z'
                obd_alarm:
                  enabled: false
                  modified_at: '2023-07-19T14:33:01Z'
                settings:
                  beeper_enabled: false
                  dead_reckoning_position_enabled: false
                  current_mileage_in_kilometers: 52.1
                  mileage_source: VSS
                  ignition_source: KL15
                  telematics_unit_supply_voltage_alarm_thresholds:
                    alarm_threshold_in_volts: 11.5
                    recover_threshold_in_volts: 12
                  fuel_level_smoothing: false
                  fuel_level_alarm_thresholds:
                    enabled: true
                    alarm_threshold_in_percent: 25
                    recover_threshold_in_percent: 35
            latest_vehicle_state:
              mileage_in_kilometers:
                value: 70.402
                timestamp: '2021-02-17T14:32:55Z'
              state_of_charge_or_fuel_level_in_percent:
                value: 17
                timestamp: '2021-02-17T14:32:55Z'
              remaining_range_in_kilometers:
                value: 31.786
                timestamp: '2021-02-17T14:32:55Z'
              cellular_signal_quality:
                value: 3
                timestamp: '2021-02-17T14:32:55Z'
              driving_enabled:
                value: false
                timestamp: '2021-02-17T14:32:55Z'
              position:
                value:
                  lat: 50.909826
                  lon: 8.065595
                timestamp: '2021-02-17T14:32:53.824Z'
            life_status:
              value: ONLINE
              modified_at: '2020-10-08T10:29:00Z'
            operation_status:
              value: OPERATING
              modified_at: '2020-10-08T12:29:00Z'
            rental_status:
              value: IN_RENTAL
              modified_at: '2020-10-08T12:29:00Z'
            custom_fields_modified_at: '2020-10-08T10:29:00Z'
            custom_fields:
              seats: '5'
              color: black
            tags_modified_at: '2020-10-08T10:29:00Z'
            tags: []
        cursors:
          self: eyJ2IjpbIjIwMjAtMTEtMTZUMDk6NTc6MjUuNDUwMDAwMFoiLCJOWUNOVSJdLCJkIjpmYWxzZSwicSI6eyJsIjozfX0=
          first: eyJkIjpmYWxzZSwicSI6eyJsIjozfX0=
          prev: eyJ2IjpbIjIwMjAtMTEtMTZUMDk6NTc6MjUuNTYxMDAwMFoiLCJOVEY1VCJdLCJkIjp0cnVlLCJxIjp7ImwiOjN9fQ==
          next: eyJ2IjpbIjIwMjAtMTEtMTZUMDk6NTc6MjUuNzY2MDAwMFoiLCJaOTVSUyJdLCJkIjpmYWxzZSwicSI6eyJsIjozfX0=
          last: eyJkIjp0cnVlLCJxIjp7ImwiOjN9fQ==
    problemsPaginationLimitException:
      value:
        type: /problems/validation-error
        type_documentation: https://developers.invers.com/problems/validation-error
        title: Validation Error
        status: 400
        detail: Limit must be in range [1,100]
        flow_id: 268de5ff-b700-4e1b-8ebc-b2d935782d93
    problemsInvalidQueryParamsError:
      value:
        type: /problems/validation-error
        type_documentation: https://developers.invers.com/problems/validation-error
        title: Validation Error
        status: 400
        detail: Cursor and limit parameters are present. Do not provide any other search-related query parameters when using the cursor.
        flow_id: 268de5ff-b700-4e1b-8ebc-b2d935782d93
    problemsInvalidCursorException:
      value:
        type: /problems/validation-error
        type_documentation: https://developers.invers.com/problems/validation-error
        title: Validation Error
        status: 400
        detail: The given cursor could not be parsed or was invalid during validation. Cursors are not supposed to be modified by the user.
        flow_id: 268de5ff-b700-4e1b-8ebc-b2d935782d93
    CloudBoxxExampleWithEmbedding:
      value:
        id: JQ7RP
        fleet_id: F48XD
        last_contact_at: '2021-02-17T14:33:12.42Z'
        created_at: '2021-01-19T13:13:09.952Z'
        master_data:
          modified_at: '2021-01-19T13:13:09.952Z'
          vin: R1NBDNB16J1000135
          license_plate: RKL-832
          brand: Audi
          model: A3
          custom_name: MyAudiA3
          fuel_type: GASOLINE
          year_of_production: '2020'
          transmission: AUTOMATIC
          vehicle_type: CAR
        capabilities:
          commands:
            - DISABLE_DRIVING
            - DRAW_ATTENTION
            - ENABLE_DRIVING
          vehicle_state:
            - CELLULAR_SIGNAL_QUALITY
            - DRIVING_ENABLED
            - MILEAGE_IN_KILOMETERS
            - POSITION
            - REMAINING_RANGE_IN_KILOMETERS
            - STATE_OF_CHARGE_OR_FUEL_LEVEL_IN_PERCENT
        telematics_unit:
          id: 38429DA427AB7C25
          attached_at: '2021-02-08T10:29:00Z'
          manufacturer: INVERS
          brand: CLOUDBOXX
          model: 4G
          model_variant: EU
          type: AFTER_MARKET
          setup:
            vehicle_model_id: 01F4XW6QHWKT4HMSFDZ9CCQH1G
            modified_at: '2021-02-08T10:31:00Z'
            status: SUCCEEDED
          firmware_versions:
            telematics_unit:
              value: 2.0.0
              timestamp: '2021-02-08T10:31:00Z'
            bluetooth:
              value: 1.5.7
              timestamp: '2021-02-08T10:31:00Z'
            modem:
              value: 1.0.2
              timestamp: '2021-02-08T10:31:00Z'
          secondary_id:
            value: '102010000000'
            name: serial_number
          accessories:
            damage_detection_module:
              connection_status: CONNECTED
              firmware_version: 1.0.0-0
              hardware_revision: 1
            cloudboxx_cardholder:
              connection_status: CONNECTED
              variant: LOW_FREQUENCY
              card_1: 00000000A566685F
              card_2: 00000000A655585F
              vehicle_key: 00000000FEAB1234
            cloudboxx_card_reader:
              connection_status: CONNECTED
              firmware_version: 1.2.3-4
            particulate_matter_sensor:
              connection_status: CONNECTED
              firmware_version: 1.0.0-0
              hardware_revision: 1
          cloudboxx_configuration:
            workshop_mode:
              enabled: false
              modified_at: '2023-07-19T14:33:01Z'
            obd_alarm:
              enabled: false
              modified_at: '2023-07-19T14:33:01Z'
            settings:
              beeper_enabled: false
              dead_reckoning_position_enabled: false
              current_mileage_in_kilometers: 52.1
              mileage_source: VSS
              ignition_source: KL15
              telematics_unit_supply_voltage_alarm_thresholds:
                alarm_threshold_in_volts: 11.5
                recover_threshold_in_volts: 12
              fuel_level_smoothing: false
              fuel_level_alarm_thresholds:
                enabled: true
                alarm_threshold_in_percent: 25
                recover_threshold_in_percent: 35
          feature_configuration:
            tracking:
              time_interval_in_seconds: 123
              distance_interval_in_meters: 100
              heading_change_threshold_in_degrees: 50
              modified_at: '2023-07-19T14:33:01Z'
          connectivity:
            active_service_provider:
              name: SIERRA_WIRELESS
              active_since: '2023-08-08T12:34:56Z'
        life_status:
          value: ONLINE
          modified_at: '2020-10-08T10:29:00Z'
        operation_status:
          value: OPERATING
          modified_at: '2020-10-08T12:29:00Z'
        latest_vehicle_state:
          mileage_in_kilometers:
            value: 70.402
            timestamp: '2021-02-17T14:32:55Z'
          state_of_charge_or_fuel_level_in_percent:
            value: 17
            timestamp: '2021-02-17T14:32:55Z'
          remaining_range_in_kilometers:
            value: 31.786
            timestamp: '2021-02-17T14:32:55Z'
          cellular_signal_quality:
            value: 3
            timestamp: '2021-02-17T14:32:55Z'
          driving_enabled:
            value: false
            timestamp: '2021-02-17T14:32:55Z'
          position:
            value:
              lat: 50.909826
              lon: 8.065595
            timestamp: '2021-02-17T14:32:53.824Z'
        rental_status:
          value: IN_RENTAL
          modified_at: '2020-10-08T12:29:00Z'
        tags_modified_at: '2020-10-08T10:29:00Z'
        custom_fields_modified_at: '2020-10-08T10:29:00Z'
        custom_fields:
          seats: '5'
          color: black
        tags: []
    problemsNotFound:
      value:
        type: /problems/resource-not-found
        type_documentation: https://developers.invers.com/problems/resource-not-found
        title: The resource cannot be found.
        status: 404
        detail: Resource with id 'MT3T3' was not found.
        flow_id: 268de5ff-b700-4e1b-8ebc-b2d935782d93
    problemsUniqueIdentifierAlreadyExists:
      value:
        type: /problems/unique-identifier-already-exists
        type_documentation: https://developers.invers.com/problems/unique-identifier-already-exists
        title: Unique identifier already exists.
        status: 409
        detail: The 'master_data.vin' 'R1NBDNB16J1000135' is already assigned to another vehicle.
        flow_id: a1c927a9-a15d-45c9-8927-a9a15de5c9b1
    CloudBoxxExample:
      value:
        id: JQ7RP
        fleet_id: F48XD
        last_contact_at: '2021-02-17T14:33:12.42Z'
        created_at: '2021-01-19T13:13:09.952Z'
        master_data:
          modified_at: '2021-01-19T13:13:09.952Z'
          vin: R1NBDNB16J1000135
          license_plate: RKL-832
          brand: Audi
          model: A3
          custom_name: MyAudiA3
          fuel_type: GASOLINE
          year_of_production: '2020'
          transmission: AUTOMATIC
          vehicle_type: CAR
        capabilities:
          commands:
            - DISABLE_DRIVING
            - DRAW_ATTENTION
            - ENABLE_DRIVING
          vehicle_state:
            - CELLULAR_SIGNAL_QUALITY
            - DRIVING_ENABLED
            - MILEAGE_IN_KILOMETERS
            - POSITION
            - REMAINING_RANGE_IN_KILOMETERS
            - STATE_OF_CHARGE_OR_FUEL_LEVEL_IN_PERCENT
        telematics_unit:
          id: 38429DA427AB7C25
          attached_at: '2021-02-08T10:29:00Z'
          manufacturer: INVERS
          brand: CLOUDBOXX
          model: 4G
          model_variant: EU
          type: AFTER_MARKET
          setup:
            vehicle_model_id: 01F4XW6QHWKT4HMSFDZ9CCQH1G
            modified_at: '2021-02-08T10:31:00Z'
            status: SUCCEEDED
          firmware_versions:
            telematics_unit:
              value: 2.0.0
              timestamp: '2021-02-08T10:31:00Z'
            bluetooth:
              value: 1.5.7
              timestamp: '2021-02-08T10:31:00Z'
            modem:
              value: 1.0.2
              timestamp: '2021-02-08T10:31:00Z'
          secondary_id:
            value: '102010000000'
            name: serial_number
          accessories:
            cloudboxx_cardholder:
              card_1: 00000000A566685F
              card_2: 00000000A655585F
              vehicle_key: 00000000FEAB1234
          connectivity:
            active_service_provider:
              name: SIERRA_WIRELESS
              active_since: '2023-08-08T12:34:56Z'
        cloudboxx_configuration:
          workshop_mode:
            enabled: false
            modified_at: '2023-07-19T14:33:01Z'
          obd_alarm:
            enabled: false
            modified_at: '2023-07-19T14:33:01Z'
        life_status:
          value: ONLINE
          modified_at: '2020-10-08T10:29:00Z'
        operation_status:
          value: OPERATING
          modified_at: '2020-10-08T12:29:00Z'
        latest_vehicle_state:
          mileage_in_kilometers:
            value: 70.402
            timestamp: '2021-02-17T14:32:55Z'
          state_of_charge_or_fuel_level_in_percent:
            value: 17
            timestamp: '2021-02-17T14:32:55Z'
          remaining_range_in_kilometers:
            value: 31.786
            timestamp: '2021-02-17T14:32:55Z'
          cellular_signal_quality:
            value: 3
            timestamp: '2021-02-17T14:32:55Z'
          driving_enabled:
            value: false
            timestamp: '2021-02-17T14:32:55Z'
          position:
            value:
              lat: 50.909826
              lon: 8.065595
            timestamp: '2021-02-17T14:32:53.824Z'
        rental_status:
          value: IN_RENTAL
          modified_at: '2020-10-08T12:29:00Z'
        tags_modified_at: '2020-10-08T10:29:00Z'
        custom_fields_modified_at: '2020-10-08T10:29:00Z'
        custom_fields:
          seats: '5'
          color: black
        tags: []
    problemsFleetNotSupported:
      value:
        type: /problems/fleet-not-supported
        title: Request is not supported by the current fleet.
        status: 400
        detail: The endpoint to get all sharing partners is only supported for fleets that have subscribed to the FleetShare feature.
        flow_id: 268de5ff-b700-4e1b-8ebc-b2d935782d93
    postVehicleSharingRequestExample:
      value:
        fleet_id: HZFSN
        ends_at: '2021-03-10T12:00:00Z'
    vehicleWithSharingResponseExample:
      value:
        id: JQ7RP
        fleet_id: F48XD
        last_contact_at: '2021-02-17T14:33:12.42Z'
        created_at: '2021-01-19T13:13:09.952Z'
        master_data:
          modified_at: '2021-01-19T13:13:09.952Z'
          vin: R1NBDNB16J1000135
          license_plate: RKL-832
          brand: Audi
          model: A3
          custom_name: MyAudiA3
          fuel_type: GASOLINE
          year_of_production: '2020'
          transmission: AUTOMATIC
          vehicle_type: CAR
        capabilities:
          commands:
            - DISABLE_DRIVING
            - DRAW_ATTENTION
            - ENABLE_DRIVING
          vehicle_state:
            - CELLULAR_SIGNAL_QUALITY
            - DRIVING_ENABLED
            - MILEAGE_IN_KILOMETERS
            - POSITION
            - REMAINING_RANGE_IN_KILOMETERS
            - STATE_OF_CHARGE_OR_FUEL_LEVEL_IN_PERCENT
        telematics_unit:
          id: 38429DA427AB7C25
          attached_at: '2021-02-08T10:29:00Z'
          manufacturer: INVERS
          brand: CLOUDBOXX
          model: 4G
          model_variant: EU
          type: AFTER_MARKET
          setup:
            vehicle_model_id: 01F4XW6QHWKT4HMSFDZ9CCQH1G
            modified_at: '2021-02-08T10:31:00Z'
            status: SUCCEEDED
          firmware_versions:
            telematics_unit:
              value: 2.0.0
              timestamp: '2021-02-08T10:31:00Z'
            bluetooth:
              value: 1.5.7
              timestamp: '2021-02-08T10:31:00Z'
            modem:
              value: 1.0.2
              timestamp: '2021-02-08T10:31:00Z'
          secondary_id:
            value: '102010000000'
            name: serial_number
          accessories:
            cloudboxx_cardholder:
              card_1: 00000000A566685F
              card_2: 00000000A655585F
              vehicle_key: 00000000FEAB1234
          connectivity:
            active_service_provider:
              name: SIERRA_WIRELESS
              active_since: '2023-08-08T12:34:56Z'
        latest_vehicle_state:
          mileage_in_kilometers:
            value: 70.402
            timestamp: '2021-02-17T14:32:55Z'
          state_of_charge_or_fuel_level_in_percent:
            value: 17
            timestamp: '2021-02-17T14:32:55Z'
          remaining_range_in_kilometers:
            value: 31.786
            timestamp: '2021-02-17T14:32:55Z'
          cellular_signal_quality:
            value: 3
            timestamp: '2021-02-17T14:32:55Z'
          driving_enabled:
            value: false
            timestamp: '2021-02-17T14:32:55Z'
          position:
            value:
              lat: 50.909826
              lon: 8.065595
            timestamp: '2021-02-17T14:32:53.824Z'
        life_status:
          value: ONLINE
          modified_at: '2020-10-08T10:29:00Z'
        operation_status:
          value: OPERATING
          modified_at: '2020-10-08T12:29:00Z'
        rental_status:
          value: IN_RENTAL
          modified_at: '2020-10-08T12:29:00Z'
        custom_fields_modified_at: '2020-10-08T10:29:00Z'
        custom_fields:
          seats: '5'
          color: black
        tags_modified_at: '2020-10-08T10:29:00Z'
        tags: []
        sharing:
          status: SHARED_OWN_VEHICLE
          owner:
            fleet_id: F48XD
            name: ShareOne
          partner:
            fleet_id: HZFSN
            name: ShareTwo
          starts_at: '2021-03-10T10:00:00Z'
          ends_at: '2021-03-10T12:00:00Z'
    vehicleAlreadySharedExample:
      value:
        type: /problems/conflicting-resource
        title: Request cannot be processed due to a conflicting resource or resource state.
        status: 409
        detail: The vehicle with id 'JQ7RP' is already shared.
        flow_id: 268de5ff-b700-4e1b-8ebc-b2d935782d93
    vehicleNotSharedErrorResponse:
      value:
        type: /problems/conflicting-resource
        title: Request cannot be processed due to a conflicting resource or resource state.
        status: 409
        detail: The vehicle with id 'JQ7RP' is not shared.
        flow_id: 268de5ff-b700-4e1b-8ebc-b2d935782d93
    vehicleAlreadyInRentalExample:
      value:
        type: /problems/conflicting-resource
        title: Request cannot be processed due to a conflicting resource or resource state.
        status: 409
        detail: The vehicle with id 'JQ7RP' is already in a rental.
        flow_id: 268de5ff-b700-4e1b-8ebc-b2d935782d93
    vehicleNotInRentalExample:
      value:
        type: /problems/conflicting-resource
        title: Request cannot be processed due to a conflicting resource or resource state.
        status: 409
        detail: The vehicle with id 'JQ7RP' is not in a rental.
        flow_id: 268de5ff-b700-4e1b-8ebc-b2d935782d93
    vehicleSharedWithPartner:
      value:
        type: /problems/vehicle/shared-with-partner
        type_documentation: https://developers.invers.com/problems/vehicle/shared-with-partner
        title: Request cannot be processed due to a conflicting resource or resource state.
        status: 409
        detail: It is not allowed to modify the 'rental_status' while the vehicle 'JQ7RP' is shared with a partner.
        flow_id: 268de5ff-b700-4e1b-8ebc-b2d935782d93
    vehicleTagsBulkUpdateRequestExample:
      value:
        items:
          - id: JQ7RP
            op: ADD
            tags:
              - Berlin
              - Favourite
          - id: K7272
            op: REMOVE
            tags:
              - Hamburg
              - Favourite
    vehicleTagsBulkUpdateResultExample:
      value:
        items:
          - id: JQ7RP
            status: SUCCESS
            tags:
              - Berlin
              - Favourite
          - id: MT3T3
            status: NOT_FOUND
            status_message: Vehicle with id 'MT3T3' was not found.
    ArchivedVehicleListCloudBoxxExample:
      value:
        items:
          - id: JQ7RP
            archived_at: '2021-02-17T14:37:02.12Z'
            snapshot:
              id: JQ7RP
              fleet_id: F48XD
              last_contact_at: '2021-02-17T14:33:12.42Z'
              created_at: '2021-01-19T13:13:09.952Z'
              master_data:
                modified_at: '2021-01-19T13:13:09.952Z'
                vin: R1NBDNB16J1000135
                license_plate: RKL-832
                brand: Audi
                model: A3
                custom_name: MyAudiA3
                fuel_type: GASOLINE
                year_of_production: '2020'
                transmission: AUTOMATIC
                vehicle_type: CAR
              capabilities:
                commands:
                  - DISABLE_DRIVING
                  - DRAW_ATTENTION
                  - ENABLE_DRIVING
                vehicle_state:
                  - CELLULAR_SIGNAL_QUALITY
                  - DRIVING_ENABLED
                  - MILEAGE_IN_KILOMETERS
                  - POSITION
                  - REMAINING_RANGE_IN_KILOMETERS
                  - STATE_OF_CHARGE_OR_FUEL_LEVEL_IN_PERCENT
              telematics_unit:
                id: 38429DA427AB7C25
                attached_at: '2021-02-08T10:29:00Z'
                manufacturer: INVERS
                brand: CLOUDBOXX
                model: 4G
                model_variant: EU
                type: AFTER_MARKET
                setup:
                  vehicle_model_id: 01F4XW6QHWKT4HMSFDZ9CCQH1G
                  modified_at: '2021-02-08T10:31:00Z'
                  status: SUCCEEDED
                firmware_versions:
                  telematics_unit:
                    value: 2.0.0
                    timestamp: '2021-02-08T10:31:00Z'
                  bluetooth:
                    value: 1.5.7
                    timestamp: '2021-02-08T10:31:00Z'
                  modem:
                    value: 1.0.2
                    timestamp: '2021-02-08T10:31:00Z'
                secondary_id:
                  value: '102010000000'
                  name: serial_number
                accessories:
                  cloudboxx_cardholder:
                    card_1: 00000000A566685F
                    card_2: 00000000A655585F
                    vehicle_key: 00000000FEAB1234
                feature_configuration:
                  tracking:
                    time_interval_in_seconds: 123
                    distance_interval_in_meters: 100
                    heading_change_threshold_in_degrees: 50
                    modified_at: '2023-07-19T14:33:01Z'
                connectivity:
                  active_service_provider:
                    name: SIERRA_WIRELESS
                    active_since: '2023-08-08T12:34:56Z'
              latest_vehicle_state:
                mileage_in_kilometers:
                  value: 70.402
                  timestamp: '2021-02-17T14:32:55Z'
                state_of_charge_or_fuel_level_in_percent:
                  value: 17
                  timestamp: '2021-02-17T14:32:55Z'
                remaining_range_in_kilometers:
                  value: 31.786
                  timestamp: '2021-02-17T14:32:55Z'
                cellular_signal_quality:
                  value: 3
                  timestamp: '2021-02-17T14:32:55Z'
                driving_enabled:
                  value: false
                  timestamp: '2021-02-17T14:32:55Z'
                position:
                  value:
                    lat: 50.909826
                    lon: 8.065595
                  timestamp: '2021-02-17T14:32:53.824Z'
              life_status:
                value: ONLINE
                modified_at: '2020-10-08T10:29:00Z'
              operation_status:
                value: OPERATING
                modified_at: '2020-10-08T12:29:00Z'
              rental_status:
                value: IN_RENTAL
                modified_at: '2020-10-08T12:29:00Z'
              custom_fields_modified_at: '2020-10-08T10:29:00Z'
              custom_fields:
                seats: '5'
                color: black
              tags_modified_at: '2020-10-08T10:29:00Z'
              tags: []
        cursors:
          self: eyJ2IjpbIjIwMjAtMTEtMTZUMDk6NTc6MjUuNDUwMDAwMFoiLCJOWUNOVSJdLCJkIjpmYWxzZSwicSI6eyJsIjozfX0=
          first: eyJkIjpmYWxzZSwicSI6eyJsIjozfX0=
          prev: eyJ2IjpbIjIwMjAtMTEtMTZUMDk6NTc6MjUuNTYxMDAwMFoiLCJOVEY1VCJdLCJkIjp0cnVlLCJxIjp7ImwiOjN9fQ==
          next: eyJ2IjpbIjIwMjAtMTEtMTZUMDk6NTc6MjUuNzY2MDAwMFoiLCJaOTVSUyJdLCJkIjpmYWxzZSwicSI6eyJsIjozfX0=
          last: eyJkIjp0cnVlLCJxIjp7ImwiOjN9fQ==
    ArchivedCloudBoxxExample:
      value:
        id: JQ7RP
        archived_at: '2021-02-17T15:02:09.438Z'
        snapshot:
          id: JQ7RP
          fleet_id: F48XD
          last_contact_at: '2021-02-17T14:33:12.42Z'
          created_at: '2021-01-19T13:13:09.952Z'
          master_data:
            modified_at: '2021-01-19T13:13:09.952Z'
            vin: R1NBDNB16J1000135
            license_plate: RKL-832
            brand: Audi
            model: A3
            custom_name: MyAudiA3
            fuel_type: GASOLINE
            year_of_production: '2020'
            transmission: AUTOMATIC
            vehicle_type: CAR
          capabilities:
            commands:
              - DISABLE_DRIVING
              - DRAW_ATTENTION
              - ENABLE_DRIVING
            vehicle_state:
              - CELLULAR_SIGNAL_QUALITY
              - DRIVING_ENABLED
              - MILEAGE_IN_KILOMETERS
              - POSITION
              - REMAINING_RANGE_IN_KILOMETERS
              - STATE_OF_CHARGE_OR_FUEL_LEVEL_IN_PERCENT
          telematics_unit:
            id: 38429DA427AB7C25
            attached_at: '2021-02-08T10:29:00Z'
            manufacturer: INVERS
            brand: CLOUDBOXX
            model: 4G
            model_variant: EU
            type: AFTER_MARKET
            setup:
              vehicle_model_id: 01F4XW6QHWKT4HMSFDZ9CCQH1G
              modified_at: '2021-02-08T10:31:00Z'
              status: SUCCEEDED
            firmware_versions:
              telematics_unit:
                value: 2.0.0
                timestamp: '2021-02-08T10:31:00Z'
              bluetooth:
                value: 1.5.7
                timestamp: '2021-02-08T10:31:00Z'
              modem:
                value: 1.0.2
                timestamp: '2021-02-08T10:31:00Z'
            secondary_id:
              value: '102010000000'
              name: serial_number
            accessories:
              cloudboxx_cardholder:
                card_1: 00000000A566685F
                card_2: 00000000A655585F
                vehicle_key: 00000000FEAB1234
            feature_configuration:
              tracking:
                time_interval_in_seconds: 123
                distance_interval_in_meters: 100
                heading_change_threshold_in_degrees: 50
                modified_at: '2023-07-19T14:33:01Z'
            connectivity:
              active_service_provider:
                name: SIERRA_WIRELESS
                active_since: '2023-08-08T12:34:56Z'
          latest_vehicle_state:
            mileage_in_kilometers:
              value: 70.402
              timestamp: '2021-02-17T14:32:55Z'
            state_of_charge_or_fuel_level_in_percent:
              value: 17
              timestamp: '2021-02-17T14:32:55Z'
            remaining_range_in_kilometers:
              value: 31.786
              timestamp: '2021-02-17T14:32:55Z'
            cellular_signal_quality:
              value: 3
              timestamp: '2021-02-17T14:32:55Z'
            driving_enabled:
              value: false
              timestamp: '2021-02-17T14:32:55Z'
            position:
              value:
                lat: 50.909826
                lon: 8.065595
              timestamp: '2021-02-17T14:32:53.824Z'
          life_status:
            value: ONLINE
            modified_at: '2020-10-08T10:29:00Z'
          operation_status:
            value: OPERATING
            modified_at: '2020-10-08T12:29:00Z'
          rental_status:
            value: IN_RENTAL
            modified_at: '2020-10-08T12:29:00Z'
          custom_fields_modified_at: '2020-10-08T10:29:00Z'
          custom_fields:
            seats: '5'
            color: black
          tags_modified_at: '2020-10-08T10:29:00Z'
          tags: []
    problemsValidationError:
      value:
        type: /problems/validation-error
        type_documentation: https://developers.invers.com/problems/validation-error
        title: Validation Error
        status: 400
        detail: The property test is not allowed.
        flow_id: 268de5ff-b700-4e1b-8ebc-b2d935782d93
  responses:
    vehicleList:
      description: A list of vehicles matching criteria.
      content:
        application/json:
          schema:
            description: Paged vehicle result.
            type: object
            required:
              - items
            properties:
              items:
                type: array
                items:
                  $ref: '#/components/schemas/vehicleWithEmbedding'
              cursors:
                $ref: '#/components/schemas/cursors'
          examples:
            CloudBoxx:
              $ref: '#/components/examples/VehicleListCloudBoxxExample'
    CursorBasedValidationErrorResponse:
      description: Validation of the query parameters failed.
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/Problem'
          examples:
            Limit is invalid:
              $ref: '#/components/examples/problemsPaginationLimitException'
            Invalid query params:
              $ref: '#/components/examples/problemsInvalidQueryParamsError'
            Cursor is invalid:
              $ref: '#/components/examples/problemsInvalidCursorException'
    vehicleWithEmbedding:
      description: A vehicle.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/vehicleWithEmbedding'
          examples:
            CloudBoxx:
              $ref: '#/components/examples/CloudBoxxExampleWithEmbedding'
    vehicleNotFoundErrorResponse:
      description: Vehicle was not found.
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/Problem'
          examples:
            Vehicle not found:
              $ref: '#/components/examples/problemsNotFound'
    uniqueIdentifierAlreadyExistsErrorResponse:
      description: A Vehicle with the given unique identifier already exists.
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/Problem'
          examples:
            Vehicle not found:
              $ref: '#/components/examples/problemsUniqueIdentifierAlreadyExists'
    vehicle:
      description: A vehicle.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/vehicle'
          examples:
            CloudBoxx:
              $ref: '#/components/examples/CloudBoxxExample'
    sharingPartners:
      description: A list of sharing partners
      content:
        application/json:
          schema:
            description: A list of sharing partners
            type: object
            required:
              - items
            properties:
              items:
                description: A list of sharing partners
                type: array
                items:
                  $ref: '#/components/schemas/sharingPartner'
          example:
            items:
              - fleet_id: HZFSN
                public_fleet_name: Share Two
    fleetNotSupportedErrorResponse:
      description: Request is not supported by the current fleet. See example for more details.
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/Problem'
          examples:
            Fleet not supported:
              $ref: '#/components/examples/problemsFleetNotSupported'
    vehicleWithSharing:
      description: A shared vehicle
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/vehicle'
          examples:
            Example:
              $ref: '#/components/examples/vehicleWithSharingResponseExample'
    notFoundErrorResponse:
      description: Requested resource was not found. See example for more details.
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/Problem'
          examples:
            Vehicle not found:
              $ref: '#/components/examples/problemsNotFound'
    vehicleAlreadyShared:
      description: Vehicle is already shared
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/Problem'
          examples:
            Example:
              $ref: '#/components/examples/vehicleAlreadySharedExample'
    vehicleNotSharedErrorResponse:
      description: Vehicle is not shared.
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/Problem'
          examples:
            Vehicle is not shared:
              $ref: '#/components/examples/vehicleNotSharedErrorResponse'
    vehicleRentalChanged:
      description: Rental status changed
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/vehicle'
          examples:
            Example:
              $ref: '#/components/examples/vehicleWithSharingResponseExample'
    vehicleRentalStatusConflict:
      description: Vehicle `rental_status` is in conflict with the operation
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/Problem'
          examples:
            Vehicle already in rental:
              $ref: '#/components/examples/vehicleAlreadyInRentalExample'
            Vehicle not in rental:
              $ref: '#/components/examples/vehicleNotInRentalExample'
            Vehicle shared with partner:
              $ref: '#/components/examples/vehicleSharedWithPartner'
    customFieldList:
      description: A list of all custom field key values.
      content:
        application/json:
          schema:
            description: List vehicle custom field keys result.
            type: object
            required:
              - items
            properties:
              items:
                description: The array containing all custom field keys
                type: array
                items:
                  type: string
                example:
                  - color
                  - seats
                  - tires
    customFieldValueList:
      description: A list of all custom field values for the specified custom field key.
      content:
        application/json:
          schema:
            description: List of vehicle custom field values for the specified custom field key.
            type: object
            required:
              - items
            properties:
              items:
                description: The array containing all custom field values for the specified custom field key.
                type: array
                items:
                  type: string
                example:
                  - black
                  - blue
                  - red
                  - white
    tagsModifiedResponse:
      description: The tags of the vehicle after the modification.
      content:
        application/json:
          schema:
            type: object
            required:
              - items
            properties:
              items:
                $ref: '#/components/schemas/tags'
    tagsList:
      description: A list of all tags.
      content:
        application/json:
          schema:
            type: object
            required:
              - items
            properties:
              items:
                $ref: '#/components/schemas/tags'
    vehicleTagsBulk:
      description: The result of the bulk update request for vehicle tags
      content:
        application/json:
          schema:
            description: Contains the result of a vehicle tags bulk update request
            type: object
            required:
              - items
            properties:
              items:
                description: The array contains a result for each vehicle tags update request
                type: array
                items:
                  description: Contains the result of a tags update request for one vehicle
                  type: object
                  required:
                    - id
                    - status
                  properties:
                    id:
                      $ref: '#/components/schemas/vehicleId'
                    status:
                      type: string
                      description: Indicates whether the update request could be successfully applied to the tags of the vehicle
                      x-extensible-enum:
                        - SUCCESS
                        - ERROR
                        - NOT_FOUND
                      example: SUCCESS
                    status_message:
                      type: string
                      description: Gives additional information about the error if the update could not be performed successfully
                      example: Vehicle with id 'JQ7RP' was not found.
                    tags:
                      $ref: '#/components/schemas/tags'
          examples:
            Example:
              $ref: '#/components/examples/vehicleTagsBulkUpdateResultExample'
    archivedVehicleList:
      description: A list of vehicles matching criteria.
      content:
        application/json:
          schema:
            description: Paged archived vehicle result.
            type: object
            required:
              - items
              - cursors
            properties:
              items:
                type: array
                items:
                  $ref: '#/components/schemas/archivedVehicle'
              cursors:
                $ref: '#/components/schemas/cursors'
          examples:
            CloudBoxx:
              $ref: '#/components/examples/ArchivedVehicleListCloudBoxxExample'
    archivedVehicleResponse:
      description: An archived vehicle
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/archivedVehicle'
          examples:
            CloudBoxx:
              $ref: '#/components/examples/ArchivedCloudBoxxExample'
    archivedVehicleNotFoundErrorResponse:
      description: Archived vehicle was not found.
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/Problem'
          examples:
            Archived vehicle not found:
              $ref: '#/components/examples/problemsNotFound'
    validationErrorResponse:
      description: Request validation failed. See example for more details.
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/Problem'
          examples:
            Validation Error:
              $ref: '#/components/examples/problemsValidationError'
  requestBodies:
    patchVehicle:
      content:
        application/merge-patch+json:
          schema:
            $ref: '#/components/schemas/patchVehicle'
    postVehicleSharing:
      content:
        application/json:
          schema:
            description: Request to start sharing of a vehicle to another fleet
            type: object
            required:
              - fleet_id
            properties:
              fleet_id:
                description: Unique ID of the fleet of the partner
                allOf:
                  - $ref: '#/components/schemas/fleetId'
              ends_at:
                $ref: '#/components/schemas/sharingEndsAt'
          examples:
            Example:
              $ref: '#/components/examples/postVehicleSharingRequestExample'
    patchVehicleSharing:
      content:
        application/json:
          schema:
            description: Request to update the sharing of a vehicle
            type: object
            properties:
              ends_at:
                $ref: '#/components/schemas/sharingEndsAt'
    putRentalStatus:
      content:
        application/json:
          schema:
            description: Request to set the rental status of a vehicle
            discriminator:
              propertyName: value
              mapping:
                IN_RENTAL: '#/components/schemas/putRentalStatusInRental'
                NOT_IN_RENTAL: '#/components/schemas/putRentalStatusNotInRental'
    postVehicleTagsBulk:
      content:
        application/json:
          schema:
            description: Bulk update of vehicle tags
            type: object
            required:
              - items
            properties:
              items:
                type: array
                description: The array with all vehicle tags update requests
                items:
                  description: A single item to update vehicle tags in a bulk
                  type: object
                  properties:
                    id:
                      $ref: '#/components/schemas/vehicleId'
                    op:
                      type: string
                      description: The operation that will be performed.
                      x-extensible-enum:
                        - ADD
                        - REMOVE
                    tags:
                      description: |
                        The list of tags to add or remove.

                        Tags for a vehicle are distinct, so adding the same tag twice will not duplicate it.
                        Tags must not be empty or consist entirely of whitespace.
                      allOf:
                        - $ref: '#/components/schemas/tags'
          examples:
            Example:
              $ref: '#/components/examples/vehicleTagsBulkUpdateRequestExample'
  schemas:
    putRentalStatusInRental:
      type: object
      required:
        - value
      properties:
        value:
          $ref: '#/components/schemas/rentalStatus'
        rental_id:
          $ref: '#/components/schemas/rentalId'
    putRentalStatusNotInRental:
      type: object
      required:
        - value
      properties:
        value:
          $ref: '#/components/schemas/rentalStatus'
    lifeStatus:
      type: string
      description: |
        Indicates the Life Status of the vehicle.

        `ONLINE` the vehicle has sent any data within the expected time. It can be assumed that the vehicle is connected and working.

        `OFFLINE` indicates that a vehicle has not sent an event within the expected time. This does not automatically mean that the vehicle has a problem.

        `DISAPPEARED` indicates that the vehicle is not ready to be used, because the telematics-unit of the vehicle is gone from a third party API.

        `ABSENT` the vehicle was `OFFLINE` for a long time period (>7 days), it is likely not ready for use.

        `SETUP` the vehicle is in the telematics unit setup process, it is not yet ready for use.
      x-extensible-enum:
        - ONLINE
        - OFFLINE
        - DISAPPEARED
        - ABSENT
        - SETUP
      example: ONLINE
    operationStatus:
      type: string
      description: |
        Indicates the operation status of the vehicle.

        This is meant as an indicator, the Vehicle Management API will
        only set it initially to `OPERATING`.
      x-extensible-enum:
        - OPERATING
        - GARAGE
        - DEFECT
        - FRAUD
        - MAINTENANCE
        - DECOMMISSIONED
      default: OPERATING
      example: GARAGE
    setupStatus:
      type: string
      x-extensible-enum:
        - RUNNING
        - SUCCEEDED
        - FAILED
      maxLength: 64
      description: The current status of the telematics unit setup.
    customFields:
      description: |
        Custom fields can be used to add additional information to vehicles.
        The data structure is a dictionary<string, string>, whereby the key (property name*) and the value can be chosen freely.
      type: object
      additionalProperties:
        type: string
      example:
        seats: '5'
        color: black
    vehicleId:
      type: string
      maxLength: 12
      description: Unique ID of the vehicle.
      example: JQ7RP
    fleetId:
      type: string
      description: The unique ID of the fleet
      example: F48XD
    lastContactAt:
      type: string
      format: date-time
      example: '2021-02-17T14:33:12.42Z'
      description: Timestamp when the last contact from the vehicle was made.
    Vin:
      type: string
      pattern: ^(?:[A-Ha-hJ-Nj-nPpR-Zr-z0-9]{12}[0-9]{5}|[A-Ha-hJ-Nj-nPpR-Zr-z0-9\-]{10,12})$
      description: The vehicle identification number (VIN) of the vehicle.
      example: R1NBDNB16J1000135
    LicensePlate:
      type: string
      example: RKL-832
      maxLength: 70
      description: The license plate of the vehicle.
    Brand:
      type: string
      example: Audi
      maxLength: 70
      description: The brand of the vehicle.
    Model:
      type: string
      description: The model of the vehicle.
      example: A3
      maxLength: 70
    CustomName:
      type: string
      description: Custom name of a vehicle.
      example: MyAudiA3
      maxLength: 70
    FuelType:
      type: string
      description: The fuel type of a vehicle.
      x-extensible-enum:
        - GASOLINE
        - DIESEL
        - HYBRID
        - ELECTRIC
        - LPG
        - HYDROGEN
        - UNKNOWN
      example: ELECTRIC
    YearOfProduction:
      type: string
      description: The production year of the vehicle.
      example: '2020'
      minLength: 4
      maxLength: 20
    Transmission:
      type: string
      description: The transmission of the vehicle.
      x-extensible-enum:
        - AUTOMATIC
        - MANUAL_SHIFT
    VehicleType:
      type: string
      description: The type of the vehicle.
      x-extensible-enum:
        - BIKE
        - KICKSCOOTER
        - SCOOTER
        - MOTORCYCLE
        - CAR
        - VAN
        - TRUCK
        - BUS
        - DEV_KIT
        - MOPED
        - DOOR_OPENER
      example: CAR
    Remark:
      type: string
      maxLength: 500
      description: Any additional information about the vehicle.
      example: Our customers like that car very much.
    MasterDataBase:
      description: Basic information, such as VIN or license plate of a vehicle.
      type: object
      properties:
        vin:
          $ref: '#/components/schemas/Vin'
        license_plate:
          $ref: '#/components/schemas/LicensePlate'
        brand:
          $ref: '#/components/schemas/Brand'
        model:
          $ref: '#/components/schemas/Model'
        custom_name:
          $ref: '#/components/schemas/CustomName'
        fuel_type:
          $ref: '#/components/schemas/FuelType'
        year_of_production:
          $ref: '#/components/schemas/YearOfProduction'
        transmission:
          $ref: '#/components/schemas/Transmission'
        vehicle_type:
          $ref: '#/components/schemas/VehicleType'
        remark:
          $ref: '#/components/schemas/Remark'
    MasterData:
      description: Basic information, such as VIN or license plate of a vehicle.
      allOf:
        - type: object
          properties:
            modified_at:
              type: string
              format: date-time
              example: '2021-02-17T10:29:00Z'
              description: Timestamp when the master_data was last modified.
        - $ref: '#/components/schemas/MasterDataBase'
    telematicsUnitId:
      type: string
      maxLength: 40
      example: 38429DA427AB7C25
      description: |
        The ID of the telematics unit.
        The telematics unit ID is assigned by the telematics manufacturer and it is unique only per telematics brand.
        Therefore, the ID of a telematics unit alone is not unique in the entire INVERS ecosystem.
    vehicleModelId:
      type: string
      maxLength: 40
      example: 01F4XW6QHWKT4HMSFDZ9CCQH1G
      description: Unique identifier of the model of the vehicle the telematics unit is installed in.
    telematicsUnitSetupBase:
      description: |
        Information about how the telematics unit is configured.
      type: object
      properties:
        vehicle_model_id:
          $ref: '#/components/schemas/vehicleModelId'
        model_extensions:
          description: |
            List of vehicle model extensions fitting the vehicle.
            Only the names of the extensions need to be specified.
          type: array
          x-extensible-enum:
            - REMOTE_LOCKING_TOP_CASE
            - SELF_LOCKING_TOP_CASE
            - SUNROOF
          items:
            type: string
            maxLength: 64
            x-extensible-enum:
              - REMOTE_LOCKING_TOP_CASE
              - SELF_LOCKING_TOP_CASE
              - SUNROOF
          example:
            - SUNROOF
    telematicsUnitSetupCloudboxxInstallationConfiguration:
      type: object
      description: |
        Contains CloudBoxx specific configuration parameters.
        This property is only relevant if the telematics unit is a CloudBoxx.
      properties:
        central_lock_connection_type:
          type: string
          description: |
            Specifies the type of the central lock connection that is required for the vehicle model.
          x-extensible-enum:
            - DIRECT
            - LOMO
            - PID_LOMO
            - SKM
          maxLength: 64
          example: PID_LOMO
        installation_variant:
          type: string
          description: |
            Specifies the way in which the CloudBoxx is installed in the vehicle.

            Note that the `OBD2_INSTALLATION` is not compatible with the `central_lock_connection_type`
            `LOMO`.
            `CAN_INSTALLATION`, in contrast, is compatible with all `central_lock_connection_type`s.
          x-extensible-enum:
            - CAN_INSTALLATION
            - OBD2_INSTALLATION
          default: CAN_INSTALLATION
          example: CAN_INSTALLATION
          maxLength: 64
    telematicsUnitSetupMercedesCommandsEnabled:
      description: |
        By setting this property to `false`, commands for the Mercedes-Benz vehicles can be explicitly disabled.
        If set to `false` the vehicle will have no command capabilities.
      default: true
      type: boolean
    mercedesConfiguration:
      required:
        - commands_enabled
        - key_provisioned
      description: Information about Mercedes-Benz configuration values.
      properties:
        commands_enabled:
          $ref: '#/components/schemas/telematicsUnitSetupMercedesCommandsEnabled'
        key_provisioned:
          description: |
            Whether a key has been provisioned via the [INVERS Mercedes-Benz Configuration API](https://developers.invers.com/reference/mercedes-benz-configuration-api#tag/Mercedes-Benz-Configuration/paths/~1vehicles~1%7Bid%7D~1mercedes-configuration~1key-provision/post).
            On creating a new telematics unit, this value is always 'false'.
            When executing a setup, the previous value is preserved.
          default: false
          type: boolean
    telematicsUnitSetup:
      allOf:
        - $ref: '#/components/schemas/telematicsUnitSetupBase'
        - type: object
          required:
            - vehicle_model_id
            - modified_at
            - status
          properties:
            cloudboxx_installation_configuration:
              $ref: '#/components/schemas/telematicsUnitSetupCloudboxxInstallationConfiguration'
            modified_at:
              type: string
              format: date-time
              example: '2020-10-08T10:29:00Z'
              description: Timestamp when setup was last modified.
            status:
              $ref: '#/components/schemas/setupStatus'
            error_message:
              type: string
              description: In case the setup failed, this contains a description of the error.
              example: A timeout occurred while trying to configure the vehicle.
            model_version:
              minimum: 1
              type: integer
              format: int32
              description: The version of the vehicle model.
              example: 3
            mercedes_configuration:
              $ref: '#/components/schemas/mercedesConfiguration'
    firmwareVersions:
      type: object
      description: Information about the firmware versions installed on the telematics unit.
      properties:
        bluetooth:
          type: object
          description: The bluetooth firmware with version and timestamp
          required:
            - value
            - timestamp
          properties:
            value:
              type: string
              description: The version of the bluetooth firmware
              example: 1.5.7
            timestamp:
              type: string
              format: date-time
              example: '2020-10-08T10:29:00Z'
              description: Timestamp when the bluetooth firmware version was updated or last requested from the telematics unit.
        modem:
          type: object
          description: The modem firmware with version and timestamp
          required:
            - value
            - timestamp
          properties:
            value:
              type: string
              description: The version of the modem firmware
              example: 1.0.2
            timestamp:
              type: string
              format: date-time
              example: '2020-10-08T10:29:00Z'
              description: Timestamp when the modem firmware version was updated or last requested from the telematics unit.
        telematics_unit:
          type: object
          description: The firmware of the telematics unit with version and timestamp
          required:
            - value
            - timestamp
          properties:
            value:
              type: string
              description: The version of the telematics unit firmware
              example: 2.0.0
            timestamp:
              type: string
              format: date-time
              example: '2020-10-08T10:29:00Z'
              description: Timestamp when the telematics unit firmware version was updated or last requested from the telematics unit.
    cloudboxxCardholderAccessory:
      type: object
      description: The CloudBoxx card holder accessory
      properties:
        card_1:
          type: string
          minLength: 16
          maxLength: 16
          example: 00000000A566685F
          description: |
            The serial number (UID) of the card in slot 1 of the card holder
            represented as a string of 16 hexadecimal digits.
        card_2:
          type: string
          minLength: 16
          maxLength: 16
          example: 00000000A655585F
          description: |
            The serial number (UID) of the card in slot 2 of the card holder
            represented as a string of 16 hexadecimal digits.
        vehicle_key:
          type: string
          minLength: 16
          maxLength: 16
          example: 00000000FEAB1234
          description: |
            The serial number (UID) of the key fob in the matching slot of the card holder
            represented as a string of 16 hexadecimal digits.
        connection_status:
          type: string
          description: The current connection status of the module.
          x-extensible-enum:
            - NOT_CONNECTED
            - CONNECTED
            - ERROR
          example: CONNECTED
        variant:
          type: string
          description: The installed hardware variant of the module. Only present if CONNECTED
          x-extensible-enum:
            - UNKNOWN
            - LOW_FREQUENCY
            - HIGH_FREQUENCY
          example: HIGH_FREQUENCY
        modified_at:
          type: string
          format: date-time
          example: '2022-07-08T10:29:00Z'
          description: UTC timestamp of when the accessory was last modified.
    damage_detection_module:
      type: object
      description: Details for the damage detection module. Some fields are only present if the module is CONNECTED.
      properties:
        connection_status:
          type: string
          description: The current connection status of the module.
          x-extensible-enum:
            - NOT_CONNECTED
            - CONNECTED
            - ERROR
          example: CONNECTED
        firmware_version:
          type: string
          description: Uses semantic versioning. Only present if CONNECTED.
          example: 1.2.3-4
        hardware_revision:
          type: integer
          format: int32
          minimum: 1
          description: The installed hardware revision. Only present if CONNECTED.
          example: 1
        modified_at:
          type: string
          format: date-time
          example: '2022-07-08T10:29:00Z'
          description: UTC timestamp of when the accessory was last modified.
    cloudboxx_card_reader:
      type: object
      description: Details for the cloudboxx card reader. Some fields are only present if the reader is CONNECTED.
      properties:
        connection_status:
          type: string
          description: The current connection status of the module.
          x-extensible-enum:
            - NOT_CONNECTED
            - CONNECTED
            - ERROR
          example: CONNECTED
        firmware_version:
          type: string
          description: Uses semantic versioning. Only present if CONNECTED.
          example: 1.2.3-4
        modified_at:
          type: string
          format: date-time
          example: '2022-07-08T10:29:00Z'
          description: UTC timestamp of when the accessory was last modified.
    particulate_matter_sensor:
      type: object
      description: Details for the particulate matter sensor. Some fields are only present if the sensor is CONNECTED.
      properties:
        connection_status:
          type: string
          description: The current connection status of the module.
          x-extensible-enum:
            - NOT_CONNECTED
            - CONNECTED
            - ERROR
          example: CONNECTED
        firmware_version:
          type: string
          description: Uses semantic versioning. Only present if CONNECTED.
          example: 1.2.3-4
        hardware_revision:
          type: integer
          format: int32
          minimum: 1
          description: The installed hardware revision. Only present if CONNECTED.
          example: 1
        modified_at:
          type: string
          format: date-time
          example: '2022-07-08T10:29:00Z'
          description: UTC timestamp of when the accessory was last modified.
    accessories:
      type: object
      description: Accessories for the Telematics Unit
      properties:
        cloudboxx_cardholder:
          $ref: '#/components/schemas/cloudboxxCardholderAccessory'
        damage_detection_module:
          $ref: '#/components/schemas/damage_detection_module'
        cloudboxx_card_reader:
          $ref: '#/components/schemas/cloudboxx_card_reader'
        particulate_matter_sensor:
          $ref: '#/components/schemas/particulate_matter_sensor'
    connectivity:
      type: object
      description: Connectivity details for the telematics unit
      properties:
        active_service_provider:
          type: object
          description: Details for the currently active service provider
          required:
            - name
            - active_since
          properties:
            name:
              type: string
              example: SIERRA_WIRELESS
              description: The name of the active service provider
              x-extensible-enum:
                - SIERRA_WIRELESS
                - TRUPHONE
                - OTHER
            active_since:
              type: string
              format: date-time
              example: '2023-07-08T10:29:13Z'
              description: UTC time since when the service provider is active
    cloudboxxConfigurationSchema:
      type: object
      description: |
        Contains CloudBoxx specific configuration parameters.
      properties:
        workshop_mode:
          type: object
          description: |
            Workshop mode prevents interference with diagnostic equipment such as OBD scanners and fault code readers
            during vehicle service or maintenance.
          properties:
            enabled:
              type: boolean
              description: |
                Whether workshop mode is enabled or not.
                When `true`, the telematics unit will not perform any OBD queries to avoid disturbing other equipment connected to the OBD port.
            modified_at:
              type: string
              format: date-time
              example: '2022-07-08T10:29:00Z'
              description: UTC time of when the OBD alarm configuration was last updated.
        obd_alarm:
          type: object
          description: |
            An OBD alarm is a security mechanism that triggers an alarm if the OBD port is accessed while the vehicle is locked.
          properties:
            enabled:
              type: boolean
              description: |
                Whether the vehicles has an OBD alarm or not.
                When `true`, the telematics unit will not perform any OBD queries while the vehicle is locked or inactive
                to avoid triggering the OBD alarm.
            modified_at:
              type: string
              format: date-time
              example: '2022-07-08T10:29:00Z'
              description: UTC time of when the OBD alarm configuration was last updated.
    telematicsUnit:
      type: object
      description: A telematics unit.
      required:
        - id
        - attached_at
        - brand
        - manufacturer
        - type
        - setup
      properties:
        id:
          $ref: '#/components/schemas/telematicsUnitId'
        attached_at:
          description: The timestamp of the link between the telematics unit and the vehicle.
          type: string
          format: date-time
          example: '2021-02-08T10:29:00Z'
        brand:
          type: string
          example: CLOUDBOXX
          description: The name of the product of the manufacturer of the telematics unit.
          x-extensible-enum:
            - CLOUDBOXX
            - MERCEDES
            - NIU
            - OKAI
            - SEGWAY
            - SIMULATED
            - TESLA
          maxLength: 64
        model:
          type: string
          example: 4G
          description: The model of the telematics unit.
        model_variant:
          type: string
          example: EU
          description: The model variant of the telematics unit.
        manufacturer:
          description: The producing company of telematics units. A telematics manufacturer distributes products with telematics brands.
          type: string
          example: INVERS
        type:
          type: string
          x-extensible-enum:
            - EX_FACTORY
            - AFTER_MARKET
          maxLength: 64
          example: AFTER_MARKET
          description: |
            The telematics unit type indicates whether a telematics unit is permanently installed in a vehicle or whether it can be installed and removed. In the case of a permanently installed telematics unit, we speak of an `EX_FACTORY` telematics unit, e.g. NIU or OKAI. A `AFTER_MARKET` telematics unit, on the other hand, such as the CloudBoxx, can be installed and removed from a vehicle. An `EX_FACTORY` telematics unit is deleted when a vehicle is deleted, whereas a `AFTER_MARKET` telematics unit is not deleted when the vehicle is deleted.
        setup:
          $ref: '#/components/schemas/telematicsUnitSetup'
        firmware_versions:
          $ref: '#/components/schemas/firmwareVersions'
        secondary_id:
          type: object
          description: An additional secondary ID of the telematics unit.
          required:
            - name
            - value
          properties:
            name:
              type: string
              example: serial_number
              description: The name of the secondary ID.
            value:
              type: string
              example: '102010000000'
              description: The value of the secondary ID.
        accessories:
          $ref: '#/components/schemas/accessories'
        connectivity:
          $ref: '#/components/schemas/connectivity'
        cloudboxx_configuration:
          $ref: '#/components/schemas/cloudboxxConfigurationSchema'
    vehicleLifeStatus:
      type: object
      description: Life Status of the vehicle
      required:
        - value
        - modified_at
      properties:
        value:
          $ref: '#/components/schemas/lifeStatus'
        modified_at:
          type: string
          format: date-time
          example: '2020-10-08T10:29:00Z'
          description: Timestamp when life status was last modified.
    vehicleOperationStatus:
      type: object
      description: Operation status of the vehicle.
      required:
        - value
        - modified_at
      properties:
        modified_at:
          type: string
          format: date-time
          example: '2020-10-08T10:29:00Z'
          description: Timestamp when the operation status was last modified.
        value:
          $ref: '#/components/schemas/operationStatus'
    vehicleRentalStatusValue:
      type: string
      description: |
        Indicates the rental status of the vehicle.

        The rental status `IN_RENTAL` serves as an indicator to filter out sensitive vehicle state data during rental.
        The filtering of data takes place according to the privacy packages that have been enabled for your fleet.
      x-extensible-enum:
        - IN_RENTAL
        - NOT_IN_RENTAL
      default: NOT_IN_RENTAL
      example: IN_RENTAL
    vehicleRentalId:
      type: string
      description: |
        The identifier of the rental.

        This value is only present if the rental status is `IN_RENTAL`.
      example: Rent42
    vehicleRentalStatus:
      type: object
      description: Rental status of the vehicle.
      required:
        - value
        - modified_at
      properties:
        modified_at:
          type: string
          format: date-time
          example: '2020-10-08T10:29:00Z'
          description: Timestamp when the rental status was last modified.
        value:
          $ref: '#/components/schemas/vehicleRentalStatusValue'
        rental_id:
          $ref: '#/components/schemas/vehicleRentalId'
    tag:
      description: |
        Name of a vehicle tag. Tags must not be empty or consist entirely of whitespace.
      type: string
      minimum: 1
      maximum: 500
      example: in_maintenance
    tags:
      description: List of tags
      type: array
      maxItems: 10000
      items:
        $ref: '#/components/schemas/tag'
      example:
        - in_maintenance
        - demo_night
    Capabilities:
      type: object
      description: |
        The capabilities define which commands a vehicle can execute and for which data fields a vehicle can deliver information.
      properties:
        commands:
          type: array
          description: |
            A command capability is a property of a vehicle model variant that allows to interact with a vehicle.
            If the vehicle has the command capability it can also execute the corresponding command, otherwise not, e.g., `unlock-top-case`.
          x-extensible-enum:
            - CLOUDBOXX_ACTIVATE_WORKSHOP_MODE
            - CLOUDBOXX_BLE_RESET
            - CLOUDBOXX_BOARD_RESET
            - CLOUDBOXX_DATA_CONNECTION_RESET
            - CLOUDBOXX_DEACTIVATE_WORKSHOP_MODE
            - CLOUDBOXX_MODEM_RESET
            - CLOUDBOXX_NETWORK_DETACH
            - CLOUDBOXX_REQUEST_SIM_ACTIVATION
            - CLOUDBOXX_REQUEST_SIM_SUSPENSION
            - CLOUDBOXX_REQUEST_SYSTEM_STATUS
            - CLOUDBOXX_SWITCH_MOBILE_NETWORK
            - DISABLE_DRIVING
            - DRAW_ATTENTION
            - ENABLE_DRIVING
            - LOCK_AND_DISABLE_DRIVING
            - LOCK_CENTRAL_LOCK
            - LOCK_TOP_CASE
            - REQUEST_VEHICLE_STATE
            - TESLA_ACTIVATE_GUEST_MODE
            - TESLA_DEACTIVATE_GUEST_MODE
            - UNLOCK_AND_ENABLE_DRIVING
            - UNLOCK_BATTERY_COMPARTMENT
            - UNLOCK_CENTRAL_LOCK
            - UNLOCK_TOP_CASE
          items:
            type: string
            x-extensible-enum:
              - CLOUDBOXX_ACTIVATE_WORKSHOP_MODE
              - CLOUDBOXX_BLE_RESET
              - CLOUDBOXX_BOARD_RESET
              - CLOUDBOXX_DATA_CONNECTION_RESET
              - CLOUDBOXX_DEACTIVATE_WORKSHOP_MODE
              - CLOUDBOXX_MODEM_RESET
              - CLOUDBOXX_NETWORK_DETACH
              - CLOUDBOXX_REQUEST_SIM_ACTIVATION
              - CLOUDBOXX_REQUEST_SIM_SUSPENSION
              - CLOUDBOXX_REQUEST_SYSTEM_STATUS
              - CLOUDBOXX_SWITCH_MOBILE_NETWORK
              - DISABLE_DRIVING
              - DRAW_ATTENTION
              - ENABLE_DRIVING
              - LOCK_AND_DISABLE_DRIVING
              - LOCK_CENTRAL_LOCK
              - LOCK_TOP_CASE
              - REQUEST_VEHICLE_STATE
              - TESLA_ACTIVATE_GUEST_MODE
              - TESLA_DEACTIVATE_GUEST_MODE
              - UNLOCK_AND_ENABLE_DRIVING
              - UNLOCK_BATTERY_COMPARTMENT
              - UNLOCK_CENTRAL_LOCK
              - UNLOCK_TOP_CASE
            maxLength: 64
          example:
            - DISABLE_DRIVING
            - DRAW_ATTENTION
            - ENABLE_DRIVING
            - LOCK_TOP_CASE
            - UNLOCK_BATTERY_COMPARTMENT
            - UNLOCK_TOP_CASE
        vehicle_state:
          type: array
          description: A vehicle with the vehicle state capability is able to provide a value for the data field with the same label, e.g., `top_case_lock`.
          x-extensible-enum:
            - ABS_STATUS
            - ABS_WARNING_INDICATOR
            - ADBLUE_LEVEL_IN_LITERS
            - ADBLUE_LEVEL_IN_PERCENT
            - ADBLUE_LEVEL_LOW_INDICATOR
            - AIRBAG_WARNING_INDICATOR
            - ALTITUDE_IN_METERS
            - BRAKE_FLUID_DUE_DATE
            - BRAKE_FLUID_LEVEL_LOW_INDICATOR
            - BRAKE_LINING_WEAR_INDICATOR
            - BRAKE_WARNING_INDICATOR
            - CELLULAR_SIGNAL_QUALITY
            - CENTER_STAND_POSITION
            - CENTRAL_LOCK
            - CHARGING_ADAPTER_STATUS
            - CHARGING_STATUS
            - CHARGING_UNTIL
            - CHECK_ENGINE_INDICATOR
            - CLOUDBOXX_CARDHOLDER_CARDS
            - CONVERTIBLE_TOP_STATUS
            - COOLANT_LEVEL_LOW_INDICATOR
            - COOLANT_TEMPERATURE_HIGH_INDICATOR
            - DIAGNOSTIC_TROUBLE_CODES
            - DOORS_STATUS
            - DRIVE_BATTERIES
            - DRIVER_SEAT_OCCUPIED
            - DRIVING_ENABLED
            - ENGINE_OIL_DUE_DATE
            - ENGINE_OIL_DUE_IN_KILOMETERS
            - ENGINE_OIL_LEVEL_LOW_INDICATOR
            - ENGINE_OIL_PRESSURE_LOW_INDICATOR
            - ENGINE_OIL_QUALITY_IN_PERCENT
            - EPC_WARNING_INDICATOR
            - ESP_STATUS
            - ESP_WARNING_INDICATOR
            - FUEL_LEVEL_IN_LITERS
            - GEARSHIFT_POSITION
            - GNSS_HDOP
            - GNSS_POSITION_FIX_QUALITY
            - GNSS_SATELLITES_IN_USE
            - GNSS_SPEED_OVER_GROUND_IN_KPH
            - HEADING_IN_DEGREES
            - HEADLIGHTS
            - IGNITION
            - MILEAGE_IN_KILOMETERS
            - ONBOARD_VOLTAGE_IN_VOLTS
            - PARKING_BRAKE_ENGAGED
            - PARTICULATE_FILTER_WARNING_INDICATOR
            - POSITION
            - POWER_STEERING_FAILURE_INDICATOR
            - REMAINING_RANGE_IN_KILOMETERS
            - REVOLUTIONS_PER_MINUTE
            - SEATBELTS_STATUS
            - SERVICE_DUE_DATE
            - SERVICE_DUE_IN_KILOMETERS
            - SPEED_IN_KPH
            - STARTER_BATTERY_WARNING_INDICATOR
            - STATE_OF_CHARGE_OR_FUEL_LEVEL_IN_PERCENT
            - STATE_OF_CHARGE_OR_FUEL_LEVEL_LOW_INDICATOR
            - SUNROOF_STATUS
            - TELEMATICS_UNIT_BACKUP_BATTERY
            - TELEMATICS_UNIT_SUPPLY_VOLTAGE_IN_VOLTS
            - TIRE_PRESSURE_INDICATOR
            - TOP_CASE_LID
            - TOP_CASE_LOCK
            - VEHICLE_KEY
            - WASHER_FLUID_LEVEL_LOW_INDICATOR
            - WINDOWS_STATUS
          items:
            type: string
            x-extensible-enum:
              - ABS_STATUS
              - ABS_WARNING_INDICATOR
              - ADBLUE_LEVEL_IN_LITERS
              - ADBLUE_LEVEL_IN_PERCENT
              - ADBLUE_LEVEL_LOW_INDICATOR
              - AIRBAG_WARNING_INDICATOR
              - ALTITUDE_IN_METERS
              - BRAKE_FLUID_DUE_DATE
              - BRAKE_FLUID_LEVEL_LOW_INDICATOR
              - BRAKE_LINING_WEAR_INDICATOR
              - BRAKE_WARNING_INDICATOR
              - CELLULAR_SIGNAL_QUALITY
              - CENTER_STAND_POSITION
              - CENTRAL_LOCK
              - CHARGING_ADAPTER_STATUS
              - CHARGING_STATUS
              - CHARGING_UNTIL
              - CHECK_ENGINE_INDICATOR
              - CLOUDBOXX_CARDHOLDER_CARDS
              - CONVERTIBLE_TOP_STATUS
              - COOLANT_LEVEL_LOW_INDICATOR
              - COOLANT_TEMPERATURE_HIGH_INDICATOR
              - DIAGNOSTIC_TROUBLE_CODES
              - DOORS_STATUS
              - DRIVE_BATTERIES
              - DRIVER_SEAT_OCCUPIED
              - DRIVING_ENABLED
              - ENGINE_OIL_DUE_DATE
              - ENGINE_OIL_DUE_IN_KILOMETERS
              - ENGINE_OIL_LEVEL_LOW_INDICATOR
              - ENGINE_OIL_PRESSURE_LOW_INDICATOR
              - ENGINE_OIL_QUALITY_IN_PERCENT
              - EPC_WARNING_INDICATOR
              - ESP_STATUS
              - ESP_WARNING_INDICATOR
              - FUEL_LEVEL_IN_LITERS
              - GEARSHIFT_POSITION
              - GNSS_HDOP
              - GNSS_POSITION_FIX_QUALITY
              - GNSS_SATELLITES_IN_USE
              - GNSS_SPEED_OVER_GROUND_IN_KPH
              - HEADING_IN_DEGREES
              - HEADLIGHTS
              - IGNITION
              - MILEAGE_IN_KILOMETERS
              - ONBOARD_VOLTAGE_IN_VOLTS
              - PARKING_BRAKE_ENGAGED
              - PARTICULATE_FILTER_WARNING_INDICATOR
              - POSITION
              - POWER_STEERING_FAILURE_INDICATOR
              - REMAINING_RANGE_IN_KILOMETERS
              - REVOLUTIONS_PER_MINUTE
              - SEATBELTS_STATUS
              - SERVICE_DUE_DATE
              - SERVICE_DUE_IN_KILOMETERS
              - SPEED_IN_KPH
              - STARTER_BATTERY_WARNING_INDICATOR
              - STATE_OF_CHARGE_OR_FUEL_LEVEL_IN_PERCENT
              - STATE_OF_CHARGE_OR_FUEL_LEVEL_LOW_INDICATOR
              - SUNROOF_STATUS
              - TELEMATICS_UNIT_BACKUP_BATTERY
              - TELEMATICS_UNIT_SUPPLY_VOLTAGE_IN_VOLTS
              - TIRE_PRESSURE_INDICATOR
              - TOP_CASE_LID
              - TOP_CASE_LOCK
              - VEHICLE_KEY
              - WASHER_FLUID_LEVEL_LOW_INDICATOR
              - WINDOWS_STATUS
            maxLength: 64
          example:
            - CELLULAR_SIGNAL_QUALITY
            - DRIVING_ENABLED
            - MILEAGE_IN_KILOMETERS
            - POSITION
            - REMAINING_RANGE_IN_KILOMETERS
            - STATE_OF_CHARGE_OR_FUEL_LEVEL_IN_PERCENT
            - TOP_CASE_LID
            - TOP_CASE_LOCK
    capabilities:
      allOf:
        - required:
            - commands
            - vehicle_state
        - $ref: '#/components/schemas/Capabilities'
    vehicleWithoutLatestVehicleState:
      description: |
        Each vehicle contains data such as ID, status or the Fleet-ID which is always available.
        In addition, a vehicle can contain other data such as master data, telematics unit or the last vehicle state.
      type: object
      required:
        - id
        - fleet_id
        - created_at
        - life_status
        - operation_status
        - tags_modified_at
        - tags
        - custom_fields_modified_at
        - custom_fields
        - capabilities
        - telematics_unit
        - rental_status
      properties:
        id:
          $ref: '#/components/schemas/vehicleId'
        fleet_id:
          $ref: '#/components/schemas/fleetId'
        last_contact_at:
          $ref: '#/components/schemas/lastContactAt'
        created_at:
          type: string
          format: date-time
          example: '2021-01-19T13:13:09.952Z'
          description: Timestamp when the vehicle was created in the system.
        master_data:
          $ref: '#/components/schemas/MasterData'
        telematics_unit:
          $ref: '#/components/schemas/telematicsUnit'
        life_status:
          $ref: '#/components/schemas/vehicleLifeStatus'
        operation_status:
          $ref: '#/components/schemas/vehicleOperationStatus'
        rental_status:
          $ref: '#/components/schemas/vehicleRentalStatus'
        custom_fields_modified_at:
          type: string
          format: date-time
          example: '2020-10-08T10:29:00Z'
          description: Timestamp when `custom_fields` was last modified.
        custom_fields:
          $ref: '#/components/schemas/customFields'
        tags_modified_at:
          type: string
          format: date-time
          example: '2020-10-08T10:29:00Z'
          description: Timestamp when `tags` was last modified.
        tags:
          $ref: '#/components/schemas/tags'
        capabilities:
          $ref: '#/components/schemas/capabilities'
    StatePropertyBase:
      type: object
      required:
        - timestamp
        - value
      properties:
        timestamp:
          type: string
          format: date-time
          example: '2021-03-08T10:29:00Z'
          description: UTC time of the value as recorded by the vehicle (or the best approximation thereof).
    EnabledDisabledValue:
      required:
        - value
      properties:
        value:
          type: string
          x-extensible-enum:
            - ENABLED
            - DISABLED
          maxLength: 64
          example: ENABLED
    OnOffValue:
      required:
        - value
      properties:
        value:
          type: string
          description: Either `ON` or `OFF`.
          x-extensible-enum:
            - 'ON'
            - 'OFF'
          maxLength: 64
          example: 'ON'
    AdblueLevelInLiters:
      required:
        - value
      properties:
        value:
          type: number
          format: double
          minimum: 0
          example: 3.7
          description: AdBlue level in liters
    PercentageValue:
      required:
        - value
      properties:
        value:
          type: integer
          minimum: 0
          maximum: 100
          example: 100
          format: int32
          description: Percentage ranging from 0 to 100.
    OnOffSensorFailureValue:
      required:
        - value
      properties:
        value:
          type: string
          description: Can be `ON` `OFF` or `SENSOR_FAILURE`.
          x-extensible-enum:
            - 'ON'
            - 'OFF'
            - SENSOR_FAILURE
          maxLength: 64
          example: 'OFF'
    AltitudeValue:
      required:
        - value
      properties:
        value:
          type: integer
          example: 413
          format: int32
          description: Altitude in meters.
    BrakeFluidDateValue:
      required:
        - value
      properties:
        value:
          type: string
          format: date
          example: '2023-10-18'
          description: The vehicle's brake fluid replacement due date.
    SignalQualityValue:
      required:
        - value
      properties:
        value:
          type: integer
          format: int32
          minimum: 0
          maximum: 5
          example: 3
          description: Value between 0 and 5, where 5 is the highest quality.
    RetractedExtendedValue:
      required:
        - value
      properties:
        value:
          type: string
          description: Either `RETRACTED` or `EXTENDED`.
          x-extensible-enum:
            - RETRACTED
            - EXTENDED
          maxLength: 64
          example: EXTENDED
    CentralLockValue:
      required:
        - value
      properties:
        value:
          type: string
          description: |
            The central lock value is usually `LOCKED` or `UNLOCKED`.
            Because locking and unlocking are physical actions that take time,
            the value may also have other, temporary states:

            * `LOCKED`: The vehicle reports that all doors are locked.

            * `UNLOCKED`: The vehicle reports that at least one door is unlocked.

            * `LOCKING`: A lock command was sent, but the vehicle has not yet
              confirmed the new state.
              * Once the vehicle reports back, the status updates to `LOCKED`.
              * If no update arrives within a few seconds, the status changes to `UNKNOWN`.

            * `UNLOCKING`: An unlock command was sent, but the vehicle has not
              yet confirmed the new state.
              * Once the vehicle reports back, the status updates to `UNLOCKED`.
              * If no update arrives within a few seconds, the status changes to `UNKNOWN`.

            * `UNKNOWN`: The current state of the central lock cannot be
              determined or is implausible. This can happen if:
              * No update is received after a lock/unlock command, or
              * An event contradicts the current state of the central lock (for
                example, someone opens a door while the central lock state is
                `LOCKED`).

            To resolve an `UNKNOWN` state, send the desired lock or unlock
            command again and check whether the displayed value updates.
          x-extensible-enum:
            - LOCKED
            - UNLOCKED
            - LOCKING
            - UNLOCKING
            - UNKNOWN
          maxLength: 64
          example: LOCKED
        value_source:
          type: string
          x-extensible-enum:
            - LAST_COMMAND
            - INTELLIGENT_CENTRAL_LOCK
            - READ_FROM_VEHICLE
          maxLength: 64
          example: READ_FROM_VEHICLE
          description: |
            The `value_source` describes the origin of the central lock
            `value`.

            Depending on the vehicle model, it may or may not be possible to
            read the central lock value directly from the vehicle.

            * `READ_FROM_VEHICLE` is used when the current value is read from
              the vehicle.  In that case, the value is either `LOCKED` or
              `UNLOCKED`.

            * `LAST_COMMAND` is used when the vehicle model doesn't support
              reading the state of the central lock.  The values are simply the
              results of the last command i.e. `LOCKED` if the last central
              lock command was a lock command and `UNLOCKED` if it was
              an unlock command.

            * The value source `INTELLIGENT_CENTRAL_LOCK` is used only when the
              Intelligent Central Lock feature is configured.  In this case,
              sending a lock (unlock) command will change the central lock
              value to `LOCKING` (`UNLOCKING`).

              Once the actual result is read from the vehicle, the value will
              switch to `LOCKED` or `UNLOCKED`, respectively.  In that case,
              the value source will change to `READ_FROM_VEHICLE` to reflect
              that.

              If it cannot be read within a few seconds after the command is
              executed, the value will switch to `UNKNOWN` instead and the
              `value_source` will remain `INTELLIGENT_CENTRAL_LOCK`.
    ConnectedDisconnectedValue:
      required:
        - value
      properties:
        value:
          type: string
          description: Either `CONNECTED` or `DISCONNECTED`.
          x-extensible-enum:
            - CONNECTED
            - DISCONNECTED
          maxLength: 64
          example: CONNECTED
    ChargingValue:
      required:
        - value
      properties:
        value:
          type: string
          description: Either `CHARGING` or `NOT_CHARGING`.
          x-extensible-enum:
            - CHARGING
            - NOT_CHARGING
          maxLength: 64
          example: CHARGING
    ChargingUntilValue:
      required:
        - value
      properties:
        value:
          type: string
          format: date-time
          example: '2022-02-15T15:47:13Z'
          description: UTC time of when the battery will stop charging.
    CloudboxxCardholderCardsValue:
      required:
        - value
      properties:
        value:
          type: object
          description: |
            Contains information about the cards in each slot of the CloudBoxx card holder.
          properties:
            card_1:
              type: string
              description: Either `ABSENT`, `PRESENT` or `NOT_CONFIGURED`.
              x-extensible-enum:
                - ABSENT
                - PRESENT
                - NOT_CONFIGURED
              maxLength: 64
              example: PRESENT
            card_2:
              type: string
              description: Either `ABSENT`, `PRESENT` or `NOT_CONFIGURED`.
              x-extensible-enum:
                - ABSENT
                - PRESENT
                - NOT_CONFIGURED
              maxLength: 64
              example: PRESENT
          example:
            card_1: PRESENT
            card_2: NOT_CONFIGURED
    OpenClosedValue:
      required:
        - value
      properties:
        value:
          type: string
          description: Either `OPEN` or `CLOSED`.
          x-extensible-enum:
            - OPEN
            - CLOSED
          maxLength: 64
          example: CLOSED
    DtcValue:
      required:
        - value
      properties:
        value:
          type: array
          format: date-time
          example:
            - P0198
            - P0400
          description: An array containing the currently active diagnostic trouble codes as string values.
          items:
            type: string
    DriveBatteriesValue:
      required:
        - value
      properties:
        value:
          type: object
          description: |
            Contains information about the battery in each of the vehicle's battery ports.
            Empty ports won't be included.
          properties:
            port_1:
              type: object
              properties:
                average_temperature_in_degrees_celsius:
                  description: The average temperature of the battery in °C.
                  type: number
                  format: double
                  example: 40
                serial_number:
                  type: string
                  description: The serial number of the battery.
                  example: '638612655110928'
                voltage_in_volts:
                  description: The voltage of the battery in volts.
                  type: number
                  format: double
                  example: 10.3
                level_in_percent:
                  description: The level of charge of the battery in percent.
                  type: integer
                  format: int32
                  minimum: 0
                  maximum: 100
                  example: 81
                charge_cycles:
                  description: The number of charge cycles of the battery.
                  type: integer
                  format: int32
                  example: 5
            port_2:
              type: object
              properties:
                average_temperature_in_degrees_celsius:
                  description: The average temperature of the battery in °C.
                  type: number
                  format: double
                  example: 40
                serial_number:
                  type: string
                  description: The serial number of the battery.
                  example: '638612655110928'
                voltage_in_volts:
                  description: The voltage of the battery in volts.
                  type: number
                  format: double
                  example: 10.3
                level_in_percent:
                  description: The level of charge of the battery in percent.
                  type: integer
                  format: int32
                  minimum: 0
                  maximum: 100
                  example: 81
                charge_cycles:
                  description: The number of charge cycles of the battery.
                  type: integer
                  format: int32
                  example: 5
            port_3:
              type: object
              properties:
                average_temperature_in_degrees_celsius:
                  description: The average temperature of the battery in °C.
                  type: number
                  format: double
                  example: 40
                serial_number:
                  type: string
                  description: The serial number of the battery.
                  example: '638612655110928'
                voltage_in_volts:
                  description: The voltage of the battery in volts.
                  type: number
                  format: double
                  example: 10.3
                level_in_percent:
                  description: The level of charge of the battery in percent.
                  type: integer
                  format: int32
                  minimum: 0
                  maximum: 100
                  example: 81
                charge_cycles:
                  description: The number of charge cycles of the battery.
                  type: integer
                  format: int32
                  example: 5
          example:
            port_1:
              average_temperature_in_degrees_celsius: 40
              serial_number: '638612655110928'
              voltage_in_volts: 10.3
              level_in_percent: 81
              charge_cycles: 5
            port_2:
              average_temperature_in_degrees_celsius: 37.7
              serial_number: '638612655110929'
              voltage_in_volts: 10.1
              level_in_percent: 80
              charge_cycles: 5
    DriverSeatOccupiedValue:
      required:
        - value
      properties:
        value:
          type: boolean
          description: The value `true` means the driver seat is occupied. `false` means it is not.
          example: true
    DrivingEnabledValue:
      required:
        - value
      properties:
        value:
          type: boolean
          description: True means you can start the vehicle. False means you cannot.
          example: true
    OilDateValue:
      required:
        - value
      properties:
        value:
          type: string
          format: date
          example: '2023-10-18'
          description: The vehicle's engine oil replacement due date.
    OilKilometersValue:
      required:
        - value
      properties:
        value:
          type: number
          format: double
          example: 4255.8
          description: The remaining distance until the next engine oil replacement is due in kilometers.
    FuelLevelInLiters:
      required:
        - value
      properties:
        value:
          type: number
          format: double
          minimum: 0
          example: 42.1
          description: Fuel level in liters
    GearshiftPositionValue:
      required:
        - value
      properties:
        value:
          type: string
          x-extensible-enum:
            - DRIVE
            - NEUTRAL
            - PARK
            - REVERSE
            - UNSUPPORTED_VALUE
          maxLength: 64
          example: DRIVE
    HdopValue:
      required:
        - value
      properties:
        value:
          type: number
          format: double
          maximum: 99.99
          example: 1.5
    PositionQualityValue:
      required:
        - value
      properties:
        value:
          type: string
          x-extensible-enum:
            - NO_FIX
            - AUTONOMOUS_GNSS_FIX
            - DIFFERENTIAL_GNSS_FIX
            - DEAD_RECKONING_FIX
            - GNSS_DEAD_RECKONING_COMBINED_FIX
          maxLength: 64
          example: NO_FIX
    SatellitesInUseValue:
      required:
        - value
      properties:
        value:
          type: integer
          format: int32
          example: 21
    SpeedValue:
      required:
        - value
      properties:
        value:
          type: integer
          format: int32
          minimum: 0
          example: 0
    HeadingValue:
      required:
        - value
      properties:
        value:
          type: integer
          minimum: 0
          maximum: 360
          example: 37
          format: int32
          description: Heading angle in degree.
    OdometerValue:
      required:
        - value
      properties:
        value:
          type: number
          format: double
          minimum: 0
          example: 100.25
          description: Measured in kilometers.
    OnboardVoltageValue:
      required:
        - value
      properties:
        value:
          type: number
          format: double
          minimum: 0
          example: 12.25
          description: Measured in volts.
    ParkingBrakeValue:
      required:
        - value
      properties:
        value:
          type: boolean
          description: The value `true` means that the parking brake is engaged. `false` means it is not engaged.
          example: true
    PositionValue:
      required:
        - value
      properties:
        value:
          type: object
          description: Position of vehicle (GPS/GLONASS/...).
          required:
            - lat
            - lon
          properties:
            lat:
              minimum: -90
              maximum: 90
              type: number
              example: 50.123
              format: double
              description: Latitude of the position.
            lon:
              minimum: -180
              maximum: 180
              type: number
              example: 7.321
              format: double
              description: Longitude of the position.
    RangeValue:
      required:
        - value
      properties:
        value:
          type: number
          example: 242.32
          format: double
          description: Measured in kilometers.
    SeatbeltsValue:
      required:
        - value
      properties:
        value:
          type: object
          properties:
            front_left:
              description: The status of the seatbelt of the front left seat.
              type: string
              x-extensible-enum:
                - FASTENED
                - NOT_FASTENED
              maxLength: 64
              example: FASTENED
            front_right:
              description: The status of the seatbelt of the front right seat.
              type: string
              x-extensible-enum:
                - FASTENED
                - NOT_FASTENED
              maxLength: 64
              example: FASTENED
            row2_left:
              description: The status of the seatbelt of the left seat in the second row.
              type: string
              x-extensible-enum:
                - FASTENED
                - NOT_FASTENED
              maxLength: 64
              example: FASTENED
            row2_middle:
              description: The status of the seatbelt of the middle seat in the second row.
              type: string
              x-extensible-enum:
                - FASTENED
                - NOT_FASTENED
              maxLength: 64
              example: FASTENED
            row2_right:
              description: The status of the seatbelt of the right seat in the second row.
              type: string
              x-extensible-enum:
                - FASTENED
                - NOT_FASTENED
              maxLength: 64
              example: FASTENED
    ServiceDateValue:
      required:
        - value
      properties:
        value:
          type: string
          format: date
          example: '2023-04-18'
          description: The vehicle's service due date.
    ServiceKilometersValue:
      required:
        - value
      properties:
        value:
          type: number
          format: double
          example: 2455.25
          description: The remaining distance until the next vehicle's service is due in kilometers.
    FuelLevelOrStateOfChargeRawValue:
      properties:
        raw_value:
          type: integer
          format: int32
          example: 123
          description: |
            This is the value for fuel level or state of charge that was actually retrieved or calculated by the telematics unit.
            This value might fall outside of the expected range of 0-100, for several reasons.
            The fuel level in percent for most vehicles with combustion engines is calculated by comparing the size of the fuel tank with the amount of liters currently in the fuel tank.
            If a wrong fuel tank size is configured, this calculation can go wrong and lead to fuel level values much greater than 100 percent.
            Even if the fuel tank size is configured correctly, it is often possible to refuel a vehicle slightly above the 100 percent mark.
            While the latter example is perfectly fine, you can look at values way above 100 in order to catch misconfigurations of the telematics unit.
            If such a case happens, make sure the correct vehicle model was configured during vehicle setup. Contact INVERS Support if you need further assistance.

            We recommend not to use this `raw_value` in your booking process, but rather only to catch misconfigurations.
            Use the `value` (see above) in your booking workflow, as we feel that you should not need to handle misconfigurations or other issues within your booking workflow.
    TelematicsBatteryValue:
      required:
        - value
      properties:
        value:
          type: object
          properties:
            voltage_in_volts:
              description: The voltage of the battery in volts.
              type: number
              format: double
              example: 10.3
            level_in_percent:
              description: The level of charge of the battery in percent.
              type: integer
              format: int32
              minimum: 0
              maximum: 100
              example: 81
            charging_status:
              type: string
              description: The charging status of the battery. It can be either `CHARGING`, `NOT_CHARGING` or `DISCHARGING`.
              x-extensible-enum:
                - CHARGING
                - NOT_CHARGING
                - DISCHARGING
              maxLength: 64
              example: CHARGING
    TelematicsVoltageValue:
      required:
        - value
      properties:
        value:
          type: number
          format: double
          minimum: 0
          example: 5.5
    LockedUnlockedValue:
      required:
        - value
      properties:
        value:
          type: string
          description: Can either be `LOCKED` or `UNLOCKED`.
          x-extensible-enum:
            - LOCKED
            - UNLOCKED
          maxLength: 64
          example: LOCKED
    VehicleKeyValue:
      required:
        - value
      properties:
        value:
          type: string
          x-extensible-enum:
            - ABSENT
            - PRESENT
          maxLength: 64
          example: PRESENT
          description: Either `ABSENT` or `PRESENT`.
    VehicleState:
      type: object
      description: |
        The vehicle state shows the current state of the vehicle and the telematics unit installed in it.
        At certain times, information about a vehicle state property is not provided by the vehicle
        and therefore it will not be shown in the vehicle state data.
        In addition, when a vehicle lacks a certain vehicle state capability,
        the corresponding property will not be included in the vehicle state data of the vehicle.
      properties:
        abs_status:
          description: Indicates whether the ABS is currently enabled.
          allOf:
            - $ref: '#/components/schemas/StatePropertyBase'
            - $ref: '#/components/schemas/EnabledDisabledValue'
        abs_warning_indicator:
          description: |
            Indicates whether the ABS warning light is active. `ON` means the warning is active.
            This indicates an issue with the ABS system.
          allOf:
            - $ref: '#/components/schemas/StatePropertyBase'
            - $ref: '#/components/schemas/OnOffValue'
        airbag_warning_indicator:
          description: |
            Indicates whether the airbag warning light is active. `ON` means the warning is active.
            This indicates an issue with the airbag system.
          allOf:
            - $ref: '#/components/schemas/StatePropertyBase'
            - $ref: '#/components/schemas/OnOffValue'
        adblue_level_in_liters:
          description: AdBlue level of the vehicle in liters.
          allOf:
            - $ref: '#/components/schemas/StatePropertyBase'
            - $ref: '#/components/schemas/AdblueLevelInLiters'
        adblue_level_in_percent:
          description: AdBlue level of the vehicle in percent.
          required:
            - timestamp
            - value
          allOf:
            - $ref: '#/components/schemas/StatePropertyBase'
            - $ref: '#/components/schemas/PercentageValue'
        adblue_level_low_indicator:
          description: Indicates whether the AdBlue level is low. `ON` means the AdBlue level is low.
          allOf:
            - $ref: '#/components/schemas/StatePropertyBase'
            - $ref: '#/components/schemas/OnOffSensorFailureValue'
        altitude_in_meters:
          description: Altitude of the vehicle.
          allOf:
            - $ref: '#/components/schemas/StatePropertyBase'
            - $ref: '#/components/schemas/AltitudeValue'
        brake_fluid_due_date:
          description: The due date of the next brake fluid replacement.
          allOf:
            - $ref: '#/components/schemas/StatePropertyBase'
            - $ref: '#/components/schemas/BrakeFluidDateValue'
        brake_fluid_level_low_indicator:
          description: Indicates whether the brake fluid level is low. `ON` means the brake fluid level is low.
          allOf:
            - $ref: '#/components/schemas/StatePropertyBase'
            - $ref: '#/components/schemas/OnOffSensorFailureValue'
        brake_lining_wear_indicator:
          description: Indicates whether the brake lining wear warning is active. `ON` means the warning is active.
          allOf:
            - $ref: '#/components/schemas/StatePropertyBase'
            - $ref: '#/components/schemas/OnOffSensorFailureValue'
        brake_warning_indicator:
          description: |
            Indicates whether the brake warning light is active. `ON` means the warning is active.
            This indicates an issue with the brake system.
          allOf:
            - $ref: '#/components/schemas/StatePropertyBase'
            - $ref: '#/components/schemas/OnOffSensorFailureValue'
        cellular_signal_quality:
          description: Indicates how strong the signal of the cellular connection is.
          allOf:
            - $ref: '#/components/schemas/StatePropertyBase'
            - $ref: '#/components/schemas/SignalQualityValue'
        center_stand_position:
          description: Position of the center stand.
          allOf:
            - $ref: '#/components/schemas/StatePropertyBase'
            - $ref: '#/components/schemas/RetractedExtendedValue'
        central_lock:
          description: State of the central lock.
          allOf:
            - $ref: '#/components/schemas/StatePropertyBase'
            - $ref: '#/components/schemas/CentralLockValue'
        charging_adapter_status:
          description: The status of the vehicle's (hybrid or electric) charging adapter.
          allOf:
            - $ref: '#/components/schemas/StatePropertyBase'
            - $ref: '#/components/schemas/ConnectedDisconnectedValue'
        charging_status:
          description: The charging status of a vehicle's (hybrid or electric) high voltage battery.
          allOf:
            - $ref: '#/components/schemas/StatePropertyBase'
            - $ref: '#/components/schemas/ChargingValue'
        charging_until:
          description: The time at which the battery will stop charging. Can be in the past in case the battery has already stopped charging.
          allOf:
            - $ref: '#/components/schemas/StatePropertyBase'
            - $ref: '#/components/schemas/ChargingUntilValue'
        check_engine_indicator:
          description: Indicates whether the engine should be checked. `ON` means the engine should be checked.
          allOf:
            - $ref: '#/components/schemas/StatePropertyBase'
            - $ref: '#/components/schemas/OnOffSensorFailureValue'
        cloudboxx_cardholder_cards:
          description: Contains information about the cards in each slot of the CloudBoxx card holder.
          allOf:
            - $ref: '#/components/schemas/StatePropertyBase'
            - $ref: '#/components/schemas/CloudboxxCardholderCardsValue'
        convertible_top_status:
          description: State of the vehicle's convertible top.
          allOf:
            - $ref: '#/components/schemas/StatePropertyBase'
            - $ref: '#/components/schemas/OpenClosedValue'
        coolant_level_low_indicator:
          description: Indicates whether the coolant level is low. `ON` means the coolant level is low.
          allOf:
            - $ref: '#/components/schemas/StatePropertyBase'
            - $ref: '#/components/schemas/OnOffSensorFailureValue'
        coolant_temperature_high_indicator:
          description: Indicates whether the coolant temperature is high. `ON` means the coolant temperature is high.
          allOf:
            - $ref: '#/components/schemas/StatePropertyBase'
            - $ref: '#/components/schemas/OnOffSensorFailureValue'
        diagnostic_trouble_codes:
          description: A list of the currently active diagnostic trouble codes.
          allOf:
            - $ref: '#/components/schemas/StatePropertyBase'
            - $ref: '#/components/schemas/DtcValue'
        doors_status:
          description: Status of the doors, either `OPEN` when at least one door is open or `CLOSED` if all doors are closed.
          allOf:
            - $ref: '#/components/schemas/StatePropertyBase'
            - $ref: '#/components/schemas/OpenClosedValue'
        drive_batteries:
          description: Contains information about the battery/batteries used to drive the electric vehicle.
          allOf:
            - $ref: '#/components/schemas/StatePropertyBase'
            - $ref: '#/components/schemas/DriveBatteriesValue'
        driver_seat_occupied:
          description: Indicates whether the driver seat is currently occupied. `true` means occupied.
          allOf:
            - $ref: '#/components/schemas/StatePropertyBase'
            - $ref: '#/components/schemas/DriverSeatOccupiedValue'
        driving_enabled:
          description: Whether you can start the engine of the vehicle.
          allOf:
            - $ref: '#/components/schemas/StatePropertyBase'
            - $ref: '#/components/schemas/DrivingEnabledValue'
        engine_oil_due_date:
          description: The due date of the next engine oil replacement.
          allOf:
            - $ref: '#/components/schemas/StatePropertyBase'
            - $ref: '#/components/schemas/OilDateValue'
        engine_oil_due_in_kilometers:
          description: The remaining distance in kilometers until the next engine oil replacement is due.
          allOf:
            - $ref: '#/components/schemas/StatePropertyBase'
            - $ref: '#/components/schemas/OilKilometersValue'
        engine_oil_level_low_indicator:
          description: Indicates whether the engine oil level is low. `ON` means the engine oil level is low.
          allOf:
            - $ref: '#/components/schemas/StatePropertyBase'
            - $ref: '#/components/schemas/OnOffSensorFailureValue'
        engine_oil_quality_in_percent:
          description: Engine oil quality reported as a percentage. The higher the value, the better the quality.
          allOf:
            - $ref: '#/components/schemas/StatePropertyBase'
            - $ref: '#/components/schemas/PercentageValue'
        engine_oil_pressure_low_indicator:
          description: Indicates whether the engine oil pressure is low. `ON` means the engine oil pressure is low.
          allOf:
            - $ref: '#/components/schemas/StatePropertyBase'
            - $ref: '#/components/schemas/OnOffSensorFailureValue'
        epc_warning_indicator:
          description: |
            Indicates whether the EPC warning light is active. `ON` means the warning is active.
            This warning can be caused by various issues with electronic systems of the vehicle.
          allOf:
            - $ref: '#/components/schemas/StatePropertyBase'
            - $ref: '#/components/schemas/OnOffValue'
        esp_status:
          description: Indicates whether the ESP is currently enabled.
          allOf:
            - $ref: '#/components/schemas/StatePropertyBase'
            - $ref: '#/components/schemas/EnabledDisabledValue'
        esp_warning_indicator:
          description: |
            Indicates whether the ESP warning light is active. `ON` means the warning is active.
            This indicates an issue with the ESP system.
          allOf:
            - $ref: '#/components/schemas/StatePropertyBase'
            - $ref: '#/components/schemas/OnOffValue'
        fuel_level_in_liters:
          description: Fuel level of the vehicle in liters.
          allOf:
            - $ref: '#/components/schemas/StatePropertyBase'
            - $ref: '#/components/schemas/FuelLevelInLiters'
        gearshift_position:
          description: |
            Indicates which gear is selected.

            Note that "normal" gears in vehicles with a manual transmission are not supported.
            These will be ignored completely or mapped to `UNSUPPORTED_VALUE`.
          allOf:
            - $ref: '#/components/schemas/StatePropertyBase'
            - $ref: '#/components/schemas/GearshiftPositionValue'
        gnss_hdop:
          description: The value of the horizontal dilution of the GNSS precision.
          allOf:
            - $ref: '#/components/schemas/StatePropertyBase'
            - $ref: '#/components/schemas/HdopValue'
        gnss_position_fix_quality:
          description: The fix quality of the GNSS position.
          allOf:
            - $ref: '#/components/schemas/StatePropertyBase'
            - $ref: '#/components/schemas/PositionQualityValue'
        gnss_satellites_in_use:
          description: The number of satellites used to compute the GNSS position.
          allOf:
            - $ref: '#/components/schemas/StatePropertyBase'
            - $ref: '#/components/schemas/SatellitesInUseValue'
        gnss_speed_over_ground_in_kph:
          description: The computed speed of the vehicle in kilometers per hour using the GNSS.
          allOf:
            - $ref: '#/components/schemas/StatePropertyBase'
            - $ref: '#/components/schemas/SpeedValue'
        heading_in_degrees:
          description: 'Compass direction in which the vehicle is pointing (North: 0°, East: 90°, etc.)'
          allOf:
            - $ref: '#/components/schemas/StatePropertyBase'
            - $ref: '#/components/schemas/HeadingValue'
        headlights:
          description: Indicates whether the headlights are switched on or off.
          allOf:
            - $ref: '#/components/schemas/StatePropertyBase'
            - $ref: '#/components/schemas/OnOffValue'
        ignition:
          description: |
            The ignition state of the vehicle.

            This usually refers to the state of the ignition switch. It can only be changed by
            the driver, e.g., by turning the key or pressing a button.

            Modern or electric vehicles may not have an ignition switch in the classical sense.
            In that case a comparable value is used to indicate the ignition state, if possible.

            The ignition state can be used to determine if a vehicle is "in use", meaning the
            driver is either actively driving (engines are running) or intending to do so.
          allOf:
            - $ref: '#/components/schemas/StatePropertyBase'
            - $ref: '#/components/schemas/OnOffValue'
        mileage_in_kilometers:
          description: How far the vehicle has driven in total. Measured in kilometers.
          allOf:
            - $ref: '#/components/schemas/StatePropertyBase'
            - $ref: '#/components/schemas/OdometerValue'
        onboard_voltage_in_volts:
          description: The onboard voltage in volts.
          allOf:
            - $ref: '#/components/schemas/StatePropertyBase'
            - $ref: '#/components/schemas/OnboardVoltageValue'
        parking_brake_engaged:
          description: Indicates the status of the parking brake.
          allOf:
            - $ref: '#/components/schemas/StatePropertyBase'
            - $ref: '#/components/schemas/ParkingBrakeValue'
        particulate_filter_warning_indicator:
          description: |
            Indicates whether the particulate filter (DPF) warning light is active. `ON` means the warning is active.
            This indicates an issue with the particulate filter system.
          allOf:
            - $ref: '#/components/schemas/StatePropertyBase'
            - $ref: '#/components/schemas/OnOffValue'
        position:
          description: Position of the vehicle.
          allOf:
            - $ref: '#/components/schemas/StatePropertyBase'
            - $ref: '#/components/schemas/PositionValue'
        power_steering_failure_indicator:
          description: Indicates whether the power steering is failing. `ON` means the power steering is failing.
          allOf:
            - $ref: '#/components/schemas/StatePropertyBase'
            - $ref: '#/components/schemas/OnOffSensorFailureValue'
        remaining_range_in_kilometers:
          description: An estimate of how far the vehicle can drive with the remaining fuel or battery charge in kilometers.
          allOf:
            - $ref: '#/components/schemas/StatePropertyBase'
            - $ref: '#/components/schemas/RangeValue'
        seatbelts_status:
          description: Contains information about the status of each seatbelt.
          allOf:
            - $ref: '#/components/schemas/StatePropertyBase'
            - $ref: '#/components/schemas/SeatbeltsValue'
        service_due_date:
          description: The due date of the next vehicle service.
          allOf:
            - $ref: '#/components/schemas/StatePropertyBase'
            - $ref: '#/components/schemas/ServiceDateValue'
        service_due_in_kilometers:
          description: The remaining distance in kilometers until next vehicle service is due.
          allOf:
            - $ref: '#/components/schemas/StatePropertyBase'
            - $ref: '#/components/schemas/ServiceKilometersValue'
        speed_in_kph:
          description: The speed of the vehicle in kilometers per hour.
          allOf:
            - $ref: '#/components/schemas/StatePropertyBase'
            - $ref: '#/components/schemas/SpeedValue'
        starter_battery_warning_indicator:
          description: |
            Indicates whether the battery warning light is active. `ON` means the warning is active.
            This indicates an issue with the vehicle's starter battery.
            Potential issues are for example:
              - a low state of charge
              - low power output (voltage)
              - the battery not being charged by the alternator
          allOf:
            - $ref: '#/components/schemas/StatePropertyBase'
            - $ref: '#/components/schemas/OnOffSensorFailureValue'
        state_of_charge_or_fuel_level_in_percent:
          description: Fuel level of the vehicle in percent or the state of charge for electric vehicles.
          allOf:
            - $ref: '#/components/schemas/StatePropertyBase'
            - $ref: '#/components/schemas/PercentageValue'
            - $ref: '#/components/schemas/FuelLevelOrStateOfChargeRawValue'
        state_of_charge_or_fuel_level_low_indicator:
          description: Indicates whether the fuel level or the state of charge is low. `ON` means the fuel level or the state of charge is low.
          allOf:
            - $ref: '#/components/schemas/StatePropertyBase'
            - $ref: '#/components/schemas/OnOffSensorFailureValue'
        sunroof_status:
          description: The status of a vehicle's sunroof.
          allOf:
            - $ref: '#/components/schemas/StatePropertyBase'
            - $ref: '#/components/schemas/OpenClosedValue'
        telematics_unit_backup_battery:
          description: Contains information about the backup battery of the telematics unit.
          allOf:
            - $ref: '#/components/schemas/StatePropertyBase'
            - $ref: '#/components/schemas/TelematicsBatteryValue'
        telematics_unit_supply_voltage_in_volts:
          description: The supply voltage of the telematics unit in volts.
          allOf:
            - $ref: '#/components/schemas/StatePropertyBase'
            - $ref: '#/components/schemas/TelematicsVoltageValue'
        tire_pressure_indicator:
          description: Indicates whether there is an active tire pressure warning. `ON` means there is an active tire pressure warning.
          allOf:
            - $ref: '#/components/schemas/StatePropertyBase'
            - $ref: '#/components/schemas/OnOffSensorFailureValue'
        top_case_lid:
          description: State of the top case lid.
          allOf:
            - $ref: '#/components/schemas/StatePropertyBase'
            - $ref: '#/components/schemas/OpenClosedValue'
        top_case_lock:
          description: State of the top case lock.
          allOf:
            - $ref: '#/components/schemas/StatePropertyBase'
            - $ref: '#/components/schemas/LockedUnlockedValue'
        vehicle_key:
          description: State of the vehicle key.
          allOf:
            - $ref: '#/components/schemas/StatePropertyBase'
            - $ref: '#/components/schemas/VehicleKeyValue'
        washer_fluid_level_low_indicator:
          description: Indicates whether the washer fluid level is low. `ON` means the washer fluid level is low.
          allOf:
            - $ref: '#/components/schemas/StatePropertyBase'
            - $ref: '#/components/schemas/OnOffSensorFailureValue'
        windows_status:
          description: Indicates whether all windows of the vehicle are closed.
          allOf:
            - $ref: '#/components/schemas/StatePropertyBase'
            - $ref: '#/components/schemas/OpenClosedValue'
    changedAtProperty:
      properties:
        changed_at:
          type: string
          format: date-time
          example: '2021-03-08T10:29:00Z'
          description: UTC time of when the value last changed.
    vehicleStateWithIndicatorChangedAt:
      type: object
      allOf:
        - $ref: '#/components/schemas/VehicleState'
        - type: object
          properties:
            abs_warning_indicator:
              $ref: '#/components/schemas/changedAtProperty'
            adblue_level_low_indicator:
              $ref: '#/components/schemas/changedAtProperty'
            brake_fluid_level_low_indicator:
              $ref: '#/components/schemas/changedAtProperty'
            brake_lining_wear_indicator:
              $ref: '#/components/schemas/changedAtProperty'
            brake_warning_indicator:
              $ref: '#/components/schemas/changedAtProperty'
            check_engine_indicator:
              $ref: '#/components/schemas/changedAtProperty'
            coolant_level_low_indicator:
              $ref: '#/components/schemas/changedAtProperty'
            coolant_temperature_high_indicator:
              $ref: '#/components/schemas/changedAtProperty'
            engine_oil_level_low_indicator:
              $ref: '#/components/schemas/changedAtProperty'
            engine_oil_pressure_low_indicator:
              $ref: '#/components/schemas/changedAtProperty'
            epc_warning_indicator:
              $ref: '#/components/schemas/changedAtProperty'
            esp_warning_indicator:
              $ref: '#/components/schemas/changedAtProperty'
            power_steering_failure_indicator:
              $ref: '#/components/schemas/changedAtProperty'
            starter_battery_warning_indicator:
              $ref: '#/components/schemas/changedAtProperty'
            state_of_charge_or_fuel_level_low_indicator:
              $ref: '#/components/schemas/changedAtProperty'
            tire_pressure_indicator:
              $ref: '#/components/schemas/changedAtProperty'
            washer_fluid_level_low_indicator:
              $ref: '#/components/schemas/changedAtProperty'
    vehicleWithoutSharing:
      allOf:
        - $ref: '#/components/schemas/vehicleWithoutLatestVehicleState'
        - type: object
          properties:
            latest_vehicle_state:
              $ref: '#/components/schemas/vehicleStateWithIndicatorChangedAt'
    PartnershipParticipant:
      description: A participant represents an owner or a partner in a partnership
      type: object
      required:
        - fleet_id
        - name
      properties:
        fleet_id:
          type: string
          description: The unique ID of the fleet
          example: F48XD
        name:
          type: string
          example: ShareOne
          description: |
            The official name of the fleet of the participant
    Sharing:
      description: |
        Details of sharing the vehicle between two fleets.
        The owner shares the vehicle with the partner, which may be for a limited time (`ends_at`).
      required:
        - status
        - owner
        - partner
        - starts_at
      properties:
        status:
          description: Supports filtering shared vehicles
          type: string
          x-extensible-enum:
            - NOT_SHARED
            - SHARED_OWN_VEHICLE
            - SHARED_PARTNER_VEHICLE
          example: SHARED_OWN_VEHICLE
        owner:
          description: The owner in a partnership
          allOf:
            - $ref: '#/components/schemas/PartnershipParticipant'
        partner:
          description: The partner in a partnership
          allOf:
            - $ref: '#/components/schemas/PartnershipParticipant'
        starts_at:
          type: string
          format: date-time
          example: '2021-02-17T10:29:00Z'
          description: UTC time at which sharing starts
        ends_at:
          type: string
          format: date-time
          example: '2021-02-17T10:29:00Z'
          description: |
            UTC time at which sharing ends - 
            if null the sharing is considered permanent until ended manually.
    vehicle:
      allOf:
        - $ref: '#/components/schemas/vehicleWithoutSharing'
        - type: object
          properties:
            sharing:
              $ref: '#/components/schemas/Sharing'
    feature_configuration:
      type: object
      description: Information about features and their configuration
      properties:
        tracking:
          type: object
          description: |
            Contains information about the configuration of the Tracking feature. This entire object only exists if tracking is configured/enabled.
          required:
            - modified_at
          properties:
            time_interval_in_seconds:
              type: integer
              format: int32
              example: 120
              description: |
                The time interval in seconds at which vehicle states with tracking information are generated.

                You can expect this value to be between 10 and 86400.
                In rare cases, a malfunctioning telematics unit may send values outside of this range.
            distance_interval_in_meters:
              type: integer
              format: int32
              example: 500
              description: |
                The distance the vehicle has to travel before a vehicle state with tracking information is generated.

                You can expect this value to be between 100 and 10000.
                In rare cases, a malfunctioning telematics unit may send values outside of this range.
            heading_change_threshold_in_degrees:
              type: integer
              format: int32
              example: 60
              description: |
                When the heading angle changes by more than the given threshold,
                a vehicle state with tracking information is generated.

                You can expect this value to be between 10 and 170.
                In rare cases, a malfunctioning telematics unit may send values outside of this range.
            modified_at:
              type: string
              format: date-time
              example: '2022-07-08T10:29:00Z'
              description: |
                UTC time of when the tracking configuration was last updated.
        damage_detection:
          type: object
          description: |
            Contains information about the configuration of the damage detection feature. This entire object only exists if damage detection is configured.
          required:
            - activation_status
            - modified_at
          properties:
            activation_status:
              type: string
              example: ACTIVATION_SUCCEEDED
              description: The current status of the feature activation.
              x-extensible-enum:
                - ACTIVATION_PENDING
                - ACTIVATION_RUNNING
                - ACTIVATION_SUCCEEDED
                - ACTIVATION_FAILED
                - DEACTIVATION_PENDING
                - DEACTIVATION_RUNNING
                - DEACTIVATION_FAILED
              maxLength: 64
            error_message:
              type: string
              description: A human readable error message. Only present if activation_status is `ACTIVATION_FAILED`, `DEACTIVATION_FAILED`, `ACTIVATION_RUNNING` or `DEACTIVATION_RUNNING`.
            sensor_installation_variant:
              type: string
              pattern: ^[A-Z]$
              example: A
              description: |
                The installation variant used to mount the damage detection module.
            modified_at:
              type: string
              format: date-time
              example: '2022-07-08T10:29:00Z'
              description: |
                UTC time of when the damage detection configuration was last updated.
        driving_events:
          type: object
          description: |
            Contains information about the configuration of the driving events feature. This entire object only exists if driving events are configured/enabled.
          required:
            - modified_at
          properties:
            crash_detection:
              type: object
              description: |
                Contains the configuration for the crash detected event generation.
                A crash event is generated when the magnitude of the acceleration experienced by the vehicle exceeds the configured threshold.
              properties:
                modified_at:
                  type: string
                  format: date-time
                  example: '2022-07-08T10:29:00Z'
                  description: UTC time of when the crash detection configuration was last updated.
                minimum_acceleration_in_mg:
                  type: integer
                  format: int32
                  example: 2000
                  description: |
                    Specifies the minimum acceleration threshold required for crash events, excluding gravitational acceleration.

                    This threshold is expressed in "milli-g", which represents a thousandth of the standard acceleration of gravity ("g").

                    Any shocks with amplitudes below this threshold will be disregarded.

                    You can expect this value to be between 250 and 4000.
                    In rare cases, a malfunctioning telematics unit may send values outside of this range.
                minimum_duration_in_milliseconds:
                  type: integer
                  format: int32
                  example: 100
                  description: |
                    Specifies the minimum duration required for a shock to be considered a crash.
                    Shocks with a duration shorter than this threshold will be disregarded.

                    You can expect this value to be between 1 and 500.
                    In rare cases, a malfunctioning telematics unit may send values outside of this range.
                data_gathering_duration_in_seconds:
                  type: integer
                  format: int32
                  example: 4
                  description: |
                    This setting determines how long data is collected when a crash is identified, leading to the creation of CrashDetected events.

                    When a crash is detected, an initial CrashDetected event is promptly published without additional information.
                    Data gathering continues for the period specified by this value.
                    Following this period, another CrashDetected event is published.
                    This one contains information about the intervening time, such as the average acceleration.

                    If the acceleration remains above the specified threshold, consecutive data collection periods are initiated,
                    each concluding with the generation of a new CrashDetected event containing relevant data for that specific interval.

                    You can expect this value to be between 2 and 10.
                    In rare cases, a malfunctioning telematics unit may send values outside of this range.
            heavy_braking_detection:
              type: object
              description: |
                Contains the configuration for the generation of heavy braking events.
                A heavy braking event is generated when the longitudinal acceleration exceeds the specified threshold.
              properties:
                modified_at:
                  type: string
                  format: date-time
                  example: '2022-07-08T10:29:00Z'
                  description: UTC time of when the heavy braking configuration was last updated.
                minimum_longitudinal_acceleration_in_mg:
                  type: integer
                  format: int32
                  example: 1000
                  description: |
                    Specifies the minimum magnitude of longitudinal acceleration for heavy braking events.

                    This threshold is expressed in "milli-g", which represents a thousandth of the standard acceleration of gravity ("g").

                    Both forward and backward acceleration are considered.

                    You can expect this value to be between 250 and 1500.
                    In rare cases, a malfunctioning telematics unit may send values outside of this range.
            harsh_cornering_detection:
              type: object
              description: |
                Contains the configuration for the generation of harsh cornering events.
                A harsh cornering event is generated when the vehicle is too fast in a curve.
              properties:
                modified_at:
                  type: string
                  format: date-time
                  example: '2022-07-08T10:29:00Z'
                  description: UTC time of when the harsh cornering configuration was last updated.
                minimum_lateral_acceleration_in_mg:
                  type: integer
                  format: int32
                  example: 1000
                  description: |
                    Specifies the minimum magnitude of lateral acceleration for harsh cornering events.

                    This threshold is expressed in "milli-g", which represents a thousandth of the standard acceleration of gravity ("g").

                    You can expect this value to be between 250 and 1500.
                    In rare cases, a malfunctioning telematics unit may send values outside of this range.
            modified_at:
              type: string
              format: date-time
              example: '2022-07-08T10:29:00Z'
              description: |
                UTC time of when the driving events configuration was last updated.
        parking_events:
          type: object
          description: |
            Contains information about the configuration of the parking events feature. This entire object only exists if driving events are configured/enabled.
          required:
            - modified_at
          properties:
            shock_detection:
              type: object
              description: |
                Contains the configuration for the shock detected event generation.
                A shock event is generated when the magnitude of the acceleration experienced by the vehicle exceeds the configured threshold.
              properties:
                modified_at:
                  type: string
                  format: date-time
                  example: '2022-07-08T10:29:00Z'
                  description: UTC time of when the shock detection configuration was last updated.
                minimum_acceleration_in_mg:
                  type: integer
                  format: int32
                  description: |
                    Specifies the minimum acceleration threshold required for shock events, excluding gravitational acceleration.

                    This threshold is expressed in "milli-g", which represents a thousandth of the standard acceleration of gravity ("g").

                    Any shocks with amplitudes below this threshold will be disregarded.

                    You can expect this value to be between 0 and 2000.
                    In rare cases, a malfunctioning telematics unit may send values outside of this range.
                  example: 200
                minimum_duration_in_milliseconds:
                  type: integer
                  format: int32
                  description: |
                    Specifies the minimum duration required for which the minimum acceleration threshold has to be exceeded to be considered a shock event.
                    Shocks with a duration shorter than this threshold will be disregarded.

                    You can expect this value to be between 1 and 500.
                    In rare cases, a malfunctioning telematics unit may send values outside of this range.
                  example: 20
                data_gathering_duration_in_seconds:
                  type: integer
                  format: int32
                  description: |
                    This setting determines how long data is collected when a shock is identified, leading to the creation of ShockDetected events.

                    When a shock is detected, an initial ShockDetected event is promptly published without additional information.
                    Data gathering continues for the period specified by this value.
                    Following this period, another ShockDetected event is published.
                    This one contains information about the intervening time, such as the average acceleration.

                    If the acceleration remains above the specified threshold, consecutive data collection periods are initiated,
                    each concluding with the generation of a new ShockDetected event containing relevant data for that specific interval.

                    You can expect this value to be between 2 and 3600.
                    In rare cases, a malfunctioning telematics unit may send values outside of this range.
                  example: 4
            motion_detection:
              type: object
              description: |
                Contains the configuration for motion event generation.
                A sequence of shocks qualifies as a motion when the vehicle's acceleration is exceeding the configured threshold multiple times for at least the configured minimum motion duration while the driving is disabled.

                Motion detection generates a `MotionStarted` and a `MotionEnded` event.
              properties:
                modified_at:
                  type: string
                  format: date-time
                  example: '2022-07-08T10:29:00Z'
                  description: UTC time of when the motion detection configuration was last updated.
                minimum_initial_acceleration_in_mg:
                  type: integer
                  format: int32
                  description: |
                    Specifies the minimum initial acceleration threshold required to detect a motion, excluding gravitational acceleration.
                    When a sufficiently long shock exceeding this acceleration is detected,
                    a period for monitoring subsequent shocks is started to determine whether this was an isolated shock or whether the vehicle is actually being moved.

                    This threshold is expressed in "milli-g", which represents a thousandth of the standard acceleration of gravity ("g").
                    Shocks with amplitudes below this threshold are disregarded and will not start the motion monitoring.

                    You can expect this value to be between 0 and 2000, but it also must be greater than or equal to `minimum_subsequent_acceleration_in_mg`.
                    In rare cases, a malfunctioning telematics unit may send values outside of this range.
                  example: 100
                minimum_subsequent_acceleration_in_mg:
                  type: integer
                  format: int32
                  description: |
                    Specifies the minimum acceleration threshold required for detecting subsequent shocks.
                    These subsequent shocks are used to decide whether a sequence of shocks constitutes a motion or whether an in-progress motion is still ongoing.

                    Acceleration must be above this threshold to qualify as a shock for the motion monitoring.
                    This threshold is expressed in "milli-g", which represents a thousandth of the standard acceleration of gravity ("g").

                    You can expect this value to be between 0 and 2000.
                    In rare cases, a malfunctioning telematics unit may send values outside of this range.
                  example: 50
                minimum_individual_acceleration_duration_in_milliseconds:
                  type: integer
                  format: int32
                  description: |
                    Specifies the minimum duration required for any acceleration magnitude exceeding one of the configured thresholds to be considered a shock for motion detection.

                    You can expect this value to be between 1 and 500.
                    In rare cases, a malfunctioning telematics unit may send values outside of this range.
                  example: 20
                minimum_motion_duration_in_seconds:
                  type: integer
                  format: int32
                  description: |
                    Specifies the shortest timespan for which a sequence of shocks has to be detected in order to generate a `MotionStarted` event.

                    If further shocks after the initial shock are not detected for at least this duration, the motion is disregarded and no event will be generated.

                    You can expect this value to be between 2 and 3600.
                    In rare cases, a malfunctioning telematics unit may send values outside of this range.
                  example: 10
                motion_timeout_in_seconds:
                  type: integer
                  format: int32
                  description: |
                    Specifies the maximum duration between successive shocks to be considered a single motion.

                    If this time is exceeded before the `MotionStarted` event is generated, the motion is disregarded and no motion event is generated.
                    If it is exceeded after the `MotionStarted` event is generated, the motion is considered to be over and a `MotionEnded` event is generated.

                    Each detected subsequent shock resets the motion timeout.

                    You can expect this value to be between 2 and 3600, but it also must be less than `minimum_motion_duration_in_seconds`.
                    In rare cases, a malfunctioning telematics unit may send values outside of this range.
                  example: 5
            tilt_detection:
              type: object
              description: |
                Contains the configuration for tilt event generation.
                Tilt detection monitors the vehicle's tilt angle and generates an event if the angle is too large, independent of the direction of tilt.

                The tilt angle is measured relative to the Earth's gravitational field, meaning that the road's slope can influence the measured tilt angle.
              properties:
                modified_at:
                  type: string
                  format: date-time
                  example: '2022-07-08T10:29:00Z'
                  description: UTC time of when the tilt detection configuration was last updated.
                minimum_angle_in_degrees:
                  type: integer
                  format: int32
                  description: |
                    Specifies the minimum tilt angle, in degrees, for the vehicle to be recognized as tilted.
                    Hysteresis is used during tilt detection to prevent frequent changes of the tilt status.

                    You can expect this value to be between 10 and 170.
                    In rare cases, a malfunctioning telematics unit may send values outside of this range.
                  example: 60
                measurement_interval_in_seconds:
                  type: integer
                  format: int32
                  description: |
                    Specifies the time interval between two consecutive tilt angle measurements. The measurement has a time step resolution of 5 seconds.

                    You can expect this value to be between 5 and 3600, but it also must be a whole multiple of 5.
                    In rare cases, a malfunctioning telematics unit may send values outside of this range.
                  example: 10
            modified_at:
              type: string
              format: date-time
              example: '2022-07-08T10:29:00Z'
              description: |
                UTC time of when the parking events configuration was last updated.
        smoke_detection:
          description: |
            Contains the timestamp when the smoke detection configuration was enabled. This entire object only exists if smoke events are configured/enabled.
          type: object
          required:
            - modified_at
          properties:
            modified_at:
              type: string
              format: date-time
              example: '2022-07-08T10:29:00Z'
              description: The UTC timestamp when the smoke detection configuration was last updated.
        auto_immobilizer_control:
          description: |
            Contains information about the configuration of the Auto Immobilizer Control feature. This entire object only exists if auto immobilizer control is configured/enabled.
          type: object
          required:
            - lock_conditions
            - modified_at
          properties:
            lock_conditions:
              type: object
              description: Contains conditions that determine when the immobilizer gets locked automatically while the ignition is off.
              required:
                - use_ble_connection
                - use_doors_status
              properties:
                use_ble_connection:
                  type: boolean
                  description: |
                    Indicates whether a disconnected Bluetooth Low Energy (BLE) connection should be used as a condition for locking the immobilizer.

                    Must be true to enable `use_ble_signal_strength`.
                use_ble_signal_strength:
                  type: boolean
                  description: |
                    Indicates whether a BLE signal strength below the threshold defined by `ble_signal_strength_threshold_in_dbm` should be used as a condition for locking the immobilizer.

                    Can only be true if `use_ble_connection` is also enabled.
                use_doors_status:
                  type: boolean
                  description: |
                    Indicates whether the status of the vehicle's doors should be used as a condition for locking the immobilizer.

                    Can only be true if the vehicle supports the `DOORS_STATUS` capability.
                    This condition is only considered in the "ride pause" state, not in the "pre-ride start" state.
                ble_signal_strength_threshold_in_dbm:
                  type: integer
                  format: int32
                  description: |
                    Defines the signal strength threshold for the BLE connection, below which the immobilizer will be locked if `use_ble_signal_strength` is true.
                  minimum: -80
                  maximum: -20
                  example: -60
                pre_ride_start_lock_delay_in_seconds:
                  type: integer
                  format: int32
                  description: |
                    Specifies the delay between the conditions activating and the immobilizer being locked automatically.
                    If the conditions cease before the delay is over, the immobilizer isn't locked and the delay resets.

                    This delay is used only in the "pre-ride start" state, i.e. after the immobilizer has been turned off but before the ignition has been turned on.
                  minimum: 0
                  maximum: 3600
                  example: 120
                ride_pause_lock_delay_in_seconds:
                  type: integer
                  format: int32
                  description: |
                    Specifies the delay between the conditions activating and the immobilizer being locked automatically.
                    If the conditions cease before the delay is over, the immobilizer isn't locked and the delay resets.

                    This delay is used only in the "ride pause" state, i.e. after the ignition has been turned off.
                  minimum: 0
                  maximum: 3600
                  example: 120
            modified_at:
              type: string
              format: date-time
              example: '2022-07-08T10:29:00Z'
              description: |
                UTC time of when the auto immobilizer control configuration was last updated.
        anomaly_detection:
          description: |
            Contains the timestamp when the anomaly detection configuration was enabled. This entire object only exists if anomaly detection events are configured/enabled.
          type: object
          required:
            - modified_at
          properties:
            modified_at:
              type: string
              format: date-time
              example: '2022-07-08T10:29:00Z'
              description: The UTC timestamp when the anomaly detection configuration was last updated.
        speeding_detection:
          description: |
            Contains the timestamp when the speeding detection configuration was enabled. This entire object only exists if speeding events are configured/enabled.
          type: object
          required:
            - modified_at
          properties:
            modified_at:
              type: string
              format: date-time
              example: '2022-07-08T10:29:00Z'
              description: The UTC timestamp when the speeding detection configuration was last updated.
        maintenance_data:
          description: |
            Contains the timestamp when the maintenance data configuration was enabled. This complete object only exists if maintenance data is configured/enabled.
          type: object
          required:
            - modified_at
          properties:
            modified_at:
              type: string
              format: date-time
              example: '2022-07-08T10:29:00Z'
              description: The UTC timestamp when the maintenance data configuration was last updated
    telematicsUnitSupplyVoltageAlarmThresholdsBase:
      type: object
      properties:
        alarm_threshold_in_volts:
          description: The telematics unit supply voltage is considered to be low if the voltage falls below this value.
          type: number
          format: double
          example: 8
        recover_threshold_in_volts:
          description: The telematics unit supply voltage is considered to be normal if the voltage rises above this value.
          type: number
          format: double
          example: 10
    telematicsUnitSupplyVoltageAlarmThresholds3G:
      allOf:
        - $ref: '#/components/schemas/telematicsUnitSupplyVoltageAlarmThresholdsBase'
        - title: CloudBoxx 3G
          properties:
            alarm_threshold_in_volts:
              minimum: 6
              maximum: 12
            recover_threshold_in_volts:
              minimum: 6.5
              maximum: 12.5
    telematicsUnitSupplyVoltageAlarmThresholdsMini:
      allOf:
        - $ref: '#/components/schemas/telematicsUnitSupplyVoltageAlarmThresholdsBase'
        - title: CloudBoxx MINI
          properties:
            alarm_threshold_in_volts:
              minimum: 7
              maximum: 99.5
            recover_threshold_in_volts:
              minimum: 7.5
              maximum: 100
    telematicsUnitSupplyVoltageAlarmThresholds4G:
      allOf:
        - $ref: '#/components/schemas/telematicsUnitSupplyVoltageAlarmThresholdsBase'
        - title: CloudBoxx 4G/1020
          properties:
            alarm_threshold_in_volts:
              minimum: 7
              maximum: 55.5
            recover_threshold_in_volts:
              minimum: 7.5
              maximum: 56
    fuelLevelAlarmThresholdsEnabled:
      type: object
      additionalProperties: false
      required:
        - enabled
        - alarm_threshold_in_percent
        - recover_threshold_in_percent
      properties:
        enabled:
          type: boolean
          description: Whether the fuel level alarm thresholds are enabled.
          example: true
        alarm_threshold_in_percent:
          type: integer
          format: int32
          nullable: true
          minimum: 5
          maximum: 90
          description: |
            An alarm is raised when the fuel level falls below this value.
            If set to a value, it must be at least 5 percentage points lower than `recover_threshold_in_percent`.
          example: 15
        recover_threshold_in_percent:
          type: integer
          format: int32
          nullable: true
          minimum: 10
          maximum: 95
          description: |
            A previously raised alarm is recovered when the fuel level gets greater than this value.
            Must be at least 5 percentage points higher than `alarm_threshold_in_percent`.
          example: 20
    fuelLevelAlarmThresholdsDisabled:
      type: object
      additionalProperties: false
      required:
        - enabled
      properties:
        enabled:
          type: boolean
          description: Whether the fuel level alarm thresholds are enabled.
          example: false
    cloudboxxSettingsResponseSchema:
      description: |
        The CloudBoxx settings describe individual values of the CloudBoxx configuration.
      type: object
      properties:
        beeper_enabled:
          type: boolean
          description: |
            Whether the beeper on the CloudBoxx is enabled.
            If enabled, the CloudBoxx makes a beeping sound when, e.g. a connection via Bluetooth is established.
          example: true
        dead_reckoning_position_enabled:
          type: boolean
          description: |
            Whether the CloudBoxx can use dead reckoning to improve the position quality in areas with bad or no GNSS signal.
          example: true
        current_mileage_in_kilometers:
          type: number
          format: double
          minimum: 0
          maximum: 4294967
          description: |
            Specifies the current mileage of the vehicle.
            For some vehicle models, the telematics unit cannot obtain the current mileage directly.
            In that case, the mileage has to be supplied using this parameter for the setup process.
          example: 42.13
        mileage_source:
          description: |
            Selects the source from which to derive the driven mileage information. This mainly depends on the wiring of the
            CloudBoxx inside the vehicle.

            * `COMBINED` - is only available since firmware version 2.16.0.
            * `OBD2` - is only available since firmware version 2.17.0.
          example: CAN_MILEAGE
          type: string
          x-extensible-enum:
            - VSS
            - GPS_POS
            - GPS_SPEED
            - CAN_MILEAGE
            - CAN_SPEED
            - COMBINED
            - OBD2
        ignition_source:
          description: |
            From where to detect the ignition-status. This mainly depends on the wiring of the CloudBoxx
            inside the vehicle.

            * `OBD2` - is only available since firmware version 2.17.0.
          example: KL15
          readOnly: false
          type: string
          x-extensible-enum:
            - KL15
            - CAN
            - ENGINE_RUN
            - OBD2
        telematics_unit_supply_voltage_alarm_thresholds:
          description: |
            Thresholds used to configure when TelematicsUnitSupplyVoltageThresholdCrossed events are produced.

            Generation of these events is based on two states of the supply voltage: normal and abnormally low.
            When the state is normal and the voltage drops below the `alarm_threshold_in_volts`, an event is produced to indicate that the state is now "abnormally low".
            The next state change occurs only once the voltage rises above the `recover_threshold_in_volts`.
            Once that happens, an event is produced to indicate that the state is back to "normal".

            The `recover_threshold_in_volts` must be between `alarm_threshold_in_volts + 0.5` and `alarm_threshold_in_volts + 3.0` (inclusive).

            Note that the allowed ranges for both thresholds change depending on the telematics unit model.
          anyOf:
            - $ref: '#/components/schemas/telematicsUnitSupplyVoltageAlarmThresholds3G'
            - $ref: '#/components/schemas/telematicsUnitSupplyVoltageAlarmThresholdsMini'
            - $ref: '#/components/schemas/telematicsUnitSupplyVoltageAlarmThresholds4G'
        fuel_level_smoothing:
          type: boolean
          nullable: false
          description: |
            Enable or disable the smoothing of fuel level changes. Can be used if consecutive fuel level info
            fluctuates too much due to high sensor sensitivity and fuel moving around in the tank while driving.
          example: true
        fuel_level_alarm_thresholds:
          description: |
            Thresholds in percent are used to configure when "Fuel Level Alarm/Recover" events are triggered.
            If disabled, the threshold values are ignored.
          oneOf:
            - $ref: '#/components/schemas/fuelLevelAlarmThresholdsEnabled'
            - $ref: '#/components/schemas/fuelLevelAlarmThresholdsDisabled'
    generic_central_lock_parameters:
      title: Generic central lock parameters
      type: object
      x-supported-cloudboxx-models: 3G, 4G, 1020
      description: |
        Parameters for generic central lock configurations.
      example:
        toggle_code_line_interruption: false
        pause_time_close_ms: 500
        pulse_count_open: 3
        pid_grace_time_close_ms: 500
        pulse_length_close_ms: 700
        number_of_signal_lines: ONE
        extended_keyless_grace_time_ms: 2000
        toggle_pid_power_supply: false
        pulse_count_close: 2
        pause_time_open_ms: 500
        pid_power_option: EXTENDED_KEYLESS
        pid_grace_time_open_ms: 500
        wake_up_time_close_ms: 200
        wake_up_time_open_ms: 200
        pulse_length_open_ms: 700
        feedback_mechanism: UNSET
      properties:
        toggle_pid_power_supply:
          default: false
          description: Define if the PID power supply must be toggled while switching central lock.
          example: false
          type: boolean
        toggle_code_line_interruption:
          default: false
          description: Define if the code line interruption relay must be toggled while switching central lock. Used for PID power supply in CloudBoxx 3G.
          example: false
          type: boolean
        number_of_signal_lines:
          description: |
            Number of signal lines to use for central locking.

            `UNKNOWN` is only allowed as initial value and is not allowed to be set.
          example: ONE
          type: string
          x-extensible-enum:
            - UNKNOWN
            - ONE
            - TWO
        wake_up_time_open_ms:
          default: 200
          description: |
            Time between toggling the code line interruption relay or the pid power supply and the first opening pulse.
            Used only when `toggle_code_line_interruption == true` or `toggle_pid_power_supply == true`.
          example: 200
          maximum: 10000
          minimum: 0
          type: integer
          format: int32
        pulse_length_open_ms:
          default: 700
          description: Duration of the opening pulses.
          example: 700
          maximum: 10000
          minimum: 10
          type: integer
          format: int32
        pause_time_open_ms:
          default: 500
          description: Time to wait between each pulse for opening.
          example: 500
          maximum: 10000
          minimum: 10
          type: integer
          format: int32
        pulse_count_open:
          default: 1
          description: Number of pulses to send to open the central lock.
          example: 3
          maximum: 10
          minimum: 0
          type: integer
          format: int32
        pid_grace_time_open_ms:
          default: 500
          description: |
            Time between the last opening pulse and toggling the code line interruption or the pid power supply.
            Used only when `toggle_code_line_interruption == true` or `toggle_pid_power_supply == true`.
          example: 500
          maximum: 30000
          minimum: 0
          type: integer
          format: int32
        wake_up_time_close_ms:
          default: 200
          description: |
            Time between toggling the code line interruption relay or the pid power supply and the first closing pulse.
            Used only when `toggle_code_line_interruption == true` or `toggle_pid_power_supply == true`.
          example: 200
          maximum: 10000
          minimum: 0
          type: integer
          format: int32
        pulse_length_close_ms:
          default: 700
          description: Duration of the closing pulses.
          example: 700
          maximum: 10000
          minimum: 10
          type: integer
          format: int32
        pause_time_close_ms:
          default: 500
          description: Time to wait between each pulse for closing.
          example: 500
          maximum: 10000
          minimum: 10
          type: integer
          format: int32
        pulse_count_close:
          default: 1
          description: Number of pulses to send to close the central lock.
          example: 2
          maximum: 10
          minimum: 0
          type: integer
          format: int32
        pid_grace_time_close_ms:
          default: 500
          description: |
            Time between the last closing pulse and toggling the code line interruption or the pid power supply.
            Used only when `toggle_code_line_interruption == true` or `toggle_pid_power_supply == true`.
          example: 500
          maximum: 30000
          minimum: 0
          type: integer
          format: int32
        feedback_mechanism:
          description: Define which feedback channel should be used.
          example: UNSET
          type: string
          x-supported-cloudboxx-models: 4G, 1020, MINI
          x-minimum-cloudboxx-firmware-version: 2.10.0
          x-extensible-enum:
            - UNSET
            - CDF12
        pid_power_option:
          default: UNSET
          description: |
            Defines which PID power option should be used.

            This option can only be used for firmware versions >= 2.15.

            Used only when `toggle_pid_power_supply == true`.

            RELAY_ISOLATION is only available for firmwares >= 2.21.0 and only for CloudBoxx 4G and 1020.

            * UNSET: No extra handling for PID power options is used.
            * EXTENDED_KEYLESS: While the immobilizer is unlocked, the PID LoMo is temporarily switched off depending
              on the door status and the ignition signal.
            * ONLY_ON_CENTRAL_LOCK: Power supply of PID LoMo is only turned on when a central lock is executed.
            * RELAY_ISOLATION: The relay (jammer) and the V-key can be switched independently of each other.
          x-extensible-enum:
            - UNSET
            - EXTENDED_KEYLESS
            - ONLY_ON_CENTRAL_LOCK
            - RELAY_ISOLATION
          example: EXTENDED_KEYLESS
          type: string
          x-supported-cloudboxx-models: 4G, 1020, MINI
          x-minimum-cloudboxx-firmware-version: 2.15.0
        extended_keyless_grace_time_ms:
          default: 2000
          description: |
            This option can only be used for firmware versions >= 2.15.

            Used only when `pid_power_option == EXTENDED_KEYLESS`.

            Time between locking the vehicle and switching power supply of the PID LoMo on again.
          example: 2000
          maximum: 10000
          minimum: 0
          type: integer
          format: int32
          x-supported-cloudboxx-models: 4G, 1020, MINI
          x-minimum-cloudboxx-firmware-version: 2.15.0
    cloudboxxExpertSettingsFullSchema:
      description: |
        The CloudBoxx expert settings describe special individual values of the CloudBoxx configuration which only experts should manage.
      type: object
      properties:
        central_lock_type:
          description: Central Lock Type
          type: integer
          format: int32
          x-extensible-enum:
            - 1
            - 4
            - 5
            - 8
            - 11
            - 15
        central_lock_feedback_time:
          description: |
            Time to wait for Feedback.
          example: 400
          maximum: 1300
          minimum: 0
          type: integer
          format: int32
        central_lock_wakeup_time:
          description: |
            Central Lock Wakeup Time.
          example: 300
          maximum: 1300
          minimum: 0
          type: integer
          format: int32
        central_lock_pulse_length:
          description: |
            Duration of the pulses.
          example: 700
          maximum: 1300
          minimum: 0
          type: integer
          format: int32
        central_lock_generic_parameters:
          $ref: '#/components/schemas/generic_central_lock_parameters'
    cloudboxxConfigurationSchemaWithEmbedding:
      allOf:
        - $ref: '#/components/schemas/cloudboxxConfigurationSchema'
        - type: object
          properties:
            settings:
              $ref: '#/components/schemas/cloudboxxSettingsResponseSchema'
            expert_settings:
              $ref: '#/components/schemas/cloudboxxExpertSettingsFullSchema'
    telematicsUnitWithEmbedding:
      allOf:
        - $ref: '#/components/schemas/telematicsUnit'
        - type: object
          properties:
            feature_configuration:
              $ref: '#/components/schemas/feature_configuration'
            cloudboxx_configuration:
              $ref: '#/components/schemas/cloudboxxConfigurationSchemaWithEmbedding'
    vehicleWithEmbedding:
      allOf:
        - $ref: '#/components/schemas/vehicle'
        - type: object
          properties:
            telematics_unit:
              $ref: '#/components/schemas/telematicsUnitWithEmbedding'
    cursors:
      description: |
        Contains the relevant cursors for the returned page -
        prev and next are omitted if they are not applicable.

        Usually the "next" cursor is used repeatedly to iterate the result list.
      type: object
      required:
        - self
      properties:
        self:
          description: |
            Use as `cursor` query parameter in order to retrieve the same batch of results
            as currently returned (according to the limit parameter previously provided).
          type: string
          example: eyJ2IjpbIjIwMjAtMTEtMTZUMDk6NTc6MjUuNDUwMDAwMFoiLCJOWUNOVSJdLCJkIjpmYWxzZSwicSI6eyJsIjozfX0=
        prev:
          description: |
            Use as `cursor` query parameter in order to retrieve the previous batch of results
            (according to the limit parameter previously provided).
          type: string
          example: eyJ2IjpbIjIwMjAtMTEtMTZUMDk6NTc6MjUuNTYxMDAwMFoiLCJOVEY1VCJdLCJkIjp0cnVlLCJxIjp7ImwiOjN9fQ==
        next:
          description: |
            Use as `cursor` query parameter in order to retrieve the next batch of results
            (according to the limit parameter previously provided).
          type: string
          example: eyJ2IjpbIjIwMjAtMTEtMTZUMDk6NTc6MjUuNzY2MDAwMFoiLCJaOTVSUyJdLCJkIjpmYWxzZSwicSI6eyJsIjozfX0=
    Problem:
      type: object
      required:
        - type
        - title
        - status
        - detail
      properties:
        type:
          type: string
          format: uri-reference
          description: |
            A relative URI reference that uniquely identifies the problem type only in the context of the provided API. Opposed to the specification in RFC-7807, it is neither recommended to be dereferencable and point to a human-readable documentation nor globally unique for the problem type.
          default: about:blank
          example: /problem/connection-error
        type_documentation:
          type: string
          format: url
          description: |
            An URL that points to a human-readable documentation of the problem type. Some explanations of the problem type together with possible solutions can be found there.  Written in English and readable for engineers, usually not suited for non technical stakeholders and not localized.
          example: https://developers.invers.com/problems/invalid-credentials/
        title:
          type: string
          description: |
            A short summary of the problem type. Written in English and readable for engineers, usually not suited for non technical stakeholders and not localized.
          example: Service Unavailable
        status:
          type: integer
          format: int32
          description: |
            The HTTP status code generated by the origin server for this occurrence of the problem.
          minimum: 100
          maximum: 600
          exclusiveMaximum: true
          example: 503
        detail:
          type: string
          description: |
            A human readable explanation specific to this occurrence of the problem that is helpful to locate the problem and give advice on how to proceed. Written in English and readable for engineers, usually not suited for non technical stakeholders and not localized.
          example: Connection to database timed out
        flow_id:
          type: string
          description: |
            The id of the flow that caused this error.  For more information visit [https://developers.invers.com/integration-guide/api-basics/#flow-id](https://developers.invers.com/integration-guide/api-basics/#flow-id).
    patchVehicle:
      type: object
      description: Patch object for updating the vehicle.
      properties:
        master_data:
          $ref: '#/components/schemas/MasterDataBase'
        operation_status:
          type: object
          description: Patch object to set the operation status of the vehicle.
          properties:
            value:
              $ref: '#/components/schemas/operationStatus'
        tags:
          description: |
            Replaces the tags of the vehicle with the specified tag array.

            If the specified array is empty, all tags of the vehicle will be removed.
            If the `tags` property is omitted from the request, the tags remain unchanged.
          type: array
          items:
            $ref: '#/components/schemas/tags'
        custom_fields:
          $ref: '#/components/schemas/customFields'
    sharingPartner:
      description: Represents the partner in a FleetShare partnership
      type: object
      required:
        - fleet_id
        - public_fleet_name
      properties:
        fleet_id:
          $ref: '#/components/schemas/fleetId'
        public_fleet_name:
          type: string
          example: Share One
          description: |
            The public name of the fleet of the participant. If no public name is set, the name of the provider will be returned.
    sharingEndsAt:
      description: Time when the sharing ends
      type: string
      format: date-time
      example: '2021-03-10T12:00:00Z'
    rentalStatus:
      type: string
      description: |
        Indicates the rental status of the vehicle.

        The rental status `IN_RENTAL` serves as an indicator to filter out sensitive vehicle state data during rental.
        The filtering of data takes place according to the privacy packages that have been enabled for your fleet.
      x-extensible-enum:
        - IN_RENTAL
        - NOT_IN_RENTAL
      default: NOT_IN_RENTAL
      example: IN_RENTAL
    rentalId:
      type: string
      description: |
        The identifier of the rental.
      example: Rent42
    archivedAt:
      type: string
      format: date-time
      example: '2020-10-08T10:29:00Z'
      description: Timestamp when the vehicle was archived.
    archivedVehicle:
      description: Contains the snapshot of the archived vehicle
      type: object
      required:
        - id
        - archived_at
        - snapshot
      properties:
        id:
          $ref: '#/components/schemas/vehicleId'
        archived_at:
          $ref: '#/components/schemas/archivedAt'
        snapshot:
          $ref: '#/components/schemas/vehicleWithEmbedding'
