{
  "openapi": "3.1.0",
  "info": {
    "description": "This API allows managing of assets.",
    "title": "Assets",
    "version": "2.0"
  },
  "externalDocs": {
    "description": "Trackunit Developer Hub",
    "url": "https://developers.trackunit.com/"
  },
  "servers": [
    {
      "url": "https://iris.trackunit.com/api/asset",
      "description": "Production"
    }
  ],
  "security": [
    {
      "authorizationBearer": []
    }
  ],
  "paths": {
    "/v2/assets": {
      "get": {
        "description": "This API request can be used to get a paginated list of assets.\n\nIt allows filtering by createdAt date using either before or after parameter.\n\nBy default the API won't return assets that are hidden unless explicitly requested using 'includeHidden' parameter.\n\nBy default results are sorted by createdAt in ascending mode.\n\nSorting by other fields is not supported yet but the user can specify different sort mode on the createdAt field if needed.\n\nResults are filtered by user permissions - only assets the user can view are returned.\n",
        "operationId": "getAssets_v2",
        "parameters": [
          {
            "description": "Return assets created **after** this date and time",
            "example": "2018-02-17T11:46:00.000Z",
            "in": "query",
            "name": "createdAtAfter",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "description": "Return assets created **before** this date and time",
            "example": "2018-02-17T11:46:00.000Z",
            "in": "query",
            "name": "createdAtBefore",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "description": "Response will include assets that are **hidden**",
            "example": true,
            "in": "query",
            "name": "includeHidden",
            "required": false,
            "schema": {
              "type": "boolean",
              "default": false
            }
          },
          {
            "description": "Zero-based page index (0..N)",
            "example": 0,
            "in": "query",
            "name": "page",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 0,
              "minimum": 0
            }
          },
          {
            "description": "The size of the page to be returned",
            "example": 20,
            "in": "query",
            "name": "size",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 20,
              "minimum": 1
            }
          },
          {
            "description": "Sort order : `property` (ascending by default), `+property` (ascending), `-property` (descending).",
            "in": "query",
            "name": "sort",
            "required": false,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/PaginatedAsset_v2"
                }
              }
            },
            "description": "List of visible assets."
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConstraintViolationError"
                }
              }
            },
            "description": "Bad request"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DefaultError"
                }
              }
            },
            "description": "Invalid or missing bearer token in Authorization header"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DefaultError"
                }
              }
            },
            "description": "User not allowed to make this request"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DefaultError"
                }
              }
            },
            "description": "Resource not found"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DefaultError"
                }
              }
            },
            "description": "Internal server error"
          }
        },
        "summary": "Get assets"
      },
      "patch": {
        "description": "This API request can be used to update assets using a partial update approach through the use of JSON Patch defined in RFC 6902.\n\nCurrently only a single asset can be updated at a time. The request must contain exactly one asset update request in the list.\n",
        "operationId": "updateAssets_v2",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateAssetsRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "*/*": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/asset_v2"
                  }
                }
              }
            },
            "description": "Asset was successfully updated."
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConstraintViolationError"
                }
              }
            },
            "description": "Bad request. These are the possible error codes returned:\n\n**asset_type_cannot_be_changed** \nSome asset types cannot be changed. E.g. Asset of type VEHICLE, GATEWAY or MACHINE cannot be changed to any other type.\n\n**not_supported_value** \nGiven value cannot be assigned to the asset. E.g. Brand \\<given value\\> is not supported by machines.\n\n**gateway_asset_cannot_be_modified** \nFor GATEWAY type assets fields like : assetType, type, model, brand, productionYear, serialNumber cannot be modified."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DefaultError"
                }
              }
            },
            "description": "Invalid or missing bearer token in Authorization header"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DefaultError"
                }
              }
            },
            "description": "User not allowed to make this request. These are the possible error codes from this API:\n\n**only_owner_of_the_asset_can_edit_given_fields** \nFields like : assetType, type, model, brand, productionYear, serialNumber can be modified only by the owner of the asset."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DefaultError"
                }
              }
            },
            "description": "Resource not found. These are the possible error codes from this API:\n\n**asset_not_found** \nAsset was not found by given ID."
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DefaultError"
                }
              }
            },
            "description": "Internal server error"
          }
        },
        "summary": "Update asset"
      },
      "post": {
        "description": "This API request can be used to create multiple (1 - 100) assets with no telematics devices or to create a single asset with telematics device.\n",
        "operationId": "createAssets_v2",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/createAssetsRequest_v2"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/createAssetsResponse_v2"
                }
              }
            },
            "description": "Assets were successfully created."
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConstraintViolationError"
                }
              }
            },
            "description": "Bad request. These are the possible error codes from this API:\n\n**telematics_device_already_onboarded** \nThe telematics device is already onboarded on Iris platform.\n\n**invalid_telematics_device_definition** \nDefinition of the telematics device violates at least one specific restriction.\n\n**onboarding_bluetooth_tag_with_company_identifier_need_to_be_unlocked_for_specific_account** \nOnboarding bluetooth tags other than KINs with given company identifier need to be unlocked for specific account. In order to unlock onboarding for third party bluetooth tags please contact with support."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DefaultError"
                }
              }
            },
            "description": "Invalid or missing bearer token in Authorization header"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DefaultError"
                }
              }
            },
            "description": "User not allowed to make this request"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DefaultError"
                }
              }
            },
            "description": "Resource not found"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DefaultError"
                }
              }
            },
            "description": "Internal server error"
          }
        },
        "summary": "Create assets"
      }
    },
    "/v2/assets/hidden": {
      "patch": {
        "description": "Hide or unhide assets. This operation is idempotent - hiding an already hidden asset or unhiding a visible asset has no effect.\n\nAssets that don't exist are ignored (no error is returned).\n",
        "operationId": "hideUnhideAssets_v2",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AssetHideUnhideRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Assets were successfully hidden/unhidden"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConstraintViolationError"
                }
              }
            },
            "description": "Bad request"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DefaultError"
                }
              }
            },
            "description": "Invalid or missing bearer token in Authorization header"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DefaultError"
                }
              }
            },
            "description": "User not allowed to make this request"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DefaultError"
                }
              }
            },
            "description": "Resource not found"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DefaultError"
                }
              }
            },
            "description": "Internal server error"
          }
        },
        "summary": "Hide/unhide assets"
      }
    },
    "/v2/assets/note": {
      "patch": {
        "description": "Update asset note by identifier. The asset can be identified using any supported identifier type:\n- **ASSET_ID** : Basic asset identifier\n- **ASSET_NAME** : Asset name\n- **ASSET_EXTERNAL_REFERENCE** : Asset external reference\n- **ASSET_SERIAL_NUMBER** : Asset serial number\n- **DEVICE_SERIAL_NUMBER** : Telematics device serial number\n",
        "operationId": "updateAssetNote_v2",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateAssetNoteRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/assetNote_v2"
                }
              }
            },
            "description": "Asset note was successfully updated"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConstraintViolationError"
                }
              }
            },
            "description": "Bad request"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DefaultError"
                }
              }
            },
            "description": "Invalid or missing bearer token in Authorization header"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DefaultError"
                }
              }
            },
            "description": "User not allowed to make this request"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DefaultError"
                }
              }
            },
            "description": "Resource not found"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DefaultError"
                }
              }
            },
            "description": "Internal server error"
          }
        },
        "summary": "Update asset note by given identifier"
      }
    },
    "/v2/assets/notes/query": {
      "post": {
        "description": "Fetch notes for multiple assets by their IDs.\n\nReturns notes only for assets that exist and have notes. Assets without notes or that don't exist are silently omitted from the response.\n\nMaximum 2000 asset IDs can be requested in a single call.\n",
        "operationId": "queryAssetNotes_v2",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AssetNotesRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "*/*": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/assetNote_v2"
                  }
                }
              }
            },
            "description": "Notes for assets"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConstraintViolationError"
                }
              }
            },
            "description": "Bad request"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DefaultError"
                }
              }
            },
            "description": "Invalid or missing bearer token in Authorization header"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DefaultError"
                }
              }
            },
            "description": "User not allowed to make this request"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DefaultError"
                }
              }
            },
            "description": "Resource not found"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DefaultError"
                }
              }
            },
            "description": "Internal server error"
          }
        },
        "summary": "Fetch multiple asset notes"
      }
    },
    "/v2/assets/pending-telematics-devices/query": {
      "post": {
        "description": "Query pending telematics device categories for a list of assets by their IDs.\n\nA pending telematics device is a category (e.g. KIN) rather than a specific device type - a category covers one or more physical device types (e.g. KIN, KIN2).\n\nReturns pending telematics device categories for each requested asset. Assets with no pending devices return an empty list.\n\nMaximum 2000 asset IDs can be queried in a single request.\n",
        "operationId": "queryPendingTelematicsDevices_v2",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/assetsPendingTelematicsDevicesRequest_v2"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/assetsPendingTelematicsDevicesResponse_v2"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConstraintViolationError"
                }
              }
            },
            "description": "Bad request"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DefaultError"
                }
              }
            },
            "description": "Invalid or missing bearer token in Authorization header"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DefaultError"
                }
              }
            },
            "description": "User not allowed to make this request"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DefaultError"
                }
              }
            },
            "description": "Resource not found"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DefaultError"
                }
              }
            },
            "description": "Internal server error"
          }
        },
        "summary": "Query pending telematics devices for assets"
      }
    },
    "/v2/assets/query": {
      "post": {
        "description": "Query assets by identifier type and values. Returns assets that match any of the provided identifiers.\n\nSupported identifier types:\n- **ASSET_ID** : Basic asset identifier, references Asset.id field\n- **ASSET_NAME** : Asset name, references Asset.name field\n- **ASSET_EXTERNAL_REFERENCE** : Asset external reference, references Asset.externalReference field\n- **ASSET_SERIAL_NUMBER** : Asset serial number, references Asset.serialNumber field\n- **DEVICE_SERIAL_NUMBER** : Telematics device serial number, references TelematicsDevice.serialNumber field\n\nResults are filtered by user permissions - only assets the user can view are returned.\nIf no matching assets are found, an empty list is returned.\n\nMaximum 2000 identifiers can be queried in a single request.\n",
        "operationId": "assetsQuery_v2",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/assetsQuery_v2"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/assets_v2"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConstraintViolationError"
                }
              }
            },
            "description": "Bad request"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DefaultError"
                }
              }
            },
            "description": "Invalid or missing bearer token in Authorization header"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DefaultError"
                }
              }
            },
            "description": "User not allowed to make this request"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DefaultError"
                }
              }
            },
            "description": "Resource not found"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DefaultError"
                }
              }
            },
            "description": "Internal server error"
          }
        },
        "summary": "Query assets by given identifiers"
      }
    },
    "/v2/assets/{assetId}": {
      "delete": {
        "description": "This API request can be used to delete an asset from the Iris platform. For assets connected to telematics device this action will also delete the device.\n",
        "operationId": "deleteAsset_v2",
        "parameters": [
          {
            "description": "ID of the asset",
            "in": "path",
            "name": "assetId",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Asset was successfully deleted."
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConstraintViolationError"
                }
              }
            },
            "description": "Bad request"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DefaultError"
                }
              }
            },
            "description": "Invalid or missing bearer token in Authorization header"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DefaultError"
                }
              }
            },
            "description": "User not allowed to make this request"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DefaultError"
                }
              }
            },
            "description": "Resource not found"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DefaultError"
                }
              }
            },
            "description": "Internal server error"
          }
        },
        "summary": "Delete asset"
      },
      "get": {
        "description": "This API request can be used to get a specific asset by its ID.\n",
        "operationId": "getAsset_v2",
        "parameters": [
          {
            "description": "ID of the asset",
            "in": "path",
            "name": "assetId",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/asset_v2"
                }
              }
            },
            "description": "Asset metadata."
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConstraintViolationError"
                }
              }
            },
            "description": "Bad request"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DefaultError"
                }
              }
            },
            "description": "Invalid or missing bearer token in Authorization header"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DefaultError"
                }
              }
            },
            "description": "User not allowed to make this request"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DefaultError"
                }
              }
            },
            "description": "Resource not found"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DefaultError"
                }
              }
            },
            "description": "Internal server error"
          }
        },
        "summary": "Get asset"
      }
    },
    "/v2/assets/{assetId}/pending-telematics-devices": {
      "post": {
        "description": "Assign a pending telematics device category to an existing asset.\n\nA pending telematics device is a category (e.g. KIN) rather than a specific device type - a category covers one or more physical device types (e.g. KIN, KIN2).\n\nIf the asset is not found, a 404 error is returned.\n\nA pending telematics device and an attached telematics device are mutually exclusive - if the target\nasset already has an attached telematics device, a 400 error is returned.\n\nThe operation is idempotent - assigning a device that is already pending has no additional effect.\n",
        "operationId": "assignPendingTelematicsDevice_v2",
        "parameters": [
          {
            "description": "ID of the asset",
            "in": "path",
            "name": "assetId",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/assignPendingTelematicsDeviceRequest_v2"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/assetPendingTelematicsDevices_v2"
                }
              }
            },
            "description": "Pending telematics device was successfully assigned."
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConstraintViolationError"
                }
              }
            },
            "description": "Bad request"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DefaultError"
                }
              }
            },
            "description": "Invalid or missing bearer token in Authorization header"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DefaultError"
                }
              }
            },
            "description": "User not allowed to make this request"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DefaultError"
                }
              }
            },
            "description": "Resource not found"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DefaultError"
                }
              }
            },
            "description": "Internal server error"
          }
        },
        "summary": "Assign pending telematics device"
      }
    },
    "/v2/assets/{assetId}/pending-telematics-devices/{pendingTelematicsDevice}": {
      "delete": {
        "description": "Remove a pending telematics device category from an existing asset.\n\nA pending telematics device is a category (e.g. KIN) rather than a specific device type - a category covers one or more physical device types (e.g. KIN, KIN2).\n\nIf the asset is not found, a 404 error is returned.\n\nThe operation is idempotent - removing a device that is not pending has no effect.\n",
        "operationId": "removePendingTelematicsDevice_v2",
        "parameters": [
          {
            "description": "ID of the asset",
            "in": "path",
            "name": "assetId",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "description": "The pending telematics device category to remove",
            "in": "path",
            "name": "pendingTelematicsDevice",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "KIN"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/assetPendingTelematicsDevices_v2"
                }
              }
            },
            "description": "Pending telematics device was successfully removed."
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConstraintViolationError"
                }
              }
            },
            "description": "Bad request"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DefaultError"
                }
              }
            },
            "description": "Invalid or missing bearer token in Authorization header"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DefaultError"
                }
              }
            },
            "description": "User not allowed to make this request"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DefaultError"
                }
              }
            },
            "description": "Resource not found"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DefaultError"
                }
              }
            },
            "description": "Internal server error"
          }
        },
        "summary": "Remove pending telematics device"
      }
    },
    "/v2/assets/{assetId}/telematics-devices": {
      "post": {
        "description": "This API request can be used to create a bluetooth telematics device and attach it to an existing asset.\n\nCurrently only one bluetooth telematics device can be attached to the asset.\n",
        "operationId": "attachTelematicsDevices_v2",
        "parameters": [
          {
            "in": "path",
            "name": "assetId",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/attachTelematicsDevicesRequest_v2"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/asset_v2"
                }
              }
            },
            "description": "Telematics device was successfully attached."
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConstraintViolationError"
                }
              }
            },
            "description": "Bad request"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DefaultError"
                }
              }
            },
            "description": "Invalid or missing bearer token in Authorization header"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DefaultError"
                }
              }
            },
            "description": "User not allowed to make this request"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DefaultError"
                }
              }
            },
            "description": "Resource not found"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DefaultError"
                }
              }
            },
            "description": "Internal server error"
          }
        },
        "summary": "Attach telematics device"
      }
    },
    "/v2/assets/{assetId}/telematics-devices/{deviceId}": {
      "delete": {
        "description": "This API request can be used to detach a telematics device from an asset.\n\nCurrently only telematics devices with type OTHER can be detached from assets.\n\nAfter detaching, the device must be re-onboarded before it can be attached again.\n",
        "operationId": "detachTelematicsDevices_v2",
        "parameters": [
          {
            "in": "path",
            "name": "assetId",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "in": "path",
            "name": "deviceId",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Telematics device was successfully detached."
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConstraintViolationError"
                }
              }
            },
            "description": "Bad request"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DefaultError"
                }
              }
            },
            "description": "Invalid or missing bearer token in Authorization header"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DefaultError"
                }
              }
            },
            "description": "User not allowed to make this request"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DefaultError"
                }
              }
            },
            "description": "Resource not found"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DefaultError"
                }
              }
            },
            "description": "Internal server error"
          }
        },
        "summary": "Detach telematics device"
      }
    },
    "/v1/assets": {
      "get": {
        "description": "This API request can be used to get a paginated list of assets.\n\nResults are sorted by createdAt date in ascending mode.\n\nTo be able to call the service a valid token is required. To get a token follow this guide : [How to obtain a token](/docs/reference/getting-started/access-token)\n",
        "operationId": "getAssets_v1",
        "parameters": [
          {
            "description": "Zero-based page index (0..N)",
            "example": 0,
            "in": "query",
            "name": "page",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 0,
              "minimum": 0
            }
          },
          {
            "description": "The size of the page to be returned",
            "example": 20,
            "in": "query",
            "name": "size",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 20,
              "minimum": 1
            }
          },
          {
            "description": "Sort order : `property` (ascending by default), `+property` (ascending), `-property` (descending).",
            "in": "query",
            "name": "sort",
            "required": false,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/PaginatedAsset"
                }
              }
            },
            "description": "Get a list of available assets."
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConstraintViolationError"
                }
              }
            },
            "description": "Bad request"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DefaultError"
                }
              }
            },
            "description": "Invalid or missing bearer token in Authorization header"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DefaultError"
                }
              }
            },
            "description": "User not allowed to make this request"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DefaultError"
                }
              }
            },
            "description": "Resource not found"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DefaultError"
                }
              }
            },
            "description": "Internal server error"
          }
        },
        "summary": "Get assets",
        "tags": [
          "v1.0"
        ]
      }
    },
    "/v1/assets/bulk": {
      "post": {
        "description": "This API request can be used to create multiple (1 - 100) assets with no telematics devices.\n\nTo be able to call the service a valid token is required. To get a token follow this guide : [How to obtain a token](/docs/reference/getting-started/access-token)\n",
        "operationId": "createAssets_v1",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateAssetsRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/Assets"
                }
              }
            },
            "description": "Assets were successfully created."
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConstraintViolationError"
                }
              }
            },
            "description": "Bad request"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DefaultError"
                }
              }
            },
            "description": "Invalid or missing bearer token in Authorization header"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DefaultError"
                }
              }
            },
            "description": "User not allowed to make this request"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DefaultError"
                }
              }
            },
            "description": "Resource not found"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DefaultError"
                }
              }
            },
            "description": "Internal server error"
          }
        },
        "summary": "Create assets",
        "tags": [
          "v1.0"
        ]
      }
    },
    "/v1/assets/onboard": {
      "post": {
        "description": "This API request can be used to onboard an asset along with a bluetooth telematics devices.\n\nTo be able to call the service a valid token is required. To get a token follow this guide : [How to obtain a token](/docs/reference/getting-started/access-token)\n",
        "operationId": "onboardAsset_v1",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/OnboardAssetRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/Asset"
                }
              }
            },
            "description": "Asset was successfully onboarded."
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConstraintViolationError"
                }
              }
            },
            "description": "Bad request. These are the possible error codes from this API:\n\n**telematics_device_already_onboarded** \nThe telematics device is already onboarded on Trackunits platform.\n\n**invalid_telematics_device_definition** \nDefinition of the telematics device violates at least one specific restriction.\n\n**onboarding_bluetooth_tag_with_company_identifier_need_to_be_unlocked_for_specific_account** \nOnboarding bluetooth tags other than KINs with given company identifier need to be unlocked for specific account. In order to unlock onboarding for third party bluetooth tags please contact with support."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DefaultError"
                }
              }
            },
            "description": "Invalid or missing bearer token in Authorization header"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DefaultError"
                }
              }
            },
            "description": "User not allowed to make this request"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DefaultError"
                }
              }
            },
            "description": "Resource not found"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DefaultError"
                }
              }
            },
            "description": "Internal server error"
          }
        },
        "summary": "Onboard asset",
        "tags": [
          "v1.0"
        ]
      }
    },
    "/v1/assets/{assetId}": {
      "delete": {
        "description": "This API request can be used to delete an asset which is not connected to any telematics devices from the Trackunit ecosystem.\n\nTo offboard an asset connected to the telematics device please use endpoint [Offboard asset](/docs/api-reference/assets/offboard-asset-v-1).\n\nTo be able to call the service a valid token is required. To get a token follow this guide : [How to obtain a token](/docs/reference/getting-started/access-token)\n",
        "operationId": "deleteAsset_v1",
        "parameters": [
          {
            "description": "ID of the asset",
            "in": "path",
            "name": "assetId",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Asset was successfully deleted."
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConstraintViolationError"
                }
              }
            },
            "description": "Bad request"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DefaultError"
                }
              }
            },
            "description": "Invalid or missing bearer token in Authorization header"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DefaultError"
                }
              }
            },
            "description": "User not allowed to make this request"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DefaultError"
                }
              }
            },
            "description": "Resource not found"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DefaultError"
                }
              }
            },
            "description": "Internal server error"
          }
        },
        "summary": "Delete asset",
        "tags": [
          "v1.0"
        ]
      },
      "get": {
        "description": "This API request can be used to get a specific asset by its ID.\n\nTo be able to call the service a valid token is required. To get a token follow this guide : [How to obtain a token](/docs/reference/getting-started/access-token)\n",
        "operationId": "getAsset_v1",
        "parameters": [
          {
            "description": "ID of the asset",
            "in": "path",
            "name": "assetId",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/Asset"
                }
              }
            },
            "description": "Get a specific asset by its asset ID."
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConstraintViolationError"
                }
              }
            },
            "description": "Bad request"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DefaultError"
                }
              }
            },
            "description": "Invalid or missing bearer token in Authorization header"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DefaultError"
                }
              }
            },
            "description": "User not allowed to make this request"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DefaultError"
                }
              }
            },
            "description": "Resource not found"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DefaultError"
                }
              }
            },
            "description": "Internal server error"
          }
        },
        "summary": "Get asset",
        "tags": [
          "v1.0"
        ]
      },
      "patch": {
        "description": "This API request can be used to update an asset using a partial update approach through the use of JSON Patch defined in RFC 6902.\n\nTo be able to call the service a valid token is required. To get a token follow this guide : [How to obtain a token](/docs/reference/getting-started/access-token)\n",
        "operationId": "patchAsset_v1",
        "parameters": [
          {
            "description": "ID of the asset",
            "in": "path",
            "name": "assetId",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchAssetRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/Asset"
                }
              }
            },
            "description": "Asset was successfully updated."
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConstraintViolationError"
                }
              }
            },
            "description": "Bad request. These are the possible error codes from this API:\n\n**asset_type_cannot_be_changed** \nFor gateways and machines asset type cannot be changed. For bluetooth tags like KINs asset type can be changed to : OTHER, ATTACHMENT, EQUIPMENT, TOOL.\n\n**not_supported_value** \nGiven value cannot be assigned to the asset. E.g. Brand \\<given value\\> is not supported by machines.\n\n**gateway_asset_cannot_be_modified** \nFor gateway type assets fields like : assetType, type, model, brand, productionYear, serialNumber cannot be modified."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DefaultError"
                }
              }
            },
            "description": "Invalid or missing bearer token in Authorization header"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DefaultError"
                }
              }
            },
            "description": "User not allowed to make this request. These are the possible error codes from this API:\n\n**only_owner_of_the_asset_can_edit_given_fields** \nFields like : assetType, type, model, brand, productionYear, serialNumber can be modified only by user which is the owner of the asset."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DefaultError"
                }
              }
            },
            "description": "Resource not found. These are the possible error codes from this API:\n\n**asset_not_found** \nAsset was not found by given id."
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DefaultError"
                }
              }
            },
            "description": "Internal server error"
          }
        },
        "summary": "Update asset",
        "tags": [
          "v1.0"
        ]
      }
    },
    "/v1/assets/{assetId}/offboard": {
      "post": {
        "description": "This API request can be used to remove an asset from the Trackunit ecosystem and the telematics devices associated with it.\nRequest body is now deprecated and it's not used during the execution of the request.\nConsider using endpoint [Delete asset](/docs/api-reference/assets/delete-asset-v-1) for removal of assets without telematics devices.\n\nTo be able to call the service a valid token is required. To get a token follow this guide : [How to obtain a token](/docs/reference/getting-started/access-token)\n",
        "operationId": "offboardAsset_v1",
        "parameters": [
          {
            "description": "ID of the asset",
            "in": "path",
            "name": "assetId",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/OffboardAssetRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Asset was successfully offboarded."
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConstraintViolationError"
                }
              }
            },
            "description": "Bad request"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DefaultError"
                }
              }
            },
            "description": "Invalid or missing bearer token in Authorization header"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DefaultError"
                }
              }
            },
            "description": "User not allowed to make this request"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DefaultError"
                }
              }
            },
            "description": "Resource not found"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DefaultError"
                }
              }
            },
            "description": "Internal server error"
          }
        },
        "summary": "Offboard asset",
        "tags": [
          "v1.0"
        ]
      }
    },
    "/v1/assets/{assetId}/telematics-devices": {
      "post": {
        "description": "This API request can be used to create a bluetooth telematics device and attach it to an existing asset.\n\nCurrently only one bluetooth telematics device can be attached to the asset.\n\nTo be able to call the service a valid token is required. To get a token follow this guide : [How to obtain a token](/docs/reference/getting-started/access-token)\n",
        "operationId": "attachTelematicsDevicesToAsset_v1",
        "parameters": [
          {
            "in": "path",
            "name": "assetId",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AttachTelematicsDevicesRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/Asset"
                }
              }
            },
            "description": "Telematics device was successfully attached."
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConstraintViolationError"
                }
              }
            },
            "description": "Bad request"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DefaultError"
                }
              }
            },
            "description": "Invalid or missing bearer token in Authorization header"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DefaultError"
                }
              }
            },
            "description": "User not allowed to make this request"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DefaultError"
                }
              }
            },
            "description": "Resource not found"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DefaultError"
                }
              }
            },
            "description": "Internal server error"
          }
        },
        "summary": "Attach telematics device",
        "tags": [
          "v1.0"
        ]
      }
    },
    "/v2beta1/assets": {
      "get": {
        "description": "This API request can be used to get a paginated list of assets.\n\nIt allows filtering by createdAt date using either before or after parameter.\n\nBy default the API won't return assets that are hidden unless explicitly requested using 'includeHidden' parameter.\n\nBy default results are sorted by createdAt in ascending mode.\n\nSorting by other fields is not supported yet but the user can specify different sort mode on the createdAt field if needed.\n",
        "operationId": "getAssets_v2beta1",
        "parameters": [
          {
            "description": "Return assets created **after** this date and time",
            "example": "2018-02-17T11:46:00.000Z",
            "in": "query",
            "name": "createdAtAfter",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "description": "Return assets created **before** this date and time",
            "example": "2018-02-17T11:46:00.000Z",
            "in": "query",
            "name": "createdAtBefore",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "description": "Response will include assets that are **hidden**",
            "example": true,
            "in": "query",
            "name": "includeHidden",
            "required": false,
            "schema": {
              "type": "boolean",
              "default": false
            }
          },
          {
            "description": "Zero-based page index (0..N)",
            "example": 0,
            "in": "query",
            "name": "page",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 0,
              "minimum": 0
            }
          },
          {
            "description": "The size of the page to be returned",
            "example": 20,
            "in": "query",
            "name": "size",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 20,
              "minimum": 1
            }
          },
          {
            "description": "Sort order : `property` (ascending by default), `+property` (ascending), `-property` (descending).",
            "in": "query",
            "name": "sort",
            "required": false,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/PaginatedAsset_v2beta1"
                }
              }
            },
            "description": "List of visible assets."
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConstraintViolationError"
                }
              }
            },
            "description": "Bad request"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DefaultError"
                }
              }
            },
            "description": "Invalid or missing bearer token in Authorization header"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DefaultError"
                }
              }
            },
            "description": "User not allowed to make this request"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DefaultError"
                }
              }
            },
            "description": "Resource not found"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DefaultError"
                }
              }
            },
            "description": "Internal server error"
          }
        },
        "summary": "Get assets",
        "tags": [
          "v2beta1"
        ]
      }
    },
    "/v2beta1/assets/bulk": {
      "post": {
        "description": "This API request can be used to create multiple (1 - 100) assets with no telematics devices.\n",
        "operationId": "createAssets_v2beta1",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/createAssetsRequest_v2Beta1"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/assets_v2Beta1"
                }
              }
            },
            "description": "Assets were successfully created."
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConstraintViolationError"
                }
              }
            },
            "description": "Bad request"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DefaultError"
                }
              }
            },
            "description": "Invalid or missing bearer token in Authorization header"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DefaultError"
                }
              }
            },
            "description": "User not allowed to make this request"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DefaultError"
                }
              }
            },
            "description": "Resource not found"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DefaultError"
                }
              }
            },
            "description": "Internal server error"
          }
        },
        "summary": "Create assets",
        "tags": [
          "v2beta1"
        ]
      }
    },
    "/v2beta1/assets/hidden": {
      "patch": {
        "description": "This API request can be used to hide or unhide assets.\n",
        "operationId": "hideUnhideAssets_v2beta1",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AssetHideUnhideRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Assets were successfully hidden/unhidden"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConstraintViolationError"
                }
              }
            },
            "description": "Bad request"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DefaultError"
                }
              }
            },
            "description": "Invalid or missing bearer token in Authorization header"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DefaultError"
                }
              }
            },
            "description": "User not allowed to make this request"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DefaultError"
                }
              }
            },
            "description": "Resource not found"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DefaultError"
                }
              }
            },
            "description": "Internal server error"
          }
        },
        "summary": "Hide/unhide assets",
        "tags": [
          "v2beta1"
        ]
      }
    },
    "/v2beta1/assets/note": {
      "patch": {
        "description": "Update asset note by given identifier",
        "operationId": "updateAssetNote_v2beta1",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateAssetNoteRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/assetNote_v2Beta1"
                }
              }
            },
            "description": "Asset note was successfully updated"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConstraintViolationError"
                }
              }
            },
            "description": "Bad request"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DefaultError"
                }
              }
            },
            "description": "Invalid or missing bearer token in Authorization header"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DefaultError"
                }
              }
            },
            "description": "User not allowed to make this request"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DefaultError"
                }
              }
            },
            "description": "Resource not found"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DefaultError"
                }
              }
            },
            "description": "Internal server error"
          }
        },
        "summary": "Update asset note by given identifier",
        "tags": [
          "v2beta1"
        ]
      }
    },
    "/v2beta1/assets/notes/query": {
      "post": {
        "description": "Fetch multiple asset notes",
        "operationId": "queryAssetNotes_v2beta1",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AssetNotesRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "*/*": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/assetNote_v2Beta1"
                  }
                }
              }
            },
            "description": "Notes for assets"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConstraintViolationError"
                }
              }
            },
            "description": "Bad request"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DefaultError"
                }
              }
            },
            "description": "Invalid or missing bearer token in Authorization header"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DefaultError"
                }
              }
            },
            "description": "User not allowed to make this request"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DefaultError"
                }
              }
            },
            "description": "Resource not found"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DefaultError"
                }
              }
            },
            "description": "Internal server error"
          }
        },
        "summary": "Fetch multiple asset notes",
        "tags": [
          "v2beta1"
        ]
      }
    },
    "/v2beta1/assets/onboard": {
      "post": {
        "description": "This API request can be used to onboard an asset along with a bluetooth telematics device connected to it.\n",
        "operationId": "onboardAsset_v2beta1",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/onboardAssetRequest_V2Beta1"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/asset_v2beta1"
                }
              }
            },
            "description": "Asset was successfully onboarded."
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConstraintViolationError"
                }
              }
            },
            "description": "Bad request. These are the possible error codes from this API:\n\n**telematics_device_already_onboarded** \nThe telematics device is already onboarded on Iris platform.\n\n**invalid_telematics_device_definition** \nDefinition of the telematics device violates at least one specific restriction.\n\n**onboarding_bluetooth_tag_with_company_identifier_need_to_be_unlocked_for_specific_account** \nOnboarding bluetooth tags other than KINs with given company identifier need to be unlocked for specific account. In order to unlock onboarding for third party bluetooth tags please contact with support."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DefaultError"
                }
              }
            },
            "description": "Invalid or missing bearer token in Authorization header"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DefaultError"
                }
              }
            },
            "description": "User not allowed to make this request"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DefaultError"
                }
              }
            },
            "description": "Resource not found"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DefaultError"
                }
              }
            },
            "description": "Internal server error"
          }
        },
        "summary": "Onboard asset",
        "tags": [
          "v2beta1"
        ]
      }
    },
    "/v2beta1/assets/query": {
      "post": {
        "description": "Query assets by given identifier type and values",
        "operationId": "assetsQuery_v2beta1",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/assetsQuery_v2Beta1"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/assets_v2Beta1"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConstraintViolationError"
                }
              }
            },
            "description": "Bad request"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DefaultError"
                }
              }
            },
            "description": "Invalid or missing bearer token in Authorization header"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DefaultError"
                }
              }
            },
            "description": "User not allowed to make this request"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DefaultError"
                }
              }
            },
            "description": "Resource not found"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DefaultError"
                }
              }
            },
            "description": "Internal server error"
          }
        },
        "summary": "Query assets by given identifiers",
        "tags": [
          "v2beta1"
        ]
      }
    },
    "/v2beta1/assets/{assetId}": {
      "delete": {
        "description": "This API request can be used to delete an asset which is not connected to any telematics devices from the Iris platform.\n\nTo offboard an asset connected to the telematics device please use endpoint [Offboard asset](/docs/api-reference/assets/offboard-asset-v-2-beta-1).\n",
        "operationId": "deleteAsset_v2beta1",
        "parameters": [
          {
            "description": "ID of the asset",
            "in": "path",
            "name": "assetId",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Asset was successfully deleted."
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConstraintViolationError"
                }
              }
            },
            "description": "Bad request"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DefaultError"
                }
              }
            },
            "description": "Invalid or missing bearer token in Authorization header"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DefaultError"
                }
              }
            },
            "description": "User not allowed to make this request"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DefaultError"
                }
              }
            },
            "description": "Resource not found"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DefaultError"
                }
              }
            },
            "description": "Internal server error"
          }
        },
        "summary": "Delete asset",
        "tags": [
          "v2beta1"
        ]
      },
      "get": {
        "description": "This API request can be used to get a specific asset by its ID.\n",
        "operationId": "getAsset_v2beta1",
        "parameters": [
          {
            "description": "ID of the asset",
            "in": "path",
            "name": "assetId",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/asset_v2beta1"
                }
              }
            },
            "description": "Asset metadata."
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConstraintViolationError"
                }
              }
            },
            "description": "Bad request"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DefaultError"
                }
              }
            },
            "description": "Invalid or missing bearer token in Authorization header"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DefaultError"
                }
              }
            },
            "description": "User not allowed to make this request"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DefaultError"
                }
              }
            },
            "description": "Resource not found"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DefaultError"
                }
              }
            },
            "description": "Internal server error"
          }
        },
        "summary": "Get asset",
        "tags": [
          "v2beta1"
        ]
      },
      "patch": {
        "description": "This API request can be used to update an asset using a partial update approach through the use of JSON Patch defined in RFC 6902.\n",
        "operationId": "updateAsset_v2beta1",
        "parameters": [
          {
            "description": "ID of the asset",
            "in": "path",
            "name": "assetId",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/patchAssetRequest_v2Beta1"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/asset_v2beta1"
                }
              }
            },
            "description": "Asset was successfully updated."
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConstraintViolationError"
                }
              }
            },
            "description": "Bad request. These are the possible error codes returned:\n\n**asset_type_cannot_be_changed** \nSome asset types cannot be changed. E.g. Asset of type VEHICLE, GATEWAY or MACHINE cannot be changed to any other type.\n\n**not_supported_value** \nGiven value cannot be assigned to the asset. E.g. Brand \\<given value\\> is not supported by machines.\n\n**gateway_asset_cannot_be_modified** \nFor GATEWAY type assets fields like : assetType, type, model, brand, productionYear, serialNumber cannot be modified."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DefaultError"
                }
              }
            },
            "description": "Invalid or missing bearer token in Authorization header"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DefaultError"
                }
              }
            },
            "description": "User not allowed to make this request. These are the possible error codes from this API:\n\n**only_owner_of_the_asset_can_edit_given_fields** \nFields like : assetType, type, model, brand, productionYear, serialNumber can be modified only by the owner of the asset."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DefaultError"
                }
              }
            },
            "description": "Resource not found. These are the possible error codes from this API:\n\n**asset_not_found** \nAsset was not found by given ID."
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DefaultError"
                }
              }
            },
            "description": "Internal server error"
          }
        },
        "summary": "Update asset",
        "tags": [
          "v2beta1"
        ]
      }
    },
    "/v2beta1/assets/{assetId}/offboard": {
      "post": {
        "description": "This API request can be used to remove an asset with a telematics device connected to it from the Iris platform.\n\nTo delete an asset that's not connected to any telematics devices please use endpoint [Delete asset](/docs/api-reference/assets/delete-asset-v-2-beta-1).\n",
        "operationId": "offboardAsset_v2beta1",
        "parameters": [
          {
            "description": "ID of the asset",
            "in": "path",
            "name": "assetId",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Asset was successfully offboarded."
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConstraintViolationError"
                }
              }
            },
            "description": "Bad request"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DefaultError"
                }
              }
            },
            "description": "Invalid or missing bearer token in Authorization header"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DefaultError"
                }
              }
            },
            "description": "User not allowed to make this request"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DefaultError"
                }
              }
            },
            "description": "Resource not found"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DefaultError"
                }
              }
            },
            "description": "Internal server error"
          }
        },
        "summary": "Offboard asset",
        "tags": [
          "v2beta1"
        ]
      }
    },
    "/v2beta1/assets/{assetId}/telematics-devices": {
      "post": {
        "description": "This API request can be used to create a bluetooth telematics device and attach it to an existing asset.\n\nCurrently only one bluetooth telematics device can be attached to the asset.\n",
        "operationId": "attachTelematicsDevices_v2beta1",
        "parameters": [
          {
            "in": "path",
            "name": "assetId",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/attachTelematicsDevicesRequest_v2Beta1"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/asset_v2beta1"
                }
              }
            },
            "description": "Telematics device was successfully attached."
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConstraintViolationError"
                }
              }
            },
            "description": "Bad request"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DefaultError"
                }
              }
            },
            "description": "Invalid or missing bearer token in Authorization header"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DefaultError"
                }
              }
            },
            "description": "User not allowed to make this request"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DefaultError"
                }
              }
            },
            "description": "Resource not found"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DefaultError"
                }
              }
            },
            "description": "Internal server error"
          }
        },
        "summary": "Attach telematics device",
        "tags": [
          "v2beta1"
        ]
      }
    }
  },
  "components": {
    "schemas": {
      "AssetHideUnhideRequest": {
        "type": "object",
        "properties": {
          "assetIdsToHide": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            },
            "maxItems": 2000,
            "minItems": 0
          },
          "assetIdsToUnhide": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            },
            "maxItems": 2000,
            "minItems": 0
          }
        }
      },
      "AssetIdentifier": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "description": "|Asset identifier type|Description|\n|-|-|\n|**ASSET_ID**| Basic asset identifier, references **Asset.id** field|\n|**ASSET_NAME**| Asset name, references **Asset.name** field|\n|**ASSET_EXTERNAL_REFERENCE**| Asset external reference, references **Asset.externalReference** field|\n|**ASSET_SERIAL_NUMBER**| Asset serial number, references **Asset.serialNumber** field|\n|**DEVICE_SERIAL_NUMBER**| Telematics device serial number, references **TelematicsDevice.serialNumber** field|\n",
            "enum": [
              "ASSET_ID",
              "ASSET_NAME",
              "ASSET_EXTERNAL_REFERENCE",
              "ASSET_SERIAL_NUMBER",
              "DEVICE_SERIAL_NUMBER"
            ]
          },
          "value": {
            "type": "string",
            "description": "The actual value that identifies the asset, e.g. the device serial number"
          }
        },
        "required": [
          "type",
          "value"
        ]
      },
      "AssetNotesRequest": {
        "type": "object",
        "properties": {
          "assetIds": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            },
            "maxItems": 2000,
            "minItems": 0
          }
        },
        "required": [
          "assetIds"
        ]
      },
      "AssetRequest": {
        "type": "object",
        "properties": {
          "assetType": {
            "type": "string",
            "description": "|Type|Description|\n|-|-|\n|**Machine**| Battery or fuel-powered heavy assets controlled by an operator.|\n|**Vehicle**| Heavy assets used for transporting people or goods, especially on land.|\n|**Gateway**| Serve as a communication managers between bluetooth tags and the Iris platform.|\n|**Attachment**| Items added to machines or equipment for enhanced functionality.|\n|**Tool**| Small powered assets like impact drills or high-pressure washers.|\n|**Equipment**| Non-powered assets like wheelbarrows or containers.|\n|**Other**| Assets that do not fit into the defined categories.|\n",
            "enum": [
              "MACHINE",
              "VEHICLE",
              "GATEWAY",
              "OTHER",
              "ATTACHMENT",
              "EQUIPMENT",
              "TOOL"
            ]
          },
          "brand": {
            "type": "string",
            "description": "The brand of the asset.",
            "maxLength": 256,
            "minLength": 0
          },
          "externalReference": {
            "type": "string",
            "description": "An external reference on the asset that can be used to store the identifier from other systems such as ERPs.",
            "maxLength": 100,
            "minLength": 0
          },
          "model": {
            "type": "string",
            "description": "The model of the asset.",
            "maxLength": 256,
            "minLength": 0
          },
          "name": {
            "type": "string",
            "description": "The name of the asset.",
            "maxLength": 127,
            "minLength": 0
          },
          "productionDate": {
            "type": "string",
            "format": "date",
            "description": "    An optional field to specify the exact production date of the asset in the format YYYY-MM-DD when more precision is needed.\n    Minimum allowed year for production date is 1900. Maximum allowed year for production date is current year plus one.\n    The year of Production Date must match Production Year if both are provided together.\n"
          },
          "productionYear": {
            "type": "integer",
            "format": "int32",
            "description": "    The year the asset was produced. Minimum allowed production year is 1900. Maximum allowed production year is current year plus one.\n    Production Year must match the year of Production Date if both are provided together.\n"
          },
          "serialNumber": {
            "type": "string",
            "description": "The asset serial number (e.g VIN).",
            "maxLength": 100,
            "minLength": 0
          },
          "type": {
            "type": "string",
            "description": "The type of the asset (excavator, lift, bucket etc.)",
            "maxLength": 50,
            "minLength": 0
          }
        },
        "required": [
          "assetType",
          "name"
        ]
      },
      "ConstraintViolationError": {
        "type": "object",
        "properties": {
          "code": {
            "type": [
              "string",
              "null"
            ],
            "description": "Alphanumeric code (snake case) describing use case specific error"
          },
          "message": {
            "type": "string",
            "description": "Detailed description of error"
          },
          "properties": {
            "type": [
              "object",
              "null"
            ],
            "additionalProperties": {},
            "description": "Additional properties to be included in the error response"
          },
          "status": {
            "type": "integer",
            "format": "int32",
            "description": "HTTP status code"
          },
          "violations": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Violation"
            }
          }
        }
      },
      "DefaultError": {
        "type": "object",
        "properties": {
          "code": {
            "type": [
              "string",
              "null"
            ],
            "description": "Alphanumeric code (snake case) describing use case specific error"
          },
          "message": {
            "type": "string",
            "description": "Detailed description of error"
          },
          "properties": {
            "type": [
              "object",
              "null"
            ],
            "additionalProperties": {},
            "description": "Additional properties to be included in the error response"
          },
          "status": {
            "type": "integer",
            "format": "int32",
            "description": "HTTP status code"
          }
        }
      },
      "PaginatedAsset_v2": {
        "type": "object",
        "properties": {
          "content": {
            "type": "array",
            "description": "The page content as a list.",
            "items": {
              "$ref": "#/components/schemas/asset_v2"
            }
          },
          "number": {
            "type": "integer",
            "format": "int32",
            "description": "The number of the current page."
          },
          "numberOfElements": {
            "type": "integer",
            "format": "int32",
            "description": "The number of elements currently on this page."
          },
          "size": {
            "type": "integer",
            "format": "int32",
            "description": "The size of the page."
          },
          "totalElements": {
            "type": "integer",
            "format": "int64",
            "description": "The total number of elements."
          },
          "totalPages": {
            "type": "integer",
            "format": "int32",
            "description": "The number of total pages."
          }
        }
      },
      "UpdateAssetByIdentifierRequest": {
        "type": "object",
        "properties": {
          "identifier": {
            "$ref": "#/components/schemas/AssetIdentifier",
            "description": "Asset Identifier to find the asset to update"
          },
          "patchAssetRequest": {
            "$ref": "#/components/schemas/patchAssetRequest_v2",
            "description": "Asset fields to update"
          }
        },
        "required": [
          "identifier",
          "patchAssetRequest"
        ]
      },
      "UpdateAssetNoteRequest": {
        "type": "object",
        "properties": {
          "identifier": {
            "$ref": "#/components/schemas/AssetIdentifier",
            "description": "Asset Identifier to find the asset for the note"
          },
          "note": {
            "type": "string",
            "description": "A note about the asset.",
            "maxLength": 4000,
            "minLength": 0
          }
        },
        "required": [
          "identifier",
          "note"
        ]
      },
      "UpdateAssetsRequest": {
        "type": "object",
        "properties": {
          "assets": {
            "type": "array",
            "description": "List of asset update requests. Currently only a single asset can be updated at a time.",
            "items": {
              "$ref": "#/components/schemas/UpdateAssetByIdentifierRequest"
            },
            "maxItems": 1,
            "minItems": 1
          }
        },
        "required": [
          "assets"
        ]
      },
      "Violation": {
        "type": "object",
        "properties": {
          "field": {
            "type": "string"
          },
          "message": {
            "type": "string"
          }
        }
      },
      "assetNote_v2": {
        "type": "object",
        "properties": {
          "assetId": {
            "type": "string",
            "format": "uuid",
            "description": "AssetId"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time",
            "description": "Asset note updated at"
          },
          "updatedBy": {
            "type": "string",
            "format": "uuid",
            "description": "Asset note updated by"
          },
          "value": {
            "type": "string",
            "description": "Asset note value"
          }
        },
        "required": [
          "assetId",
          "updatedAt",
          "value"
        ]
      },
      "assetPendingTelematicsDevices_v2": {
        "type": "object",
        "properties": {
          "assetId": {
            "type": "string",
            "format": "uuid",
            "description": "The asset ID."
          },
          "pendingTelematicsDevices": {
            "type": "array",
            "description": "List of pending telematics device categories for this asset. A category (e.g. KIN) covers one or more physical device types (e.g. KIN, KIN2).",
            "items": {
              "type": "string",
              "enum": [
                "KIN"
              ]
            }
          }
        }
      },
      "asset_v2": {
        "type": "object",
        "properties": {
          "assetType": {
            "type": "string",
            "description": "|Type|Description|\n|-|-|\n|**Machine**| Battery or fuel-powered heavy assets controlled by an operator.|\n|**Vehicle**| Heavy assets used for transporting people or goods, especially on land.|\n|**Gateway**| Serve as a communication managers between bluetooth tags and the Iris platform.|\n|**Attachment**| Items added to machines or equipment for enhanced functionality.|\n|**Tool**| Small powered assets like impact drills or high-pressure washers.|\n|**Equipment**| Non-powered assets like wheelbarrows or containers.|\n|**Other**| Assets that do not fit into the defined categories.|\n",
            "enum": [
              "MACHINE",
              "VEHICLE",
              "GATEWAY",
              "OTHER",
              "ATTACHMENT",
              "EQUIPMENT",
              "TOOL"
            ]
          },
          "brand": {
            "type": "string",
            "description": "The brand of the asset."
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "description": "Timestamp indicating when the asset was created on Iris platform."
          },
          "externalReference": {
            "type": "string",
            "description": "An external reference on the asset that can be used to store the identifier from other systems such as ERPs."
          },
          "hidden": {
            "type": "boolean",
            "description": "Marks an asset that is hidden."
          },
          "id": {
            "type": "string",
            "format": "uuid",
            "description": "The ID of the asset."
          },
          "model": {
            "type": "string",
            "description": "The model of the asset."
          },
          "name": {
            "type": "string",
            "description": "The name of the asset.",
            "minLength": 1
          },
          "ownerAccountId": {
            "type": "string",
            "format": "uuid",
            "description": "The ID of the owner account."
          },
          "productionDate": {
            "type": "string",
            "format": "date",
            "description": "The production date of the asset."
          },
          "productionYear": {
            "type": "integer",
            "format": "int32",
            "description": "The year the asset was produced.",
            "minimum": 1900
          },
          "serialNumber": {
            "type": "string",
            "description": "The asset serial number (e.g VIN).",
            "minLength": 1
          },
          "telematicsDevices": {
            "type": "array",
            "description": "List of associated telematics devices.",
            "items": {
              "$ref": "#/components/schemas/telematicsDevice_v2"
            }
          },
          "type": {
            "type": "string",
            "description": "The type of the asset (excavator, lift, bucket etc.)"
          }
        },
        "required": [
          "assetType",
          "createdAt",
          "id",
          "name",
          "ownerAccountId"
        ]
      },
      "assetsPendingTelematicsDevicesRequest_v2": {
        "type": "object",
        "properties": {
          "assetIds": {
            "type": "array",
            "description": "List of asset IDs to query pending telematics devices for.",
            "items": {
              "type": "string",
              "format": "uuid"
            },
            "maxItems": 2000,
            "minItems": 1
          }
        },
        "required": [
          "assetIds"
        ]
      },
      "assetsPendingTelematicsDevicesResponse_v2": {
        "type": "object",
        "properties": {
          "content": {
            "type": "array",
            "description": "List of assets with their pending telematics devices.",
            "items": {
              "$ref": "#/components/schemas/assetPendingTelematicsDevices_v2"
            }
          }
        }
      },
      "assetsQuery_v2": {
        "type": "object",
        "properties": {
          "assetIdentifierType": {
            "type": "string",
            "description": "|Asset identifier type|Description|\n|-|-|\n|**ASSET_ID**| Basic asset identifier, references **Asset.id** field|\n|**ASSET_NAME**| Asset name, references **Asset.name** field|\n|**ASSET_EXTERNAL_REFERENCE**| Asset external reference, references **Asset.externalReference** field|\n|**ASSET_SERIAL_NUMBER**| Asset serial number, references **Asset.serialNumber** field|\n|**DEVICE_SERIAL_NUMBER**| Telematics device serial number, references **TelematicsDevice.serialNumber** field|\n",
            "enum": [
              "ASSET_ID",
              "ASSET_NAME",
              "ASSET_EXTERNAL_REFERENCE",
              "ASSET_SERIAL_NUMBER",
              "DEVICE_SERIAL_NUMBER"
            ]
          },
          "values": {
            "type": "array",
            "description": "Values of asset identifiers",
            "items": {
              "type": "string"
            },
            "maxItems": 2000,
            "minItems": 1
          }
        },
        "required": [
          "assetIdentifierType",
          "values"
        ]
      },
      "assets_v2": {
        "type": "object",
        "properties": {
          "content": {
            "type": "array",
            "description": "List of assets",
            "items": {
              "$ref": "#/components/schemas/asset_v2"
            }
          }
        }
      },
      "assignPendingTelematicsDeviceRequest_v2": {
        "type": "object",
        "properties": {
          "pendingTelematicsDevices": {
            "type": "array",
            "description": "The pending telematics device category to assign. A category (e.g. KIN) covers one or more physical device types (e.g. KIN, KIN2). Exactly one value is supported.",
            "items": {
              "type": "string",
              "enum": [
                "KIN"
              ]
            },
            "maxItems": 1,
            "minItems": 1
          }
        },
        "required": [
          "pendingTelematicsDevices"
        ]
      },
      "attachTelematicsDevicesRequest_v2": {
        "type": "object",
        "properties": {
          "telematicsDevices": {
            "type": "array",
            "description": "List of telematics devices. Currently exactly 1 telematics device is required for asset onboarding",
            "items": {
              "oneOf": [
                {
                  "$ref": "#/components/schemas/bluetoothTagTelematicsDevice_v2"
                },
                {
                  "$ref": "#/components/schemas/kin2TelematicsDevice_v2"
                },
                {
                  "$ref": "#/components/schemas/kinTelematicsDevice_v2"
                },
                {
                  "$ref": "#/components/schemas/otherTelematicsDevice_v2"
                }
              ]
            },
            "maxItems": 1,
            "minItems": 1
          }
        },
        "required": [
          "telematicsDevices"
        ]
      },
      "bluetoothTagTelematicsDevice_v2": {
        "allOf": [
          {
            "$ref": "#/components/schemas/onboardTelematicsDevice_v2"
          },
          {
            "type": "object",
            "properties": {
              "companyIdentifier": {
                "type": "string",
                "description": "The <a href=\"https://www.bluetooth.com/specifications/assigned-numbers/company-identifiers/\" target=\"_blank\">Bluetooth company identifier</a> of the telematics device.\n**Only Trackunit approved company identifiers will be tracked by the Trackunit network.**",
                "example": 2159,
                "minLength": 1
              }
            }
          }
        ],
        "description": "Type has to be \"BLUETOOTH_TAG\" for this object",
        "required": [
          "companyIdentifier",
          "serialNumber",
          "type"
        ]
      },
      "createAssetRequest_v2": {
        "type": "object",
        "properties": {
          "asset": {
            "$ref": "#/components/schemas/AssetRequest",
            "description": "Asset to be created"
          },
          "pendingTelematicsDevices": {
            "type": "array",
            "description": "List of pending telematics device categories to be assigned to this asset. A category (e.g. KIN) covers one or more physical device types (e.g. KIN, KIN2). Mutually exclusive with telematicsDevices.",
            "example": [
              "KIN"
            ],
            "items": {
              "type": "string",
              "enum": [
                "KIN"
              ]
            },
            "maxItems": 1,
            "minItems": 0
          },
          "telematicsDevices": {
            "type": "array",
            "description": "List of telematics devices to create and attach to the asset. Currently one telematics device is admissible while creating asset",
            "items": {
              "oneOf": [
                {
                  "$ref": "#/components/schemas/bluetoothTagTelematicsDevice_v2"
                },
                {
                  "$ref": "#/components/schemas/kin2TelematicsDevice_v2"
                },
                {
                  "$ref": "#/components/schemas/kinTelematicsDevice_v2"
                },
                {
                  "$ref": "#/components/schemas/otherTelematicsDevice_v2"
                }
              ]
            },
            "maxItems": 1,
            "minItems": 0
          }
        },
        "required": [
          "asset"
        ]
      },
      "createAssetsRequest_v2": {
        "type": "object",
        "properties": {
          "requests": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/createAssetRequest_v2"
            },
            "maxItems": 500,
            "minItems": 1
          }
        },
        "required": [
          "requests"
        ]
      },
      "createAssetsResponse_v2": {
        "type": "object",
        "properties": {
          "content": {
            "type": "array",
            "description": "List of created assets with their pending telematics devices.",
            "items": {
              "$ref": "#/components/schemas/createdAsset_v2"
            }
          }
        }
      },
      "createdAsset_v2": {
        "type": "object",
        "properties": {
          "asset": {
            "$ref": "#/components/schemas/asset_v2",
            "description": "The created asset."
          },
          "pendingTelematicsDevices": {
            "type": "array",
            "description": "List of pending telematics device categories assigned to this asset. A category (e.g. KIN) covers one or more physical device types (e.g. KIN, KIN2).",
            "items": {
              "type": "string",
              "enum": [
                "KIN"
              ]
            }
          }
        }
      },
      "kin2TelematicsDevice_v2": {
        "allOf": [
          {
            "$ref": "#/components/schemas/onboardTelematicsDevice_v2"
          }
        ],
        "description": "Type has to be \"KIN2\" for this object",
        "required": [
          "serialNumber",
          "type"
        ]
      },
      "kinTelematicsDevice_v2": {
        "allOf": [
          {
            "$ref": "#/components/schemas/onboardTelematicsDevice_v2"
          }
        ],
        "description": "Type has to be \"KIN\" for this object",
        "required": [
          "serialNumber",
          "type"
        ]
      },
      "onboardTelematicsDevice_v2": {
        "type": "object",
        "description": "The telematics device attached to the asset",
        "discriminator": {
          "mapping": {
            "BLUETOOTH_TAG": "#/components/schemas/bluetoothTagTelematicsDevice_v2",
            "KIN": "#/components/schemas/kinTelematicsDevice_v2",
            "KIN2": "#/components/schemas/kin2TelematicsDevice_v2",
            "OTHER": "#/components/schemas/otherTelematicsDevice_v2"
          },
          "propertyName": "type"
        },
        "properties": {
          "serialNumber": {
            "type": "string",
            "description": "The serial number of the telematics device.",
            "example": 202022722,
            "minLength": 1
          },
          "type": {
            "type": "string",
            "description": "The type of the telematics device",
            "enum": [
              "KIN",
              "KIN2",
              "BLUETOOTH_TAG",
              "OTHER"
            ]
          }
        },
        "required": [
          "serialNumber",
          "type"
        ]
      },
      "otherTelematicsDevice_v2": {
        "allOf": [
          {
            "$ref": "#/components/schemas/onboardTelematicsDevice_v2"
          }
        ],
        "description": "Type has to be \"OTHER\" for this object",
        "required": [
          "serialNumber",
          "type"
        ]
      },
      "patchAssetRequest_v2": {
        "type": "object",
        "properties": {
          "assetType": {
            "type": "string",
            "description": "|Type|Description|\n|-|-|\n|**Machine**| Battery or fuel-powered heavy assets controlled by an operator.|\n|**Vehicle**| Heavy assets used for transporting people or goods, especially on land.|\n|**Gateway**| Serve as a communication managers between bluetooth tags and the Iris platform.|\n|**Attachment**| Items added to machines or equipment for enhanced functionality.|\n|**Tool**| Small powered assets like impact drills or high-pressure washers.|\n|**Equipment**| Non-powered assets like wheelbarrows or containers.|\n|**Other**| Assets that do not fit into the defined categories.|\n",
            "enum": [
              "MACHINE",
              "VEHICLE",
              "GATEWAY",
              "OTHER",
              "ATTACHMENT",
              "EQUIPMENT",
              "TOOL"
            ]
          },
          "brand": {
            "type": "string",
            "description": "The brand of the asset.",
            "maxLength": 256,
            "minLength": 0
          },
          "externalReference": {
            "type": "string",
            "description": "An external reference on the asset that can be used to store the identifier from other systems such as ERPs.",
            "maxLength": 100,
            "minLength": 0
          },
          "model": {
            "type": "string",
            "description": "The model of the asset.",
            "maxLength": 256,
            "minLength": 0
          },
          "name": {
            "type": "string",
            "description": "The name of the asset.",
            "maxLength": 127,
            "minLength": 0
          },
          "productionDate": {
            "type": "string",
            "format": "date",
            "description": "    An optional field to specify the exact production date of the asset in the format YYYY-MM-DD when more precision is needed.\n    Minimum allowed year for production date is 1900. Maximum allowed year for production date is current year plus one.\n    For AssetType=MACHINE, it is derived if only productionYear is set. The year of Production Date must match Production Year if both are provided together.\n    Updating one while deleting the other is an error.\n"
          },
          "productionYear": {
            "type": "integer",
            "format": "int32",
            "description": "    The year the asset was produced. Minimum allowed production year is 1900. Maximum allowed production year is current year plus one.\n    For AssetType=MACHINE, it is derived if only productionDate is set. Production Year must match the year of Production Date if both are provided together.\n    Updating one while deleting the other is an error.\n"
          },
          "serialNumber": {
            "type": "string",
            "description": "The asset serial number (e.g VIN).",
            "maxLength": 100,
            "minLength": 0
          },
          "type": {
            "type": "string",
            "description": "The type of the asset (excavator, lift, bucket etc.)",
            "maxLength": 50,
            "minLength": 0
          }
        }
      },
      "telematicsDevice_v2": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "description": "ID of telematics device."
          },
          "serialNumber": {
            "type": "string",
            "description": "Serial number of the device."
          }
        },
        "required": [
          "id"
        ]
      },
      "Asset": {
        "type": "object",
        "properties": {
          "assetType": {
            "type": "string",
            "description": "|Type|Description|\n|-|-|\n|**Attachment**| A thing which can be added/attached to something else (machine or equipment) in order to make it more useful or versatile.|\n|**Tool**|A small powered asset.|\n|**Equipment**| A non-powered asset.|\n|**Other**| Anything not matching the other asset types.|\n",
            "enum": [
              "OTHER",
              "MACHINE",
              "ATTACHMENT",
              "EQUIPMENT",
              "TOOL",
              "GATEWAY"
            ]
          },
          "brand": {
            "type": "string",
            "description": "The brand of the asset."
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "description": "Timestamp indicating when the asset was created."
          },
          "externalReference": {
            "type": "string",
            "description": "An external reference on the asset that can be used to store the identifier from other systems such as ERPs."
          },
          "id": {
            "type": "string",
            "format": "uuid",
            "description": "The ID of the asset."
          },
          "model": {
            "type": "string",
            "description": "The model type of the asset."
          },
          "name": {
            "type": "string",
            "description": "The name of the asset.",
            "minLength": 1
          },
          "ownerAccountId": {
            "type": "string",
            "format": "uuid",
            "description": "The ID of the owner account."
          },
          "permissions": {
            "$ref": "#/components/schemas/Permissions",
            "deprecated": true,
            "description": "Contains the list of user permissions applying to given asset.\nDeprecated and marked for removal - use GET /assets/{assetId}/editability or POST /assets/actions instead.\n"
          },
          "productionYear": {
            "type": "integer",
            "format": "int32",
            "description": "The year the asset was produced.",
            "minimum": 1900
          },
          "serialNumber": {
            "type": "string",
            "description": "The asset serial number (VIN, PIN etc.)"
          },
          "telematicsDevices": {
            "type": "array",
            "description": "List of associated telematics devices.",
            "items": {
              "$ref": "#/components/schemas/TelematicsDevice"
            }
          },
          "type": {
            "type": "string",
            "description": "The type of the asset (excavator, lift, bucket etc.)"
          }
        },
        "required": [
          "assetType",
          "createdAt",
          "id",
          "name",
          "ownerAccountId",
          "permissions"
        ]
      },
      "Assets": {
        "type": "object",
        "properties": {
          "content": {
            "type": "array",
            "description": "List of assets",
            "items": {
              "$ref": "#/components/schemas/Asset"
            }
          }
        }
      },
      "AttachTelematicsDevicesRequest": {
        "type": "object",
        "properties": {
          "telematicsDevices": {
            "type": "array",
            "description": "List of telematics devices. Currently exactly 1 telematics device is required for asset onboarding",
            "items": {
              "oneOf": [
                {
                  "$ref": "#/components/schemas/BluetoothTagTelematicsDevice"
                },
                {
                  "$ref": "#/components/schemas/Kin2TelematicsDevice"
                },
                {
                  "$ref": "#/components/schemas/KinTelematicsDevice"
                },
                {
                  "$ref": "#/components/schemas/OtherTelematicsDevice"
                }
              ]
            },
            "maxItems": 1,
            "minItems": 1
          }
        },
        "required": [
          "telematicsDevices"
        ]
      },
      "BluetoothTagTelematicsDevice": {
        "allOf": [
          {
            "$ref": "#/components/schemas/OnboardTelematicsDevice"
          },
          {
            "type": "object",
            "properties": {
              "companyIdentifier": {
                "type": "string",
                "description": "The <a href=\"https://www.bluetooth.com/specifications/assigned-numbers/company-identifiers/\" target=\"_blank\">Bluetooth company identifier</a> of the telematics device.\n**Only Trackunit approved company identifiers will be tracked by the Trackunit network.**",
                "example": 2159,
                "minLength": 1
              }
            }
          }
        ],
        "description": "Type has to be \"BLUETOOTH_TAG\" for this object",
        "required": [
          "companyIdentifier",
          "serialNumber",
          "type"
        ]
      },
      "CreateAssetRequest": {
        "type": "object",
        "properties": {
          "assetType": {
            "type": "string",
            "description": "|Type|Description|\n|-|-|\n|**Machine**| Battery or fuel-powered heavy assets controlled by an operator.|\n|**Vehicle**| Heavy assets used for transporting people or goods, especially on land.|\n|**Gateway**| Serve as a communication managers between bluetooth tags and the Iris platform.|\n|**Attachment**| Items added to machines or equipment for enhanced functionality.|\n|**Tool**| Small powered assets like impact drills or high-pressure washers.|\n|**Equipment**| Non-powered assets like wheelbarrows or containers.|\n|**Other**| Assets that do not fit into the defined categories.|\n",
            "enum": [
              "OTHER",
              "MACHINE",
              "ATTACHMENT",
              "EQUIPMENT",
              "TOOL",
              "GATEWAY"
            ]
          },
          "brand": {
            "type": "string",
            "description": "The brand of the asset.",
            "maxLength": 256,
            "minLength": 0
          },
          "externalReference": {
            "type": "string",
            "description": "An external reference on the asset that can be used to store the identifier from other systems such as ERPs.",
            "maxLength": 100,
            "minLength": 0
          },
          "model": {
            "type": "string",
            "description": "The model of the asset.",
            "maxLength": 256,
            "minLength": 0
          },
          "name": {
            "type": "string",
            "description": "The name of the asset.",
            "maxLength": 127,
            "minLength": 0
          },
          "productionDate": {
            "type": "string",
            "format": "date",
            "description": "    An optional field to specify the exact production date of the asset in the format YYYY-MM-DD when more precision is needed.\n    Minimum allowed year for production date is 1900. Maximum allowed year for production date is current year plus one.\n    The year of Production Date must match Production Year if both are provided together.\n"
          },
          "productionYear": {
            "type": "integer",
            "format": "int32",
            "description": "    The year the asset was produced. Minimum allowed production year is 1900. Maximum allowed production year is current year plus one.\n    Production Year must match the year of Production Date if both are provided together.\n"
          },
          "serialNumber": {
            "type": "string",
            "description": "The asset serial number (e.g VIN).",
            "maxLength": 100,
            "minLength": 0
          },
          "type": {
            "type": "string",
            "description": "The type of the asset (excavator, lift, bucket etc.)",
            "maxLength": 50,
            "minLength": 0
          }
        },
        "required": [
          "assetType",
          "name"
        ]
      },
      "CreateAssetsRequest": {
        "type": "object",
        "properties": {
          "assets": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CreateAssetRequest"
            },
            "maxItems": 100,
            "minItems": 1
          }
        },
        "required": [
          "assets"
        ]
      },
      "Kin2TelematicsDevice": {
        "allOf": [
          {
            "$ref": "#/components/schemas/OnboardTelematicsDevice"
          }
        ],
        "description": "Type has to be \"KIN2\" for this object",
        "required": [
          "serialNumber",
          "type"
        ]
      },
      "KinTelematicsDevice": {
        "allOf": [
          {
            "$ref": "#/components/schemas/OnboardTelematicsDevice"
          }
        ],
        "description": "Type has to be \"KIN\" for this object",
        "required": [
          "serialNumber",
          "type"
        ]
      },
      "OffboardAssetRequest": {
        "type": "object",
        "properties": {
          "deleteTelematicsDevices": {
            "type": "boolean",
            "default": true,
            "deprecated": true,
            "description": "Deprecated. Will be removed in next API version. Given value is no longer used during execution of the request. It used to flag if also the associated telematics device should be removed. Now the flag is always considered as true."
          }
        }
      },
      "OnboardAssetRequest": {
        "type": "object",
        "properties": {
          "assetType": {
            "type": "string",
            "description": "|Type|Description|\n|-|-|\n|**Attachment**| A thing which can be added/attached to something else (machine or equipment) in order to make it more useful or versatile.|\n|**Tool**|A small powered asset.|\n|**Equipment**| A non-powered asset.|\n|**Other**| Anything not matching the other asset types.|\n",
            "enum": [
              "OTHER",
              "MACHINE",
              "ATTACHMENT",
              "EQUIPMENT",
              "TOOL",
              "GATEWAY"
            ]
          },
          "brand": {
            "type": "string",
            "description": "The brand of the asset.",
            "maxLength": 256,
            "minLength": 0
          },
          "externalReference": {
            "type": "string",
            "description": "An external reference on the asset that can be used to store the identifier from other systems such as ERPs.",
            "maxLength": 100,
            "minLength": 0
          },
          "model": {
            "type": "string",
            "description": "The model type of the asset.",
            "maxLength": 256,
            "minLength": 0
          },
          "name": {
            "type": "string",
            "description": "The name of the asset.",
            "maxLength": 127,
            "minLength": 0
          },
          "productionDate": {
            "type": "string",
            "format": "date",
            "description": "    An optional field to specify the exact production date of the asset in the format YYYY-MM-DD when more precision is needed.\n    Minimum allowed year for production date is 1900. Maximum allowed year for production date is current year plus one.\n    The year of Production Date must match Production Year if both are provided together.\n"
          },
          "productionYear": {
            "type": "integer",
            "format": "int32",
            "description": "    The year the asset was produced. Minimum allowed production year is 1900. Maximum allowed production year is current year plus one.\n    Production Year must match the year of Production Date if both are provided together.\n"
          },
          "serialNumber": {
            "type": "string",
            "description": "The asset serial number (VIN, PIN etc.).",
            "maxLength": 100,
            "minLength": 0
          },
          "telematicsDevices": {
            "type": "array",
            "description": "List of telematics devices. Currently exactly 1 telematics device is required for asset onboarding",
            "items": {
              "oneOf": [
                {
                  "$ref": "#/components/schemas/BluetoothTagTelematicsDevice"
                },
                {
                  "$ref": "#/components/schemas/Kin2TelematicsDevice"
                },
                {
                  "$ref": "#/components/schemas/KinTelematicsDevice"
                },
                {
                  "$ref": "#/components/schemas/OtherTelematicsDevice"
                }
              ]
            },
            "maxItems": 1,
            "minItems": 1
          },
          "type": {
            "type": "string",
            "description": "The type of the asset (excavator, lift, bucket etc.)",
            "maxLength": 50,
            "minLength": 0
          }
        },
        "required": [
          "assetType",
          "name",
          "telematicsDevices"
        ]
      },
      "OnboardTelematicsDevice": {
        "type": "object",
        "description": "The telematics device attached to the asset",
        "discriminator": {
          "mapping": {
            "BLUETOOTH_TAG": "#/components/schemas/BluetoothTagTelematicsDevice",
            "KIN": "#/components/schemas/KinTelematicsDevice",
            "KIN2": "#/components/schemas/Kin2TelematicsDevice",
            "OTHER": "#/components/schemas/OtherTelematicsDevice"
          },
          "propertyName": "type"
        },
        "properties": {
          "serialNumber": {
            "type": "string",
            "description": "The serial number of the telematics device.",
            "example": 202022722,
            "minLength": 1
          },
          "type": {
            "type": "string",
            "description": "The type of the telematics device",
            "enum": [
              "KIN",
              "KIN2",
              "BLUETOOTH_TAG",
              "OTHER"
            ]
          }
        },
        "required": [
          "serialNumber",
          "type"
        ]
      },
      "OtherTelematicsDevice": {
        "allOf": [
          {
            "$ref": "#/components/schemas/OnboardTelematicsDevice"
          }
        ],
        "description": "Type has to be \"OTHER\" for this object",
        "required": [
          "serialNumber",
          "type"
        ]
      },
      "PaginatedAsset": {
        "type": "object",
        "properties": {
          "content": {
            "type": "array",
            "description": "The page content as a list.",
            "items": {
              "$ref": "#/components/schemas/Asset"
            }
          },
          "number": {
            "type": "integer",
            "format": "int32",
            "description": "The number of the current page."
          },
          "numberOfElements": {
            "type": "integer",
            "format": "int32",
            "description": "The number of elements currently on this page."
          },
          "size": {
            "type": "integer",
            "format": "int32",
            "description": "The size of the page."
          },
          "totalElements": {
            "type": "integer",
            "format": "int64",
            "description": "The total number of elements."
          },
          "totalPages": {
            "type": "integer",
            "format": "int32",
            "description": "The number of total pages."
          }
        }
      },
      "PaginatedAsset_v2beta1": {
        "type": "object",
        "properties": {
          "content": {
            "type": "array",
            "description": "The page content as a list.",
            "items": {
              "$ref": "#/components/schemas/asset_v2beta1"
            }
          },
          "number": {
            "type": "integer",
            "format": "int32",
            "description": "The number of the current page."
          },
          "numberOfElements": {
            "type": "integer",
            "format": "int32",
            "description": "The number of elements currently on this page."
          },
          "size": {
            "type": "integer",
            "format": "int32",
            "description": "The size of the page."
          },
          "totalElements": {
            "type": "integer",
            "format": "int64",
            "description": "The total number of elements."
          },
          "totalPages": {
            "type": "integer",
            "format": "int32",
            "description": "The number of total pages."
          }
        }
      },
      "PatchAssetRequest": {
        "type": "object",
        "properties": {
          "assetType": {
            "type": "string",
            "description": "|Type|Description|\n|-|-|\n|**Attachment**| A thing which can be added/attached to something else (machine or equipment) in order to make it more useful or versatile.|\n|**Tool**|A small powered asset.|\n|**Equipment**| A non-powered asset.|\n|**Other**| Anything not matching the other asset types.|\n",
            "enum": [
              "OTHER",
              "MACHINE",
              "ATTACHMENT",
              "EQUIPMENT",
              "TOOL",
              "GATEWAY"
            ]
          },
          "brand": {
            "type": "string",
            "description": "The brand of the asset.",
            "maxLength": 256,
            "minLength": 0
          },
          "externalReference": {
            "type": "string",
            "description": "An external reference on the asset that can be used to store the identifier from other systems such as ERPs.",
            "maxLength": 100,
            "minLength": 0
          },
          "model": {
            "type": "string",
            "description": "The model type of the asset.",
            "maxLength": 256,
            "minLength": 0
          },
          "name": {
            "type": "string",
            "description": "The name of the asset.",
            "maxLength": 127,
            "minLength": 0
          },
          "productionDate": {
            "type": "string",
            "format": "date",
            "description": "    An optional field to specify the exact production date of the asset in the format YYYY-MM-DD when more precision is needed.\n    Minimum allowed year for production date is 1900. Maximum allowed year for production date is current year plus one.\n    For AssetType=MACHINE, it is derived if only productionYear is set. The year of Production Date must match Production Year if both are provided together.\n    Updating one while deleting the other is an error.\n"
          },
          "productionYear": {
            "type": "integer",
            "format": "int32",
            "description": "    The year the asset was produced. Minimum allowed production year is 1900. Maximum allowed production year is current year plus one.\n    For AssetType=MACHINE, it is derived if only productionDate is set. Production Year must match the year of Production Date if both are provided together.\n    Updating one while deleting the other is an error.\n"
          },
          "serialNumber": {
            "type": "string",
            "description": "The asset serial number (VIN, PIN etc.)",
            "maxLength": 100,
            "minLength": 0
          },
          "type": {
            "type": "string",
            "description": "The type of the asset (excavator, lift, bucket etc.)",
            "maxLength": 50,
            "minLength": 0
          }
        }
      },
      "Permissions": {
        "type": "object",
        "properties": {
          "edit": {
            "type": "boolean",
            "deprecated": true,
            "description": "Defines the permission to edit the object.\nDeprecated and marked for removal.\n"
          }
        },
        "required": [
          "edit"
        ]
      },
      "TelematicsDevice": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "serialNumber": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "serialNumber"
        ]
      },
      "assetNote_v2Beta1": {
        "type": "object",
        "properties": {
          "assetId": {
            "type": "string",
            "format": "uuid",
            "description": "AssetId"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time",
            "description": "Asset note updated at"
          },
          "updatedBy": {
            "type": "string",
            "format": "uuid",
            "description": "Asset note updated by"
          },
          "value": {
            "type": "string",
            "description": "Asset note value"
          }
        },
        "required": [
          "assetId",
          "updatedAt",
          "value"
        ]
      },
      "asset_v2beta1": {
        "type": "object",
        "properties": {
          "assetType": {
            "type": "string",
            "description": "|Type|Description|\n|-|-|\n|**Machine**| Battery or fuel-powered heavy assets controlled by an operator.|\n|**Vehicle**| Heavy assets used for transporting people or goods, especially on land.|\n|**Gateway**| Serve as a communication managers between bluetooth tags and the Iris platform.|\n|**Attachment**| Items added to machines or equipment for enhanced functionality.|\n|**Tool**| Small powered assets like impact drills or high-pressure washers.|\n|**Equipment**| Non-powered assets like wheelbarrows or containers.|\n|**Other**| Assets that do not fit into the defined categories.|\n",
            "enum": [
              "MACHINE",
              "VEHICLE",
              "GATEWAY",
              "OTHER",
              "ATTACHMENT",
              "EQUIPMENT",
              "TOOL"
            ]
          },
          "brand": {
            "type": "string",
            "description": "The brand of the asset."
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "description": "Timestamp indicating when the asset was created on Iris platform."
          },
          "externalReference": {
            "type": "string",
            "description": "An external reference on the asset that can be used to store the identifier from other systems such as ERPs."
          },
          "hidden": {
            "type": "boolean",
            "description": "Marks an asset that is hidden."
          },
          "id": {
            "type": "string",
            "format": "uuid",
            "description": "The ID of the asset."
          },
          "model": {
            "type": "string",
            "description": "The model of the asset."
          },
          "name": {
            "type": "string",
            "description": "The name of the asset.",
            "minLength": 1
          },
          "ownerAccountId": {
            "type": "string",
            "format": "uuid",
            "description": "The ID of the owner account."
          },
          "productionDate": {
            "type": "string",
            "format": "date",
            "description": "The production date of the asset."
          },
          "productionYear": {
            "type": "integer",
            "format": "int32",
            "description": "The year the asset was produced.",
            "minimum": 1900
          },
          "serialNumber": {
            "type": "string",
            "description": "The asset serial number (e.g VIN)."
          },
          "telematicsDevices": {
            "type": "array",
            "description": "List of associated telematics devices.",
            "items": {
              "$ref": "#/components/schemas/telematicsDevice_v2Beta1"
            }
          },
          "type": {
            "type": "string",
            "description": "The type of the asset (excavator, lift, bucket etc.)"
          }
        },
        "required": [
          "assetType",
          "createdAt",
          "id",
          "name",
          "ownerAccountId"
        ]
      },
      "assetsQuery_v2Beta1": {
        "type": "object",
        "properties": {
          "assetIdentifierType": {
            "type": "string",
            "description": "|Asset identifier type|Description|\n|-|-|\n|**ASSET_ID**| Basic asset identifier, references **Asset.id** field|\n|**ASSET_NAME**| Asset name, references **Asset.name** field|\n|**ASSET_EXTERNAL_REFERENCE**| Asset external reference, references **Asset.externalReference** field|\n|**ASSET_SERIAL_NUMBER**| Asset serial number, references **Asset.serialNumber** field|\n|**DEVICE_SERIAL_NUMBER**| Telematics device serial number, references **TelematicsDevice.serialNumber** field|\n",
            "enum": [
              "ASSET_ID",
              "ASSET_NAME",
              "ASSET_EXTERNAL_REFERENCE",
              "ASSET_SERIAL_NUMBER",
              "DEVICE_SERIAL_NUMBER"
            ]
          },
          "values": {
            "type": "array",
            "description": "Values of asset identifiers",
            "items": {
              "type": "string"
            },
            "maxItems": 2000,
            "minItems": 1
          }
        },
        "required": [
          "assetIdentifierType",
          "values"
        ]
      },
      "assets_v2Beta1": {
        "type": "object",
        "properties": {
          "content": {
            "type": "array",
            "description": "List of assets",
            "items": {
              "$ref": "#/components/schemas/asset_v2beta1"
            }
          }
        }
      },
      "attachTelematicsDevicesRequest_v2Beta1": {
        "type": "object",
        "properties": {
          "telematicsDevices": {
            "type": "array",
            "description": "List of telematics devices. Currently exactly 1 telematics device is required for asset onboarding",
            "items": {
              "oneOf": [
                {
                  "$ref": "#/components/schemas/bluetoothTagTelematicsDevice_v2Beta1"
                },
                {
                  "$ref": "#/components/schemas/kin2TelematicsDevice_v2Beta1"
                },
                {
                  "$ref": "#/components/schemas/kinTelematicsDevice_v2Beta1"
                },
                {
                  "$ref": "#/components/schemas/otherTelematicsDevice_v2Beta1"
                }
              ]
            },
            "maxItems": 1,
            "minItems": 1
          }
        },
        "required": [
          "telematicsDevices"
        ]
      },
      "bluetoothTagTelematicsDevice_v2Beta1": {
        "allOf": [
          {
            "$ref": "#/components/schemas/onboardTelematicsDevice_v2Beta1"
          },
          {
            "type": "object",
            "properties": {
              "companyIdentifier": {
                "type": "string",
                "description": "The <a href=\"https://www.bluetooth.com/specifications/assigned-numbers/company-identifiers/\" target=\"_blank\">Bluetooth company identifier</a> of the telematics device.\n**Only Trackunit approved company identifiers will be tracked by the Trackunit network.**",
                "example": 2159,
                "minLength": 1
              }
            }
          }
        ],
        "description": "Type has to be \"BLUETOOTH_TAG\" for this object",
        "required": [
          "companyIdentifier",
          "serialNumber",
          "type"
        ]
      },
      "createAssetsRequest_v2Beta1": {
        "type": "object",
        "properties": {
          "assets": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CreateAssetRequest"
            },
            "maxItems": 100,
            "minItems": 1
          }
        },
        "required": [
          "assets"
        ]
      },
      "kin2TelematicsDevice_v2Beta1": {
        "allOf": [
          {
            "$ref": "#/components/schemas/onboardTelematicsDevice_v2Beta1"
          }
        ],
        "description": "Type has to be \"KIN2\" for this object",
        "required": [
          "serialNumber",
          "type"
        ]
      },
      "kinTelematicsDevice_v2Beta1": {
        "allOf": [
          {
            "$ref": "#/components/schemas/onboardTelematicsDevice_v2Beta1"
          }
        ],
        "description": "Type has to be \"KIN\" for this object",
        "required": [
          "serialNumber",
          "type"
        ]
      },
      "onboardAssetRequest_V2Beta1": {
        "type": "object",
        "properties": {
          "assetType": {
            "type": "string",
            "description": "|Type|Description|\n|-|-|\n|**Machine**| Battery or fuel-powered heavy assets controlled by an operator.|\n|**Vehicle**| Heavy assets used for transporting people or goods, especially on land.|\n|**Gateway**| Serve as a communication managers between bluetooth tags and the Iris platform.|\n|**Attachment**| Items added to machines or equipment for enhanced functionality.|\n|**Tool**| Small powered assets like impact drills or high-pressure washers.|\n|**Equipment**| Non-powered assets like wheelbarrows or containers.|\n|**Other**| Assets that do not fit into the defined categories.|\n",
            "enum": [
              "OTHER",
              "MACHINE",
              "ATTACHMENT",
              "EQUIPMENT",
              "TOOL",
              "GATEWAY"
            ]
          },
          "brand": {
            "type": "string",
            "description": "The brand of the asset.",
            "maxLength": 256,
            "minLength": 0
          },
          "externalReference": {
            "type": "string",
            "description": "An external reference on the asset that can be used to store the identifier from other systems such as ERPs.",
            "maxLength": 100,
            "minLength": 0
          },
          "model": {
            "type": "string",
            "description": "The model of the asset.",
            "maxLength": 256,
            "minLength": 0
          },
          "name": {
            "type": "string",
            "description": "The name of the asset.",
            "maxLength": 127,
            "minLength": 0
          },
          "productionDate": {
            "type": "string",
            "format": "date",
            "description": "    An optional field to specify the exact production date of the asset in the format YYYY-MM-DD when more precision is needed.\n    Minimum allowed year for production date is 1900. Maximum allowed year for production date is current year plus one.\n    The year of Production Date must match Production Year if both are provided together.\n"
          },
          "productionYear": {
            "type": "integer",
            "format": "int32",
            "description": "    The year the asset was produced. Minimum allowed production year is 1900. Maximum allowed production year is current year plus one.\n    Production Year must match the year of Production Date if both are provided together.\n"
          },
          "serialNumber": {
            "type": "string",
            "description": "The asset serial number (e.g VIN).",
            "maxLength": 100,
            "minLength": 0
          },
          "telematicsDevices": {
            "type": "array",
            "description": "List of telematics devices. Currently exactly 1 telematics device is required for asset onboarding",
            "items": {
              "oneOf": [
                {
                  "$ref": "#/components/schemas/bluetoothTagTelematicsDevice_v2Beta1"
                },
                {
                  "$ref": "#/components/schemas/kin2TelematicsDevice_v2Beta1"
                },
                {
                  "$ref": "#/components/schemas/kinTelematicsDevice_v2Beta1"
                },
                {
                  "$ref": "#/components/schemas/otherTelematicsDevice_v2Beta1"
                }
              ]
            },
            "maxItems": 1,
            "minItems": 1
          },
          "type": {
            "type": "string",
            "description": "The type of the asset (excavator, lift, bucket etc.)",
            "maxLength": 50,
            "minLength": 0
          }
        },
        "required": [
          "assetType",
          "name",
          "telematicsDevices"
        ]
      },
      "onboardTelematicsDevice_v2Beta1": {
        "type": "object",
        "description": "The telematics device attached to the asset",
        "discriminator": {
          "mapping": {
            "BLUETOOTH_TAG": "#/components/schemas/bluetoothTagTelematicsDevice_v2Beta1",
            "KIN": "#/components/schemas/kinTelematicsDevice_v2Beta1",
            "KIN2": "#/components/schemas/kin2TelematicsDevice_v2Beta1",
            "OTHER": "#/components/schemas/otherTelematicsDevice_v2Beta1"
          },
          "propertyName": "type"
        },
        "properties": {
          "serialNumber": {
            "type": "string",
            "description": "The serial number of the telematics device.",
            "example": 202022722,
            "minLength": 1
          },
          "type": {
            "type": "string",
            "description": "The type of the telematics device",
            "enum": [
              "KIN",
              "KIN2",
              "BLUETOOTH_TAG",
              "OTHER"
            ]
          }
        },
        "required": [
          "serialNumber",
          "type"
        ]
      },
      "otherTelematicsDevice_v2Beta1": {
        "allOf": [
          {
            "$ref": "#/components/schemas/onboardTelematicsDevice_v2Beta1"
          }
        ],
        "description": "Type has to be \"OTHER\" for this object",
        "required": [
          "serialNumber",
          "type"
        ]
      },
      "patchAssetRequest_v2Beta1": {
        "type": "object",
        "properties": {
          "assetType": {
            "type": "string",
            "description": "|Type|Description|\n|-|-|\n|**Machine**| Battery or fuel-powered heavy assets controlled by an operator.|\n|**Vehicle**| Heavy assets used for transporting people or goods, especially on land.|\n|**Gateway**| Serve as a communication managers between bluetooth tags and the Iris platform.|\n|**Attachment**| Items added to machines or equipment for enhanced functionality.|\n|**Tool**| Small powered assets like impact drills or high-pressure washers.|\n|**Equipment**| Non-powered assets like wheelbarrows or containers.|\n|**Other**| Assets that do not fit into the defined categories.|\n",
            "enum": [
              "MACHINE",
              "VEHICLE",
              "GATEWAY",
              "OTHER",
              "ATTACHMENT",
              "EQUIPMENT",
              "TOOL"
            ]
          },
          "brand": {
            "type": "string",
            "description": "The brand of the asset.",
            "maxLength": 256,
            "minLength": 0
          },
          "externalReference": {
            "type": "string",
            "description": "An external reference on the asset that can be used to store the identifier from other systems such as ERPs.",
            "maxLength": 100,
            "minLength": 0
          },
          "model": {
            "type": "string",
            "description": "The model of the asset.",
            "maxLength": 256,
            "minLength": 0
          },
          "name": {
            "type": "string",
            "description": "The name of the asset.",
            "maxLength": 127,
            "minLength": 0
          },
          "productionDate": {
            "type": "string",
            "format": "date",
            "description": "    An optional field to specify the exact production date of the asset in the format YYYY-MM-DD when more precision is needed.\n    Minimum allowed year for production date is 1900. Maximum allowed year for production date is current year plus one.\n    For AssetType=MACHINE, it is derived if only productionYear is set. The year of Production Date must match Production Year if both are provided together.\n    Updating one while deleting the other is an error.\n"
          },
          "productionYear": {
            "type": "integer",
            "format": "int32",
            "description": "    The year the asset was produced. Minimum allowed production year is 1900. Maximum allowed production year is current year plus one.\n    For AssetType=MACHINE, it is derived if only productionDate is set. Production Year must match the year of Production Date if both are provided together.\n    Updating one while deleting the other is an error.\n"
          },
          "serialNumber": {
            "type": "string",
            "description": "The asset serial number (e.g VIN).",
            "maxLength": 100,
            "minLength": 0
          },
          "type": {
            "type": "string",
            "description": "The type of the asset (excavator, lift, bucket etc.)",
            "maxLength": 50,
            "minLength": 0
          }
        }
      },
      "telematicsDevice_v2Beta1": {
        "type": "object",
        "properties": {
          "deviceType": {
            "type": "string",
            "description": "Device type, e.g. KIN, TU600, SPOT2."
          },
          "id": {
            "type": "string",
            "format": "uuid",
            "description": "ID of telematics device."
          },
          "serialNumber": {
            "type": "string",
            "description": "Serial number of the device."
          }
        },
        "required": [
          "id"
        ]
      }
    },
    "securitySchemes": {
      "authorizationBearer": {
        "bearerFormat": "JWT",
        "scheme": "bearer",
        "type": "http"
      }
    }
  }
}
