Optibus Vehicles API

API endpoints for managing vehicles.

OpenAPI Specification

optibus-vehicles-api-openapi.yml Raw ↑
openapi: 3.0.0
info:
  title: Optibus Operations Driver Absences Vehicles API
  version: 2.8.17
  description: '**Welcome to the Optibus Operations API documentation!**


    Optibus Operations is a cloud-based software solution that enables public transport providers to optimize their operations, planning, and scheduling. Our API provides programmatic access to Optibus Operations'' functionality, allowing you to integrate it with your own applications and systems.



    '
  license:
    name: Optibus Ltd, All rights reserved
  contact: {}
servers:
- url: https://YOUR-OPTIBUS-ACCOUNT.api.ops.optibus.co
  description: Contact your Optibus Customer Success Manager for the actual baseURL and API credentials to use.
tags:
- name: Vehicles
  description: API endpoints for managing vehicles.
paths:
  /v1/vehicles:
    get:
      operationId: GetVehiclesInfoV1
      responses:
        '200':
          description: Vehicles fetched successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetVehiclesV1SuccessfulResponse'
        '400':
          description: 'Possible error types: `Invalid request schema` (schema of your request does not match the specification)'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SchemaValidationErrorResponse'
        '404':
          description: 'Possible error types: `pageNotFound` (requested page number is out of range; details.totalPages indicates the number of pages available)'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetVehiclesV1ErrorResponse'
      description: 'List existing vehicles in the system, with optional filtering capability.


        Notes:

        - The result is paginated. Check the `pagination` property in the response to see the total number of pages and the current page number.'
      summary: List vehicles
      tags:
      - Vehicles
      security:
      - api_key: []
      parameters:
      - description: '- Comma-separated list of vehicle IDs to filter for'
        in: query
        name: vehicleIds
        required: false
        schema:
          type: string
      - description: '- Date string formatted as `YYYY-MM-dd` for which we want data returned. If not provided, today''s date will be used. The date specified here affects the data returned for certain properties such as `mainRegionPeriod`, `loanedRegionPeriods`, `decommissioned`, and `customAttributes`, and also the behaviour of the `isDecommissioned` and `regionNames` query parameters.'
        in: query
        name: onDate
        required: false
        schema:
          type: string
      - description: '- Comma-separated list of region names to filter on. Vehicles belonging to any of the regions (either main or loaned) on the date specified by `onDate` (or today''s date if not provided) will be returned.'
        in: query
        name: regionNames
        required: false
        schema:
          type: string
      - description: '- Whether to filter for decommissioned vehicles on the date specified by `onDate` (or today''s date if not provided). Set to `true` to filter for decommissioned vehicles, and `false` to filter for active vehicles. Leave unspecified to return all vehicles.'
        in: query
        name: isDecommissioned
        required: false
        schema:
          type: boolean
      - description: '- 1-indexed integer indicating which page of results to pull'
        in: query
        name: page
        required: false
        schema:
          $ref: '#/components/schemas/PageNumber'
    post:
      operationId: PostVehicles
      responses:
        '201':
          description: Vehicles created successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PostVehiclesSuccessResponse'
        '400':
          description: 'Possible error types: `Invalid request schema` (schema of your request does not match the specification), `tooManyItems` (you specified >1000 items in your request), `noItems` (you specified 0 items in your request), `invalidFieldContent` (the content of one or more fields in your request is invalid)'
          content:
            application/json:
              schema:
                anyOf:
                - $ref: '#/components/schemas/PostVehiclesErrorResponse'
                - $ref: '#/components/schemas/SchemaValidationErrorResponse'
        '409':
          description: 'Possible error types: `conflictProcessingRequest` (temporary concurrency conflict, retry shortly), `vehicleAlreadyExists` (one or more vehicle IDs specified in the request already exist in the system)'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PostVehiclesErrorResponse'
      description: "Add new vehicles to the system.\n\nNotes:\n- This API endpoint does not support modifying existing vehicles. If you need to update an existing vehicle, use the `PUT /v1/vehicles` API endpoint instead.\n- Each request is atomic - either all vehicles listed in the request are created successfully, or none are created.\n- No more than 1000 vehicles can be created in a single request - please break your request into multiple smaller chunks if you need to create more than 1000 vehicles.\n- The specification of expected values for the `customAttributes` field and whether they are mandatory or not is determined by the attribute definitions in the \"Vehicle attributes\" preference in your Ops instance.\n  - Attributes with type `STRING` expect a string to be set for `customAttributes[attributeId]`.\n  - Attributes with type `NUMBER` expect a number to be set for `customAttributes[attributeId]`.\n  - Attributes with type `BOOLEAN` expect a boolean to be set for `customAttributes[attributeId]`.\n  - Attributes with type `DATE` expect a date string formatted as `YYYY-MM-dd` to be set for `customAttributes[attributeId]`.\n  - Attributes with type `SINGLE_SELECT` expect the `value` of one of the available select options to be set for `customAttributes[attributeId]`.\n  - Attributes with type `MULTI_SELECT` expect an array of strings (each one being the `value` of one of the available select options) to be set for `customAttributes[attributeId]`.\n  - Attributes with type `DURATION` expect a duration string formatted as `HH:mm` (where `HH` is an integer between 0 and 999, and `mm` is an integer between 0 and 59) to be set for `customAttributes[attributeId]`."
      summary: Create vehicles
      tags:
      - Vehicles
      security:
      - api_key: []
      parameters: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PostVehiclesRequest'
    put:
      operationId: PutVehicles
      responses:
        '200':
          description: Vehicles updated successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PutVehiclesSuccessResponse'
        '400':
          description: 'Possible error types: `Invalid request schema` (schema of your request does not match the specification), `tooManyItems` (you specified >1000 items in your request), `noItems` (you specified 0 items in your request), `invalidFieldContent` (the content of one or more fields in your request is invalid)'
          content:
            application/json:
              schema:
                anyOf:
                - $ref: '#/components/schemas/PutVehiclesErrorResponse'
                - $ref: '#/components/schemas/SchemaValidationErrorResponse'
        '409':
          description: 'Possible error types: `conflictProcessingRequest` (temporary concurrency conflict, retry shortly)'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PutVehiclesErrorResponse'
        '422':
          description: 'Possible error types: `vehiclesNotFound` (one or more vehicle IDs specified in the request do not exist in the system)'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PutVehiclesErrorResponse'
      description: "Update existing vehicles in the system.\n\nNotes:\n- This API endpoint expects a full representation of the vehicle. Omitting an optional field will clear the field, with one exception: `mainRegionPeriod` (see below).\n- This API endpoint does not support creating new vehicles. If you need to create a new vehicle, use the `POST /v1/vehicles` API endpoint instead.\n- Each request is atomic - either all vehicles listed in the request are updated successfully, or none are updated.\n- No more than 1000 vehicles can be updated in a single request - please break your request into multiple smaller chunks if you need to update more than 1000 vehicles.\n- The specification of expected values for the `customAttributes` field and whether they are mandatory or not is determined by the attribute definitions in the \"Vehicle attributes\" preference in your Ops instance.\n  - Attributes with type `STRING` expect a string to be set for `customAttributes[attributeId]`.\n  - Attributes with type `NUMBER` expect a number to be set for `customAttributes[attributeId]`.\n  - Attributes with type `BOOLEAN` expect a boolean to be set for `customAttributes[attributeId]`.\n  - Attributes with type `DATE` expect a date string formatted as `YYYY-MM-dd` to be set for `customAttributes[attributeId]`.\n  - Attributes with type `SINGLE_SELECT` expect the `value` of one of the available select options to be set for `customAttributes[attributeId]`.\n  - Attributes with type `MULTI_SELECT` expect an array of strings (each one being the `value` of one of the available select options) to be set for `customAttributes[attributeId]`.\n  - Attributes with type `DURATION` expect a duration string formatted as `HH:mm` (where `HH` is an integer between 0 and 999, and `mm` is an integer between 0 and 59) to be set for `customAttributes[attributeId]`.\n- If the value of any custom attribute is updated compared to the existing value, a new entry will be added to the history of that attribute starting from the current date. If an entry for that attribute already exists starting today, it will be overwritten instead, and an `overwriteCustomAttributeEntry` warning will be returned in the response.\n- `mainRegionPeriod` is the **only optional field whose omission does not clear the value**. Every vehicle must always belong to a region, so there is no way to remove a region assignment - you can only change it to a different region. Omitting `mainRegionPeriod` (or sending the same value currently returned by `GET /v1/vehicles`) leaves the vehicle's region assignment untouched. Sending a different region/depot creates a new region period starting today; if a region period already starts today it is overwritten in place and an `overwriteMainRegionPeriodEntry` warning is returned in the response.\n- When there are non-fatal side effects (for example, today's entries being overwritten), the response includes a `warnings` array describing them. The property is omitted when there are no warnings. The request is still considered successful when warnings are returned."
      summary: Update vehicles
      tags:
      - Vehicles
      security:
      - api_key: []
      parameters: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PutVehiclesRequest'
  /vehicles/depot-period:
    get:
      operationId: GetVehiclesDepotPeriods
      responses:
        '200':
          description: Vehicles depot periods
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetVehiclesDepotPeriodsResponse'
        '414':
          description: The request URI exceeds 10240 bytes which is not supported. This probably results from trying to query more than a thousand vehicles at the same time. Please consider chunking your request.
      description: Returns the information about the vehicles depot periods by vehicle ID.
      summary: Fetch vehicle region periods
      tags:
      - Vehicles
      security:
      - api_key: []
      parameters:
      - description: '- Returns the depot periods for the given vehicle IDs'
        in: query
        name: vehicleId
        required: false
        schema:
          type: array
          items:
            type: string
components:
  schemas:
    TypedApiErrorResponse_Invalidrequestschema_:
      properties:
        error:
          $ref: '#/components/schemas/TypedErrorResponse_Invalidrequestschema_'
      required:
      - error
      type: object
    BaseDepotPeriod:
      properties:
        opUnitId:
          type: string
        endTime:
          $ref: '#/components/schemas/Integer'
        startTime:
          $ref: '#/components/schemas/Integer'
        endDate:
          $ref: '#/components/schemas/StringifyDate'
        startDate:
          $ref: '#/components/schemas/StringifyDate'
        depotId:
          type: string
        type:
          $ref: '#/components/schemas/DepotPeriodType'
        periodId:
          type: string
      required:
      - startDate
      - depotId
      - type
      - periodId
      type: object
    NewVehicle:
      properties:
        customAttributes:
          properties: {}
          additionalProperties:
            $ref: '#/components/schemas/AttributeValue'
          type: object
          description: 'Custom attributes for the vehicle. Note that some custom attributes may be mandatory, according to the ''Vehicle attributes'' preference in your Ops instance.

            Should be a mapping of the ''attributeId'' (configured in your Ops instance) to the initial value for that custom attribute. The value will be validated according

            to the attribute definition configured in your Ops instance.'
        decommissionedOnDate:
          $ref: '#/components/schemas/StringifyDate'
          description: When the vehicle was decommissioned, if decommissioned is true.
        decommissioned:
          type: boolean
          description: Whether the vehicle is decommissioned.
        model:
          type: string
          description: The model of the vehicle, cannot exceed 36 characters.
        type:
          type: string
          description: The type of the vehicle. Depending on the 'Vehicle types' preference in your Ops instance, this may be mandatory. If specified, must be one of the vehicle types configured in your Ops instance.
        description:
          type: string
          description: A description of the vehicle, cannot exceed 65535 characters.
        depotName:
          type: string
          description: The name of the depot the vehicle is assigned to. If specified, should correspond to the 'unit' name returned by `GET /v1/regions`, and be a depot/unit belonging to the region.
        regionName:
          type: string
          description: The name of the region the vehicle is assigned to. Should correspond to the region name returned by `GET /v1/regions`.
        parkingLocation:
          type: string
          description: The parking location of the vehicle, cannot exceed 255 characters.
        licensePlate:
          type: string
          description: The license plate of the vehicle, cannot exceed 36 characters.
        id:
          type: string
          description: 'Unique identifier for the vehicle, cannot exceed 36 characters.

            Ideally corresponds to the ID for the vehicle in the external system that you are synchronizing with.'
      required:
      - regionName
      - id
      type: object
    UUID:
      type: string
      description: Stringified ID for a resource. Cannot exceed 36 characters.
    TypedErrorResponse_PutVehiclesErrorTypes_:
      properties:
        details: {}
        message:
          type: string
        type:
          $ref: '#/components/schemas/PutVehiclesErrorTypes'
      required:
      - message
      - type
      type: object
    VehicleDepotPeriod:
      allOf:
      - $ref: '#/components/schemas/BaseDepotPeriod'
      - properties:
          vehicleId:
            type: string
        required:
        - vehicleId
        type: object
    TypedErrorResponse_Invalidrequestschema_:
      properties:
        details: {}
        message:
          type: string
        type:
          type: string
          enum:
          - Invalid request schema
          nullable: false
      required:
      - message
      - type
      type: object
    PutVehiclesErrorTypes:
      type: string
      enum:
      - tooManyItems
      - noItems
      - invalidFieldContent
      - vehiclesNotFound
      - conflictProcessingRequest
    Pagination:
      properties:
        totalPages:
          $ref: '#/components/schemas/Integer'
          description: Total number of pages.
        nextPage:
          $ref: '#/components/schemas/PageNumber'
          description: Next page number (1-indexed). If undefined, there is no next page.
        currentPage:
          $ref: '#/components/schemas/PageNumber'
          description: Current page number (1-indexed).
      required:
      - totalPages
      - currentPage
      type: object
      description: 'Metadata about the pagination of a list of items. When a list of items is too large to be returned in a single response, it is split into multiple pages.

        This object informs you about the current page, the next page, and the total number of pages.'
    GetVehiclesV1ErrorResponse:
      $ref: '#/components/schemas/TypedApiErrorResponse_GetVehiclesV1ErrorTypes_'
    GetVehiclesDepotPeriodsResponse:
      properties: {}
      additionalProperties:
        items:
          $ref: '#/components/schemas/VehicleDepotPeriod'
        type: array
      type: object
    PageNumber:
      $ref: '#/components/schemas/Integer'
      description: Page number (1-indexed). Defaults to 1.
      minimum: 1
    PutVehiclesWarning:
      anyOf:
      - properties:
          details:
            items:
              properties:
                vehicleId:
                  type: string
              required:
              - vehicleId
              type: object
            type: array
            description: IDs of the vehicles whose existing region period starting today was overwritten.
          message:
            type: string
            description: Human-readable description of the warning.
          type:
            type: string
            enum:
            - overwriteMainRegionPeriodEntry
            nullable: false
        required:
        - details
        - message
        - type
        type: object
      - properties:
          details:
            items:
              properties:
                attributeIds:
                  items:
                    type: string
                  type: array
                vehicleId:
                  type: string
              required:
              - attributeIds
              - vehicleId
              type: object
            type: array
            description: Per-vehicle breakdown of which custom attribute IDs had their entry starting today overwritten.
          message:
            type: string
            description: Human-readable description of the warning.
          type:
            type: string
            enum:
            - overwriteCustomAttributeEntry
            nullable: false
        required:
        - details
        - message
        - type
        type: object
    PostVehiclesErrorResponse:
      $ref: '#/components/schemas/TypedApiErrorResponse_PostVehiclesErrorTypes_'
    TypedErrorResponse_GetVehiclesV1ErrorTypes_:
      properties:
        details: {}
        message:
          type: string
        type:
          $ref: '#/components/schemas/GetVehiclesV1ErrorTypes'
      required:
      - message
      - type
      type: object
    PostVehiclesRequest:
      properties:
        vehicles:
          items:
            $ref: '#/components/schemas/NewVehicle'
          type: array
      required:
      - vehicles
      type: object
      example:
        vehicles:
        - id: abc-123
          regionName: North
          depotName: Main
          licensePlate: XYZ 999
          parkingLocation: Bay 30
          description: A note about the vehicle
          type: Double Decker
          model: Routemaster
          decommissioned: false
          customAttributes:
            color: red
            capacity: 42
        - id: def-456
          regionName: South
          depotName: Substation
          licensePlate: XYZ 999
          parkingLocation: Bay 31
          description: Another note about a vehicle
          type: Single Deck
          model: Metrodecker
          decommissioned: true
          decommissionedOnDate: '2024-01-01'
          customAttributes:
            color: blue
            capacity: 36
    PostVehiclesSuccessResponse:
      properties:
        createdVehicleIds:
          $ref: '#/components/schemas/IdList'
          description: List of vehicle IDs that were created.
      required:
      - createdVehicleIds
      type: object
    GetVehiclesV1ErrorTypes:
      type: string
      enum:
      - pageNotFound
      nullable: false
    PostVehiclesErrorTypes:
      type: string
      enum:
      - tooManyItems
      - noItems
      - invalidFieldContent
      - vehicleAlreadyExists
      - conflictProcessingRequest
    PutVehiclesRequest:
      properties:
        vehicles:
          items:
            $ref: '#/components/schemas/EditedVehicle'
          type: array
      required:
      - vehicles
      type: object
      example:
        vehicles:
        - id: abc-123
          licensePlate: XYZ 999
          parkingLocation: Bay 30
          description: A note about the vehicle
          type: Double Decker
          model: Routemaster
          decommissioned: false
          customAttributes:
            color: red
            capacity: 42
        - id: def-456
          licensePlate: XYZ 999
          parkingLocation: Bay 31
          description: Another note about a vehicle
          type: Single Deck
          model: Metrodecker
          decommissioned: true
          decommissionedOnDate: '2024-01-01'
          customAttributes:
            color: blue
            capacity: 36
    EditedVehicle:
      properties:
        customAttributes:
          properties: {}
          additionalProperties:
            $ref: '#/components/schemas/AttributeValue'
          type: object
          description: 'Custom attributes for the vehicle. Note that some custom attributes may be mandatory, according to the ''Vehicle attributes'' preference in your Ops instance.

            Should be a mapping of the ''attributeId'' (configured in your Ops instance) to the initial value for that custom attribute. The value will be validated according

            to the attribute definition configured in your Ops instance.'
        decommissionedOnDate:
          $ref: '#/components/schemas/StringifyDate'
          description: When the vehicle was decommissioned, if decommissioned is true.
        decommissioned:
          type: boolean
          description: Whether the vehicle is decommissioned.
        model:
          type: string
          description: The model of the vehicle, cannot exceed 36 characters.
        type:
          type: string
          description: The type of the vehicle. Depending on the 'Vehicle types' preference in your Ops instance, this may be mandatory. If specified, must be one of the vehicle types configured in your Ops instance.
        description:
          type: string
          description: A description of the vehicle, cannot exceed 65535 characters.
        mainRegionPeriod:
          properties:
            depotName:
              type: string
              description: The name of the depot the vehicle is assigned to. If specified, should correspond to the 'unit' name returned by `GET /v1/regions`, and be a depot/unit belonging to the region.
            regionName:
              type: string
              description: The name of the region the vehicle is assigned to. Should correspond to the region name returned by `GET /v1/regions`.
          required:
          - regionName
          type: object
          description: "The main region (and, optionally, depot) that the vehicle is assigned to from today onwards.\nShape matches the `mainRegionPeriod` returned by `GET /v1/vehicles`.\n\nThis field is optional for backwards-compatibility: existing integrations that do not send it\nwill continue to work unchanged.\n\nNote: unlike other optional fields on this endpoint, omitting `mainRegionPeriod` does NOT clear\nthe vehicle's current region assignment. Every vehicle must always belong to a region, so there\nis no way to remove a region assignment - you can only change it to a different region. If you\nwant to leave the current region and depot untouched, you have two equivalent options:\n  1. Omit this field entirely from the request item, or\n  2. Send the same `mainRegionPeriod` value currently returned by `GET /v1/vehicles` for the\n     vehicle (when the requested value matches the vehicle's current assignment, no change is\n     made and no warning is emitted).\n\nWhen specified:\n- If the region and depot match the vehicle's current assignment, nothing changes.\n- Otherwise, a new region period is created starting from today (in the customer's timezone).\n- If a region period already exists starting today, it is overwritten in place and an\n  `overwriteMainRegionPeriodEntry` warning is returned in the response."
        parkingLocation:
          type: string
          description: The parking location of the vehicle, cannot exceed 255 characters.
        licensePlate:
          type: string
          description: The license plate of the vehicle, cannot exceed 36 characters.
        id:
          type: string
          description: Unique identifier for the vehicle - should match a vehicle already created in Ops (either via the API, import process, or the Ops user interface)
      required:
      - id
      type: object
    DepotPeriodType:
      enum:
      - MAIN
      - LOAN
      - FIRST
      type: string
    PutVehiclesErrorResponse:
      $ref: '#/components/schemas/TypedApiErrorResponse_PutVehiclesErrorTypes_'
    TypedApiErrorResponse_PutVehiclesErrorTypes_:
      properties:
        error:
          $ref: '#/components/schemas/TypedErrorResponse_PutVehiclesErrorTypes_'
      required:
      - error
      type: object
    Integer:
      type: integer
      format: int32
    AttributeValue:
      anyOf:
      - items:
          anyOf:
          - type: number
            format: double
          - type: string
        type: array
      - type: string
      - type: boolean
      - type: number
        format: double
    TypedApiErrorResponse_GetVehiclesV1ErrorTypes_:
      properties:
        error:
          $ref: '#/components/schemas/TypedErrorResponse_GetVehiclesV1ErrorTypes_'
      required:
      - error
      type: object
    GetVehiclesV1SuccessfulResponse:
      properties:
        pagination:
          $ref: '#/components/schemas/Pagination'
        vehicles:
          items:
            $ref: '#/components/schemas/VehicleV1'
          type: array
      required:
      - pagination
      - vehicles
      type: object
    VehicleV1:
      properties:
        customAttributes:
          properties: {}
          additionalProperties:
            $ref: '#/components/schemas/AttributeValue'
          type: object
          description: Custom attributes for the vehicle, according to the 'Vehicle attributes' preference in your Ops instance. Returns the values for all custom attributes for the vehicle on the given date (either the date specified in the `onDate` query parameter, or today's date otherwise).
        decommissionedOnDate:
          $ref: '#/components/schemas/StringifyDate'
          description: The date the vehicle was/will be decommissioned on
        decommissioned:
          type: boolean
          description: Whether the vehicle is decommissioned on the given date (either the date specified in the `onDate` query parameter, or today's date otherwise)
        model:
          type: string
          description: The model of the vehicle
        type:
          type: string
          description: The type of the vehicle
        note:
          type: string
          description: A description of or note about the vehicle
        loanedRegionPeriods:
          items:
            properties:
              depotName:
                type: string
              regionName:
                type: string
            required:
            - regionName
            type: object
          type: array
          description: The loaned regions and depots that the vehicle is assigned to on the given date (either the date specified in the `onDate` query parameter, or today's date otherwise)
        mainRegionPeriod:
          properties:
            depotName:
              type: string
            regionName:
              type: string
          required:
          - regionName
          type: object
          description: The main region and depot that the vehicle is assigned to on the given date (either the date specified in the `onDate` query parameter, or today's date otherwise)
        parkingLocation:
          type: string
          description: The parking location of the vehicle
        licensePlate:
          type: string
          description: The license plate of the vehicle
        id:
          type: string
          description: Unique identifier for the vehicle
      required:
      - customAttributes
      - decommissioned
      - loanedRegionPeriods
      - mainRegionPeriod
      - id
      type: object
    IdList:
      items:
        $ref: '#/components/schemas/UUID'
      type: array
      example:
      - item-123
      - item-456
      - item-789
      description: A list of IDs.
    TypedApiErrorResponse_PostVehiclesErrorTypes_:
      properties:
        error:
          $ref: '#/components/schemas/TypedErrorResponse_PostVehiclesErrorTypes_'
      required:
      - error
      type: object
    StringifyDate:
      type: string
      format: date
      description: Stringified ISO8601 date in the form of `YYYY-MM-dd`, for example `2017-07-21`
    SchemaValidationErrorResponse:
      $ref: '#/components/schemas/TypedApiErrorResponse_Invalidrequestschema_'
    TypedErrorResponse_PostVehiclesErrorTypes_:
      properties:
        details: {}
        message:
          type: string
        type:
          $ref: '#/components/schemas/PostVehiclesErrorTypes'
      required:
      - message
      - type
      type: object
    PutVehiclesSuccessResponse:
      properties:
        warnings:
          items:
            $ref: '#/components/schemas/PutVehiclesWarning'
          type: array
          description: 'Non-fatal warnings about side effects of the request (for example, entries starting today being overwritten).

            Omitted when there are no warnings.'
        updatedVehicleIds:
          $ref: '#/components/schemas/IdList'
          description: List of vehicle IDs that were updated.
      required:
      - updatedVehicleIds
      type: object
  securitySchemes:
    api_key:
      type: apiKey
      name: Authorization
      in: header
x-tagGroups:
- name: General API Info
  tags:
  - Authentication
  - Versioning
- name: Use case guides
  tags:
  - HR System Integration Guides
  - Fleet Management System Integration Guides
  - Operational Plan Query Guides
  - Custom Driver App Notification Action Guide
- name: Client preferences
  tags:
  - Preferences
- name: Resource Management
  tags:
  - Regions
  - Drivers
  - Driver Absences
  - Driver Employment Periods
  - Driver Custom Attributes
  - Driver Groups
  - Vehicles
  - Vehicle Downtimes
  - Vehicle Custom Attributes
- name: Operations Management
  tags:
  - Roster
  - Operational Plan
  - Tasks
  - Stops
  - Signing Times
- name: Work & Payroll
  tags:
  - Work Entities
  - Payroll
  - Statistics
- name: Private Hires
  tags:
  - Private Hires
- name: Driver App Integration
  tags:
  - Driver App Notifications
- name: Event Webhooks
  tags:
  - Event Webhooks
- name: Data Ingestion
  tags:
  - Tacho Ingestion
- name: Deprecated API Endpoints
  tags:
  - Drivers (Deprecated)
  - Vehicles (Deprecated)
  - Operational 

# --- truncated at 32 KB (32 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/optibus/refs/heads/main/openapi/optibus-vehicles-api-openapi.yml