{
  "openapi" : "3.0.1",
  "info" : {
    "title" : "MyCarTracks API v3",
    "description" : "Welcome to the MyCarTracks API v3.\n\nThis reference lists the API v3 endpoints currently exposed by the documentation. To try requests directly in this page, use the **Authentication** panel, enter your API v3 client ID and secret, authorize, then execute an endpoint.\n\n**Getting API credentials**\n- Learn where to find or generate your API credentials:\n  <a href=\"https://community.mycartracks.com/t/where-to-get-your-api-credentials/59\">https://community.mycartracks.com/t/where-to-get-your-api-credentials/59</a><br>\n- Manage API v3 credentials in API settings: <a href=\"https://mycartracks.com/portal/settings?#api\">https://mycartracks.com/portal/settings?#api</a><br>\n- Access tokens are not refreshed automatically. When a token expires, request a new one with the same API credentials.<br>\n\n**CLI**\nUse the official MyCarTracks CLI for command-line access and automation:\n<a href=\"https://github.com/mycartracks/mycartracks-cli\">https://github.com/mycartracks/mycartracks-cli</a>.<br>\n\n**AI and MCP**\nMyCarTracks supports AI clients through MCP. To connect ChatGPT or another MCP-compatible client, use the MyCarTracks MCP server URL and complete the OAuth sign-in and consent flow:\n<a href=\"https://mycartracks.com/mcp\">https://mycartracks.com/mcp</a>.<br>\nYou can review and remove active AI client connections in API settings: <a href=\"https://mycartracks.com/portal/settings?#api\">https://mycartracks.com/portal/settings?#api</a>.<br>\n\n**Support**\nNeed an endpoint that is not available yet, or have questions about authentication or usage? Email us at\n<a href=\"mailto:support@mycartracks.com\">support@mycartracks.com</a>.\n",
    "contact" : { },
    "version" : "3.0.0.beta"
  },
  "servers" : [ {
    "url" : "https://mycartracks.com/services/rest/v3"
  } ],
  "security" : [ {
    "OAuth2" : [ ]
  } ],
  "paths" : {
    "/expenses" : {
      "get" : {
        "tags" : [ "Expenses" ],
        "summary" : "List expenses",
        "description" : "Returns expenses available for the current API credentials owner. Results are filtered by vehicles the user can access.\n\nPaging:\n- offset is a zero-based row offset. First page is 0.\n- limit defaults to 100 and is capped at 500.\n- hasMore tells whether another page exists.\n- nextOffset contains the next offset when hasMore is true.\n",
        "operationId" : "expensesGet",
        "parameters" : [ {
          "name" : "vehicleId",
          "in" : "query",
          "description" : "Filter expenses by vehicle ID. Single-value alias for vehicleIds.\n",
          "schema" : {
            "type" : "integer",
            "format" : "int64"
          }
        }, {
          "name" : "vehicleIds",
          "in" : "query",
          "description" : "Comma separated vehicle IDs. When both vehicleId and vehicleIds are provided, both filters are combined.\n",
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "userId",
          "in" : "query",
          "description" : "Filter expenses by driver/user ID. Single-value alias for userIds.\n",
          "schema" : {
            "type" : "integer",
            "format" : "int64"
          }
        }, {
          "name" : "userIds",
          "in" : "query",
          "description" : "Comma separated driver/user IDs. When both userId and userIds are provided, both filters are combined.\n",
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "expenseTypeId",
          "in" : "query",
          "description" : "Filter expenses by expense type ID. Single-value alias for expenseTypeIds.\n",
          "schema" : {
            "type" : "integer",
            "format" : "int64"
          }
        }, {
          "name" : "expenseTypeIds",
          "in" : "query",
          "description" : "Comma separated expense type IDs.\n",
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "paymentTypes",
          "in" : "query",
          "description" : "Comma separated payment type enum values. Supported values: CARD, CASH, INVOICE.\n",
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "deductible",
          "in" : "query",
          "description" : "Filter by deductible state.\n",
          "schema" : {
            "type" : "boolean"
          }
        }, {
          "name" : "startTime",
          "in" : "query",
          "description" : "Filter expenses where expense date is greater than or equal to startTime. Unix timestamp format in millis.\n",
          "schema" : {
            "type" : "integer",
            "format" : "int64"
          }
        }, {
          "name" : "endTime",
          "in" : "query",
          "description" : "Filter expenses where expense date is lower than or equal to endTime. Unix timestamp format in millis.\n",
          "schema" : {
            "type" : "integer",
            "format" : "int64"
          }
        }, {
          "name" : "sort",
          "in" : "query",
          "description" : "Sort field. Supported values: expenseDate, -expenseDate, created, -created.\n",
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "fields",
          "in" : "query",
          "description" : "Comma separated list of fields that should be returned.\n",
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "offset",
          "in" : "query",
          "description" : "Zero based pagination row offset.\n",
          "schema" : {
            "type" : "integer",
            "format" : "int32"
          }
        }, {
          "name" : "limit",
          "in" : "query",
          "description" : "Page size. Defaults to 100 and is capped at 500.\n",
          "schema" : {
            "type" : "integer",
            "format" : "int32"
          }
        }, {
          "name" : "includeTotal",
          "in" : "query",
          "description" : "When true, returns totalCount for the current filters.\n",
          "schema" : {
            "type" : "boolean"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Response containing expense data for this page.\n",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ExpensesModel"
                }
              }
            }
          },
          "default" : {
            "description" : "Error containing error code, optionally affected fields and a message.\n",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorModel"
                }
              }
            }
          }
        },
        "security" : [ {
          "OAuth2" : [ "read" ]
        } ],
        "x-mct-badge" : {
          "value" : "NEW"
        },
        "x-cli-description" : "List expenses with filters for vehicle, driver, type, payment, deductible state, and expense date.",
        "x-cli-aliases" : [ "list-expenses" ]
      },
      "put" : {
        "tags" : [ "Expenses" ],
        "summary" : "Update expense",
        "description" : "Updates an existing expense. Existing receipts are preserved; receipt changes are not part of this JSON endpoint.\n",
        "operationId" : "expensesPut",
        "requestBody" : {
          "description" : "The expense JSON you want to update. ID must be provided.\n",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/UpdateExpenseModel"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Updated expense with details.\n",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ExpenseModel"
                }
              }
            }
          },
          "default" : {
            "description" : "Error containing error code, optionally affected fields and a message.\n",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorModel"
                }
              }
            }
          }
        },
        "security" : [ {
          "OAuth2" : [ "write" ]
        } ],
        "x-mct-badge" : {
          "value" : "NEW"
        },
        "x-cli-description" : "Update an expense.",
        "x-cli-aliases" : [ "update-expense" ]
      },
      "post" : {
        "tags" : [ "Expenses" ],
        "summary" : "Create expense",
        "description" : "Creates an expense for a vehicle available to the current API credentials owner.\nReceipt upload is not part of this JSON endpoint.\n",
        "operationId" : "expensesPost",
        "requestBody" : {
          "description" : "The expense JSON you want to create.\n",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/CreateExpenseModel"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Created expense with details.\n",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ExpenseModel"
                }
              }
            }
          },
          "default" : {
            "description" : "Error containing error code, optionally affected fields and a message.\n",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorModel"
                }
              }
            }
          }
        },
        "security" : [ {
          "OAuth2" : [ "write" ]
        } ],
        "x-mct-badge" : {
          "value" : "NEW"
        },
        "x-cli-description" : "Create an expense.",
        "x-cli-aliases" : [ "create-expense" ]
      }
    },
    "/expenses/{id}" : {
      "get" : {
        "tags" : [ "Expenses" ],
        "summary" : "Get expense by ID",
        "description" : "Returns one expense by ID if it is available to the current API credentials owner.\n",
        "operationId" : "expensesIdGet_1",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "ID of the expense to return.\n",
          "required" : true,
          "schema" : {
            "type" : "integer",
            "format" : "int64"
          }
        }, {
          "name" : "fields",
          "in" : "query",
          "description" : "Comma separated list of fields that should be returned.\n",
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Response containing expense details.\n",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ExpenseModel"
                }
              }
            }
          },
          "default" : {
            "description" : "Error containing error code, optionally affected fields and a message.\n",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorModel"
                }
              }
            }
          }
        },
        "security" : [ {
          "OAuth2" : [ "read" ]
        } ],
        "x-mct-badge" : {
          "value" : "NEW"
        },
        "x-cli-description" : "Get one expense by ID.",
        "x-cli-aliases" : [ "get-expense" ]
      },
      "delete" : {
        "tags" : [ "Expenses" ],
        "summary" : "Delete expense by ID",
        "description" : "Deletes one expense by ID if it is editable by the current API credentials owner.\n",
        "operationId" : "expensesIdDelete_1",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "ID of the expense to delete.\n",
          "required" : true,
          "schema" : {
            "type" : "integer",
            "format" : "int64"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Successful deletion.\n"
          },
          "default" : {
            "description" : "Error containing error code, optionally affected fields and a message.\n",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorModel"
                }
              }
            }
          }
        },
        "security" : [ {
          "OAuth2" : [ "write" ]
        } ],
        "x-mct-badge" : {
          "value" : "NEW"
        },
        "x-cli-description" : "Delete one expense by ID.",
        "x-cli-aliases" : [ "delete-expense" ]
      }
    },
    "/expenses/settings" : {
      "get" : {
        "tags" : [ "Expenses" ],
        "summary" : "Get expense settings",
        "description" : "Returns default account expense settings used for vehicles that do not define vehicle-specific expense settings.\n",
        "operationId" : "expensesSettingsGet_1",
        "parameters" : [ {
          "name" : "fields",
          "in" : "query",
          "description" : "Comma separated list of fields that should be returned.\n",
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Default account expense settings.\n",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ExpenseSettingsModel"
                }
              }
            }
          },
          "default" : {
            "description" : "Error containing error code, optionally affected fields and a message.\n",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorModel"
                }
              }
            }
          }
        },
        "security" : [ {
          "OAuth2" : [ "read" ]
        } ],
        "x-mct-badge" : {
          "value" : "NEW"
        },
        "x-cli-description" : "Get default account expense settings used when a vehicle has no vehicle-specific settings.",
        "x-cli-aliases" : [ "get-expense-settings" ]
      },
      "put" : {
        "tags" : [ "Expenses" ],
        "summary" : "Update expense settings",
        "description" : "Updates default account expense settings used for vehicles that do not define vehicle-specific expense settings.\nThis is a full replacement endpoint; send null fields to clear values. When biFuel is false, secondary fuel settings are cleared.\n",
        "operationId" : "expensesSettingsPut_1",
        "requestBody" : {
          "description" : "Default expense settings to save.\n",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ExpenseSettingsModel"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Saved default account expense settings.\n",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ExpenseSettingsModel"
                }
              }
            }
          },
          "default" : {
            "description" : "Error containing error code, optionally affected fields and a message.\n",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorModel"
                }
              }
            }
          }
        },
        "security" : [ {
          "OAuth2" : [ "write" ]
        } ],
        "x-mct-badge" : {
          "value" : "NEW"
        },
        "x-cli-description" : "Update default account expense settings used when a vehicle has no vehicle-specific settings.",
        "x-cli-aliases" : [ "update-expense-settings" ]
      }
    },
    "/expenses/types" : {
      "get" : {
        "tags" : [ "Expenses" ],
        "summary" : "List expense types",
        "description" : "Returns expense types available to the current API credentials owner.\n",
        "operationId" : "expensesTypesGet_1",
        "parameters" : [ {
          "name" : "fields",
          "in" : "query",
          "description" : "Comma separated list of fields that should be returned.\n",
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Response containing expense types.\n",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ExpenseTypesModel"
                }
              }
            }
          },
          "default" : {
            "description" : "Error containing error code, optionally affected fields and a message.\n",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorModel"
                }
              }
            }
          }
        },
        "security" : [ {
          "OAuth2" : [ "read" ]
        } ],
        "x-mct-badge" : {
          "value" : "NEW"
        },
        "x-cli-description" : "List expense types available to the current user.",
        "x-cli-aliases" : [ "expense-types", "list-expense-types" ]
      }
    },
    "/geofences/alerts" : {
      "get" : {
        "tags" : [ "Geofences" ],
        "summary" : "List of geofence alerts",
        "description" : "List of all/filtered geofence alerts created by credentials owner.\n",
        "operationId" : "geofencesAlertsGet_1",
        "parameters" : [ {
          "name" : "name",
          "in" : "query",
          "description" : "Filter alerts by identification name\n",
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "idGeofence",
          "in" : "query",
          "description" : "Filter alerts by Geofence ID this alert is assigned to\n",
          "schema" : {
            "type" : "integer",
            "format" : "int64"
          }
        }, {
          "name" : "transition",
          "in" : "query",
          "description" : "Filter alerts by transition that fires this alert (BOTH (default), ON_EXIT, ON_ENTRY)\n",
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "validTo",
          "in" : "query",
          "description" : "Filter alerts that are valid to this date and time. Milliseconds since Unix Epoch, use gt, ge, lt, le as prefix to filter, e.g. 'le1494329000000'\n",
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "notificationEmail",
          "in" : "query",
          "description" : "Filter alerts by email to which this alert will be sent. For multiple emails use comma separated list.\n",
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "driverGroups",
          "in" : "query",
          "description" : "Filter by comma separated list of ID's of driver groups this alert is assigned to.\n",
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "carGroups",
          "in" : "query",
          "description" : "Filter by comma separated list of ID's of car groups this alert is assigned to.\n",
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "sort",
          "in" : "query",
          "description" : "Ability to sort by specified fields.\n",
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "fields",
          "in" : "query",
          "description" : "Comma separated list of fields that should be returned.\n",
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "offset",
          "in" : "query",
          "description" : "Zero based pagination (e.g. first page = 0, 3rd page = 2 x limit).\n",
          "schema" : {
            "type" : "integer",
            "format" : "int32"
          }
        }, {
          "name" : "limit",
          "in" : "query",
          "description" : "Page size. The maximum results size per page.\n",
          "schema" : {
            "type" : "integer",
            "format" : "int32"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Response containing details and an array of geofence alerts\n",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/GeofenceAlertsModel"
                }
              }
            }
          },
          "default" : {
            "description" : "Error containing error code, optionally affected fields and a message\n",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorModel"
                }
              }
            }
          }
        },
        "security" : [ {
          "OAuth2" : [ "read" ]
        } ],
        "x-cli-name" : "geofence-alerts",
        "x-cli-description" : "List geofence alerts.",
        "x-cli-aliases" : [ "list-geofence-alerts" ]
      },
      "put" : {
        "tags" : [ "Geofences" ],
        "summary" : "Updates geofence alert",
        "description" : "Update existing geofence alert. Returns geofence alert with updated parameters.\n",
        "operationId" : "geofencesAlertsPut_1",
        "requestBody" : {
          "description" : "The geofence alert JSON you want to update, ID must be provided.\n",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/UpdateGeofenceAlertModel"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Updated geofence alert with ID.\n",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/GeofenceAlertModel"
                }
              }
            }
          },
          "default" : {
            "description" : "Error containing error code, optionally affected fields and a message\n",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorModel"
                }
              }
            }
          }
        },
        "security" : [ {
          "OAuth2" : [ "write" ]
        } ]
      },
      "post" : {
        "tags" : [ "Geofences" ],
        "summary" : "Create new geofence alert",
        "description" : "Creates new geofence alert and returns created alert with his unique ID.\n",
        "operationId" : "geofencesAlertsPost_1",
        "requestBody" : {
          "description" : "The geofence alert JSON you want to create\n",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/CreateGeofenceAlertModel"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Created geofence alert with ID.\n",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/GeofenceAlertModel"
                }
              }
            }
          },
          "default" : {
            "description" : "Error containing error code, optionally affected fields and a message\n",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorModel"
                }
              }
            }
          }
        },
        "security" : [ {
          "OAuth2" : [ "write" ]
        } ]
      }
    },
    "/geofences/alerts/{id}" : {
      "get" : {
        "tags" : [ "Geofences" ],
        "summary" : "Get geofence alert by ID",
        "description" : "Returns geofence alert identified by ID\n",
        "operationId" : "geofencesAlertsIdGet_1",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "ID of the geofence alert\n",
          "required" : true,
          "schema" : {
            "type" : "integer",
            "format" : "int64"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Successfull, returns requested geofence alert details\n",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/GeofenceAlertModel"
                }
              }
            }
          },
          "default" : {
            "description" : "Error containing error code, optionally affected fields and a message\n",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorModel"
                }
              }
            }
          }
        },
        "security" : [ {
          "OAuth2" : [ "read" ]
        } ]
      },
      "delete" : {
        "tags" : [ "Geofences" ],
        "summary" : "Removes geofence alert by ID",
        "description" : "Removes geofence alert.\n",
        "operationId" : "geofencesAlertsIdDelete_1",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "ID of the geofence alert\n",
          "required" : true,
          "schema" : {
            "type" : "integer",
            "format" : "int64"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Successfull removal\n"
          },
          "default" : {
            "description" : "Error containing error code, optionally affected fields and a message\n",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorModel"
                }
              }
            }
          }
        },
        "security" : [ {
          "OAuth2" : [ "write" ]
        } ]
      }
    },
    "/geofences/alerts/logs" : {
      "get" : {
        "tags" : [ "Geofences" ],
        "summary" : "Geofence Alerts Logs",
        "description" : "Returns logs related to defined Geofence Alerts\n",
        "operationId" : "geofencesAlertsLogGet_1",
        "parameters" : [ {
          "name" : "idGeofenceAlert",
          "in" : "query",
          "description" : "Filter by geofence alert, ID can be found in the results. You can enter multiple IDs separated with comma.\n",
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "idGeofence",
          "in" : "query",
          "description" : "Filter by geofence, ID can be found in the results. You can enter multiple IDs separated with comma.\n",
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "idVehicle",
          "in" : "query",
          "description" : "Filter by vehicle, ID can be found in the results. You can enter multiple IDs separated with comma or value 'all'.\n",
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "idUser",
          "in" : "query",
          "description" : "Filter by user/driver, ID can be found in the results. You can enter multiple IDs separated with comma or value 'all'.\n",
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "alertDateFrom",
          "in" : "query",
          "description" : "Filter results by alertDate greater and equal than this value. Date and time in milliseconds (Unixtime)\n",
          "schema" : {
            "type" : "integer",
            "format" : "int64"
          }
        }, {
          "name" : "alertDateTo",
          "in" : "query",
          "description" : "Filter results by alertDate lower and equal than this value. Date and time in milliseconds (Unixtime)\n",
          "schema" : {
            "type" : "integer",
            "format" : "int64"
          }
        }, {
          "name" : "transition",
          "in" : "query",
          "description" : "Filter alert logs by transition (BOTH, ON_EXIT, ON_ENTRY). BOTH is a special transition, don't use it if you want all transitions\n",
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "sort",
          "in" : "query",
          "description" : "Ability to sort by specified fields.\n",
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "fields",
          "in" : "query",
          "description" : "Comma separated list of fields that should be returned.\n",
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "offset",
          "in" : "query",
          "description" : "Zero based pagination (e.g. first page = 0, 3rd page = 2 x limit).\n",
          "schema" : {
            "type" : "integer",
            "format" : "int32"
          }
        }, {
          "name" : "limit",
          "in" : "query",
          "description" : "Page size. The maximum results size per page.\n",
          "schema" : {
            "type" : "integer",
            "format" : "int32"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Successfull, returns requested geofence analytics data\n",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/GeofenceAlertLogsModel"
                }
              }
            }
          },
          "default" : {
            "description" : "Error containing error code, optionally affected fields and a message\n",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorModel"
                }
              }
            }
          }
        },
        "security" : [ {
          "OAuth2" : [ "read" ]
        } ],
        "x-cli-name" : "geofence-alert-logs",
        "x-cli-description" : "List geofence alert trigger logs.",
        "x-cli-aliases" : [ "list-geofence-alert-logs" ]
      }
    },
    "/geofences/analytics/vehicles" : {
      "get" : {
        "tags" : [ "Geofence Analytics" ],
        "summary" : "Geofence Analytics for Vehicles",
        "description" : "Returns Geofence Analytics data for Vehicles (available in we abb under GEOFENCES > Analytics / Vehicles). See web application to view all the report types.\n",
        "operationId" : "geofencesAnalyticsVehiclesGet_1",
        "parameters" : [ {
          "name" : "reportType",
          "in" : "query",
          "description" : "Requested report type, default is 'geofence'\n",
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "idGeofence",
          "in" : "query",
          "description" : "Filter by geofence, ID can be found in the results. You can enter multiple IDs separated with comma. (available only with reportType geofence, vehicleGeofenceDetailed, geofenceTimeTracker,customerTimeTracker)\n",
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "idVehicle",
          "in" : "query",
          "description" : "Filter by vehicle, ID can be found in the results. You can enter multiple IDs separated with comma or value 'all'. (available only with reportType vehicleGeofenceDetailed, vehicleAtCustomerDetailed,vehicleDetailed, geofenceTimeTracker, customerTimeTracker)\n",
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "entryTimeFrom",
          "in" : "query",
          "description" : "Filter results by entryTime greater and equal than this value. Date and time in milliseconds (Unixtime)\n",
          "schema" : {
            "type" : "integer",
            "format" : "int64"
          }
        }, {
          "name" : "entryTimeTo",
          "in" : "query",
          "description" : "Filter results by entryTime lower and equal than this value. Date and time in milliseconds (Unixtime)\n",
          "schema" : {
            "type" : "integer",
            "format" : "int64"
          }
        }, {
          "name" : "category",
          "in" : "query",
          "description" : "Filter results by track category (PERSONAL or BUSINESS).\n",
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "idlesShow",
          "in" : "query",
          "description" : "Filter if results should contain idles. When SECONDS is selected specify also from and to parameter. Available values 'NONE', 'SECONDS', 'ALL' (default). (available only with reportType 'vehicleAtCustomerDetailed')\n",
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "idleSecondFrom",
          "in" : "query",
          "description" : "Filter idles longer than this value. Available only when idleShow='seconds'. (available only with reportType 'vehicleAtCustomerDetailed')\n",
          "schema" : {
            "type" : "integer",
            "format" : "int64"
          }
        }, {
          "name" : "idleSecondTo",
          "in" : "query",
          "description" : "Filter idles shorter than this value. Available only with idleShow='seconds'. (available only with reportType 'vehicleAtCustomerDetailed')\n",
          "schema" : {
            "type" : "integer",
            "format" : "int64"
          }
        }, {
          "name" : "hideDidntStopInside",
          "in" : "query",
          "description" : "Hide accesses that didn't stop inside geofence. (available only with reportType vehicleAtCustomerDetailed, vehicleDetailed)\n",
          "schema" : {
            "type" : "boolean"
          }
        }, {
          "name" : "searchString",
          "in" : "query",
          "description" : "search in the name of filtered element.\n",
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "hideMissed",
          "in" : "query",
          "description" : "Show or hide missed geofences/customers - entries with zero time (missed) should be viewed or not. Available only with reportType 'customerTimeTracker' and 'geofenceTimeTracker'.\n",
          "schema" : {
            "type" : "boolean"
          }
        }, {
          "name" : "sort",
          "in" : "query",
          "description" : "Ability to sort by specified fields.\n",
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "fields",
          "in" : "query",
          "description" : "Comma separated list of fields that should be returned.\n",
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "offset",
          "in" : "query",
          "description" : "Zero based pagination (e.g. first page = 0, 3rd page = 2 x limit).\n",
          "schema" : {
            "type" : "integer",
            "format" : "int32"
          }
        }, {
          "name" : "limit",
          "in" : "query",
          "description" : "Page size. The maximum results size per page.\n",
          "schema" : {
            "type" : "integer",
            "format" : "int32"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Successfull, returns requested geofence analytics data\n",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/GeofenceAccessesModel"
                }
              }
            }
          },
          "default" : {
            "description" : "Error containing error code, optionally affected fields and a message\n",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorModel"
                }
              }
            }
          }
        },
        "security" : [ {
          "OAuth2" : [ "read" ]
        } ],
        "x-cli-name" : "geofence-vehicle-analytics",
        "x-cli-description" : "Analyze vehicle visits to geofences.",
        "x-cli-aliases" : [ "vehicle-geofence-analytics" ]
      }
    },
    "/geofences/customers/customColumns" : {
      "get" : {
        "tags" : [ "Geofences" ],
        "summary" : "List of customer custom column",
        "description" : "List of all/filtered customer custom column created by credentials owner.\n",
        "operationId" : "geofencesCustomersCustomColumnsGet_1",
        "parameters" : [ {
          "name" : "columnName",
          "in" : "query",
          "description" : "Filter customer custom column by name (anywhere in the name)\n",
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "sort",
          "in" : "query",
          "description" : "Ability to sort by specified fields.\n",
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "fields",
          "in" : "query",
          "description" : "Comma separated list of fields that should be returned.\n",
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "offset",
          "in" : "query",
          "description" : "Zero based pagination (e.g. first page = 0, 3rd page = 2 x limit).\n",
          "schema" : {
            "type" : "integer",
            "format" : "int32"
          }
        }, {
          "name" : "limit",
          "in" : "query",
          "description" : "Page size. The maximum results size per page.\n",
          "schema" : {
            "type" : "integer",
            "format" : "int32"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Response containing details and an array of customer custom column\n",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/CustomerCustomColumnsModel"
                }
              }
            }
          },
          "default" : {
            "description" : "Error containing error code, optionally affected fields and a message\n",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorModel"
                }
              }
            }
          }
        },
        "security" : [ {
          "OAuth2" : [ "read" ]
        } ]
      },
      "put" : {
        "tags" : [ "Geofences" ],
        "summary" : "Updates customer custom column",
        "description" : "Update existing customer custom column. Returns customer custom column with updated parameters.\n",
        "operationId" : "geofencesCustomersCustomColumnsPut_1",
        "requestBody" : {
          "description" : "The customer custom column JSON you want to update, ID must be provided.\n",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/UpdateCustomerCustomColumnModel"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Updated customer custom column with ID.\n",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/CustomerCustomColumnModel"
                }
              }
            }
          },
          "default" : {
            "description" : "Error containing error code, optionally affected fields and a message\n",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorModel"
                }
              }
            }
          }
        },
        "security" : [ {
          "OAuth2" : [ "write" ]
        } ]
      },
      "post" : {
        "tags" : [ "Geofences" ],
        "summary" : "Create new customer custom column",
        "description" : "Creates new customer custom column and returns created custom column with his unique ID.\n",
        "operationId" : "geofencesCustomersCustomColumnsPost_1",
        "requestBody" : {
          "description" : "The customer custom column JSON you want to create\n",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/CreateCustomerCustomColumnModel"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Created customer custom column with ID.\n",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/CustomerCustomColumnModel"
                }
              }
            }
          },
          "default" : {
            "description" : "Error containing error code, optionally affected fields and a message\n",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorModel"
                }
              }
            }
          }
        },
        "security" : [ {
          "OAuth2" : [ "write" ]
        } ]
      }
    },
    "/geofences/customers/customColumns/{id}" : {
      "delete" : {
        "tags" : [ "Geofences" ],
        "summary" : "Removes customer custom column by ID",
        "description" : "Removes customer custom column.\n",
        "operationId" : "geofencesCustomersCustomColumnsIdDelete_1",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "ID of the customer custom column\n",
          "required" : true,
          "schema" : {
            "type" : "integer",
            "format" : "int64"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Successfull removal\n"
          },
          "default" : {
            "description" : "Error containing error code, optionally affected fields and a message\n",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorModel"
                }
              }
            }
          }
        },
        "security" : [ {
          "OAuth2" : [ "write" ]
        } ]
      }
    },
    "/geofences/customers" : {
      "get" : {
        "tags" : [ "Geofences" ],
        "summary" : "List of customers",
        "description" : "List of all/filtered customers created by credentials owner.\n",
        "operationId" : "geofencesCustomersGet_1",
        "parameters" : [ {
          "name" : "contactPersonName",
          "in" : "query",
          "description" : "Filter customers by contact person name\n",
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "companyName",
          "in" : "query",
          "description" : "Filter customers by company name\n",
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "phone",
          "in" : "query",
          "description" : "Filter customers by phone number\n",
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "email",
          "in" : "query",
          "description" : "Filter customers by email\n",
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "address",
          "in" : "query",
          "description" : "Filter customers by address\n",
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "remark",
          "in" : "query",
          "description" : "Filter customers by remark\n",
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "latLonSquare",
          "in" : "query",
          "description" : "Filter customers that have filled GPS Latitude and Longitude and are in top-left, right-bottom squares. Format \"[lat,lon],[lat,lon]\" (top-left, right-bottom)\n",
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "geofenceId",
          "in" : "query",
          "description" : "Filter customers by geofence\n",
          "schema" : {
            "type" : "integer",
            "format" : "int64"
          }
        }, {
          "name" : "geofenceDefined",
          "in" : "query",
          "description" : "Filter customers that have or doesn't have defined geofence\n",
          "schema" : {
            "type" : "boolean"
          }
        }, {
          "name" : "sort",
          "in" : "query",
          "description" : "Ability to sort by specified fields.\n",
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "fields",
          "in" : "query",
          "description" : "Comma separated list of fields that should be returned.\n",
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "offset",
          "in" : "query",
          "description" : "Zero based pagination (e.g. first page = 0, 3rd page = 2 x limit).\n",
          "schema" : {
            "type" : "integer",
            "format" : "int32"
          }
        }, {
          "name" : "limit",
          "in" : "query",
          "description" : "Page size. The maximum results size per page.\n",
          "schema" : {
            "type" : "integer",
            "format" : "int32"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Response containing details and an array of customers\n",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/CustomersModel"
                }
              }
            }
          },
          "default" : {
            "description" : "Error containing error code, optionally affected fields and a message\n",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorModel"
                }
              }
            }
          }
        },
        "security" : [ {
          "OAuth2" : [ "read" ]
        } ],
        "x-cli-name" : "customers",
        "x-cli-description" : "List customers used by jobs and geofences.",
        "x-cli-aliases" : [ "geofence-customers", "list-customers" ]
      },
      "put" : {
        "tags" : [ "Geofences" ],
        "summary" : "Updates customer",
        "description" : "Update existing customer. Returns customer with updated parameters.\n",
        "operationId" : "geofencesCustomersPut_1",
        "requestBody" : {
          "description" : "The customer JSON you want to update, ID must be provided.\n",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/UpdateCustomerModel"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Updated customer with ID.\n",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/CustomerModel"
                }
              }
            }
          },
          "default" : {
            "description" : "Error containing error code, optionally affected fields and a message\n",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorModel"
                }
              }
            }
          }
        },
        "security" : [ {
          "OAuth2" : [ "write" ]
        } ]
      },
      "post" : {
        "tags" : [ "Geofences" ],
        "summary" : "Create new customer",
        "description" : "Creates new customer and returns created customer with his unique ID.\n",
        "operationId" : "geofencesCustomersPost_1",
        "requestBody" : {
          "description" : "The customer JSON you want to create\n",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/CreateCustomerModel"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Created customer with ID.\n",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/CustomerModel"
                }
              }
            }
          },
          "default" : {
            "description" : "Error containing error code, optionally affected fields and a message\n",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorModel"
                }
              }
            }
          }
        },
        "security" : [ {
          "OAuth2" : [ "write" ]
        } ]
      }
    },
    "/geofences/customers/{id}" : {
      "get" : {
        "tags" : [ "Geofences" ],
        "summary" : "Get customer by ID",
        "description" : "Returns customer identified by ID\n",
        "operationId" : "geofencesCustomersIdGet_1",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "ID of the customer\n",
          "required" : true,
          "schema" : {
            "type" : "integer",
            "format" : "int64"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Successfull, returns requested geofence rewrite details\n",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/CustomerModel"
                }
              }
            }
          },
          "default" : {
            "description" : "Error containing error code, optionally affected fields and a message\n",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorModel"
                }
              }
            }
          }
        },
        "security" : [ {
          "OAuth2" : [ "read" ]
        } ]
      },
      "delete" : {
        "tags" : [ "Geofences" ],
        "summary" : "Removes customer by ID",
        "description" : "Removes customer.\n",
        "operationId" : "geofencesCustomersIdDelete_1",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "ID of the customer\n",
          "required" : true,
          "schema" : {
            "type" : "integer",
            "format" : "int64"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Successfull removal\n"
          },
          "default" : {
            "description" : "Error containing error code, optionally affected fields and a message\n",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorModel"
                }
              }
            }
          }
        },
        "security" : [ {
          "OAuth2" : [ "write" ]
        } ]
      }
    },
    "/geofences" : {
      "get" : {
        "tags" : [ "Geofences" ],
        "summary" : "List of geofences",
        "description" : "List of all/filtered geofences created by credentials owner.\nGPS latitude and longitude is inWGS 84 Web Mercator coordinate system\n",
        "operationId" : "geofencesGet_1",
        "parameters" : [ {
          "name" : "name",
          "in" : "query",
          "description" : "Filter geofences by identification name\n",
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "latitude",
          "in" : "query",
          "description" : "Filter geofences by GPS Latitude\n",
          "schema" : {
            "type" : "number",
            "format" : "double"
          }
        }, {
          "name" : "longitude",
          "in" : "query",
          "description" : "Filter geofences by GPS Longitude\n",
          "schema" : {
            "type" : "number",
            "format" : "double"
          }
        }, {
          "name" : "latLonSquare",
          "in" : "query",
          "description" : "Filter geofences that are in top-left, right-bottom squares. Format \"[lat,lon],[lat,lon]\" (top-left, right-bottom)\n",
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "radius",
          "in" : "query",
          "description" : "Filter geofences by zone radius in meters or feet (depending on your settings)\n",
          "schema" : {
            "type" : "number",
            "format" : "double"
          }
        }, {
          "name" : "address",
          "in" : "query",
          "description" : "Filter geofences by address\n",
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "useAsPoi",
          "in" : "query",
          "description" : "Filter geofences that are used as POI (TRUE) or not (FALSE)\n",
          "schema" : {
            "type" : "boolean"
          }
        }, {
          "name" : "poiDescription",
          "in" : "query",
          "description" : "Filter geofences by POI short description\n",
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "useForAnalytics",
          "in" : "query",
          "description" : "Filter geofences that are used for Geofence Analytics (TRUE) or not (FALSE)\n",
          "schema" : {
            "type" : "boolean"
          }
        }, {
          "name" : "sort",
          "in" : "query",
          "description" : "Ability to sort by specified fields.\n",
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "fields",
          "in" : "query",
          "description" : "Comma separated list of fields that should be returned.\n",
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "offset",
          "in" : "query",
          "description" : "Zero based pagination (e.g. first page = 0, 3rd page = 2 x limit).\n",
          "schema" : {
            "type" : "integer",
            "format" : "int32"
          }
        }, {
          "name" : "limit",
          "in" : "query",
          "description" : "Page size. The maximum results size per page.\n",
          "schema" : {
            "type" : "integer",
            "format" : "int32"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Response containing details and an array of geofences\n",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/GeofencesModel"
                }
              }
            }
          },
          "default" : {
            "description" : "Error containing error code, optionally affected fields and a message\n",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorModel"
                }
              }
            }
          }
        },
        "security" : [ {
          "OAuth2" : [ "read" ]
        } ],
        "x-cli-description" : "List geofences and points of interest.",
        "x-cli-aliases" : [ "list-geofences" ]
      },
      "put" : {
        "tags" : [ "Geofences" ],
        "summary" : "Updates geofence",
        "description" : "Update existing geofence. Returns geofence with updated parameters that can be updated.\n",
        "operationId" : "geofencesPut_1",
        "requestBody" : {
          "description" : "The geofence JSON you want to update, ID must be provided.\n",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/UpdateGeofenceModel"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Updated geofence with ID.\n",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/GeofenceModel"
                }
              }
            }
          },
          "default" : {
            "description" : "Error containing error code, optionally affected fields and a message\n",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorModel"
                }
              }
            }
          }
        },
        "security" : [ {
          "OAuth2" : [ "write" ]
        } ]
      },
      "post" : {
        "tags" : [ "Geofences" ],
        "summary" : "Create new geofence",
        "description" : "Creates new geofence and returns created geofence with his unique ID.\n",
        "operationId" : "geofencesPost_1",
        "requestBody" : {
          "description" : "The geofence JSON you want to create\n",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/CreateGeofenceModel"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Created geofence with ID.\n",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/GeofenceModel"
                }
              }
            }
          },
          "default" : {
            "description" : "Error containing error code, optionally affected fields and a message\n",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorModel"
                }
              }
            }
          }
        },
        "security" : [ {
          "OAuth2" : [ "write" ]
        } ]
      }
    },
    "/geofences/{id}" : {
      "get" : {
        "tags" : [ "Geofences" ],
        "summary" : "Get geofence by ID",
        "description" : "Returns geofence identified by ID\n",
        "operationId" : "geofencesIdGet_1",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "ID of the geofence\n",
          "required" : true,
          "schema" : {
            "type" : "integer",
            "format" : "int64"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Successfull, returns requested geofence details\n",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/GeofenceModel"
                }
              }
            }
          },
          "default" : {
            "description" : "Error containing error code, optionally affected fields and a message\n",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorModel"
                }
              }
            }
          }
        },
        "security" : [ {
          "OAuth2" : [ "read" ]
        } ],
        "x-cli-name" : "geofence",
        "x-cli-description" : "Get one geofence by ID.",
        "x-cli-aliases" : [ "get-geofence" ]
      },
      "delete" : {
        "tags" : [ "Geofences" ],
        "summary" : "Removes geofence by ID",
        "description" : "Removes geofence and all attached settings (alerts, rewrites). In case it's assigned to a job or customer it will unnasign the geofence.\n",
        "operationId" : "geofencesIdDelete_1",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "ID of the geofence\n",
          "required" : true,
          "schema" : {
            "type" : "integer",
            "format" : "int64"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Successfull removal\n"
          },
          "default" : {
            "description" : "Error containing error code, optionally affected fields and a message\n",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorModel"
                }
              }
            }
          }
        },
        "security" : [ {
          "OAuth2" : [ "write" ]
        } ]
      }
    },
    "/geofences/rewrites" : {
      "get" : {
        "tags" : [ "Geofences" ],
        "summary" : "List of geofence rewrites",
        "description" : "List of all/filtered geofence rewrites created by credentials owner.\n",
        "operationId" : "geofencesRewritesGet_1",
        "parameters" : [ {
          "name" : "idGeofence",
          "in" : "query",
          "description" : "Filter rewrites by Geofence ID this rewrite is assigned to\n",
          "schema" : {
            "type" : "integer",
            "format" : "int64"
          }
        }, {
          "name" : "replaceAddressFrom",
          "in" : "query",
          "description" : "Filter geofences by address from replace\n",
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "replaceAddressTo",
          "in" : "query",
          "description" : "Filter geofences by address to replace\n",
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "replaceDescription",
          "in" : "query",
          "description" : "Filter geofences by description replace\n",
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "carGroups",
          "in" : "query",
          "description" : "Filter by comma separated list of ID's of car groups this rewrite is assigned to.\n",
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "sort",
          "in" : "query",
          "description" : "Ability to sort by specified fields.\n",
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "fields",
          "in" : "query",
          "description" : "Comma separated list of fields that should be returned.\n",
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "offset",
          "in" : "query",
          "description" : "Zero based pagination (e.g. first page = 0, 3rd page = 2 x limit).\n",
          "schema" : {
            "type" : "integer",
            "format" : "int32"
          }
        }, {
          "name" : "limit",
          "in" : "query",
          "description" : "Page size. The maximum results size per page.\n",
          "schema" : {
            "type" : "integer",
            "format" : "int32"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Response containing details and an array of geofence rewrites\n",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/GeofenceRewritesModel"
                }
              }
            }
          },
          "default" : {
            "description" : "Error containing error code, optionally affected fields and a message\n",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorModel"
                }
              }
            }
          }
        },
        "security" : [ {
          "OAuth2" : [ "read" ]
        } ]
      },
      "put" : {
        "tags" : [ "Geofences" ],
        "summary" : "Updates geofence rewrite",
        "description" : "Update existing geofence rewrite. Returns geofence rewrite with updated parameters.\n",
        "operationId" : "geofencesRewritesPut_1",
        "requestBody" : {
          "description" : "The geofence rewrite JSON you want to update, ID must be provided.\n",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/UpdateGeofenceRewriteModel"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Updated geofence rewrite with ID.\n",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/GeofenceRewriteModel"
                }
              }
            }
          },
          "default" : {
            "description" : "Error containing error code, optionally affected fields and a message\n",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorModel"
                }
              }
            }
          }
        },
        "security" : [ {
          "OAuth2" : [ "write" ]
        } ]
      },
      "post" : {
        "tags" : [ "Geofences" ],
        "summary" : "Create new geofence rewrite",
        "description" : "Creates new geofence rewrite and returns created rewrite with his unique ID.\n",
        "operationId" : "geofencesRewritesPost_1",
        "requestBody" : {
          "description" : "The geofence rewrite JSON you want to create\n",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/CreateGeofenceRewriteModel"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Created geofence rewrite with ID.\n",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/GeofenceRewriteModel"
                }
              }
            }
          },
          "default" : {
            "description" : "Error containing error code, optionally affected fields and a message\n",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorModel"
                }
              }
            }
          }
        },
        "security" : [ {
          "OAuth2" : [ "write" ]
        } ]
      }
    },
    "/geofences/rewrites/{id}" : {
      "get" : {
        "tags" : [ "Geofences" ],
        "summary" : "Get geofence rewrite by ID",
        "description" : "Returns geofence rewrite identified by ID\n",
        "operationId" : "geofencesRewritesIdGet_1",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "ID of the geofence rewrite\n",
          "required" : true,
          "schema" : {
            "type" : "integer",
            "format" : "int64"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Successfull, returns requested geofence rewrite details\n",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/GeofenceRewriteModel"
                }
              }
            }
          },
          "default" : {
            "description" : "Error containing error code, optionally affected fields and a message\n",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorModel"
                }
              }
            }
          }
        },
        "security" : [ {
          "OAuth2" : [ "read" ]
        } ]
      },
      "delete" : {
        "tags" : [ "Geofences" ],
        "summary" : "Removes geofence rewrite by ID",
        "description" : "Removes geofence rewrite.\n",
        "operationId" : "geofencesRewritesIdDelete_1",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "ID of the geofence rewrite\n",
          "required" : true,
          "schema" : {
            "type" : "integer",
            "format" : "int64"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Successfull removal\n"
          },
          "default" : {
            "description" : "Error containing error code, optionally affected fields and a message\n",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorModel"
                }
              }
            }
          }
        },
        "security" : [ {
          "OAuth2" : [ "write" ]
        } ]
      }
    },
    "/jobs/activity/log/{id}" : {
      "get" : {
        "tags" : [ "Jobs" ],
        "summary" : "One certain job log details.",
        "description" : "Returns details about job activity.\n",
        "operationId" : "jobsActivityLogIdGet_1",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "ID of the job log to be returned\n",
          "required" : true,
          "schema" : {
            "type" : "integer",
            "format" : "int64"
          }
        }, {
          "name" : "fields",
          "in" : "query",
          "description" : "Comma separated list of fields that should be returned.\n",
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Response containing details and an array of job logs\n",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/JobLogModel"
                }
              }
            }
          },
          "default" : {
            "description" : "Error containing error code, optionally affected fields and a message\n",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorModel"
                }
              }
            }
          }
        },
        "security" : [ {
          "OAuth2" : [ "read" ]
        } ]
      },
      "delete" : {
        "tags" : [ "Jobs" ],
        "summary" : "Delete job log.",
        "description" : "Removes job log.\n",
        "operationId" : "jobsActivityLogIdDelete_1",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "ID of the job log to be removed\n",
          "required" : true,
          "schema" : {
            "type" : "integer",
            "format" : "int64"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Successfull removal\n"
          },
          "default" : {
            "description" : "Error containing error code, optionally affected fields and a message\n",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorModel"
                }
              }
            }
          }
        },
        "security" : [ {
          "OAuth2" : [ "write" ]
        } ]
      }
    },
    "/jobs/activity/log" : {
      "put" : {
        "tags" : [ "Jobs" ],
        "summary" : "Update job log",
        "description" : "Update existing job log. Returns job log with updated parameters.\n",
        "operationId" : "jobsActivityLogPut_1",
        "requestBody" : {
          "description" : "The job log JSON you want to update, ID must be provided.\n",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/UpdateJobLogModel"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Updated job log with ID and details.\n",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/JobLogModel"
                }
              }
            }
          },
          "default" : {
            "description" : "Error containing error code, optionally affected fields and a message\n",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorModel"
                }
              }
            }
          }
        },
        "security" : [ {
          "OAuth2" : [ "write" ]
        } ]
      },
      "post" : {
        "tags" : [ "Jobs" ],
        "summary" : "Create new job log",
        "description" : "Creates new job log and returns created job log with his unique ID.\n",
        "operationId" : "jobsActivityLogPost_1",
        "requestBody" : {
          "description" : "The job log JSON you want to create\n",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/CreateJobLogModel"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Created job log with ID.\n",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/JobLogModel"
                }
              }
            }
          },
          "default" : {
            "description" : "Error containing error code, optionally affected fields and a message\n",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorModel"
                }
              }
            }
          }
        },
        "security" : [ {
          "OAuth2" : [ "write" ]
        } ]
      }
    },
    "/jobs/activity/logs/{jobId}" : {
      "get" : {
        "tags" : [ "Jobs" ],
        "summary" : "Job logs",
        "description" : "Returns list of all job/work logs for a job\n",
        "operationId" : "jobsActivityLogsJobIdGet_1",
        "parameters" : [ {
          "name" : "jobId",
          "in" : "path",
          "description" : "ID of the job for which logs should be returned\n",
          "required" : true,
          "schema" : {
            "type" : "integer",
            "format" : "int64"
          }
        }, {
          "name" : "idUser",
          "in" : "query",
          "description" : "Filter by User ID who created this job log\n",
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "fields",
          "in" : "query",
          "description" : "Comma separated list of fields that should be returned.\n",
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "offset",
          "in" : "query",
          "description" : "Zero based pagination (e.g. first page = 0, 3rd page = 2 x limit).\n",
          "schema" : {
            "type" : "integer",
            "format" : "int32"
          }
        }, {
          "name" : "limit",
          "in" : "query",
          "description" : "Page size. The maximum results size per page.\n",
          "schema" : {
            "type" : "integer",
            "format" : "int32"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Response containing details and an array of job logs\n",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/JobLogsModel"
                }
              }
            }
          },
          "default" : {
            "description" : "Error containing error code, optionally affected fields and a message\n",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorModel"
                }
              }
            }
          }
        },
        "security" : [ {
          "OAuth2" : [ "read" ]
        } ],
        "x-cli-name" : "job-logs",
        "x-cli-description" : "List work logs for one job.",
        "x-cli-aliases" : [ "list-job-logs" ]
      }
    },
    "/jobs/activity/states/{jobId}" : {
      "get" : {
        "tags" : [ "Jobs" ],
        "summary" : "Job states",
        "description" : "Returns list of all state changes for a job\n",
        "operationId" : "jobsActivityStatesJobIdGet_1",
        "parameters" : [ {
          "name" : "jobId",
          "in" : "path",
          "description" : "ID of the job for which states should be returned\n",
          "required" : true,
          "schema" : {
            "type" : "integer",
            "format" : "int64"
          }
        }, {
          "name" : "fields",
          "in" : "query",
          "description" : "Comma separated list of fields that should be returned.\n",
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "offset",
          "in" : "query",
          "description" : "Zero based pagination (e.g. first page = 0, 3rd page = 2 x limit).\n",
          "schema" : {
            "type" : "integer",
            "format" : "int32"
          }
        }, {
          "name" : "limit",
          "in" : "query",
          "description" : "Page size. The maximum results size per page.\n",
          "schema" : {
            "type" : "integer",
            "format" : "int32"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Response containing details and an array of job states\n",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/JobStatesModel"
                }
              }
            }
          },
          "default" : {
            "description" : "Error containing error code, optionally affected fields and a message\n",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorModel"
                }
              }
            }
          }
        },
        "security" : [ {
          "OAuth2" : [ "read" ]
        } ],
        "x-cli-name" : "job-states",
        "x-cli-description" : "List state changes for one job.",
        "x-cli-aliases" : [ "list-job-states" ]
      }
    },
    "/jobs" : {
      "get" : {
        "tags" : [ "Jobs" ],
        "summary" : "List of existing jobs",
        "description" : "List of all/filtered jobs created by credentials owner.\n",
        "operationId" : "jobsGet_1",
        "parameters" : [ {
          "name" : "jobDescription",
          "in" : "query",
          "description" : "Search keywords in job description\n",
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "idGeofence",
          "in" : "query",
          "description" : "Filter by Geofence ID this job is assigned to\n",
          "schema" : {
            "type" : "integer",
            "format" : "int64"
          }
        }, {
          "name" : "idCustomer",
          "in" : "query",
          "description" : "Filter jobs by Customer ID this job is assigned to\n",
          "schema" : {
            "type" : "integer",
            "format" : "int64"
          }
        }, {
          "name" : "startTime",
          "in" : "query",
          "description" : "Filter jobs by planned start time. Milliseconds since Unix Epoch (unixtime), use gt, ge, lt, le as prefix to filter, e.g. 'le1494329000000'\n",
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "dueDate",
          "in" : "query",
          "description" : "Filter jobs by due date. Milliseconds since Unix Epoch (unixtime), use gt, ge, lt, le as prefix to filter, e.g. 'le1494329000000'\n",
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "currentState",
          "in" : "query",
          "description" : "Filter jobs by job state.\n",
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "assignedUsers",
          "in" : "query",
          "description" : "Filter by comma separated IDs list of users this job is assigned to.\n",
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "realStartTime",
          "in" : "query",
          "description" : "Filter by job real start date. Milliseconds since Unix Epoch (unixtime), use gt, ge, lt, le as prefix to filter, e.g. 'le1494329000000'\n",
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "realEndTime",
          "in" : "query",
          "description" : "Filter by real end date and time. Milliseconds since Unix Epoch (unixtime), use gt, ge, lt, le as prefix to filter, e.g. 'le1494329000000'\n",
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "endTime",
          "in" : "query",
          "description" : "Filter by planned end date and time. Milliseconds since Unix Epoch (unixtime), use gt, ge, lt, le as prefix to filter, e.g. 'le1494329000000'\n",
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "sort",
          "in" : "query",
          "description" : "Ability to sort by specified fields. Default 'realStartTime'\n",
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "fields",
          "in" : "query",
          "description" : "Comma separated list of fields that should be returned.\n",
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "offset",
          "in" : "query",
          "description" : "Zero based pagination (e.g. first page = 0, 3rd page = 2 x limit).\n",
          "schema" : {
            "type" : "integer",
            "format" : "int32"
          }
        }, {
          "name" : "limit",
          "in" : "query",
          "description" : "Page size. The maximum results size per page.\n",
          "schema" : {
            "type" : "integer",
            "format" : "int32"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Response containing details and an array of jobs\n",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/JobsModel"
                }
              }
            }
          },
          "default" : {
            "description" : "Error containing error code, optionally affected fields and a message\n",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorModel"
                }
              }
            }
          }
        },
        "security" : [ {
          "OAuth2" : [ "read" ]
        } ],
        "x-cli-description" : "List jobs with filters for customer, geofence, assignee, state, and time.",
        "x-cli-aliases" : [ "list-jobs" ]
      },
      "put" : {
        "tags" : [ "Jobs" ],
        "summary" : "Update job",
        "description" : "Update existing job. Returns job with updated parameters.\n",
        "operationId" : "jobsPut_1",
        "requestBody" : {
          "description" : "The job JSON you want to update, ID must be provided.\n",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/UpdateJobModel"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Updated job with ID and details.\n",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/JobExtendedModel"
                }
              }
            }
          },
          "default" : {
            "description" : "Error containing error code, optionally affected fields and a message\n",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorModel"
                }
              }
            }
          }
        },
        "security" : [ {
          "OAuth2" : [ "write" ]
        } ]
      },
      "post" : {
        "tags" : [ "Jobs" ],
        "summary" : "Create new job",
        "description" : "Creates new job and returns created job with his unique ID.\n",
        "operationId" : "jobsPost_1",
        "requestBody" : {
          "description" : "The job JSON you want to create\n",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/CreateJobModel"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Created job with ID.\n",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/JobModel"
                }
              }
            }
          },
          "default" : {
            "description" : "Error containing error code, optionally affected fields and a message\n",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorModel"
                }
              }
            }
          }
        },
        "security" : [ {
          "OAuth2" : [ "write" ]
        } ]
      }
    },
    "/jobs/{id}" : {
      "get" : {
        "tags" : [ "Jobs" ],
        "summary" : "Get job by ID",
        "description" : "Returns one job identified by ID\n",
        "operationId" : "jobsIdGet_1",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "ID of the job\n",
          "required" : true,
          "schema" : {
            "type" : "integer",
            "format" : "int64"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Successfull, returns requested job details\n",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/JobExtendedModel"
                }
              }
            }
          },
          "default" : {
            "description" : "Error containing error code, optionally affected fields and a message\n",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorModel"
                }
              }
            }
          }
        },
        "security" : [ {
          "OAuth2" : [ "read" ]
        } ],
        "x-cli-name" : "job",
        "x-cli-description" : "Get one job by ID.",
        "x-cli-aliases" : [ "get-job" ]
      },
      "delete" : {
        "tags" : [ "Jobs" ],
        "summary" : "Removes job by ID",
        "description" : "Removes job.\n",
        "operationId" : "jobsIdDelete_1",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "ID of the job\n",
          "required" : true,
          "schema" : {
            "type" : "integer",
            "format" : "int64"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Successfull removal\n"
          },
          "default" : {
            "description" : "Error containing error code, optionally affected fields and a message\n",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorModel"
                }
              }
            }
          }
        },
        "security" : [ {
          "OAuth2" : [ "write" ]
        } ]
      }
    },
    "/map/sharings" : {
      "get" : {
        "tags" : [ "Map" ],
        "summary" : "List of available map sharings",
        "description" : "The map sharing endpoint returns list of all shares that are available for current user.\n",
        "operationId" : "mapSharingGet_1",
        "parameters" : [ {
          "name" : "fields",
          "in" : "query",
          "description" : "Comma separated list of fields that should be returned.\n",
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Response containing details and an array of map sharings\n",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/MapSharingsModel"
                }
              }
            }
          },
          "default" : {
            "description" : "Error containing error code, optionally affected fields and a message\n",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorModel"
                }
              }
            }
          }
        },
        "security" : [ {
          "OAuth2" : [ "read" ]
        } ],
        "x-cli-name" : "map-shares",
        "x-cli-description" : "List public map sharing links available to the authenticated account.",
        "x-cli-aliases" : [ "shared-maps", "list-map-shares" ]
      },
      "put" : {
        "tags" : [ "Map" ],
        "summary" : "Update new shared map.",
        "description" : "Update existing shared map. Returns updated shared map.\n",
        "operationId" : "mapSharingsPut_1",
        "requestBody" : {
          "description" : "The JSON definition of shared map you want to update. Parameter id is required.\n",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/UpdateMapSharingModel"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Updated shared map with ID.\n",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/MapSharingModel"
                }
              }
            }
          },
          "default" : {
            "description" : "Error containing error code, optionally affected fields and a message\n",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorModel"
                }
              }
            }
          }
        },
        "security" : [ {
          "OAuth2" : [ "write" ]
        } ]
      },
      "post" : {
        "tags" : [ "Map" ],
        "summary" : "Create new shared map.",
        "description" : "Creates new and returns created shared map with his unique ID.\n",
        "operationId" : "mapSharingsPost_1",
        "requestBody" : {
          "description" : "The JSON definition of shared map you want to create. Parameter type is required.\n",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/CreateMapSharingModel"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Created shared map with ID.\n",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/MapSharingModel"
                }
              }
            }
          },
          "default" : {
            "description" : "Error containing error code, optionally affected fields and a message\n",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorModel"
                }
              }
            }
          }
        },
        "security" : [ {
          "OAuth2" : [ "write" ]
        } ]
      }
    },
    "/map/sharings/{id}" : {
      "get" : {
        "tags" : [ "Map" ],
        "summary" : "Get map sharing by ID",
        "description" : "Returns map sharing identified by ID\n",
        "operationId" : "mapSharingIdGet_1",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "ID of the map sharing\n",
          "required" : true,
          "schema" : {
            "type" : "integer",
            "format" : "int64"
          }
        }, {
          "name" : "fields",
          "in" : "query",
          "description" : "Comma separated list of fields that should be returned.\n",
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Successfull, returns requested map sharing\n",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/MapSharingModel"
                }
              }
            }
          },
          "default" : {
            "description" : "Error containing error code, optionally affected fields and a message\n",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorModel"
                }
              }
            }
          }
        },
        "security" : [ {
          "OAuth2" : [ "read" ]
        } ],
        "x-cli-name" : "map-share",
        "x-cli-description" : "Get one map sharing link by ID.",
        "x-cli-aliases" : [ "shared-map" ]
      },
      "delete" : {
        "tags" : [ "Map" ],
        "summary" : "Removes map sharing by ID",
        "description" : "Remove map sharing\n",
        "operationId" : "mapSharingIdDelete_1",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "ID of the map sharing\n",
          "required" : true,
          "schema" : {
            "type" : "integer",
            "format" : "int64"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Successfull removal\n"
          },
          "default" : {
            "description" : "Error containing error code, optionally affected fields and a message\n",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorModel"
                }
              }
            }
          }
        },
        "security" : [ {
          "OAuth2" : [ "write" ]
        } ]
      }
    },
    "/mileage-rates/settings" : {
      "get" : {
        "tags" : [ "Mileage Rates" ],
        "summary" : "Get mileage-rate settings",
        "description" : "Returns the current mileage-rate settings for the authenticated account.\n\nThe `option` value identifies the selected mileage-rate configuration:\n- `NOT_SET`: no mileage-rate preference has been configured\n- `DISABLED`: mileage rates are disabled\n- `COUNTRY`: country-standard mileage rates are selected\n- `CUSTOM`: custom/user-defined mileage rates are selected\n",
        "operationId" : "mileageRatesSettingsGet_1",
        "parameters" : [ {
          "name" : "fields",
          "in" : "query",
          "description" : "Comma separated list of fields that should be returned.\n",
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Current mileage-rate settings.\n",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/MileageRateSettingsModel"
                }
              }
            }
          },
          "default" : {
            "description" : "Error containing error code, optionally affected fields and a message.\n",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorModel"
                }
              }
            }
          }
        },
        "security" : [ {
          "OAuth2" : [ "read" ]
        } ],
        "x-mct-badge" : {
          "value" : "NEW"
        },
        "x-cli-description" : "Get current mileage-rate settings for the authenticated account.",
        "x-cli-aliases" : [ "mileage-rates-settings" ]
      }
    },
    "/reports/logbook/export" : {
      "post" : {
        "tags" : [ "Reports" ],
        "summary" : "Export logbook report",
        "description" : "Generates a logbook report for the authenticated API v3 user and returns it as a downloadable file. Select the output type with `format` (`PDF`, `XLS`, `CSV`, or `XML`). Date fields use Unix epoch milliseconds. When `vehicleIds` or `driverIds` are omitted or empty, all vehicles or drivers available to the authenticated user are included. Successful logbook exports consume the user's generated-report allowance.\n",
        "operationId" : "reportsLogbookExportPost_1",
        "requestBody" : {
          "description" : "Logbook report filters and export options.",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/LogBookReportExportRequestModel"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Binary report file. The filename is returned in the Content-Disposition header.",
            "content" : {
              "application/pdf" : { },
              "application/vnd.ms-excel" : { },
              "text/csv" : { },
              "application/xml" : { }
            }
          },
          "default" : {
            "description" : "Error containing error code, optionally affected fields and a message",
            "content" : {
              "application/pdf" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorModel"
                }
              },
              "application/vnd.ms-excel" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorModel"
                }
              },
              "text/csv" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorModel"
                }
              },
              "application/xml" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorModel"
                }
              }
            }
          }
        },
        "security" : [ {
          "OAuth2" : [ "write" ]
        } ],
        "x-mct-badge" : {
          "value" : "NEW"
        },
        "x-cli-ignore" : true
      }
    },
    "/reports/reimbursement/export" : {
      "post" : {
        "tags" : [ "Reports" ],
        "summary" : "Export mileage reimbursement report",
        "description" : "Generates a mileage reimbursement report for the authenticated API v3 user and returns it as a downloadable file. The export uses the same logbook filters plus reimbursement options such as `selectedApplyReimbursement`, `selectedPurposeOverride`, `selectedRateType`, `selectedCountry`, `selectedTrackPurpose`, and optional `rate` overrides. Select the output type with `format` (`PDF`, `XLS`, `CSV`, or `XML`). Successful mileage reimbursement exports consume the user's generated-report allowance.\n",
        "operationId" : "reportsReimbursementExportPost_1",
        "requestBody" : {
          "description" : "Logbook filters plus mileage reimbursement and rate options.",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ReimbursementReportExportRequestModel"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Binary report file. The filename is returned in the Content-Disposition header.",
            "content" : {
              "application/pdf" : { },
              "application/vnd.ms-excel" : { },
              "text/csv" : { },
              "application/xml" : { }
            }
          },
          "default" : {
            "description" : "Error containing error code, optionally affected fields and a message",
            "content" : {
              "application/pdf" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorModel"
                }
              },
              "application/vnd.ms-excel" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorModel"
                }
              },
              "text/csv" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorModel"
                }
              },
              "application/xml" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorModel"
                }
              }
            }
          }
        },
        "security" : [ {
          "OAuth2" : [ "write" ]
        } ],
        "x-mct-badge" : {
          "value" : "NEW"
        },
        "x-cli-ignore" : true
      }
    },
    "/reports/stops/export" : {
      "post" : {
        "tags" : [ "Reports" ],
        "summary" : "Export stops report",
        "description" : "Generates a stops report for the authenticated API v3 user and returns it as a downloadable file. Select the output type with `format` (`PDF`, `XLS`, `CSV`, or `XML`). Date fields use Unix epoch milliseconds. Stops exports do not consume the generated-report allowance, matching the current web export behavior.\n",
        "operationId" : "reportsStopsExportPost_1",
        "requestBody" : {
          "description" : "Stops report filters and export options.",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/StopsReportExportRequestModel"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Binary report file. The filename is returned in the Content-Disposition header.",
            "content" : {
              "application/pdf" : { },
              "application/vnd.ms-excel" : { },
              "text/csv" : { },
              "application/xml" : { }
            }
          },
          "default" : {
            "description" : "Error containing error code, optionally affected fields and a message",
            "content" : {
              "application/pdf" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorModel"
                }
              },
              "application/vnd.ms-excel" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorModel"
                }
              },
              "text/csv" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorModel"
                }
              },
              "application/xml" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorModel"
                }
              }
            }
          }
        },
        "security" : [ {
          "OAuth2" : [ "write" ]
        } ],
        "x-mct-badge" : {
          "value" : "NEW"
        },
        "x-cli-ignore" : true
      }
    },
    "/trackpoints/{id}" : {
      "get" : {
        "tags" : [ "Tracks" ],
        "summary" : "Get trackpoints by track ID",
        "description" : "Returns all trackpoints for specific track, identified by track ID\n",
        "operationId" : "trackpointsIdGet_1",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "The ID of the track whose trackpoints (positions) you want to retrieve\n",
          "required" : true,
          "schema" : {
            "type" : "integer",
            "format" : "int64"
          }
        }, {
          "name" : "measurementUnit",
          "in" : "query",
          "description" : "Override default unit from user settings with this value.\n",
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "sort",
          "in" : "query",
          "description" : "Ability to sort by specified fields.\n",
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "fields",
          "in" : "query",
          "description" : "Comma separated list of fields that should be returned.\n",
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "offset",
          "in" : "query",
          "description" : "Zero based pagination (e.g. first page = 0, 3rd page = 2 x limit).\n",
          "schema" : {
            "type" : "integer",
            "format" : "int32"
          }
        }, {
          "name" : "limit",
          "in" : "query",
          "description" : "Page size. The maximum results size per page.\n",
          "schema" : {
            "type" : "integer",
            "format" : "int32"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Successfull, returns requested trackpoints\n",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/TrackpointsModel"
                }
              }
            }
          },
          "default" : {
            "description" : "Error containing error code, optionally affected fields and a message\n",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorModel"
                }
              }
            }
          }
        },
        "security" : [ {
          "OAuth2" : [ "read" ]
        } ],
        "x-cli-description" : "List recorded positions for one track.",
        "x-cli-aliases" : [ "track-points" ]
      }
    },
    "/tracks2" : {
      "get" : {
        "tags" : [ "Tracks" ],
        "summary" : "List tracks enhanced",
        "description" : "Enhanced version of GET /tracks. It keeps the same track filters but improves pagination metadata, validates page size and offset, and applies supported sorting before paging so pages stay deterministic.\nGET /tracks remains unchanged for backwards compatibility.\n\nPaging:\n- offset is a zero-based row offset. First page is 0.\n- limit defaults to 100 and is capped at 500.\n- hasMore tells whether another page exists.\n- nextOffset contains the next offset when hasMore is true.\n",
        "operationId" : "tracks2Get_1",
        "parameters" : [ {
          "name" : "userId",
          "in" : "query",
          "description" : "Filter tracks by user ID. Single-value alias for userIds.\n",
          "schema" : {
            "type" : "integer",
            "format" : "int64"
          }
        }, {
          "name" : "userIds",
          "in" : "query",
          "description" : "Comma separated driver/user IDs. When both userId and userIds are provided, both filters are combined.\n",
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "carId",
          "in" : "query",
          "description" : "Filter tracks by car ID. Single-value alias for vehicleIds.\n",
          "schema" : {
            "type" : "integer",
            "format" : "int64"
          }
        }, {
          "name" : "vehicleIds",
          "in" : "query",
          "description" : "Comma separated vehicle IDs. When both carId and vehicleIds are provided, both filters are combined.\n",
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "category",
          "in" : "query",
          "description" : "Filter tracks by track category (PERSONAL | BUSINESS).\n",
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "startTime",
          "in" : "query",
          "description" : "Filter tracks where track's start date is higher and equal than startTime param. Unix timestamp format in millis.\n",
          "schema" : {
            "type" : "integer",
            "format" : "int64"
          }
        }, {
          "name" : "endTime",
          "in" : "query",
          "description" : "Filter tracks where track's start date is lower and equal than endTime param. Unix timestamp format in millis.\n",
          "schema" : {
            "type" : "integer",
            "format" : "int64"
          }
        }, {
          "name" : "updatedFrom",
          "in" : "query",
          "description" : "Filter tracks where track's updated date is higher and equal than updatedFrom param. Unix timestamp format in millis.\n",
          "schema" : {
            "type" : "integer",
            "format" : "int64"
          }
        }, {
          "name" : "updatedTo",
          "in" : "query",
          "description" : "Filter tracks where track's updated date is lower and equal than updatedTo param. Unix timestamp format in millis.\n",
          "schema" : {
            "type" : "integer",
            "format" : "int64"
          }
        }, {
          "name" : "measurementUnit",
          "in" : "query",
          "description" : "Override default unit from user settings with this value.\n",
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "sort",
          "in" : "query",
          "description" : "Sort applied before paging. Supported values: startTime, -startTime, updated, -updated, id, -id, totalDistance, -totalDistance, maxSpeed, -maxSpeed. Default: -startTime.\n",
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "fields",
          "in" : "query",
          "description" : "Comma separated list of fields that should be returned.\n",
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "offset",
          "in" : "query",
          "description" : "Zero based row offset. First page = 0, next page = nextOffset from the previous response.\n",
          "schema" : {
            "type" : "integer",
            "format" : "int32"
          }
        }, {
          "name" : "limit",
          "in" : "query",
          "description" : "Page size. Defaults to 100 and is capped at 500.\n",
          "schema" : {
            "type" : "integer",
            "format" : "int32"
          }
        }, {
          "name" : "includeTotal",
          "in" : "query",
          "description" : "When true, response includes totalCount for the current filters. Defaults to false.\n",
          "schema" : {
            "type" : "boolean"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Enhanced response containing paging metadata and an array of tracks.\n",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Tracks2Model"
                }
              }
            }
          },
          "default" : {
            "description" : "Error containing error code, optionally affected fields and a message.\n",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorModel"
                }
              }
            }
          }
        },
        "security" : [ {
          "OAuth2" : [ "read" ]
        } ],
        "x-mct-badge" : {
          "value" : "NEW"
        },
        "x-cli-name" : "tracks",
        "x-cli-description" : "List tracks with deterministic paging, filters, sorting, and optional total count.",
        "x-cli-aliases" : [ "list-tracks", "tracks2" ]
      }
    },
    "/tracks" : {
      "get" : {
        "tags" : [ "Tracks" ],
        "summary" : "List of available tracks",
        "description" : "The tracks endpoint returns list of all tracks that are available for current user.\n",
        "operationId" : "tracksGet_1",
        "parameters" : [ {
          "name" : "userId",
          "in" : "query",
          "description" : "Filter tracks by user ID. Single-value alias for userIds.\n",
          "schema" : {
            "type" : "integer",
            "format" : "int64"
          }
        }, {
          "name" : "userIds",
          "in" : "query",
          "description" : "Comma separated driver/user IDs. When both userId and userIds are provided, both filters are combined.\n",
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "carId",
          "in" : "query",
          "description" : "Filter tracks by car ID. Single-value alias for vehicleIds.\n",
          "schema" : {
            "type" : "integer",
            "format" : "int64"
          }
        }, {
          "name" : "vehicleIds",
          "in" : "query",
          "description" : "Comma separated vehicle IDs. When both carId and vehicleIds are provided, both filters are combined.\n",
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "category",
          "in" : "query",
          "description" : "Filter tracks by track category (PERSONAL | BUSINESS).\n",
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "startTime",
          "in" : "query",
          "description" : "Filter tracks where track's start date is higher and equal than startTime param. Unix timestamp format in millis.\n",
          "schema" : {
            "type" : "integer",
            "format" : "int64"
          }
        }, {
          "name" : "endTime",
          "in" : "query",
          "description" : "Filter tracks where track's start date is lower and equal than endTime param. Unix timestamp format in millis.\n",
          "schema" : {
            "type" : "integer",
            "format" : "int64"
          }
        }, {
          "name" : "updatedFrom",
          "in" : "query",
          "description" : "Filter tracks where track's updated date is higher and equal than updatedFrom param. Unix timestamp format in millis.\n",
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "updatedTo",
          "in" : "query",
          "description" : "Filter tracks where track's updated date is lower and equal than updatedTo param. Unix timestamp format in millis.\n",
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "measurementUnit",
          "in" : "query",
          "description" : "Override default unit from user settings with this value.\n",
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "sort",
          "in" : "query",
          "description" : "Ability to sort by specified fields.\n",
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "fields",
          "in" : "query",
          "description" : "Comma separated list of fields that should be returned.\n",
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "offset",
          "in" : "query",
          "description" : "Zero based pagination (e.g. first page = 0, 3rd page = 2 x limit).\n",
          "schema" : {
            "type" : "integer",
            "format" : "int32"
          }
        }, {
          "name" : "limit",
          "in" : "query",
          "description" : "Page size. The maximum results size per page.\n",
          "schema" : {
            "type" : "integer",
            "format" : "int32"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Response containing details and an array of tracks\n",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/TracksModel"
                }
              }
            }
          },
          "default" : {
            "description" : "Error containing error code, optionally affected fields and a message\n",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorModel"
                }
              }
            }
          }
        },
        "security" : [ {
          "OAuth2" : [ "read" ]
        } ],
        "x-cli-ignore" : true
      },
      "put" : {
        "tags" : [ "Tracks" ],
        "summary" : "Update track",
        "description" : "Update existing track. Returns track with updated parameters that can be updated.\n",
        "operationId" : "tracksPut_1",
        "requestBody" : {
          "description" : "The track JSON you want to update, ID must be provided.\n",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/UpdateTrackModel"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Created track with ID.\n",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/TrackModel"
                }
              }
            }
          },
          "default" : {
            "description" : "Error containing error code, optionally affected fields and a message\n",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorModel"
                }
              }
            }
          }
        },
        "security" : [ {
          "OAuth2" : [ "write" ]
        } ]
      },
      "post" : {
        "tags" : [ "Tracks" ],
        "summary" : "Create new track",
        "description" : "Creates new track and returns created track with his unique ID.\n",
        "operationId" : "tracksPost_1",
        "requestBody" : {
          "description" : "The track JSON you want to create\n",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/CreateTrackModel"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Created track with ID.\n",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/TrackModel"
                }
              }
            }
          },
          "default" : {
            "description" : "Error containing error code, optionally affected fields and a message\n",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorModel"
                }
              }
            }
          }
        },
        "security" : [ {
          "OAuth2" : [ "write" ]
        } ]
      }
    },
    "/tracks/{id}" : {
      "get" : {
        "tags" : [ "Tracks" ],
        "summary" : "Get track by ID",
        "description" : "Returns track identified by ID\n",
        "operationId" : "tracksIdGet_1",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "ID of the track\n",
          "required" : true,
          "schema" : {
            "type" : "integer",
            "format" : "int64"
          }
        }, {
          "name" : "measurementUnit",
          "in" : "query",
          "description" : "Override default unit from user settings with this value.\n",
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "exportTrackpointsType",
          "in" : "query",
          "description" : "If set response will contain the requested data. Use KML, CSV or GPX.\n",
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "fields",
          "in" : "query",
          "description" : "Comma separated list of fields that should be returned.\n",
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Successfull, returns requested track\n",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/TrackModel"
                }
              }
            }
          },
          "default" : {
            "description" : "Error containing error code, optionally affected fields and a message\n",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorModel"
                }
              }
            }
          }
        },
        "security" : [ {
          "OAuth2" : [ "read" ]
        } ],
        "x-cli-name" : "track",
        "x-cli-description" : "Get one track by ID.",
        "x-cli-aliases" : [ "get-track" ]
      },
      "delete" : {
        "tags" : [ "Tracks" ],
        "summary" : "Remove track by ID",
        "description" : "Remove entirely track with all trackpoints\n",
        "operationId" : "tracksIdDelete_1",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "ID of the track\n",
          "required" : true,
          "schema" : {
            "type" : "integer",
            "format" : "int64"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Successfull removal\n"
          },
          "default" : {
            "description" : "Error containing error code, optionally affected fields and a message\n",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorModel"
                }
              }
            }
          }
        },
        "security" : [ {
          "OAuth2" : [ "write" ]
        } ]
      }
    },
    "/users" : {
      "get" : {
        "tags" : [ "Users" ],
        "summary" : "Users that are in any connection",
        "description" : "List of users that are connected to you, either a driver or any of user you created (admin, manager, user)\n",
        "operationId" : "usersGet_1",
        "parameters" : [ {
          "name" : "email",
          "in" : "query",
          "description" : "Filter users by email or Account ID. If codeUser is TRUE then it contains Account ID. Searches for any occurence.\n",
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "name",
          "in" : "query",
          "description" : "Filter users by user name. Searches for any occurence.\n",
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "address",
          "in" : "query",
          "description" : "Filter users by user address. Searches for any occurence.\n",
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "phone",
          "in" : "query",
          "description" : "Filter users by user phone number. Searches for any occurence.\n",
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "codeUser",
          "in" : "query",
          "description" : "Filter users that are Account ID or standard email.\n",
          "schema" : {
            "type" : "boolean"
          }
        }, {
          "name" : "contactEmail",
          "in" : "query",
          "description" : "Filter users by contact email. This applies only for Account ID users.\n",
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "sort",
          "in" : "query",
          "description" : "Ability to sort by specified fields.\n",
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "fields",
          "in" : "query",
          "description" : "Comma separated list of fields that should be returned.\n",
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "offset",
          "in" : "query",
          "description" : "Zero based pagination (e.g. first page = 0, 3rd page = 2 x limit).\n",
          "schema" : {
            "type" : "integer",
            "format" : "int32"
          }
        }, {
          "name" : "limit",
          "in" : "query",
          "description" : "Page size. The maximum results size per page.\n",
          "schema" : {
            "type" : "integer",
            "format" : "int32"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Response containing details and an array of users\n",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/UsersModel"
                }
              }
            }
          },
          "default" : {
            "description" : "Error containing error code, optionally affected fields and a message\n",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorModel"
                }
              }
            }
          }
        },
        "security" : [ {
          "OAuth2" : [ "read" ]
        } ],
        "x-cli-description" : "List users and drivers connected to the authenticated account.",
        "x-cli-aliases" : [ "list-users", "drivers" ]
      },
      "put" : {
        "tags" : [ "Users" ],
        "summary" : "Updates user",
        "description" : "Update existing user. Returns user with updated parameters that can be updated.\n",
        "operationId" : "usersPut_1",
        "requestBody" : {
          "description" : "The User JSON you want to update, ID must be provided.\n",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/UpdateUserModel"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Created user with ID and optionally created Account ID.\n",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/UserModel"
                }
              }
            }
          },
          "default" : {
            "description" : "Error containing error code, optionally affected fields and a message\n",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorModel"
                }
              }
            }
          }
        },
        "security" : [ {
          "OAuth2" : [ "write" ]
        } ]
      },
      "post" : {
        "tags" : [ "Users" ],
        "summary" : "Create new user",
        "description" : "Create new user. Returns created user with ID and optionally created Account ID.\nYou have to share at least one vehicle with this user. If you know that user with certain\nemail exists but you don't know his ID, then leave ID empty and enter his email (or Account ID).\n",
        "operationId" : "usersPost_1",
        "requestBody" : {
          "description" : "The User JSON you want to create\n",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/CreateUserModel"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Created user with ID and optionally created Account ID.\n",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/UserModel"
                }
              }
            }
          },
          "default" : {
            "description" : "Error containing error code, optionally affected fields and a message\n",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorModel"
                }
              }
            }
          }
        },
        "security" : [ {
          "OAuth2" : [ "write" ]
        } ]
      }
    },
    "/users/groups" : {
      "get" : {
        "tags" : [ "Users" ],
        "summary" : "User groups",
        "description" : "List of user groups\n",
        "operationId" : "usersGroupsGet_1",
        "parameters" : [ {
          "name" : "fields",
          "in" : "query",
          "description" : "Comma separated list of fields that should be returned.\n",
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "offset",
          "in" : "query",
          "description" : "Zero based pagination (e.g. first page = 0, 3rd page = 2 x limit).\n",
          "schema" : {
            "type" : "integer",
            "format" : "int32"
          }
        }, {
          "name" : "limit",
          "in" : "query",
          "description" : "Page size. The maximum results size per page.\n",
          "schema" : {
            "type" : "integer",
            "format" : "int32"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Response containing details and an array of user groups\n",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/GroupsModel"
                }
              }
            }
          },
          "default" : {
            "description" : "Error containing error code, optionally affected fields and a message\n",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorModel"
                }
              }
            }
          }
        },
        "security" : [ {
          "OAuth2" : [ "read" ]
        } ],
        "x-cli-name" : "user-groups",
        "x-cli-description" : "List user and driver groups.",
        "x-cli-aliases" : [ "driver-groups", "list-user-groups" ]
      },
      "put" : {
        "tags" : [ "Users" ],
        "summary" : "Update user group",
        "description" : "Update existing user group. Returns user group with updated parameters.\n",
        "operationId" : "usersGroupsPut_1",
        "requestBody" : {
          "description" : "The UserGroup JSON you want to update, ID must be provided.\n",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/UpdateGroupModel"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Created user group with ID.\n",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/GroupModel"
                }
              }
            }
          },
          "default" : {
            "description" : "Error containing error code, optionally affected fields and a message\n",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorModel"
                }
              }
            }
          }
        },
        "security" : [ {
          "OAuth2" : [ "write" ]
        } ]
      },
      "post" : {
        "tags" : [ "Users" ],
        "summary" : "Create user group",
        "description" : "Create new user group. Returns created user group with ID.\n",
        "operationId" : "usersGroupsPost_1",
        "requestBody" : {
          "description" : "The User JSON you want to create\n",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/CreateGroupModel"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Created user group with ID.\n",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/GroupModel"
                }
              }
            }
          },
          "default" : {
            "description" : "Error containing error code, optionally affected fields and a message\n",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorModel"
                }
              }
            }
          }
        },
        "security" : [ {
          "OAuth2" : [ "write" ]
        } ]
      }
    },
    "/users/groups/{id}" : {
      "delete" : {
        "tags" : [ "Users" ],
        "summary" : "Remove user group",
        "description" : "Remove user group by ID\n",
        "operationId" : "usersGroupsIdDelete_1",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "ID of the user group\n",
          "required" : true,
          "schema" : {
            "type" : "integer",
            "format" : "int64"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Successfull removal\n"
          },
          "default" : {
            "description" : "Error containing error code, optionally affected fields and a message\n",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorModel"
                }
              }
            }
          }
        },
        "security" : [ {
          "OAuth2" : [ "write" ]
        } ]
      }
    },
    "/users/groups/{id}/members" : {
      "get" : {
        "tags" : [ "Users" ],
        "summary" : "List group members",
        "description" : "List of all members of an user group\n",
        "operationId" : "usersGroupsIdMembersGet_1",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "ID of the user group\n",
          "required" : true,
          "schema" : {
            "type" : "integer",
            "format" : "int64"
          }
        }, {
          "name" : "fields",
          "in" : "query",
          "description" : "Comma separated list of fields that should be returned.\n",
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Response containing details and an array of user group members\n",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/GroupMembersModel"
                }
              }
            }
          },
          "default" : {
            "description" : "Error containing error code, optionally affected fields and a message\n",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorModel"
                }
              }
            }
          }
        },
        "security" : [ {
          "OAuth2" : [ "read" ]
        } ]
      },
      "post" : {
        "tags" : [ "Users" ],
        "summary" : "Add members to user group",
        "description" : "Adds defined members into user group\n",
        "operationId" : "usersGroupsIdMembersPost_1",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "ID of the user group\n",
          "required" : true,
          "schema" : {
            "type" : "integer",
            "format" : "int64"
          }
        } ],
        "requestBody" : {
          "description" : "The JSON array with member IDs you want to add to the group\n",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/AddGroupMembersModel"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Memebers details and array\n",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/GroupMembersModel"
                }
              }
            }
          },
          "default" : {
            "description" : "Error containing error code, optionally affected fields and a message\n",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorModel"
                }
              }
            }
          }
        },
        "security" : [ {
          "OAuth2" : [ "write" ]
        } ]
      }
    },
    "/users/groups/{id}/members/{memberId}" : {
      "delete" : {
        "tags" : [ "Users" ],
        "summary" : "Remove user group member",
        "description" : "Remove user group member by ID\n",
        "operationId" : "usersGroupsIdMembersMemberIdDelete_1",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "ID of the user group to remove from\n",
          "required" : true,
          "schema" : {
            "type" : "integer",
            "format" : "int64"
          }
        }, {
          "name" : "memberId",
          "in" : "path",
          "description" : "ID of the member to remove\n",
          "required" : true,
          "schema" : {
            "type" : "integer",
            "format" : "int64"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Successfull removal\n"
          },
          "default" : {
            "description" : "Error containing error code, optionally affected fields and a message\n",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorModel"
                }
              }
            }
          }
        },
        "security" : [ {
          "OAuth2" : [ "write" ]
        } ]
      }
    },
    "/users/{id}" : {
      "get" : {
        "tags" : [ "Users" ],
        "summary" : "Get User by ID",
        "description" : "Returns User identified by ID\n",
        "operationId" : "usersIdGet_1",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "ID of the user\n",
          "required" : true,
          "schema" : {
            "type" : "integer",
            "format" : "int64"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Successfull, returns requested User\n",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/UserModel"
                }
              }
            }
          },
          "default" : {
            "description" : "Error containing error code, optionally affected fields and a message\n",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorModel"
                }
              }
            }
          }
        },
        "security" : [ {
          "OAuth2" : [ "read" ]
        } ]
      },
      "delete" : {
        "tags" : [ "Users" ],
        "summary" : "Removes User by ID",
        "description" : "This endpoint doesn't remove the user entirely from the service. It just removes connection to your account.\nUser can be always revoked by sharing a vehicle to this user. Please note that by removing an user you will\nno longer be able to view tracks made by vehicle that this user created with his vehicle but shared with\nyour account unles he share this vehicle again with you.\n",
        "operationId" : "usersIdDelete_1",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "ID of the user\n",
          "required" : true,
          "schema" : {
            "type" : "integer",
            "format" : "int64"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Successfull removal\n"
          },
          "default" : {
            "description" : "Error containing error code, optionally affected fields and a message\n",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorModel"
                }
              }
            }
          }
        },
        "security" : [ {
          "OAuth2" : [ "write" ]
        } ]
      }
    },
    "/users/lastPositions" : {
      "get" : {
        "tags" : [ "Users" ],
        "summary" : "List of users with last positions",
        "description" : "List of users/drivers with their last known positions\n",
        "operationId" : "usersLastPositionsGet_1",
        "parameters" : [ {
          "name" : "count",
          "in" : "query",
          "description" : "Number of last positions returned (all positions are returned by default).\n",
          "schema" : {
            "type" : "integer",
            "format" : "int32"
          }
        }, {
          "name" : "fields",
          "in" : "query",
          "description" : "Comma separated list of fields that should be returned.\n",
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Response containing details and an array of last positions\n",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/LastPostionsModel"
                }
              }
            }
          },
          "default" : {
            "description" : "Error containing error code, optionally affected fields and a message\n",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorModel"
                }
              }
            }
          }
        },
        "security" : [ {
          "OAuth2" : [ "read" ]
        } ],
        "x-cli-name" : "user-positions",
        "x-cli-description" : "List last known positions for accessible users and drivers.",
        "x-cli-aliases" : [ "driver-positions", "users-last-positions" ]
      }
    },
    "/users/lastPositions/{userId}" : {
      "get" : {
        "tags" : [ "Users" ],
        "summary" : "User last position",
        "description" : "Last position of certain user/driver defined by id\n",
        "operationId" : "usersLastPositionsUserIdGet_1",
        "parameters" : [ {
          "name" : "userId",
          "in" : "path",
          "description" : "User ID\n",
          "required" : true,
          "schema" : {
            "type" : "integer",
            "format" : "int64"
          }
        }, {
          "name" : "count",
          "in" : "query",
          "description" : "Number of last positions returned (default 1).\n",
          "schema" : {
            "type" : "integer",
            "format" : "int32"
          }
        }, {
          "name" : "fields",
          "in" : "query",
          "description" : "Comma separated list of fields that should be returned.\n",
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Response containing details and an array of users last positions\n",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/LastPostionModel"
                }
              }
            }
          },
          "default" : {
            "description" : "Error containing error code, optionally affected fields and a message\n",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorModel"
                }
              }
            }
          }
        },
        "security" : [ {
          "OAuth2" : [ "read" ]
        } ],
        "x-cli-name" : "user-position",
        "x-cli-description" : "Get last known positions for one user or driver.",
        "x-cli-aliases" : [ "driver-position", "user-last-position" ]
      }
    },
    "/users/requestPosition/{id}" : {
      "post" : {
        "tags" : [ "Users" ],
        "summary" : "Sends request for last position",
        "description" : "This endpoint sends a request for users position defined by the ID. The call is asynchronous.\nThat means you have to call /users/lastPositions/{id} endpoint after some short time or repeatedly\nto check if the position was send back from the device.\n",
        "operationId" : "usersRequestPositionIdPost_1",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "ID of the user\n",
          "required" : true,
          "schema" : {
            "type" : "integer",
            "format" : "int64"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Successfull position request sent\n"
          },
          "default" : {
            "description" : "Error containing error code, optionally affected fields and a message\n",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorModel"
                }
              }
            }
          }
        },
        "security" : [ {
          "OAuth2" : [ "write" ]
        } ]
      }
    },
    "/users/summaryStats" : {
      "get" : {
        "tags" : [ "Users" ],
        "summary" : "Get individual summary stats for drivers",
        "description" : "Returns summary details for each of your drivers. Summary includes: time interval for data, first drive time, last drive time, total mileage, total time and more (see response)\n",
        "operationId" : "usersSummaryStatsGet_1",
        "parameters" : [ {
          "name" : "startDate",
          "in" : "query",
          "description" : "Filter data where track's start date is higher and equal than startTime param. Unix timestamp format in millis.\n",
          "schema" : {
            "type" : "integer",
            "format" : "int64"
          }
        }, {
          "name" : "endDate",
          "in" : "query",
          "description" : "Filter data where track's start date is lower and equal than endTime param. Unix timestamp format in millis.\n",
          "schema" : {
            "type" : "integer",
            "format" : "int64"
          }
        }, {
          "name" : "category",
          "in" : "query",
          "description" : "Filter data by category (PERSONAL / BUSINESS).\n",
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "summaryMode",
          "in" : "query",
          "description" : "Set the data output mode for daily, monthly or total. Default TOTAL.\n",
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "userId",
          "in" : "query",
          "description" : "Filter by user/driver, ID can be found in the results. You can enter multiple IDs separated with comma or value 'all'.\n",
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "fields",
          "in" : "query",
          "description" : "Comma separated list of fields that should be returned.\n",
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "offset",
          "in" : "query",
          "description" : "Zero based pagination (e.g. first page = 0, 3rd page = 2 x limit).\n",
          "schema" : {
            "type" : "integer",
            "format" : "int32"
          }
        }, {
          "name" : "limit",
          "in" : "query",
          "description" : "Page size. The maximum results size per page.\n",
          "schema" : {
            "type" : "integer",
            "format" : "int32"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Successfull, returns requested summary data\n",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/UserSummaryStatsModel"
                }
              }
            }
          },
          "default" : {
            "description" : "Error containing error code, optionally affected fields and a message\n",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorModel"
                }
              }
            }
          }
        },
        "security" : [ {
          "OAuth2" : [ "read" ]
        } ],
        "x-cli-name" : "user-stats",
        "x-cli-description" : "Get driving summary statistics grouped by user or driver.",
        "x-cli-aliases" : [ "driver-stats", "user-summary-stats" ]
      }
    },
    "/vehicles" : {
      "get" : {
        "tags" : [ "Vehicles" ],
        "summary" : "Vehicles that are yours or shared with you",
        "description" : "List of all vehicles. Response includes also vehicles that are not included in your paid plan.\nUse parameter 'paid' to filter paid or not-paid vehicles.\n",
        "operationId" : "vehiclesGet_1",
        "parameters" : [ {
          "name" : "ownerUserId",
          "in" : "query",
          "description" : "Filter vehicles by owner ID\n",
          "schema" : {
            "type" : "integer",
            "format" : "int64"
          }
        }, {
          "name" : "name",
          "in" : "query",
          "description" : "Filter vehicles by identification name\n",
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "description",
          "in" : "query",
          "description" : "Search and filter by description\n",
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "color",
          "in" : "query",
          "description" : "Filter vehicles by color\n",
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "deviceFilter",
          "in" : "query",
          "description" : "Filter vehicles by phone number or IMEI\n",
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "forbidSharedUserEdit",
          "in" : "query",
          "description" : "Filter vehicles that have forbidden modifications to shared users\n",
          "schema" : {
            "type" : "boolean"
          }
        }, {
          "name" : "sharedUsers",
          "in" : "query",
          "description" : "Filter vehicles by Emails or Account IDs of users that are shared with this vehicle, comma separated for more users.\n",
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "paid",
          "in" : "query",
          "description" : "Filter vehicles that are either paid or not paid\n",
          "schema" : {
            "type" : "boolean"
          }
        }, {
          "name" : "sort",
          "in" : "query",
          "description" : "Ability to sort by specified fields.\n",
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "fields",
          "in" : "query",
          "description" : "Comma separated list of fields that should be returned.\n",
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "offset",
          "in" : "query",
          "description" : "Zero based pagination (e.g. first page = 0, 3rd page = 2 x limit).\n",
          "schema" : {
            "type" : "integer",
            "format" : "int32"
          }
        }, {
          "name" : "limit",
          "in" : "query",
          "description" : "Page size. The maximum results size per page.\n",
          "schema" : {
            "type" : "integer",
            "format" : "int32"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Response containing details and an array of vehicles\n",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/VehiclesModel"
                }
              }
            }
          },
          "default" : {
            "description" : "Error containing error code, optionally affected fields and a message\n",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorModel"
                }
              }
            }
          }
        },
        "security" : [ {
          "OAuth2" : [ "read" ]
        } ],
        "x-cli-description" : "List vehicles available to the authenticated account, including shared vehicles.",
        "x-cli-aliases" : [ "list-vehicles", "cars" ]
      },
      "put" : {
        "tags" : [ "Vehicles" ],
        "summary" : "Update vehicle",
        "description" : "Update existing vehicle. Returns vehicle with updated parameters that can be updated.\nYou can update only vehicles where you're the owner (see ownerUserId).\n",
        "operationId" : "vehiclesPut_1",
        "requestBody" : {
          "description" : "The vehicle JSON you want to update, ID must be provided.\n",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/UpdateVehicleModel"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Created vehicle with ID.\n",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/VehicleModel"
                }
              }
            }
          },
          "default" : {
            "description" : "Error containing error code, optionally affected fields and a message\n",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorModel"
                }
              }
            }
          }
        },
        "security" : [ {
          "OAuth2" : [ "write" ]
        } ]
      },
      "post" : {
        "tags" : [ "Vehicles" ],
        "summary" : "Create new vehicle",
        "description" : "Creates new vehicle and returns created vehicle with his unique ID.\n",
        "operationId" : "vehiclesPost_1",
        "requestBody" : {
          "description" : "The vehicle JSON you want to create\n",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/CreateVehicleModel"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Created vehicle with ID.\n",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/VehicleModel"
                }
              }
            }
          },
          "default" : {
            "description" : "Error containing error code, optionally affected fields and a message\n",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorModel"
                }
              }
            }
          }
        },
        "security" : [ {
          "OAuth2" : [ "write" ]
        } ]
      }
    },
    "/vehicles/groups" : {
      "get" : {
        "tags" : [ "Vehicles" ],
        "summary" : "Vehicles groups",
        "description" : "List of vehicles groups\n",
        "operationId" : "vehiclesGroupsGet_1",
        "parameters" : [ {
          "name" : "fields",
          "in" : "query",
          "description" : "Comma separated list of fields that should be returned.\n",
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "offset",
          "in" : "query",
          "description" : "Zero based pagination (e.g. first page = 0, 3rd page = 2 x limit).\n",
          "schema" : {
            "type" : "integer",
            "format" : "int32"
          }
        }, {
          "name" : "limit",
          "in" : "query",
          "description" : "Page size. The maximum results size per page.\n",
          "schema" : {
            "type" : "integer",
            "format" : "int32"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Response containing details and an array of vehicles groups\n",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/GroupsModel"
                }
              }
            }
          },
          "default" : {
            "description" : "Error containing error code, optionally affected fields and a message\n",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorModel"
                }
              }
            }
          }
        },
        "security" : [ {
          "OAuth2" : [ "read" ]
        } ],
        "x-cli-name" : "vehicle-groups",
        "x-cli-description" : "List vehicle groups.",
        "x-cli-aliases" : [ "car-groups", "list-vehicle-groups" ]
      },
      "put" : {
        "tags" : [ "Vehicles" ],
        "summary" : "Update vehicles group",
        "description" : "Update existing vehicles group. Returns vehicles group with updated parameters.\n",
        "operationId" : "vehiclesGroupsPut_1",
        "requestBody" : {
          "description" : "The vehicles group JSON you want to update, ID must be provided.\n",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/UpdateGroupModel"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Created vehicles group with ID.\n",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/GroupModel"
                }
              }
            }
          },
          "default" : {
            "description" : "Error containing error code, optionally affected fields and a message\n",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorModel"
                }
              }
            }
          }
        },
        "security" : [ {
          "OAuth2" : [ "write" ]
        } ]
      },
      "post" : {
        "tags" : [ "Vehicles" ],
        "summary" : "Create vehicles group",
        "description" : "Create new vehicles group. Returns created vehicles group with ID.\n",
        "operationId" : "vehiclesGroupsPost_1",
        "requestBody" : {
          "description" : "The vehicles group JSON you want to create\n",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/CreateGroupModel"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Created vehicles group with ID.\n",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/GroupModel"
                }
              }
            }
          },
          "default" : {
            "description" : "Error containing error code, optionally affected fields and a message\n",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorModel"
                }
              }
            }
          }
        },
        "security" : [ {
          "OAuth2" : [ "write" ]
        } ]
      }
    },
    "/vehicles/groups/{id}" : {
      "delete" : {
        "tags" : [ "Vehicles" ],
        "summary" : "Remove vehicles group",
        "description" : "Remove vehicles group by ID\n",
        "operationId" : "vehiclesGroupsIdDelete_1",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "ID of the vehicles group\n",
          "required" : true,
          "schema" : {
            "type" : "integer",
            "format" : "int64"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Successfull removal\n"
          },
          "default" : {
            "description" : "Error containing error code, optionally affected fields and a message\n",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorModel"
                }
              }
            }
          }
        },
        "security" : [ {
          "OAuth2" : [ "write" ]
        } ]
      }
    },
    "/vehicles/groups/{id}/members" : {
      "get" : {
        "tags" : [ "Vehicles" ],
        "summary" : "List group members",
        "description" : "List of all members of a vehicles group\n",
        "operationId" : "vehiclesGroupsIdMembersGet_1",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "ID of the vehicles group\n",
          "required" : true,
          "schema" : {
            "type" : "integer",
            "format" : "int64"
          }
        }, {
          "name" : "fields",
          "in" : "query",
          "description" : "Comma separated list of fields that should be returned.\n",
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Response containing details and an array of vehicles group members\n",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/GroupMembersModel"
                }
              }
            }
          },
          "default" : {
            "description" : "Error containing error code, optionally affected fields and a message\n",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorModel"
                }
              }
            }
          }
        },
        "security" : [ {
          "OAuth2" : [ "read" ]
        } ]
      },
      "post" : {
        "tags" : [ "Vehicles" ],
        "summary" : "Add members to vehicles group",
        "description" : "Adds defined members into vehicles group\n",
        "operationId" : "vehiclesGroupsIdMembersPost_1",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "ID of the user group\n",
          "required" : true,
          "schema" : {
            "type" : "integer",
            "format" : "int64"
          }
        } ],
        "requestBody" : {
          "description" : "The JSON array with member IDs you want to add to the group\n",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/AddGroupMembersModel"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Memebers details and array\n",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/GroupMembersModel"
                }
              }
            }
          },
          "default" : {
            "description" : "Error containing error code, optionally affected fields and a message\n",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorModel"
                }
              }
            }
          }
        },
        "security" : [ {
          "OAuth2" : [ "write" ]
        } ]
      }
    },
    "/vehicles/groups/{id}/members/{memberId}" : {
      "delete" : {
        "tags" : [ "Vehicles" ],
        "summary" : "Remove vehicles group member",
        "description" : "Remove vehicles group member by ID\n",
        "operationId" : "vehiclesGroupsIdMembersMemberIdDelete_1",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "ID of the vehicle group to remove from\n",
          "required" : true,
          "schema" : {
            "type" : "integer",
            "format" : "int64"
          }
        }, {
          "name" : "memberId",
          "in" : "path",
          "description" : "ID of the member to remove\n",
          "required" : true,
          "schema" : {
            "type" : "integer",
            "format" : "int64"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Successfull removal\n"
          },
          "default" : {
            "description" : "Error containing error code, optionally affected fields and a message\n",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorModel"
                }
              }
            }
          }
        },
        "security" : [ {
          "OAuth2" : [ "write" ]
        } ]
      }
    },
    "/vehicles/{id}" : {
      "get" : {
        "tags" : [ "Vehicles" ],
        "summary" : "Get vehicle by ID",
        "description" : "Returns vehicle identified by ID\n",
        "operationId" : "vehiclesIdGet_1",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "ID of the vehicle\n",
          "required" : true,
          "schema" : {
            "type" : "integer",
            "format" : "int64"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Successfull, returns requested vehicle details\n",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/VehicleModel"
                }
              }
            }
          },
          "default" : {
            "description" : "Error containing error code, optionally affected fields and a message\n",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorModel"
                }
              }
            }
          }
        },
        "security" : [ {
          "OAuth2" : [ "read" ]
        } ]
      },
      "delete" : {
        "tags" : [ "Vehicles" ],
        "summary" : "Removes vehicle by ID",
        "description" : "If you're the owner of this vehicle it removes vehicle and all his existing data.\nIf you're not the owner, it removes the connection to your account, the owner will not loose any of his data.\n",
        "operationId" : "vehiclesIdDelete_1",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "ID of the vehicle\n",
          "required" : true,
          "schema" : {
            "type" : "integer",
            "format" : "int64"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Successfull removal\n"
          },
          "default" : {
            "description" : "Error containing error code, optionally affected fields and a message\n",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorModel"
                }
              }
            }
          }
        },
        "security" : [ {
          "OAuth2" : [ "write" ]
        } ]
      }
    },
    "/vehicles/lastPositions" : {
      "get" : {
        "tags" : [ "Vehicles" ],
        "summary" : "List of vehicles with last positions",
        "description" : "List of vehicles with their last known positions\n",
        "operationId" : "vehiclesLastPositionsGet_1",
        "parameters" : [ {
          "name" : "count",
          "in" : "query",
          "description" : "Number of vehicles to be returned (default 10).\n",
          "schema" : {
            "type" : "integer",
            "format" : "int32"
          }
        }, {
          "name" : "fields",
          "in" : "query",
          "description" : "Comma separated list of fields that should be returned.\n",
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Response containing details and an array of last positions\n",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/LastPostionsModel"
                }
              }
            }
          },
          "default" : {
            "description" : "Error containing error code, optionally affected fields and a message\n",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorModel"
                }
              }
            }
          }
        },
        "security" : [ {
          "OAuth2" : [ "read" ]
        } ],
        "x-cli-name" : "vehicle-positions",
        "x-cli-description" : "List last known positions for accessible vehicles.",
        "x-cli-aliases" : [ "last-positions", "vehicles-last-positions" ]
      }
    },
    "/vehicles/lastPositions/{vehicleId}" : {
      "get" : {
        "tags" : [ "Vehicles" ],
        "summary" : "Vehicle last position",
        "description" : "Last position of certain vehicle defined by id\n",
        "operationId" : "vehiclesLastPositionsVehicleIdGet_1",
        "parameters" : [ {
          "name" : "vehicleId",
          "in" : "path",
          "description" : "User ID\n",
          "required" : true,
          "schema" : {
            "type" : "integer",
            "format" : "int64"
          }
        }, {
          "name" : "count",
          "in" : "query",
          "description" : "Number of last positions returned (default 1).\n",
          "schema" : {
            "type" : "integer",
            "format" : "int32"
          }
        }, {
          "name" : "fields",
          "in" : "query",
          "description" : "Comma separated list of fields that should be returned.\n",
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Response containing details and an array of users last positions\n",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/LastPostionModel"
                }
              }
            }
          },
          "default" : {
            "description" : "Error containing error code, optionally affected fields and a message\n",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorModel"
                }
              }
            }
          }
        },
        "security" : [ {
          "OAuth2" : [ "read" ]
        } ],
        "x-cli-name" : "vehicle-position",
        "x-cli-description" : "Get last known positions for one vehicle.",
        "x-cli-aliases" : [ "vehicle-last-position" ]
      }
    },
    "/vehicles/livePositions/stream" : {
      "post" : {
        "tags" : [ "Vehicles" ],
        "summary" : "Create live vehicle position stream",
        "description" : "Creates a short-lived authorized WebSocket stream session for customer-built live fleet maps.\n\nUsage:\n1. Call GET /vehicles/lastPositions for the initial map snapshot.\n2. Call POST /vehicles/livePositions/stream with the vehicles or vehicle groups to stream.\n3. Connect to the returned websocketUrl.\n4. Update map markers from vehicle.position.updated events.\n\nVehicle selection:\n- Use vehicleIds to stream specific vehicles.\n- Use vehicleGroupIds to stream vehicles from specific groups.\n- Omit both vehicleIds and vehicleGroupIds, or send them as empty arrays, to stream all vehicles the API token can access.\n- includeSharedVehicles controls whether shared vehicles are included in that available vehicle set.\n- The selected vehicle set is capped by maxVehicles from the response.\n\nThe WebSocket sends connected, vehicle.position.updated, vehicle.offline, heartbeat, and error events.\nThe WebSocket URL contains a one-time short-lived stream token and streams only vehicles authorized during session creation.\n",
        "operationId" : "createLivePositionStream_1",
        "requestBody" : {
          "description" : "Live position stream request. If vehicleIds and vehicleGroupIds are omitted or empty,\nthe stream includes all vehicles the API token can access, capped by maxVehicles.\n",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/LivePositionStreamRequestModel"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Stream session details.\n",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/LivePositionStreamModel"
                }
              }
            }
          },
          "400" : {
            "description" : "Invalid body, too many vehicles, or minIntervalSeconds below the minimum.\n",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorModel"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing or invalid OAuth2 bearer token.\n",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorModel"
                }
              }
            }
          },
          "403" : {
            "description" : "Missing read scope or unauthorized vehicle/group access.\n",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorModel"
                }
              }
            }
          },
          "429" : {
            "description" : "Rate limit exceeded when API rate limiting is enabled.\n",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorModel"
                }
              }
            }
          },
          "default" : {
            "description" : "Error containing error code, optionally affected fields and a message\n",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorModel"
                }
              }
            }
          }
        },
        "security" : [ {
          "OAuth2" : [ "write" ]
        } ],
        "x-mct-badge" : {
          "value" : "NEW"
        },
        "x-cli-ignore" : true
      }
    },
    "/vehicles/requestPosition/{id}" : {
      "post" : {
        "tags" : [ "Vehicles" ],
        "summary" : "Sends request for last position",
        "description" : "This endpoint sends a request for vehicle position defined by the ID. The call is asynchronous.\nThat means you have to call /vehicles/lastPositions/{id} endpoint after some short time or repeatedly\nto check if the position was send back from the device.\n",
        "operationId" : "vehiclesRequestPositionIdPost_1",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "ID of the user\n",
          "required" : true,
          "schema" : {
            "type" : "integer",
            "format" : "int64"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Successfull position request sent\n"
          },
          "default" : {
            "description" : "Error containing error code, optionally affected fields and a message\n",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorModel"
                }
              }
            }
          }
        },
        "security" : [ {
          "OAuth2" : [ "write" ]
        } ]
      }
    },
    "/vehicles/summaryStats" : {
      "get" : {
        "tags" : [ "Vehicles", "Stats" ],
        "summary" : "Get individual summary stats for vehicles",
        "description" : "Returns summary details for each of your vehicle. Summary includes: time interval for data, first drive time, last drive time, total mileage, total time and more (see response).\n",
        "operationId" : "vehiclesSummaryStatsGet_1",
        "parameters" : [ {
          "name" : "startDate",
          "in" : "query",
          "description" : "Filter data where track's start date is higher and equal than startTime param. Unix timestamp format in millis.\n",
          "schema" : {
            "type" : "integer",
            "format" : "int64"
          }
        }, {
          "name" : "endDate",
          "in" : "query",
          "description" : "Filter data where track's start date is lower and equal than endTime param. Unix timestamp format in millis.\n",
          "schema" : {
            "type" : "integer",
            "format" : "int64"
          }
        }, {
          "name" : "category",
          "in" : "query",
          "description" : "Filter data by category (PERSONAL / BUSINESS).\n",
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "summaryMode",
          "in" : "query",
          "description" : "Set the data output mode for daily, monthly or total. Default TOTAL.\n",
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "vehicleId",
          "in" : "query",
          "description" : "Filter by vehicle, ID can be found in the results. You can enter multiple IDs separated with comma or value 'all'.\n",
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "fields",
          "in" : "query",
          "description" : "Comma separated list of fields that should be returned.\n",
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "offset",
          "in" : "query",
          "description" : "Zero based pagination (e.g. first page = 0, 3rd page = 2 x limit).\n",
          "schema" : {
            "type" : "integer",
            "format" : "int32"
          }
        }, {
          "name" : "limit",
          "in" : "query",
          "description" : "Page size. The maximum results size per page.\n",
          "schema" : {
            "type" : "integer",
            "format" : "int32"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Successfull, returns requested summary data\n",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/VehiclesSummaryStatsModel"
                }
              }
            }
          },
          "default" : {
            "description" : "Error containing error code, optionally affected fields and a message\n",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorModel"
                }
              }
            }
          }
        },
        "security" : [ {
          "OAuth2" : [ "read" ]
        } ],
        "x-cli-name" : "vehicle-stats",
        "x-cli-description" : "Get driving summary statistics grouped by vehicle.",
        "x-cli-aliases" : [ "vehicle-summary-stats", "car-stats" ]
      }
    }
  },
  "components" : {
    "schemas" : {
      "ExpenseModel" : {
        "type" : "object",
        "properties" : {
          "object" : {
            "type" : "string",
            "description" : "String representing the object's type.\n",
            "readOnly" : true,
            "enum" : [ "LIST", "VEHICLE", "USER", "TRACK", "TRACKPOINT", "MAP_SHARING", "GEOFENCE", "GEOFENCE_ALERT", "GEOFENCE_ALERT_LOG", "GEOFENCE_REWRITE", "GEOFENCE_ACCESS", "CUSTOMER_CUSTOM_COLUMN", "CUSTOMER", "JOB", "JOB_STATE", "JOB_LOG", "USER_LAST_POSITION", "VEHICLE_LAST_POSITION", "USER_GROUP", "VEHICLE_GROUP", "USER_SUMMARY_STATS", "VEHICLE_SUMMARY_STATS", "EXPENSE", "EXPENSE_TYPE" ]
          },
          "id" : {
            "type" : "integer",
            "description" : "Unique identifier representing this expense.\n",
            "format" : "int64"
          },
          "expenseDate" : {
            "type" : "integer",
            "description" : "Expense date and time as Unix timestamp in milliseconds.\n",
            "format" : "int64"
          },
          "expenseDateFormatted" : {
            "type" : "string",
            "description" : "Expense date formatted in the current user's timezone.\n"
          },
          "created" : {
            "type" : "integer",
            "description" : "Creation time as Unix timestamp in milliseconds.\n",
            "format" : "int64"
          },
          "updated" : {
            "type" : "integer",
            "description" : "Last update time as Unix timestamp in milliseconds.\n",
            "format" : "int64"
          },
          "expenseTypeId" : {
            "type" : "integer",
            "description" : "Expense type ID.\n",
            "format" : "int64"
          },
          "expenseType" : {
            "type" : "string",
            "description" : "Expense type label. Built-in/open type labels are translated to the authenticated user's language.\nCustom expense type labels are returned as configured by the user.\n"
          },
          "openType" : {
            "type" : "boolean",
            "description" : "Whether the expense type is a shared/open type.\n"
          },
          "refueling" : {
            "type" : "boolean",
            "description" : "Whether this expense is a refueling expense.\n"
          },
          "driverId" : {
            "type" : "integer",
            "description" : "Driver/user ID.\n",
            "format" : "int64"
          },
          "driverName" : {
            "type" : "string",
            "description" : "Driver name.\n"
          },
          "vehicleId" : {
            "type" : "integer",
            "description" : "Vehicle ID.\n",
            "format" : "int64"
          },
          "vehicleName" : {
            "type" : "string",
            "description" : "Vehicle name.\n"
          },
          "unitsNumber" : {
            "type" : "number",
            "description" : "Fuel or unit amount.\n",
            "format" : "double"
          },
          "totalCost" : {
            "type" : "number",
            "description" : "Total expense cost.\n"
          },
          "tankLevel" : {
            "type" : "integer",
            "description" : "Tank level percentage for refueling expenses.\n",
            "format" : "int32"
          },
          "title" : {
            "type" : "string",
            "description" : "Expense title.\n"
          },
          "note" : {
            "type" : "string",
            "description" : "Expense note.\n"
          },
          "discount" : {
            "type" : "number",
            "description" : "Discount amount.\n"
          },
          "deductible" : {
            "type" : "boolean",
            "description" : "Whether this expense is deductible.\n"
          },
          "paymentType" : {
            "type" : "string",
            "description" : "Payment type enum value.\n",
            "enum" : [ "CARD", "CASH", "INVOICE" ]
          },
          "currency" : {
            "type" : "string",
            "description" : "Currency code.\n"
          },
          "fuelUnit" : {
            "type" : "string",
            "description" : "Fuel unit enum value.\n",
            "enum" : [ "LITER", "GALLON_US", "GALLON_UK", "KWH", "KG", "M3" ]
          },
          "tax" : {
            "type" : "number",
            "description" : "Tax value.\n",
            "format" : "double"
          },
          "odometer" : {
            "type" : "number",
            "description" : "Odometer reading.\n",
            "format" : "double"
          },
          "fuelType" : {
            "type" : "string",
            "description" : "Fuel type enum value.\n",
            "enum" : [ "PETROL", "DIESEL", "ETHANOL", "LPG", "CNG", "ELECTRIC", "FLEX" ]
          },
          "missedPreviousFillup" : {
            "type" : "boolean",
            "description" : "Whether the previous fill-up was missed.\n"
          },
          "hasReceipts" : {
            "type" : "boolean",
            "description" : "Whether this expense has one or more receipts.\n"
          }
        },
        "description" : "Expense details.\n"
      },
      "ExpensesModel" : {
        "type" : "object",
        "properties" : {
          "object" : {
            "type" : "string",
            "description" : "String representing the object's type.\n",
            "readOnly" : true,
            "enum" : [ "LIST", "VEHICLE", "USER", "TRACK", "TRACKPOINT", "MAP_SHARING", "GEOFENCE", "GEOFENCE_ALERT", "GEOFENCE_ALERT_LOG", "GEOFENCE_REWRITE", "GEOFENCE_ACCESS", "CUSTOMER_CUSTOM_COLUMN", "CUSTOMER", "JOB", "JOB_STATE", "JOB_LOG", "USER_LAST_POSITION", "VEHICLE_LAST_POSITION", "USER_GROUP", "VEHICLE_GROUP", "USER_SUMMARY_STATS", "VEHICLE_SUMMARY_STATS", "EXPENSE", "EXPENSE_TYPE" ]
          },
          "url" : {
            "type" : "string",
            "description" : "Current endpoint URL.\n"
          },
          "hasMore" : {
            "type" : "boolean",
            "description" : "Whether more expenses are available.\n"
          },
          "offset" : {
            "type" : "integer",
            "description" : "Zero-based row offset used for this page.\n",
            "format" : "int32"
          },
          "limit" : {
            "type" : "integer",
            "description" : "Page size used for this page.\n",
            "format" : "int32"
          },
          "nextOffset" : {
            "type" : "integer",
            "description" : "Offset to use for the next page. Null when hasMore is false.\n",
            "format" : "int32"
          },
          "sort" : {
            "type" : "string",
            "description" : "Sort applied before paging.\n"
          },
          "totalCount" : {
            "type" : "integer",
            "description" : "Total number of expenses for the current filters. Present only when includeTotal=true.\n",
            "format" : "int64"
          },
          "data" : {
            "type" : "array",
            "description" : "Expense data for this page.\n",
            "items" : {
              "$ref" : "#/components/schemas/ExpenseModel"
            }
          }
        },
        "description" : "A representation of a paged list of expenses.\n"
      },
      "ErrorModel" : {
        "type" : "object",
        "properties" : {
          "code" : {
            "type" : "integer",
            "format" : "int32"
          },
          "message" : {
            "type" : "string"
          },
          "fields" : {
            "type" : "string"
          }
        }
      },
      "CreateExpenseModel" : {
        "type" : "object",
        "properties" : {
          "vehicleId" : {
            "type" : "integer",
            "description" : "Vehicle ID.\n",
            "format" : "int64"
          },
          "expenseTypeId" : {
            "type" : "integer",
            "description" : "Expense type ID. Discover values with GET /expenses/types. The refueling type has refueling=true.\n",
            "format" : "int64"
          },
          "expenseDate" : {
            "type" : "integer",
            "description" : "Expense date and time as Unix timestamp in milliseconds.\n",
            "format" : "int64"
          },
          "fuelAmount" : {
            "type" : "number",
            "description" : "Fuel amount for refueling expenses.\n",
            "format" : "double"
          },
          "totalCost" : {
            "type" : "number",
            "description" : "Total expense cost.\n"
          },
          "fullTank" : {
            "type" : "boolean",
            "description" : "Whether the tank was filled to 100%. Applies to refueling expenses.\n"
          },
          "tankLevel" : {
            "type" : "integer",
            "description" : "Tank level percentage when fullTank=false.\n",
            "format" : "int32"
          },
          "title" : {
            "type" : "string",
            "description" : "Expense title for non-refueling expenses.\n"
          },
          "paymentType" : {
            "type" : "string",
            "description" : "Payment type.\n",
            "enum" : [ "CARD", "CASH", "INVOICE" ]
          },
          "currency" : {
            "type" : "string",
            "description" : "Currency code.\n"
          },
          "tax" : {
            "type" : "number",
            "description" : "Tax value.\n",
            "format" : "double"
          },
          "discount" : {
            "type" : "number",
            "description" : "Discount amount.\n"
          },
          "note" : {
            "type" : "string",
            "description" : "Expense note.\n"
          },
          "odometer" : {
            "type" : "number",
            "description" : "Odometer reading.\n",
            "format" : "double"
          },
          "missedPreviousFillup" : {
            "type" : "boolean",
            "description" : "Whether the previous fill-up was missed. Applies to refueling expenses.\n"
          },
          "deductible" : {
            "type" : "boolean",
            "description" : "Whether this expense is deductible.\n"
          },
          "fuelType" : {
            "type" : "string",
            "description" : "Fuel type enum value. Applies to refueling expenses.\n",
            "enum" : [ "PETROL", "DIESEL", "ETHANOL", "LPG", "CNG", "ELECTRIC", "FLEX" ]
          }
        },
        "description" : "Create expense request.\n"
      },
      "UpdateExpenseModel" : {
        "type" : "object",
        "properties" : {
          "vehicleId" : {
            "type" : "integer",
            "description" : "Vehicle ID.\n",
            "format" : "int64"
          },
          "expenseTypeId" : {
            "type" : "integer",
            "description" : "Expense type ID. Discover values with GET /expenses/types. The refueling type has refueling=true.\n",
            "format" : "int64"
          },
          "expenseDate" : {
            "type" : "integer",
            "description" : "Expense date and time as Unix timestamp in milliseconds.\n",
            "format" : "int64"
          },
          "fuelAmount" : {
            "type" : "number",
            "description" : "Fuel amount for refueling expenses.\n",
            "format" : "double"
          },
          "totalCost" : {
            "type" : "number",
            "description" : "Total expense cost.\n"
          },
          "fullTank" : {
            "type" : "boolean",
            "description" : "Whether the tank was filled to 100%. Applies to refueling expenses.\n"
          },
          "tankLevel" : {
            "type" : "integer",
            "description" : "Tank level percentage when fullTank=false.\n",
            "format" : "int32"
          },
          "title" : {
            "type" : "string",
            "description" : "Expense title for non-refueling expenses.\n"
          },
          "paymentType" : {
            "type" : "string",
            "description" : "Payment type.\n",
            "enum" : [ "CARD", "CASH", "INVOICE" ]
          },
          "currency" : {
            "type" : "string",
            "description" : "Currency code.\n"
          },
          "tax" : {
            "type" : "number",
            "description" : "Tax value.\n",
            "format" : "double"
          },
          "discount" : {
            "type" : "number",
            "description" : "Discount amount.\n"
          },
          "note" : {
            "type" : "string",
            "description" : "Expense note.\n"
          },
          "odometer" : {
            "type" : "number",
            "description" : "Odometer reading.\n",
            "format" : "double"
          },
          "missedPreviousFillup" : {
            "type" : "boolean",
            "description" : "Whether the previous fill-up was missed. Applies to refueling expenses.\n"
          },
          "deductible" : {
            "type" : "boolean",
            "description" : "Whether this expense is deductible.\n"
          },
          "fuelType" : {
            "type" : "string",
            "description" : "Fuel type enum value. Applies to refueling expenses.\n",
            "enum" : [ "PETROL", "DIESEL", "ETHANOL", "LPG", "CNG", "ELECTRIC", "FLEX" ]
          },
          "id" : {
            "type" : "integer",
            "description" : "Unique identifier representing this expense.\n",
            "format" : "int64"
          }
        },
        "description" : "Update expense request.\n"
      },
      "ExpenseSettingsModel" : {
        "type" : "object",
        "properties" : {
          "fuelType" : {
            "type" : "string",
            "description" : "Default fuel type.\n",
            "enum" : [ "PETROL", "DIESEL", "ETHANOL", "LPG", "CNG", "ELECTRIC", "FLEX" ]
          },
          "fuelUnit" : {
            "type" : "string",
            "description" : "Default fuel unit.\n",
            "enum" : [ "LITER", "GALLON_US", "GALLON_UK", "KWH", "KG", "M3" ]
          },
          "consumptionUnit" : {
            "type" : "string",
            "description" : "Default consumption unit.\n",
            "enum" : [ "L_100KM", "MPG_US", "MPG_UK", "KM_L", "KM_GAL_US", "KM_GAL_UK", "MI_L", "KWH_100KM", "MI_KWH", "KG_100KM", "KM_KG", "MI_KG", "M3_100KM", "KM_M3", "MI_M3" ]
          },
          "tankCapacity" : {
            "type" : "number",
            "description" : "Default tank capacity in fuelUnit.\n",
            "format" : "double"
          },
          "biFuel" : {
            "type" : "boolean",
            "description" : "Whether vehicles use two fuel systems by default.\n"
          },
          "biFuelType" : {
            "type" : "string",
            "description" : "Secondary default fuel type for bi-fuel vehicles.\n",
            "enum" : [ "PETROL", "DIESEL", "ETHANOL", "LPG", "CNG", "ELECTRIC", "FLEX" ]
          },
          "biFuelUnit" : {
            "type" : "string",
            "description" : "Secondary default fuel unit for bi-fuel vehicles.\n",
            "enum" : [ "LITER", "GALLON_US", "GALLON_UK", "KWH", "KG", "M3" ]
          },
          "biConsumptionUnit" : {
            "type" : "string",
            "description" : "Secondary default consumption unit for bi-fuel vehicles.\n",
            "enum" : [ "L_100KM", "MPG_US", "MPG_UK", "KM_L", "KM_GAL_US", "KM_GAL_UK", "MI_L", "KWH_100KM", "MI_KWH", "KG_100KM", "KM_KG", "MI_KG", "M3_100KM", "KM_M3", "MI_M3" ]
          },
          "biTankCapacity" : {
            "type" : "number",
            "description" : "Secondary default tank capacity in biFuelUnit.\n",
            "format" : "double"
          }
        },
        "description" : "Default account expense settings.\n"
      },
      "ExpenseTypeModel" : {
        "type" : "object",
        "properties" : {
          "object" : {
            "type" : "string",
            "description" : "String representing the object's type.\n",
            "readOnly" : true,
            "enum" : [ "LIST", "VEHICLE", "USER", "TRACK", "TRACKPOINT", "MAP_SHARING", "GEOFENCE", "GEOFENCE_ALERT", "GEOFENCE_ALERT_LOG", "GEOFENCE_REWRITE", "GEOFENCE_ACCESS", "CUSTOMER_CUSTOM_COLUMN", "CUSTOMER", "JOB", "JOB_STATE", "JOB_LOG", "USER_LAST_POSITION", "VEHICLE_LAST_POSITION", "USER_GROUP", "VEHICLE_GROUP", "USER_SUMMARY_STATS", "VEHICLE_SUMMARY_STATS", "EXPENSE", "EXPENSE_TYPE" ]
          },
          "id" : {
            "type" : "integer",
            "description" : "Expense type ID. Send this value as expenseTypeId when creating or updating expenses.\n",
            "format" : "int64"
          },
          "label" : {
            "type" : "string",
            "description" : "Expense type label. Built-in/open type labels are translated to the authenticated user's language.\nCustom expense type labels are returned as configured by the user.\n"
          },
          "openType" : {
            "type" : "boolean",
            "description" : "Whether the expense type is a shared/open type.\n"
          },
          "refueling" : {
            "type" : "boolean",
            "description" : "Whether this type represents refueling.\n"
          }
        },
        "description" : "Expense type details.\n"
      },
      "ExpenseTypesModel" : {
        "type" : "object",
        "properties" : {
          "object" : {
            "type" : "string",
            "description" : "String representing the object's type.\n",
            "readOnly" : true,
            "enum" : [ "LIST", "VEHICLE", "USER", "TRACK", "TRACKPOINT", "MAP_SHARING", "GEOFENCE", "GEOFENCE_ALERT", "GEOFENCE_ALERT_LOG", "GEOFENCE_REWRITE", "GEOFENCE_ACCESS", "CUSTOMER_CUSTOM_COLUMN", "CUSTOMER", "JOB", "JOB_STATE", "JOB_LOG", "USER_LAST_POSITION", "VEHICLE_LAST_POSITION", "USER_GROUP", "VEHICLE_GROUP", "USER_SUMMARY_STATS", "VEHICLE_SUMMARY_STATS", "EXPENSE", "EXPENSE_TYPE" ]
          },
          "url" : {
            "type" : "string",
            "description" : "Current endpoint URL.\n"
          },
          "data" : {
            "type" : "array",
            "description" : "Expense type data.\n",
            "items" : {
              "$ref" : "#/components/schemas/ExpenseTypeModel"
            }
          }
        },
        "description" : "A representation of a list of expense types.\n"
      },
      "GeofenceAlertModel" : {
        "type" : "object",
        "properties" : {
          "name" : {
            "type" : "string",
            "description" : "Geofence alert identification name\n"
          },
          "idGeofence" : {
            "type" : "integer",
            "description" : "Geofence ID this alert is assigned to\n",
            "format" : "int64"
          },
          "transition" : {
            "type" : "string",
            "description" : "Transition that fires this alert\n",
            "enum" : [ "BOTH", "ON_ENTRY", "ON_EXIT" ]
          },
          "validTo" : {
            "type" : "integer",
            "description" : "Date and time the alert is valid to. Milliseconds since Unix Epoch.\n",
            "format" : "int64"
          },
          "notificationEmail" : {
            "type" : "string",
            "description" : "Email to which this alert will be sent. For multiple emails use comma separated list.\n"
          },
          "notificationUrl" : {
            "type" : "string",
            "description" : "URL that will be called when this alert fires. Available parameters that will be replaced: {geofence_name}, {alert_name}, {alert_date} (unixtime in millis), {driver_name}, {driver_email}, {vehicle_name}, {transition} (values: ENTRY, EXIT), {latitude}, {longitude}\n"
          },
          "driverGroups" : {
            "type" : "array",
            "description" : "ID's of driver groups this alert is assigned to. If you leave both this and carGroups blank then this alert will be assigned to whole fleet\n",
            "items" : {
              "type" : "integer",
              "description" : "ID's of driver groups this alert is assigned to. If you leave both this and carGroups blank then this alert will be assigned to whole fleet\n",
              "format" : "int64"
            }
          },
          "carGroups" : {
            "type" : "array",
            "description" : "ID's of car groups this alert is assigned to. If you leave both this and driverGroups blank then this alert will be assigned to whole fleet\n",
            "items" : {
              "type" : "integer",
              "description" : "ID's of car groups this alert is assigned to. If you leave both this and driverGroups blank then this alert will be assigned to whole fleet\n",
              "format" : "int64"
            }
          },
          "id" : {
            "type" : "integer",
            "description" : "Unique identifier representing this geofence alert.\n",
            "format" : "int64"
          },
          "object" : {
            "type" : "string",
            "description" : "String representing the object’s type.\n",
            "readOnly" : true,
            "enum" : [ "LIST", "VEHICLE", "USER", "TRACK", "TRACKPOINT", "MAP_SHARING", "GEOFENCE", "GEOFENCE_ALERT", "GEOFENCE_ALERT_LOG", "GEOFENCE_REWRITE", "GEOFENCE_ACCESS", "CUSTOMER_CUSTOM_COLUMN", "CUSTOMER", "JOB", "JOB_STATE", "JOB_LOG", "USER_LAST_POSITION", "VEHICLE_LAST_POSITION", "USER_GROUP", "VEHICLE_GROUP", "USER_SUMMARY_STATS", "VEHICLE_SUMMARY_STATS", "EXPENSE", "EXPENSE_TYPE" ]
          }
        },
        "description" : "Geofence alert details.\n",
        "example" : {
          "id" : 10,
          "object" : "GEOFENCE_ALERT",
          "name" : "Warehouse entry",
          "idGeofence" : 6,
          "transition" : "ON_ENTRY",
          "validTo" : 1432214820000,
          "notificationEmail" : "peok@peok.sk",
          "driverGroups" : [ 5 ],
          "carGroups" : [ 1 ]
        }
      },
      "GeofenceAlertsModel" : {
        "type" : "object",
        "properties" : {
          "object" : {
            "type" : "string",
            "description" : "String representing the object’s type.\n",
            "readOnly" : true,
            "enum" : [ "LIST", "VEHICLE", "USER", "TRACK", "TRACKPOINT", "MAP_SHARING", "GEOFENCE", "GEOFENCE_ALERT", "GEOFENCE_ALERT_LOG", "GEOFENCE_REWRITE", "GEOFENCE_ACCESS", "CUSTOMER_CUSTOM_COLUMN", "CUSTOMER", "JOB", "JOB_STATE", "JOB_LOG", "USER_LAST_POSITION", "VEHICLE_LAST_POSITION", "USER_GROUP", "VEHICLE_GROUP", "USER_SUMMARY_STATS", "VEHICLE_SUMMARY_STATS", "EXPENSE", "EXPENSE_TYPE" ]
          },
          "url" : {
            "type" : "string",
            "description" : "Curent endpoint URL\n"
          },
          "hasMore" : {
            "type" : "boolean",
            "description" : "Indicating whether there are more results available. Use 'offset' parameter for pagination.\n"
          },
          "data" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/GeofenceAlertModel"
            }
          }
        },
        "description" : "A representation of list of geofence alerts.\n"
      },
      "GeofenceAlertLogModel" : {
        "type" : "object",
        "properties" : {
          "id" : {
            "type" : "integer",
            "description" : "Unique identifier representing this geofence alert log.\n",
            "format" : "int64"
          },
          "object" : {
            "type" : "string",
            "description" : "String representing the object’s type.\n",
            "readOnly" : true,
            "enum" : [ "LIST", "VEHICLE", "USER", "TRACK", "TRACKPOINT", "MAP_SHARING", "GEOFENCE", "GEOFENCE_ALERT", "GEOFENCE_ALERT_LOG", "GEOFENCE_REWRITE", "GEOFENCE_ACCESS", "CUSTOMER_CUSTOM_COLUMN", "CUSTOMER", "JOB", "JOB_STATE", "JOB_LOG", "USER_LAST_POSITION", "VEHICLE_LAST_POSITION", "USER_GROUP", "VEHICLE_GROUP", "USER_SUMMARY_STATS", "VEHICLE_SUMMARY_STATS", "EXPENSE", "EXPENSE_TYPE" ]
          },
          "idGeofenceAlert" : {
            "type" : "integer",
            "description" : "Geofence Alert ID\n",
            "format" : "int64"
          },
          "idGeofence" : {
            "type" : "integer",
            "description" : "Customer ID\n",
            "format" : "int64"
          },
          "idUser" : {
            "type" : "integer",
            "description" : "User ID (driver)\n",
            "format" : "int64"
          },
          "idVehicle" : {
            "type" : "integer",
            "description" : "Vehicle ID\n",
            "format" : "int64"
          },
          "alertDate" : {
            "type" : "integer",
            "description" : "Alert date and time in millis (unixtime)\n",
            "format" : "int64"
          },
          "alertName" : {
            "type" : "string",
            "description" : "Geofence Alert name\n"
          },
          "geofenceName" : {
            "type" : "string",
            "description" : "Name of the Geofence on which the alert is set\n"
          },
          "userEmail" : {
            "type" : "string",
            "description" : "Driver email or Account ID used on the tracker\n"
          },
          "userName" : {
            "type" : "string",
            "description" : "Driver name\n"
          },
          "vehicleName" : {
            "type" : "string",
            "description" : "Vehicle name\n"
          },
          "transition" : {
            "type" : "string",
            "description" : "Transition that fired this alert\n",
            "enum" : [ "BOTH", "ON_ENTRY", "ON_EXIT" ]
          },
          "gpsLatitude" : {
            "type" : "number",
            "description" : "GPS Latitude of the logged possition\n",
            "format" : "double"
          },
          "gpsLongitude" : {
            "type" : "number",
            "description" : "GPS Longitude of the logged possition\n",
            "format" : "double"
          }
        }
      },
      "GeofenceAlertLogsModel" : {
        "type" : "object",
        "properties" : {
          "object" : {
            "type" : "string",
            "description" : "String representing the object’s type.\n",
            "readOnly" : true,
            "enum" : [ "LIST", "VEHICLE", "USER", "TRACK", "TRACKPOINT", "MAP_SHARING", "GEOFENCE", "GEOFENCE_ALERT", "GEOFENCE_ALERT_LOG", "GEOFENCE_REWRITE", "GEOFENCE_ACCESS", "CUSTOMER_CUSTOM_COLUMN", "CUSTOMER", "JOB", "JOB_STATE", "JOB_LOG", "USER_LAST_POSITION", "VEHICLE_LAST_POSITION", "USER_GROUP", "VEHICLE_GROUP", "USER_SUMMARY_STATS", "VEHICLE_SUMMARY_STATS", "EXPENSE", "EXPENSE_TYPE" ]
          },
          "url" : {
            "type" : "string",
            "description" : "Curent endpoint URL\n"
          },
          "hasMore" : {
            "type" : "boolean",
            "description" : "Indicating whether there are more results available. Use 'offset' parameter for pagination.\n"
          },
          "data" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/GeofenceAlertLogModel"
            }
          }
        },
        "description" : "A representation of list of geofence alert logs.\n"
      },
      "CreateGeofenceAlertModel" : {
        "required" : [ "idGeofence", "name", "transition" ],
        "type" : "object",
        "properties" : {
          "name" : {
            "type" : "string",
            "description" : "Geofence alert identification name\n"
          },
          "idGeofence" : {
            "type" : "integer",
            "description" : "Geofence ID this alert is assigned to\n",
            "format" : "int64"
          },
          "transition" : {
            "type" : "string",
            "description" : "Transition that fires this alert\n",
            "enum" : [ "BOTH", "ON_ENTRY", "ON_EXIT" ]
          },
          "validTo" : {
            "type" : "integer",
            "description" : "Date and time the alert is valid to. Milliseconds since Unix Epoch.\n",
            "format" : "int64"
          },
          "notificationEmail" : {
            "type" : "string",
            "description" : "Email to which this alert will be sent. For multiple emails use comma separated list.\n"
          },
          "notificationUrl" : {
            "type" : "string",
            "description" : "URL that will be called when this alert fires. Available parameters that will be replaced: {geofence_name}, {alert_name}, {alert_date} (unixtime in millis), {driver_name}, {driver_email}, {vehicle_name}, {transition} (values: ENTRY, EXIT), {latitude}, {longitude}\n"
          },
          "driverGroups" : {
            "type" : "array",
            "description" : "ID's of driver groups this alert is assigned to. If you leave both this and carGroups blank then this alert will be assigned to whole fleet\n",
            "items" : {
              "type" : "integer",
              "description" : "ID's of driver groups this alert is assigned to. If you leave both this and carGroups blank then this alert will be assigned to whole fleet\n",
              "format" : "int64"
            }
          },
          "carGroups" : {
            "type" : "array",
            "description" : "ID's of car groups this alert is assigned to. If you leave both this and driverGroups blank then this alert will be assigned to whole fleet\n",
            "items" : {
              "type" : "integer",
              "description" : "ID's of car groups this alert is assigned to. If you leave both this and driverGroups blank then this alert will be assigned to whole fleet\n",
              "format" : "int64"
            }
          }
        },
        "description" : "Create new geofence alert.\n",
        "example" : {
          "name" : "Warehouse Park",
          "idGeofence" : 17230,
          "transition" : "BOTH",
          "notificationEmail" : "notify@your_domain.com"
        }
      },
      "UpdateGeofenceAlertModel" : {
        "required" : [ "id", "idGeofence", "name", "transition" ],
        "type" : "object",
        "properties" : {
          "name" : {
            "type" : "string",
            "description" : "Geofence alert identification name\n"
          },
          "idGeofence" : {
            "type" : "integer",
            "description" : "Geofence ID this alert is assigned to\n",
            "format" : "int64"
          },
          "transition" : {
            "type" : "string",
            "description" : "Transition that fires this alert\n",
            "enum" : [ "BOTH", "ON_ENTRY", "ON_EXIT" ]
          },
          "validTo" : {
            "type" : "integer",
            "description" : "Date and time the alert is valid to. Milliseconds since Unix Epoch.\n",
            "format" : "int64"
          },
          "notificationEmail" : {
            "type" : "string",
            "description" : "Email to which this alert will be sent. For multiple emails use comma separated list.\n"
          },
          "notificationUrl" : {
            "type" : "string",
            "description" : "URL that will be called when this alert fires. Available parameters that will be replaced: {geofence_name}, {alert_name}, {alert_date} (unixtime in millis), {driver_name}, {driver_email}, {vehicle_name}, {transition} (values: ENTRY, EXIT), {latitude}, {longitude}\n"
          },
          "driverGroups" : {
            "type" : "array",
            "description" : "ID's of driver groups this alert is assigned to. If you leave both this and carGroups blank then this alert will be assigned to whole fleet\n",
            "items" : {
              "type" : "integer",
              "description" : "ID's of driver groups this alert is assigned to. If you leave both this and carGroups blank then this alert will be assigned to whole fleet\n",
              "format" : "int64"
            }
          },
          "carGroups" : {
            "type" : "array",
            "description" : "ID's of car groups this alert is assigned to. If you leave both this and driverGroups blank then this alert will be assigned to whole fleet\n",
            "items" : {
              "type" : "integer",
              "description" : "ID's of car groups this alert is assigned to. If you leave both this and driverGroups blank then this alert will be assigned to whole fleet\n",
              "format" : "int64"
            }
          },
          "id" : {
            "type" : "integer",
            "description" : "Unique identifier representing this geofence alert.\n",
            "format" : "int64"
          }
        },
        "description" : "Update existing geofence alert.\n",
        "example" : {
          "id" : 3455,
          "name" : "Warehouse Park",
          "idGeofence" : 17230,
          "transition" : "BOTH",
          "notificationEmail" : "notify@your_domain.com",
          "driverGroups" : [ 2, 3 ]
        }
      },
      "CustomerCustomColumnViewModel" : {
        "type" : "object",
        "properties" : {
          "idColumn" : {
            "type" : "integer",
            "description" : "Customer custom column ID.\n",
            "format" : "int64"
          },
          "columnName" : {
            "type" : "string",
            "description" : "Customer custom column name.\n"
          },
          "customValue" : {
            "type" : "string",
            "description" : "Saved customer custom column value.\n"
          }
        },
        "description" : "Array with customer custom columns and their values\n"
      },
      "GeofenceAccessModel" : {
        "type" : "object",
        "properties" : {
          "object" : {
            "type" : "string",
            "description" : "String representing the object’s type.\n",
            "readOnly" : true,
            "enum" : [ "LIST", "VEHICLE", "USER", "TRACK", "TRACKPOINT", "MAP_SHARING", "GEOFENCE", "GEOFENCE_ALERT", "GEOFENCE_ALERT_LOG", "GEOFENCE_REWRITE", "GEOFENCE_ACCESS", "CUSTOMER_CUSTOM_COLUMN", "CUSTOMER", "JOB", "JOB_STATE", "JOB_LOG", "USER_LAST_POSITION", "VEHICLE_LAST_POSITION", "USER_GROUP", "VEHICLE_GROUP", "USER_SUMMARY_STATS", "VEHICLE_SUMMARY_STATS", "EXPENSE", "EXPENSE_TYPE" ]
          },
          "idGeofence" : {
            "type" : "integer",
            "description" : "Geofence ID\n",
            "format" : "int64"
          },
          "idCustomer" : {
            "type" : "integer",
            "description" : "Customer ID\n",
            "format" : "int64"
          },
          "geofenceName" : {
            "type" : "string",
            "description" : "Geofence name\n"
          },
          "customerName" : {
            "type" : "string",
            "description" : "Customer name\n"
          },
          "isIdle" : {
            "type" : "boolean",
            "description" : "Indicating whether this access is Idle (true) or a geofence access (false)\n"
          },
          "idUser" : {
            "type" : "integer",
            "description" : "User ID (driver)\n",
            "format" : "int64"
          },
          "userName" : {
            "type" : "string",
            "description" : "Driver name\n"
          },
          "userEmail" : {
            "type" : "string",
            "description" : "Driver email\n"
          },
          "idVehicle" : {
            "type" : "integer",
            "description" : "Vehicle ID\n",
            "format" : "int64"
          },
          "vehicleName" : {
            "type" : "string",
            "description" : "Vehicle name\n"
          },
          "customerCustomColumns" : {
            "type" : "array",
            "description" : "Array with customer custom columns and their values\n",
            "items" : {
              "$ref" : "#/components/schemas/CustomerCustomColumnViewModel"
            }
          },
          "entryTime" : {
            "type" : "integer",
            "description" : "Entry date and time in millis (unixtime)\n",
            "format" : "int64"
          },
          "exitTime" : {
            "type" : "integer",
            "description" : "Exit date and time in millis (unixtime)\n",
            "format" : "int64"
          },
          "totalTimeSeconds" : {
            "type" : "integer",
            "description" : "Time spent for driving, in seconds\n",
            "format" : "int64"
          },
          "serviceTime" : {
            "type" : "integer",
            "description" : "How long was driver inside or how long took the Idle, in seconds.\n",
            "format" : "int64"
          },
          "movingTime" : {
            "type" : "integer",
            "description" : "Moving time since last access in seconds.\n",
            "format" : "int64"
          },
          "distanceDriven" : {
            "type" : "number",
            "description" : "Distance driven in meters or foots depending on user settings.\n",
            "format" : "double"
          },
          "distanceTotal" : {
            "type" : "number",
            "description" : "Distance total in meters or foots depending on user settings.\n",
            "format" : "double"
          },
          "stoppedInside" : {
            "type" : "boolean",
            "description" : "Indicating whether the vehicle stopped inside the geofence or just drove through\n"
          },
          "maximumSpeed" : {
            "type" : "number",
            "description" : "Maximum speed while traveling to the access\n",
            "format" : "double"
          },
          "averageSpeed" : {
            "type" : "number",
            "description" : "Average speed while traveling to the access\n",
            "format" : "double"
          },
          "trackSumDistance" : {
            "type" : "number",
            "description" : "Distance sum of the tracks that were involved in this access, in meters or foots depending on user settings.\n",
            "format" : "double"
          }
        }
      },
      "GeofenceAccessesModel" : {
        "type" : "object",
        "properties" : {
          "object" : {
            "type" : "string",
            "description" : "String representing the object’s type.\n",
            "readOnly" : true,
            "enum" : [ "LIST", "VEHICLE", "USER", "TRACK", "TRACKPOINT", "MAP_SHARING", "GEOFENCE", "GEOFENCE_ALERT", "GEOFENCE_ALERT_LOG", "GEOFENCE_REWRITE", "GEOFENCE_ACCESS", "CUSTOMER_CUSTOM_COLUMN", "CUSTOMER", "JOB", "JOB_STATE", "JOB_LOG", "USER_LAST_POSITION", "VEHICLE_LAST_POSITION", "USER_GROUP", "VEHICLE_GROUP", "USER_SUMMARY_STATS", "VEHICLE_SUMMARY_STATS", "EXPENSE", "EXPENSE_TYPE" ]
          },
          "url" : {
            "type" : "string",
            "description" : "Curent endpoint URL\n"
          },
          "hasMore" : {
            "type" : "boolean",
            "description" : "Indicating whether there are more results available. Use 'offset' parameter for pagination.\n"
          },
          "data" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/GeofenceAccessModel"
            }
          }
        },
        "description" : "A representation of list of geofence accesses for geofence analytics.\n"
      },
      "CustomerCustomColumnModel" : {
        "type" : "object",
        "properties" : {
          "columnName" : {
            "type" : "string",
            "description" : "Customer custom column name\n"
          },
          "id" : {
            "type" : "integer",
            "description" : "Unique identifier representing this customer custom column.\n",
            "format" : "int64"
          },
          "object" : {
            "type" : "string",
            "description" : "String representing the object’s type.\n",
            "readOnly" : true,
            "enum" : [ "LIST", "VEHICLE", "USER", "TRACK", "TRACKPOINT", "MAP_SHARING", "GEOFENCE", "GEOFENCE_ALERT", "GEOFENCE_ALERT_LOG", "GEOFENCE_REWRITE", "GEOFENCE_ACCESS", "CUSTOMER_CUSTOM_COLUMN", "CUSTOMER", "JOB", "JOB_STATE", "JOB_LOG", "USER_LAST_POSITION", "VEHICLE_LAST_POSITION", "USER_GROUP", "VEHICLE_GROUP", "USER_SUMMARY_STATS", "VEHICLE_SUMMARY_STATS", "EXPENSE", "EXPENSE_TYPE" ]
          }
        },
        "description" : "Customer custom column details.\n",
        "example" : {
          "id" : 1,
          "object" : "CUSTOMER_CUSTOM_COLUMN",
          "columnName" : "Customer number"
        }
      },
      "CustomerCustomColumnsModel" : {
        "type" : "object",
        "properties" : {
          "object" : {
            "type" : "string",
            "description" : "String representing the object’s type.\n",
            "readOnly" : true,
            "enum" : [ "LIST", "VEHICLE", "USER", "TRACK", "TRACKPOINT", "MAP_SHARING", "GEOFENCE", "GEOFENCE_ALERT", "GEOFENCE_ALERT_LOG", "GEOFENCE_REWRITE", "GEOFENCE_ACCESS", "CUSTOMER_CUSTOM_COLUMN", "CUSTOMER", "JOB", "JOB_STATE", "JOB_LOG", "USER_LAST_POSITION", "VEHICLE_LAST_POSITION", "USER_GROUP", "VEHICLE_GROUP", "USER_SUMMARY_STATS", "VEHICLE_SUMMARY_STATS", "EXPENSE", "EXPENSE_TYPE" ]
          },
          "url" : {
            "type" : "string",
            "description" : "Curent endpoint URL\n"
          },
          "hasMore" : {
            "type" : "boolean",
            "description" : "Indicating whether there are more results available. Use 'offset' parameter for pagination.\n"
          },
          "data" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/CustomerCustomColumnModel"
            }
          }
        },
        "description" : "A representation of list of available customer custom columns.\n"
      },
      "CreateCustomerCustomColumnModel" : {
        "required" : [ "columnName" ],
        "type" : "object",
        "properties" : {
          "columnName" : {
            "type" : "string",
            "description" : "Customer custom column name\n"
          }
        },
        "description" : "Create new customer custom column.\n",
        "example" : {
          "columnName" : "SAP #"
        }
      },
      "UpdateCustomerCustomColumnModel" : {
        "required" : [ "columnName", "id" ],
        "type" : "object",
        "properties" : {
          "columnName" : {
            "type" : "string",
            "description" : "Customer custom column name\n"
          },
          "id" : {
            "type" : "integer",
            "description" : "Unique identifier representing this customer custom column.\n",
            "format" : "int64"
          }
        },
        "description" : "Update existing customer custom column.\n",
        "example" : {
          "id" : 3,
          "columnName" : "SAP Nr."
        }
      },
      "CustomerModel" : {
        "type" : "object",
        "properties" : {
          "contactPersonName" : {
            "type" : "string",
            "description" : "Contact person name\n"
          },
          "companyName" : {
            "type" : "string",
            "description" : "Company name\n"
          },
          "phone" : {
            "type" : "string",
            "description" : "Phone Number\n"
          },
          "email" : {
            "type" : "string",
            "description" : "Email\n"
          },
          "address" : {
            "type" : "string",
            "description" : "Address\n"
          },
          "remark" : {
            "type" : "string",
            "description" : "Remark\n"
          },
          "gpsLatitude" : {
            "type" : "number",
            "description" : "Optional GPS Latitude to define customers position. Position can be then diferent than assigned geofence.\n",
            "format" : "double"
          },
          "gpsLongitude" : {
            "type" : "number",
            "description" : "Optional GPS Longitude to define customers position. Position can be then diferent than assigned geofence.\n",
            "format" : "double"
          },
          "geofenceId" : {
            "type" : "integer",
            "description" : "Set geofence ID if you want to assign this customer to some position defined by Geofence.\n",
            "format" : "int64"
          },
          "id" : {
            "type" : "integer",
            "description" : "Unique identifier representing this customer.\n",
            "format" : "int64"
          },
          "object" : {
            "type" : "string",
            "description" : "String representing the object’s type.\n",
            "readOnly" : true,
            "enum" : [ "LIST", "VEHICLE", "USER", "TRACK", "TRACKPOINT", "MAP_SHARING", "GEOFENCE", "GEOFENCE_ALERT", "GEOFENCE_ALERT_LOG", "GEOFENCE_REWRITE", "GEOFENCE_ACCESS", "CUSTOMER_CUSTOM_COLUMN", "CUSTOMER", "JOB", "JOB_STATE", "JOB_LOG", "USER_LAST_POSITION", "VEHICLE_LAST_POSITION", "USER_GROUP", "VEHICLE_GROUP", "USER_SUMMARY_STATS", "VEHICLE_SUMMARY_STATS", "EXPENSE", "EXPENSE_TYPE" ]
          },
          "customColumns" : {
            "type" : "array",
            "description" : "Array with customer custom columns and their values\n",
            "items" : {
              "$ref" : "#/components/schemas/CustomerCustomColumnViewModel"
            }
          }
        },
        "description" : "Customer details.\n",
        "example" : "{\n  \"id\": 3452,\n  \"contactPersonName\": \"Alber Einstein\",\n  \"companyName\": \"E.MC2 Company\",\n  \"phone\": \"+432949888999\",\n  \"email\": \"albert.einstein@aeinstein.co\",\n  \"address\": \"Moved Strasse 123\nHamburg\nEW123\",\n  \"remark\": \"Great customer\",\n  \"geofenceId\": 1,\n  \"customColumns\": [\n    {\n      \"idColumn\": 1,\n      \"customName\": \"Customer number\",\n      \"customValue\": \"A22 - 344\"\n    },\n    {\n      \"idColumn\": 3,\n      \"customName\": \"SAP #\",\n      \"customValue\": \"B11 - 358\"\n    }\n  ]\n}\n"
      },
      "CustomersModel" : {
        "type" : "object",
        "properties" : {
          "object" : {
            "type" : "string",
            "description" : "String representing the object’s type.\n",
            "readOnly" : true,
            "enum" : [ "LIST", "VEHICLE", "USER", "TRACK", "TRACKPOINT", "MAP_SHARING", "GEOFENCE", "GEOFENCE_ALERT", "GEOFENCE_ALERT_LOG", "GEOFENCE_REWRITE", "GEOFENCE_ACCESS", "CUSTOMER_CUSTOM_COLUMN", "CUSTOMER", "JOB", "JOB_STATE", "JOB_LOG", "USER_LAST_POSITION", "VEHICLE_LAST_POSITION", "USER_GROUP", "VEHICLE_GROUP", "USER_SUMMARY_STATS", "VEHICLE_SUMMARY_STATS", "EXPENSE", "EXPENSE_TYPE" ]
          },
          "url" : {
            "type" : "string",
            "description" : "Curent endpoint URL\n"
          },
          "hasMore" : {
            "type" : "boolean",
            "description" : "Indicating whether there are more results available. Use 'offset' parameter for pagination.\n"
          },
          "data" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/CustomerModel"
            }
          }
        },
        "description" : "A representation of list of customers.\n"
      },
      "CreateCustomerModel" : {
        "required" : [ "contactPersonName" ],
        "type" : "object",
        "properties" : {
          "contactPersonName" : {
            "type" : "string",
            "description" : "Contact person name\n"
          },
          "companyName" : {
            "type" : "string",
            "description" : "Company name\n"
          },
          "phone" : {
            "type" : "string",
            "description" : "Phone Number\n"
          },
          "email" : {
            "type" : "string",
            "description" : "Email\n"
          },
          "address" : {
            "type" : "string",
            "description" : "Address\n"
          },
          "remark" : {
            "type" : "string",
            "description" : "Remark\n"
          },
          "gpsLatitude" : {
            "type" : "number",
            "description" : "Optional GPS Latitude to define customers position. Position can be then diferent than assigned geofence.\n",
            "format" : "double"
          },
          "gpsLongitude" : {
            "type" : "number",
            "description" : "Optional GPS Longitude to define customers position. Position can be then diferent than assigned geofence.\n",
            "format" : "double"
          },
          "geofenceId" : {
            "type" : "integer",
            "description" : "Set geofence ID if you want to assign this customer to some position defined by Geofence.\n",
            "format" : "int64"
          },
          "customColumns" : {
            "type" : "array",
            "description" : "Array with customer custom column values\n",
            "items" : {
              "$ref" : "#/components/schemas/CustomerCustomColumnSaveModel"
            }
          }
        },
        "description" : "Create new customer.\n",
        "example" : "{\n  \"contactPersonName\": \"Alber Einstein\",\n  \"companyName\": \"E.MC2 Company\",\n  \"phone\": \"+432949888777\",\n  \"email\": \"albert.einstein@aeinstein.co\",\n  \"address\": \"Die Ein Stein Strasse 123\nHamburg\nEW123\",\n  \"remark\": \"Great customer\",\n  \"geofenceId\": 1\n}\n"
      },
      "CustomerCustomColumnSaveModel" : {
        "type" : "object",
        "properties" : {
          "idColumn" : {
            "type" : "integer",
            "description" : "Customer custom column ID.\n",
            "format" : "int64"
          },
          "customValue" : {
            "type" : "string",
            "description" : "Value to save in this custom column.\n"
          }
        },
        "description" : "Array with customer custom column values\n"
      },
      "UpdateCustomerModel" : {
        "required" : [ "contactPersonName", "id" ],
        "type" : "object",
        "properties" : {
          "contactPersonName" : {
            "type" : "string",
            "description" : "Contact person name\n"
          },
          "companyName" : {
            "type" : "string",
            "description" : "Company name\n"
          },
          "phone" : {
            "type" : "string",
            "description" : "Phone Number\n"
          },
          "email" : {
            "type" : "string",
            "description" : "Email\n"
          },
          "address" : {
            "type" : "string",
            "description" : "Address\n"
          },
          "remark" : {
            "type" : "string",
            "description" : "Remark\n"
          },
          "gpsLatitude" : {
            "type" : "number",
            "description" : "Optional GPS Latitude to define customers position. Position can be then diferent than assigned geofence.\n",
            "format" : "double"
          },
          "gpsLongitude" : {
            "type" : "number",
            "description" : "Optional GPS Longitude to define customers position. Position can be then diferent than assigned geofence.\n",
            "format" : "double"
          },
          "geofenceId" : {
            "type" : "integer",
            "description" : "Set geofence ID if you want to assign this customer to some position defined by Geofence.\n",
            "format" : "int64"
          },
          "id" : {
            "type" : "integer",
            "description" : "Unique identifier representing this customer.\n",
            "format" : "int64"
          },
          "customColumns" : {
            "type" : "array",
            "description" : "Array with customer custom column values\n",
            "items" : {
              "$ref" : "#/components/schemas/CustomerCustomColumnSaveModel"
            }
          }
        },
        "description" : "Update existing customer.\n",
        "example" : "{\n  \"id\": 3452,\n  \"contactPersonName\": \"Alber Einstein\",\n  \"companyName\": \"E.MC2 Company\",\n  \"phone\": \"+432949888999\",\n  \"email\": \"albert.einstein@aeinstein.co\",\n  \"address\": \"Moved Strasse 123\nHamburg\nEW123\",\n  \"remark\": \"Great customer\",\n  \"geofenceId\": 1,\n  \"customColumns\": [\n    {\n      \"idColumn\": 1,\n      \"customValue\": \"A22 - 344\"\n    },\n    {\n      \"idColumn\": 3,\n      \"customValue\": \"B11 - 358\"\n    }\n  ]\n}\n"
      },
      "GeofenceModel" : {
        "type" : "object",
        "properties" : {
          "name" : {
            "type" : "string",
            "description" : "Geofence identification name\n"
          },
          "latitude" : {
            "type" : "number",
            "description" : "GPS Latitude (WGS 84 Web Mercator coordinate system)\n",
            "format" : "double"
          },
          "longitude" : {
            "type" : "number",
            "description" : "GPS Longitude (WGS 84 Web Mercator coordinate system)\n",
            "format" : "double"
          },
          "radius" : {
            "type" : "number",
            "description" : "Geofence zone radius in meters or feet (depending on your settings)\n",
            "format" : "double"
          },
          "address" : {
            "type" : "string",
            "description" : "Geofence address\n"
          },
          "useAsPoi" : {
            "type" : "boolean",
            "description" : "Set to TRUE if you want to view this geofence as POI (point in color an with icon)\n"
          },
          "poiDescription" : {
            "type" : "string",
            "description" : "POI short description\n"
          },
          "poiColor" : {
            "type" : "string",
            "description" : "POI color in hex\n"
          },
          "poiIcon" : {
            "type" : "string",
            "description" : "Icon shown on map\n",
            "enum" : [ "DOT_CIRCLE_O", "BULLSEYE", "BUILDING", "ANCHOR", "ARCHIVE", "ASTERISK", "BRIEFCASE", "CAB", "CAMERA", "CLOUD", "COFFEE", "CUTLERY", "HOME", "INFO_CIRCLE", "HEART", "WARNING", "GROUP", "FLAG", "PLANE", "MEDKIT", "TRUCK" ]
          },
          "useForAnalytics" : {
            "type" : "boolean",
            "description" : "If TRUE geofence will be used in Geofence Analytics. Note that you are not able to change this option afterwards.\n"
          },
          "id" : {
            "type" : "integer",
            "description" : "Unique identifier representing this geofence.\n",
            "format" : "int64"
          },
          "object" : {
            "type" : "string",
            "description" : "String representing the object’s type.\n",
            "readOnly" : true,
            "enum" : [ "LIST", "VEHICLE", "USER", "TRACK", "TRACKPOINT", "MAP_SHARING", "GEOFENCE", "GEOFENCE_ALERT", "GEOFENCE_ALERT_LOG", "GEOFENCE_REWRITE", "GEOFENCE_ACCESS", "CUSTOMER_CUSTOM_COLUMN", "CUSTOMER", "JOB", "JOB_STATE", "JOB_LOG", "USER_LAST_POSITION", "VEHICLE_LAST_POSITION", "USER_GROUP", "VEHICLE_GROUP", "USER_SUMMARY_STATS", "VEHICLE_SUMMARY_STATS", "EXPENSE", "EXPENSE_TYPE" ]
          }
        },
        "description" : "Geofence details.\n",
        "example" : {
          "id" : 345,
          "name" : "MC Warehouse",
          "latitude" : 26.6173001,
          "longitude" : -80.286404,
          "radius" : 400,
          "address" : "4241 Lake Worth Road, Lake Worth, 33461, FL",
          "useAsPoi" : true,
          "poiDescription" : "MC Warehouse",
          "poiColor" : "#fc0008",
          "poiIcon" : "DOT_CIRCLE_O",
          "useForAnalytics" : false,
          "object" : "GEOFENCE"
        }
      },
      "GeofencesModel" : {
        "type" : "object",
        "properties" : {
          "object" : {
            "type" : "string",
            "description" : "String representing the object’s type.\n",
            "readOnly" : true,
            "enum" : [ "LIST", "VEHICLE", "USER", "TRACK", "TRACKPOINT", "MAP_SHARING", "GEOFENCE", "GEOFENCE_ALERT", "GEOFENCE_ALERT_LOG", "GEOFENCE_REWRITE", "GEOFENCE_ACCESS", "CUSTOMER_CUSTOM_COLUMN", "CUSTOMER", "JOB", "JOB_STATE", "JOB_LOG", "USER_LAST_POSITION", "VEHICLE_LAST_POSITION", "USER_GROUP", "VEHICLE_GROUP", "USER_SUMMARY_STATS", "VEHICLE_SUMMARY_STATS", "EXPENSE", "EXPENSE_TYPE" ]
          },
          "url" : {
            "type" : "string",
            "description" : "Curent endpoint URL\n"
          },
          "hasMore" : {
            "type" : "boolean",
            "description" : "Indicating whether there are more results available. Use 'offset' parameter for pagination.\n"
          },
          "data" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/GeofenceModel"
            }
          }
        },
        "description" : "A representation of list of geofences.\n"
      },
      "CreateGeofenceModel" : {
        "required" : [ "latitude", "longitude", "name", "radius" ],
        "type" : "object",
        "properties" : {
          "name" : {
            "type" : "string",
            "description" : "Geofence identification name\n"
          },
          "latitude" : {
            "type" : "number",
            "description" : "GPS Latitude (WGS 84 Web Mercator coordinate system)\n",
            "format" : "double"
          },
          "longitude" : {
            "type" : "number",
            "description" : "GPS Longitude (WGS 84 Web Mercator coordinate system)\n",
            "format" : "double"
          },
          "radius" : {
            "type" : "number",
            "description" : "Geofence zone radius in meters or feet (depending on your settings)\n",
            "format" : "double"
          },
          "address" : {
            "type" : "string",
            "description" : "Geofence address\n"
          },
          "useAsPoi" : {
            "type" : "boolean",
            "description" : "Set to TRUE if you want to view this geofence as POI (point in color an with icon)\n"
          },
          "poiDescription" : {
            "type" : "string",
            "description" : "POI short description\n"
          },
          "poiColor" : {
            "type" : "string",
            "description" : "POI color in hex\n"
          },
          "poiIcon" : {
            "type" : "string",
            "description" : "Icon shown on map\n",
            "enum" : [ "DOT_CIRCLE_O", "BULLSEYE", "BUILDING", "ANCHOR", "ARCHIVE", "ASTERISK", "BRIEFCASE", "CAB", "CAMERA", "CLOUD", "COFFEE", "CUTLERY", "HOME", "INFO_CIRCLE", "HEART", "WARNING", "GROUP", "FLAG", "PLANE", "MEDKIT", "TRUCK" ]
          },
          "useForAnalytics" : {
            "type" : "boolean",
            "description" : "If TRUE geofence will be used in Geofence Analytics. Note that you are not able to change this option afterwards.\n"
          }
        },
        "description" : "Create new geofence.\n",
        "example" : {
          "name" : "MC Warehouse",
          "latitude" : 26.6173001,
          "longitude" : -80.086404,
          "radius" : 300,
          "address" : "4241 Lake Worth Road, Lake Worth, 33461, FL",
          "useAsPoi" : true,
          "poiDescription" : "MC Warehouse 2",
          "poiColor" : "#fc0008",
          "poiIcon" : "DOT_CIRCLE_O",
          "useForAnalytics" : false
        }
      },
      "UpdateGeofenceModel" : {
        "required" : [ "id", "latitude", "longitude", "name", "radius" ],
        "type" : "object",
        "properties" : {
          "name" : {
            "type" : "string",
            "description" : "Geofence identification name\n"
          },
          "latitude" : {
            "type" : "number",
            "description" : "GPS Latitude (WGS 84 Web Mercator coordinate system)\n",
            "format" : "double"
          },
          "longitude" : {
            "type" : "number",
            "description" : "GPS Longitude (WGS 84 Web Mercator coordinate system)\n",
            "format" : "double"
          },
          "radius" : {
            "type" : "number",
            "description" : "Geofence zone radius in meters or feet (depending on your settings)\n",
            "format" : "double"
          },
          "address" : {
            "type" : "string",
            "description" : "Geofence address\n"
          },
          "useAsPoi" : {
            "type" : "boolean",
            "description" : "Set to TRUE if you want to view this geofence as POI (point in color an with icon)\n"
          },
          "poiDescription" : {
            "type" : "string",
            "description" : "POI short description\n"
          },
          "poiColor" : {
            "type" : "string",
            "description" : "POI color in hex\n"
          },
          "poiIcon" : {
            "type" : "string",
            "description" : "Icon shown on map\n",
            "enum" : [ "DOT_CIRCLE_O", "BULLSEYE", "BUILDING", "ANCHOR", "ARCHIVE", "ASTERISK", "BRIEFCASE", "CAB", "CAMERA", "CLOUD", "COFFEE", "CUTLERY", "HOME", "INFO_CIRCLE", "HEART", "WARNING", "GROUP", "FLAG", "PLANE", "MEDKIT", "TRUCK" ]
          },
          "useForAnalytics" : {
            "type" : "boolean",
            "description" : "If TRUE geofence will be used in Geofence Analytics. Note that you are not able to change this option afterwards.\n"
          },
          "id" : {
            "type" : "integer",
            "description" : "Unique identifier representing this geofence.\n",
            "format" : "int64"
          }
        },
        "description" : "Update existing geofence.\n",
        "example" : {
          "id" : 345,
          "name" : "MC Warehouse 2",
          "latitude" : 26.6173001,
          "longitude" : -80.286404,
          "radius" : 400,
          "address" : "4241 Lake Worth Road, Lake Worth, 33461, FL",
          "useAsPoi" : true,
          "poiDescription" : "MC Warehouse 2",
          "poiColor" : "#fc0008",
          "poiIcon" : "DOT_CIRCLE_O",
          "useForAnalytics" : false
        }
      },
      "GeofenceRewriteModel" : {
        "type" : "object",
        "properties" : {
          "idGeofence" : {
            "type" : "integer",
            "description" : "Geofence ID this alert is assigned to\n",
            "format" : "int64"
          },
          "replaceAddressFrom" : {
            "type" : "string",
            "description" : "Replace addres from entry on track when track starts in this geofence\n"
          },
          "replaceAddressTo" : {
            "type" : "string",
            "description" : "Replace address to entry on track when track ends in this geofence\n"
          },
          "replaceDescription" : {
            "type" : "string",
            "description" : "Replace description entry when track ends in this geofence.\n"
          },
          "carGroups" : {
            "type" : "array",
            "description" : "ID's of car groups this alert is assigned to. If you leave this entry blank then rewrite will be assigned to whole fleet\n",
            "items" : {
              "type" : "integer",
              "description" : "ID's of car groups this alert is assigned to. If you leave this entry blank then rewrite will be assigned to whole fleet\n",
              "format" : "int64"
            }
          },
          "id" : {
            "type" : "integer",
            "description" : "Unique identifier representing this geofence rewrite.\n",
            "format" : "int64"
          },
          "object" : {
            "type" : "string",
            "description" : "String representing the object’s type.\n",
            "readOnly" : true,
            "enum" : [ "LIST", "VEHICLE", "USER", "TRACK", "TRACKPOINT", "MAP_SHARING", "GEOFENCE", "GEOFENCE_ALERT", "GEOFENCE_ALERT_LOG", "GEOFENCE_REWRITE", "GEOFENCE_ACCESS", "CUSTOMER_CUSTOM_COLUMN", "CUSTOMER", "JOB", "JOB_STATE", "JOB_LOG", "USER_LAST_POSITION", "VEHICLE_LAST_POSITION", "USER_GROUP", "VEHICLE_GROUP", "USER_SUMMARY_STATS", "VEHICLE_SUMMARY_STATS", "EXPENSE", "EXPENSE_TYPE" ]
          }
        },
        "description" : "Geofence rewrite details.\n",
        "example" : {
          "id" : 51,
          "object" : "GEOFENCE_REWRITE",
          "idGeofence" : 9,
          "replaceAddressFrom" : "Warehouse 3 out",
          "replaceAddressTo" : "Warehouse 3 in",
          "replaceDescription" : "MCW-332",
          "carGroups" : [ 347, 892 ]
        }
      },
      "GeofenceRewritesModel" : {
        "type" : "object",
        "properties" : {
          "object" : {
            "type" : "string",
            "description" : "String representing the object’s type.\n",
            "readOnly" : true,
            "enum" : [ "LIST", "VEHICLE", "USER", "TRACK", "TRACKPOINT", "MAP_SHARING", "GEOFENCE", "GEOFENCE_ALERT", "GEOFENCE_ALERT_LOG", "GEOFENCE_REWRITE", "GEOFENCE_ACCESS", "CUSTOMER_CUSTOM_COLUMN", "CUSTOMER", "JOB", "JOB_STATE", "JOB_LOG", "USER_LAST_POSITION", "VEHICLE_LAST_POSITION", "USER_GROUP", "VEHICLE_GROUP", "USER_SUMMARY_STATS", "VEHICLE_SUMMARY_STATS", "EXPENSE", "EXPENSE_TYPE" ]
          },
          "url" : {
            "type" : "string",
            "description" : "Curent endpoint URL\n"
          },
          "hasMore" : {
            "type" : "boolean",
            "description" : "Indicating whether there are more results available. Use 'offset' parameter for pagination.\n"
          },
          "data" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/GeofenceRewriteModel"
            }
          }
        },
        "description" : "A representation of list of geofence rewrites.\n"
      },
      "CreateGeofenceRewriteModel" : {
        "type" : "object",
        "properties" : {
          "idGeofence" : {
            "type" : "integer",
            "description" : "Geofence ID this alert is assigned to\n",
            "format" : "int64"
          },
          "replaceAddressFrom" : {
            "type" : "string",
            "description" : "Replace addres from entry on track when track starts in this geofence\n"
          },
          "replaceAddressTo" : {
            "type" : "string",
            "description" : "Replace address to entry on track when track ends in this geofence\n"
          },
          "replaceDescription" : {
            "type" : "string",
            "description" : "Replace description entry when track ends in this geofence.\n"
          },
          "carGroups" : {
            "type" : "array",
            "description" : "ID's of car groups this alert is assigned to. If you leave this entry blank then rewrite will be assigned to whole fleet\n",
            "items" : {
              "type" : "integer",
              "description" : "ID's of car groups this alert is assigned to. If you leave this entry blank then rewrite will be assigned to whole fleet\n",
              "format" : "int64"
            }
          }
        },
        "description" : "Create new geofence rewrite.\n",
        "example" : {
          "idGeofence" : 9,
          "replaceAddressFrom" : "MC Warehouse out",
          "replaceAddressTo" : "MC Warehouse in",
          "replaceDescription" : "MCW-332"
        }
      },
      "UpdateGeofenceRewriteModel" : {
        "required" : [ "id" ],
        "type" : "object",
        "properties" : {
          "idGeofence" : {
            "type" : "integer",
            "description" : "Geofence ID this alert is assigned to\n",
            "format" : "int64"
          },
          "replaceAddressFrom" : {
            "type" : "string",
            "description" : "Replace addres from entry on track when track starts in this geofence\n"
          },
          "replaceAddressTo" : {
            "type" : "string",
            "description" : "Replace address to entry on track when track ends in this geofence\n"
          },
          "replaceDescription" : {
            "type" : "string",
            "description" : "Replace description entry when track ends in this geofence.\n"
          },
          "carGroups" : {
            "type" : "array",
            "description" : "ID's of car groups this alert is assigned to. If you leave this entry blank then rewrite will be assigned to whole fleet\n",
            "items" : {
              "type" : "integer",
              "description" : "ID's of car groups this alert is assigned to. If you leave this entry blank then rewrite will be assigned to whole fleet\n",
              "format" : "int64"
            }
          },
          "id" : {
            "type" : "integer",
            "description" : "Unique identifier representing this geofence rewrite.\n",
            "format" : "int64"
          }
        },
        "description" : "Update existing geofence rewrite.\n",
        "example" : {
          "id" : 51,
          "idGeofence" : 9,
          "replaceAddressFrom" : "Warehouse 3 out",
          "replaceAddressTo" : "Warehouse 3 in",
          "replaceDescription" : "MCW-332",
          "carGroups" : [ 347, 892 ]
        }
      },
      "JobLogModel" : {
        "type" : "object",
        "properties" : {
          "idJob" : {
            "type" : "integer",
            "description" : "Job ID this job log is assigned to\n",
            "format" : "int64"
          },
          "idUser" : {
            "type" : "integer",
            "description" : "User ID who created this job log\n",
            "format" : "int64"
          },
          "startDate" : {
            "type" : "integer",
            "description" : "Date and time for the job log start. Milliseconds since Unix Epoch (unixtime).\n",
            "format" : "int64"
          },
          "endDate" : {
            "type" : "integer",
            "description" : "Date and time for the job log end (end - start = job duration). Milliseconds since Unix Epoch (unixtime).\n",
            "format" : "int64"
          },
          "description" : {
            "type" : "string",
            "description" : "Work (job log) description\n"
          },
          "id" : {
            "type" : "integer",
            "description" : "Unique identifier representing this job log.\n",
            "format" : "int64"
          },
          "created" : {
            "type" : "integer",
            "description" : "Date and time when the job log was created. Milliseconds since Unix Epoch (unixtime).\n",
            "format" : "int64"
          },
          "updated" : {
            "type" : "integer",
            "description" : "Date and time when the job log was updated. Milliseconds since Unix Epoch (unixtime).\n",
            "format" : "int64"
          },
          "object" : {
            "type" : "string",
            "description" : "String representing the object’s type.\n",
            "readOnly" : true,
            "enum" : [ "LIST", "VEHICLE", "USER", "TRACK", "TRACKPOINT", "MAP_SHARING", "GEOFENCE", "GEOFENCE_ALERT", "GEOFENCE_ALERT_LOG", "GEOFENCE_REWRITE", "GEOFENCE_ACCESS", "CUSTOMER_CUSTOM_COLUMN", "CUSTOMER", "JOB", "JOB_STATE", "JOB_LOG", "USER_LAST_POSITION", "VEHICLE_LAST_POSITION", "USER_GROUP", "VEHICLE_GROUP", "USER_SUMMARY_STATS", "VEHICLE_SUMMARY_STATS", "EXPENSE", "EXPENSE_TYPE" ]
          }
        },
        "description" : "Job log details.\n",
        "example" : {
          "id" : 3455,
          "idJob" : 17230,
          "idUser" : 123,
          "description" : "The pipes were stuck and one is missing. We need to re-visit this customer and bring John.",
          "startDate" : 1521708748000,
          "endDate" : 1521708948000,
          "created" : 1521709548000
        }
      },
      "CreateJobLogModel" : {
        "required" : [ "description", "endDate", "idJob", "idUser", "startDate" ],
        "type" : "object",
        "properties" : {
          "idJob" : {
            "type" : "integer",
            "description" : "Job ID this job log is assigned to\n",
            "format" : "int64"
          },
          "idUser" : {
            "type" : "integer",
            "description" : "User ID who created this job log\n",
            "format" : "int64"
          },
          "startDate" : {
            "type" : "integer",
            "description" : "Date and time for the job log start. Milliseconds since Unix Epoch (unixtime).\n",
            "format" : "int64"
          },
          "endDate" : {
            "type" : "integer",
            "description" : "Date and time for the job log end (end - start = job duration). Milliseconds since Unix Epoch (unixtime).\n",
            "format" : "int64"
          },
          "description" : {
            "type" : "string",
            "description" : "Work (job log) description\n"
          },
          "state" : {
            "type" : "string",
            "description" : "Job state\n",
            "enum" : [ "OPEN", "IN_PROGRESS", "NOT_ACCEPTED", "DONE", "RESOLVED" ]
          }
        },
        "description" : "Create new job log.\n",
        "example" : {
          "idJob" : 17230,
          "idUser" : 123,
          "description" : "The pipes were stuck and one is missing. We need to re-visit this customer.",
          "startDate" : 1521708748000,
          "endDate" : 1521708948000,
          "state" : "IN_PROGRESS"
        }
      },
      "UpdateJobLogModel" : {
        "required" : [ "description", "endDate", "id", "idJob", "idUser", "startDate" ],
        "type" : "object",
        "properties" : {
          "idJob" : {
            "type" : "integer",
            "description" : "Job ID this job log is assigned to\n",
            "format" : "int64"
          },
          "idUser" : {
            "type" : "integer",
            "description" : "User ID who created this job log\n",
            "format" : "int64"
          },
          "startDate" : {
            "type" : "integer",
            "description" : "Date and time for the job log start. Milliseconds since Unix Epoch (unixtime).\n",
            "format" : "int64"
          },
          "endDate" : {
            "type" : "integer",
            "description" : "Date and time for the job log end (end - start = job duration). Milliseconds since Unix Epoch (unixtime).\n",
            "format" : "int64"
          },
          "description" : {
            "type" : "string",
            "description" : "Work (job log) description\n"
          },
          "id" : {
            "type" : "integer",
            "description" : "Unique identifier representing job log to edit.\n",
            "format" : "int64"
          }
        },
        "description" : "Update existing job log.\n",
        "example" : {
          "id" : 3455,
          "idJob" : 17230,
          "idUser" : 123,
          "description" : "The pipes were stuck and one is missing. We need to re-visit this customer and bring John.",
          "startDate" : 1521708748000,
          "endDate" : 1521708948000,
          "state" : "DONE"
        }
      },
      "JobLogsModel" : {
        "type" : "object",
        "properties" : {
          "object" : {
            "type" : "string",
            "description" : "String representing the object’s type.\n",
            "readOnly" : true,
            "enum" : [ "LIST", "VEHICLE", "USER", "TRACK", "TRACKPOINT", "MAP_SHARING", "GEOFENCE", "GEOFENCE_ALERT", "GEOFENCE_ALERT_LOG", "GEOFENCE_REWRITE", "GEOFENCE_ACCESS", "CUSTOMER_CUSTOM_COLUMN", "CUSTOMER", "JOB", "JOB_STATE", "JOB_LOG", "USER_LAST_POSITION", "VEHICLE_LAST_POSITION", "USER_GROUP", "VEHICLE_GROUP", "USER_SUMMARY_STATS", "VEHICLE_SUMMARY_STATS", "EXPENSE", "EXPENSE_TYPE" ]
          },
          "url" : {
            "type" : "string",
            "description" : "Curent endpoint URL\n"
          },
          "hasMore" : {
            "type" : "boolean",
            "description" : "Indicating whether there are more results available. Use 'offset' parameter for pagination.\n"
          },
          "data" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/JobLogModel"
            }
          }
        },
        "description" : "A representation of list of job logs.\n"
      },
      "JobStateModel" : {
        "type" : "object",
        "properties" : {
          "id" : {
            "type" : "integer",
            "description" : "Unique identifier representing this job state.\n",
            "format" : "int64"
          },
          "idUser" : {
            "type" : "integer",
            "description" : "User ID ho created this state.\n",
            "format" : "int64"
          },
          "state" : {
            "type" : "string",
            "description" : "Job state. On Job creation if not defined, the state is set to OPEN.\n",
            "enum" : [ "OPEN", "IN_PROGRESS", "NOT_ACCEPTED", "DONE", "RESOLVED" ]
          },
          "stateDatetime" : {
            "type" : "integer",
            "description" : "Date and time when the job state was created. Milliseconds since Unix Epoch (unixtime).\n",
            "format" : "int64"
          },
          "object" : {
            "type" : "string",
            "description" : "String representing the object’s type.\n",
            "readOnly" : true,
            "enum" : [ "LIST", "VEHICLE", "USER", "TRACK", "TRACKPOINT", "MAP_SHARING", "GEOFENCE", "GEOFENCE_ALERT", "GEOFENCE_ALERT_LOG", "GEOFENCE_REWRITE", "GEOFENCE_ACCESS", "CUSTOMER_CUSTOM_COLUMN", "CUSTOMER", "JOB", "JOB_STATE", "JOB_LOG", "USER_LAST_POSITION", "VEHICLE_LAST_POSITION", "USER_GROUP", "VEHICLE_GROUP", "USER_SUMMARY_STATS", "VEHICLE_SUMMARY_STATS", "EXPENSE", "EXPENSE_TYPE" ]
          }
        },
        "description" : "Job state details.\n",
        "example" : {
          "id" : 10,
          "object" : "JOB_STATE",
          "idUser" : 345,
          "state" : "IN_PROGRESS",
          "stateDatetime" : 1521708748000
        }
      },
      "JobStatesModel" : {
        "type" : "object",
        "properties" : {
          "object" : {
            "type" : "string",
            "description" : "String representing the object’s type.\n",
            "readOnly" : true,
            "enum" : [ "LIST", "VEHICLE", "USER", "TRACK", "TRACKPOINT", "MAP_SHARING", "GEOFENCE", "GEOFENCE_ALERT", "GEOFENCE_ALERT_LOG", "GEOFENCE_REWRITE", "GEOFENCE_ACCESS", "CUSTOMER_CUSTOM_COLUMN", "CUSTOMER", "JOB", "JOB_STATE", "JOB_LOG", "USER_LAST_POSITION", "VEHICLE_LAST_POSITION", "USER_GROUP", "VEHICLE_GROUP", "USER_SUMMARY_STATS", "VEHICLE_SUMMARY_STATS", "EXPENSE", "EXPENSE_TYPE" ]
          },
          "url" : {
            "type" : "string",
            "description" : "Curent endpoint URL\n"
          },
          "hasMore" : {
            "type" : "boolean",
            "description" : "Indicating whether there are more results available. Use 'offset' parameter for pagination.\n"
          },
          "data" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/JobStateModel"
            }
          }
        },
        "description" : "A representation of list of job states.\n"
      },
      "JobExtendedModel" : {
        "type" : "object",
        "properties" : {
          "jobDescription" : {
            "type" : "string",
            "description" : "Job description\n"
          },
          "idGeofence" : {
            "type" : "integer",
            "description" : "Geofence ID this job is assigned to\n",
            "format" : "int64"
          },
          "idCustomer" : {
            "type" : "integer",
            "description" : "Customer ID this job is assigned to\n",
            "format" : "int64"
          },
          "startTime" : {
            "type" : "integer",
            "description" : "Date and time the job should start at. Milliseconds since Unix Epoch (unixtime).\n",
            "format" : "int64"
          },
          "dueDate" : {
            "type" : "integer",
            "description" : "Due date for the job. Milliseconds since Unix Epoch (unixtime).\n",
            "format" : "int64"
          },
          "durationEstimated" : {
            "type" : "integer",
            "description" : "Estimated duration in seconds.\n",
            "format" : "int64"
          },
          "currentState" : {
            "type" : "string",
            "description" : "Job state. On Job creation if not defined, the state is set to OPEN.\n",
            "enum" : [ "OPEN", "IN_PROGRESS", "NOT_ACCEPTED", "DONE", "RESOLVED" ]
          },
          "assignedUsers" : {
            "type" : "array",
            "description" : "User IDs this job is assigned to.\n",
            "items" : {
              "type" : "integer",
              "description" : "User IDs this job is assigned to.\n",
              "format" : "int64"
            }
          },
          "id" : {
            "type" : "integer",
            "description" : "Unique identifier representing this job.\n",
            "format" : "int64"
          },
          "object" : {
            "type" : "string",
            "description" : "String representing the object’s type.\n",
            "readOnly" : true,
            "enum" : [ "LIST", "VEHICLE", "USER", "TRACK", "TRACKPOINT", "MAP_SHARING", "GEOFENCE", "GEOFENCE_ALERT", "GEOFENCE_ALERT_LOG", "GEOFENCE_REWRITE", "GEOFENCE_ACCESS", "CUSTOMER_CUSTOM_COLUMN", "CUSTOMER", "JOB", "JOB_STATE", "JOB_LOG", "USER_LAST_POSITION", "VEHICLE_LAST_POSITION", "USER_GROUP", "VEHICLE_GROUP", "USER_SUMMARY_STATS", "VEHICLE_SUMMARY_STATS", "EXPENSE", "EXPENSE_TYPE" ]
          },
          "durationLoged" : {
            "type" : "integer",
            "description" : "Sum of logged durations in seconds.\n",
            "format" : "int64"
          },
          "realStartTime" : {
            "type" : "integer",
            "description" : "Date and time when the job started. Milliseconds since Unix Epoch (unixtime).\n",
            "format" : "int64"
          },
          "realEndTime" : {
            "type" : "integer",
            "description" : "Date and time when the job ended. Milliseconds since Unix Epoch (unixtime).\n",
            "format" : "int64"
          },
          "lastStateTime" : {
            "type" : "integer",
            "description" : "Date and time when the job state was last changed. Milliseconds since Unix Epoch (unixtime).\n",
            "format" : "int64"
          },
          "endTime" : {
            "type" : "integer",
            "description" : "Date and time when the job should end. Calculated as startTime + durationEstimated. Milliseconds since Unix Epoch (unixtime).\n",
            "format" : "int64"
          }
        },
        "description" : "Job details including calculated and obtained values.\n",
        "example" : {
          "id" : 10,
          "object" : "JOB",
          "jobDescription" : "Go to the warehouse for pickup immediately",
          "idGeofence" : 17230,
          "startTime" : 1521708748000,
          "durationEstimated" : 600,
          "currentState" : "IN_PROGRESS",
          "assignedUsers" : [ 2345 ],
          "realStartTime" : 1521708860000,
          "durationLoged" : 100
        }
      },
      "JobsModel" : {
        "type" : "object",
        "properties" : {
          "object" : {
            "type" : "string",
            "description" : "String representing the object’s type.\n",
            "readOnly" : true,
            "enum" : [ "LIST", "VEHICLE", "USER", "TRACK", "TRACKPOINT", "MAP_SHARING", "GEOFENCE", "GEOFENCE_ALERT", "GEOFENCE_ALERT_LOG", "GEOFENCE_REWRITE", "GEOFENCE_ACCESS", "CUSTOMER_CUSTOM_COLUMN", "CUSTOMER", "JOB", "JOB_STATE", "JOB_LOG", "USER_LAST_POSITION", "VEHICLE_LAST_POSITION", "USER_GROUP", "VEHICLE_GROUP", "USER_SUMMARY_STATS", "VEHICLE_SUMMARY_STATS", "EXPENSE", "EXPENSE_TYPE" ]
          },
          "url" : {
            "type" : "string",
            "description" : "Curent endpoint URL\n"
          },
          "hasMore" : {
            "type" : "boolean",
            "description" : "Indicating whether there are more results available. Use 'offset' parameter for pagination.\n"
          },
          "data" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/JobExtendedModel"
            }
          }
        },
        "description" : "A representation of list of jobs.\n"
      },
      "CreateJobModel" : {
        "required" : [ "jobDescription" ],
        "type" : "object",
        "properties" : {
          "jobDescription" : {
            "type" : "string",
            "description" : "Job description\n"
          },
          "idGeofence" : {
            "type" : "integer",
            "description" : "Geofence ID this job is assigned to\n",
            "format" : "int64"
          },
          "idCustomer" : {
            "type" : "integer",
            "description" : "Customer ID this job is assigned to\n",
            "format" : "int64"
          },
          "startTime" : {
            "type" : "integer",
            "description" : "Date and time the job should start at. Milliseconds since Unix Epoch (unixtime).\n",
            "format" : "int64"
          },
          "dueDate" : {
            "type" : "integer",
            "description" : "Due date for the job. Milliseconds since Unix Epoch (unixtime).\n",
            "format" : "int64"
          },
          "durationEstimated" : {
            "type" : "integer",
            "description" : "Estimated duration in seconds.\n",
            "format" : "int64"
          },
          "currentState" : {
            "type" : "string",
            "description" : "Job state. On Job creation if not defined, the state is set to OPEN.\n",
            "enum" : [ "OPEN", "IN_PROGRESS", "NOT_ACCEPTED", "DONE", "RESOLVED" ]
          },
          "assignedUsers" : {
            "type" : "array",
            "description" : "User IDs this job is assigned to.\n",
            "items" : {
              "type" : "integer",
              "description" : "User IDs this job is assigned to.\n",
              "format" : "int64"
            }
          }
        },
        "description" : "Create new job.\n",
        "example" : {
          "jobDescription" : "Go to the warehouse for pickup",
          "idGeofence" : 17230,
          "startTime" : 1521708748000,
          "durationEstimated" : 600,
          "assignedUsers" : [ 2345 ]
        }
      },
      "JobModel" : {
        "type" : "object",
        "properties" : {
          "jobDescription" : {
            "type" : "string",
            "description" : "Job description\n"
          },
          "idGeofence" : {
            "type" : "integer",
            "description" : "Geofence ID this job is assigned to\n",
            "format" : "int64"
          },
          "idCustomer" : {
            "type" : "integer",
            "description" : "Customer ID this job is assigned to\n",
            "format" : "int64"
          },
          "startTime" : {
            "type" : "integer",
            "description" : "Date and time the job should start at. Milliseconds since Unix Epoch (unixtime).\n",
            "format" : "int64"
          },
          "dueDate" : {
            "type" : "integer",
            "description" : "Due date for the job. Milliseconds since Unix Epoch (unixtime).\n",
            "format" : "int64"
          },
          "durationEstimated" : {
            "type" : "integer",
            "description" : "Estimated duration in seconds.\n",
            "format" : "int64"
          },
          "currentState" : {
            "type" : "string",
            "description" : "Job state. On Job creation if not defined, the state is set to OPEN.\n",
            "enum" : [ "OPEN", "IN_PROGRESS", "NOT_ACCEPTED", "DONE", "RESOLVED" ]
          },
          "assignedUsers" : {
            "type" : "array",
            "description" : "User IDs this job is assigned to.\n",
            "items" : {
              "type" : "integer",
              "description" : "User IDs this job is assigned to.\n",
              "format" : "int64"
            }
          },
          "id" : {
            "type" : "integer",
            "description" : "Unique identifier representing this job.\n",
            "format" : "int64"
          },
          "object" : {
            "type" : "string",
            "description" : "String representing the object’s type.\n",
            "readOnly" : true,
            "enum" : [ "LIST", "VEHICLE", "USER", "TRACK", "TRACKPOINT", "MAP_SHARING", "GEOFENCE", "GEOFENCE_ALERT", "GEOFENCE_ALERT_LOG", "GEOFENCE_REWRITE", "GEOFENCE_ACCESS", "CUSTOMER_CUSTOM_COLUMN", "CUSTOMER", "JOB", "JOB_STATE", "JOB_LOG", "USER_LAST_POSITION", "VEHICLE_LAST_POSITION", "USER_GROUP", "VEHICLE_GROUP", "USER_SUMMARY_STATS", "VEHICLE_SUMMARY_STATS", "EXPENSE", "EXPENSE_TYPE" ]
          }
        },
        "description" : "Job details.\n",
        "example" : {
          "id" : 10,
          "object" : "JOB",
          "jobDescription" : "Go to the warehouse for pickup immediately",
          "idGeofence" : 17230,
          "startTime" : 1521708748000,
          "durationEstimated" : 600,
          "currentState" : "IN_PROGRESS",
          "assignedUsers" : [ 2345 ]
        }
      },
      "UpdateJobModel" : {
        "required" : [ "id", "jobDescription" ],
        "type" : "object",
        "properties" : {
          "jobDescription" : {
            "type" : "string",
            "description" : "Job description\n"
          },
          "idGeofence" : {
            "type" : "integer",
            "description" : "Geofence ID this job is assigned to\n",
            "format" : "int64"
          },
          "idCustomer" : {
            "type" : "integer",
            "description" : "Customer ID this job is assigned to\n",
            "format" : "int64"
          },
          "startTime" : {
            "type" : "integer",
            "description" : "Date and time the job should start at. Milliseconds since Unix Epoch (unixtime).\n",
            "format" : "int64"
          },
          "dueDate" : {
            "type" : "integer",
            "description" : "Due date for the job. Milliseconds since Unix Epoch (unixtime).\n",
            "format" : "int64"
          },
          "durationEstimated" : {
            "type" : "integer",
            "description" : "Estimated duration in seconds.\n",
            "format" : "int64"
          },
          "currentState" : {
            "type" : "string",
            "description" : "Job state. On Job creation if not defined, the state is set to OPEN.\n",
            "enum" : [ "OPEN", "IN_PROGRESS", "NOT_ACCEPTED", "DONE", "RESOLVED" ]
          },
          "assignedUsers" : {
            "type" : "array",
            "description" : "User IDs this job is assigned to.\n",
            "items" : {
              "type" : "integer",
              "description" : "User IDs this job is assigned to.\n",
              "format" : "int64"
            }
          },
          "id" : {
            "type" : "integer",
            "description" : "Unique identifier representing this job.\n",
            "format" : "int64"
          }
        },
        "description" : "Update existing job.\n",
        "example" : {
          "id" : 3455,
          "jobDescription" : "Go to the warehouse for pickup immediately",
          "idGeofence" : 17230,
          "startTime" : 1521708748000,
          "durationEstimated" : 600,
          "currentState" : "OPEN",
          "assignedUsers" : [ 2345 ]
        }
      },
      "MapSharingModel" : {
        "required" : [ "id" ],
        "type" : "object",
        "properties" : {
          "urlKey" : {
            "type" : "string",
            "description" : "URL key. Leave empty for automatically generated.\n"
          },
          "type" : {
            "type" : "string",
            "description" : "The type of the share.\n",
            "enum" : [ "FLEET", "TRACKS" ]
          },
          "vehicleIds" : {
            "type" : "array",
            "description" : "(for type = FLEET) ID's of vehicles. If you leave blank the whole fleet is shared\n",
            "items" : {
              "type" : "integer",
              "description" : "(for type = FLEET) ID's of vehicles. If you leave blank the whole fleet is shared\n",
              "format" : "int64"
            }
          },
          "searchVisible" : {
            "type" : "boolean",
            "description" : "(for type = FLEET) Search visible on map.\n"
          },
          "searchText" : {
            "type" : "string",
            "description" : "(for type = FLEET) Search text.\n"
          },
          "showNames" : {
            "type" : "boolean",
            "description" : "(for type = FLEET) Vehicle labels visible.\n"
          },
          "showNavigateTo" : {
            "type" : "boolean",
            "description" : "(for type = FLEET) Show navigate to buttons.\n"
          },
          "showActualSpeed" : {
            "type" : "boolean",
            "description" : "(for type = FLEET) Show the real-time speed of shared vehicle.\n"
          },
          "showAltitude" : {
            "type" : "boolean",
            "description" : "(for type = FLEET) Show the altituce of shared vehicle.\n"
          },
          "zoomLevel" : {
            "type" : "integer",
            "description" : "(for type = FLEET) Zoom level. Applicable only when 1 vehicle is selected, values in range 1-30, leave blank for auto zoom.\n",
            "format" : "int64"
          },
          "recentPositionType" : {
            "type" : "string",
            "description" : "(for type = FLEET) Show recent track part on live positions map.\n",
            "enum" : [ "stop", "trackBegin", "last10", "today" ]
          },
          "showShareButton" : {
            "type" : "boolean",
            "description" : "Show button with share options.\n"
          },
          "showDetails" : {
            "type" : "boolean",
            "description" : "Show details about shared entites.\n"
          },
          "showGeofences" : {
            "type" : "boolean",
            "description" : "Show geofences on the map.\n"
          },
          "showPoi" : {
            "type" : "boolean",
            "description" : "Show POI on the map.\n"
          },
          "hideHeader" : {
            "type" : "boolean",
            "description" : "Hide header with logo and options.\n"
          },
          "preferredMap" : {
            "type" : "string",
            "description" : "Map layer used as the default. Leave empty for default map from your settings. Available keys \"osm\", \"hb\" (HERE_BASE), \"hs\" (HERE_SATELLITE), \"ht\" (HERE_TERRAIN), \"mbst\" (MAPBOX_STREETS), \"mbsa\" (MAPBOX_SATELLITE), \"mbn\" (MAPBOX_NAVIGATION), \"hn\" (HERE_NIGHT).\n",
            "enum" : [ "osm", "hb", "hs", "ht", "mbst", "mbsa", "mbn", "hn" ]
          },
          "disableMapSwitch" : {
            "type" : "boolean",
            "description" : "Disable layer switcher on rendered map.\n"
          },
          "trackIds" : {
            "type" : "array",
            "description" : "(for type = TRACKS) ID's of shared tracks. Cannot be empty.\n",
            "items" : {
              "type" : "integer",
              "description" : "(for type = TRACKS) ID's of shared tracks. Cannot be empty.\n",
              "format" : "int64"
            }
          },
          "lineOpacity" : {
            "type" : "integer",
            "description" : "(for type = TRACKS) Set line opacity (1 - 100).\n",
            "format" : "int64"
          },
          "lineWidth" : {
            "type" : "integer",
            "description" : "(for type = TRACKS) Set the width of rendered line (1 - 50).\n",
            "format" : "int64"
          },
          "lineColor" : {
            "type" : "string",
            "description" : "(for type = TRACKS) Set color for all rendered tracks. Leave blank for colors by vehicle color.\n"
          },
          "enableVehicleFiltering" : {
            "type" : "boolean",
            "description" : "(for type = TRACKS) Enable vehicle filtering\n"
          },
          "enableDateSelector" : {
            "type" : "boolean",
            "description" : "(for type = TRACKS) Enable date range selector\n"
          },
          "substituteVehicleNames" : {
            "type" : "boolean",
            "description" : "(for type = TRACKS) Substitute vehicle names\n"
          },
          "customContent" : {
            "type" : "string",
            "description" : "(for type = TRACKS) Enter custom data that will be shown in details widget. HTML enabled\n"
          },
          "id" : {
            "type" : "integer",
            "description" : "Unique identifier representing a specific shared map.\n",
            "format" : "int64"
          },
          "object" : {
            "type" : "string",
            "description" : "String representing the object’s type.\n",
            "readOnly" : true,
            "enum" : [ "LIST", "VEHICLE", "USER", "TRACK", "TRACKPOINT", "MAP_SHARING", "GEOFENCE", "GEOFENCE_ALERT", "GEOFENCE_ALERT_LOG", "GEOFENCE_REWRITE", "GEOFENCE_ACCESS", "CUSTOMER_CUSTOM_COLUMN", "CUSTOMER", "JOB", "JOB_STATE", "JOB_LOG", "USER_LAST_POSITION", "VEHICLE_LAST_POSITION", "USER_GROUP", "VEHICLE_GROUP", "USER_SUMMARY_STATS", "VEHICLE_SUMMARY_STATS", "EXPENSE", "EXPENSE_TYPE" ]
          }
        },
        "description" : "Shared map.\n"
      },
      "MapSharingsModel" : {
        "type" : "object",
        "properties" : {
          "object" : {
            "type" : "string",
            "description" : "String representing the object’s type.\n",
            "enum" : [ "LIST", "VEHICLE", "USER", "TRACK", "TRACKPOINT", "MAP_SHARING", "GEOFENCE", "GEOFENCE_ALERT", "GEOFENCE_ALERT_LOG", "GEOFENCE_REWRITE", "GEOFENCE_ACCESS", "CUSTOMER_CUSTOM_COLUMN", "CUSTOMER", "JOB", "JOB_STATE", "JOB_LOG", "USER_LAST_POSITION", "VEHICLE_LAST_POSITION", "USER_GROUP", "VEHICLE_GROUP", "USER_SUMMARY_STATS", "VEHICLE_SUMMARY_STATS", "EXPENSE", "EXPENSE_TYPE" ]
          },
          "url" : {
            "type" : "string",
            "description" : "Curent endpoint URL\n"
          },
          "data" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/MapSharingModel"
            }
          }
        },
        "description" : "A representation of list with map sharings.\n"
      },
      "CreateMapSharingModel" : {
        "required" : [ "type" ],
        "type" : "object",
        "properties" : {
          "urlKey" : {
            "type" : "string",
            "description" : "URL key. Leave empty for automatically generated.\n"
          },
          "type" : {
            "type" : "string",
            "description" : "The type of the share.\n",
            "enum" : [ "FLEET", "TRACKS" ]
          },
          "vehicleIds" : {
            "type" : "array",
            "description" : "(for type = FLEET) ID's of vehicles. If you leave blank the whole fleet is shared\n",
            "items" : {
              "type" : "integer",
              "description" : "(for type = FLEET) ID's of vehicles. If you leave blank the whole fleet is shared\n",
              "format" : "int64"
            }
          },
          "searchVisible" : {
            "type" : "boolean",
            "description" : "(for type = FLEET) Search visible on map.\n"
          },
          "searchText" : {
            "type" : "string",
            "description" : "(for type = FLEET) Search text.\n"
          },
          "showNames" : {
            "type" : "boolean",
            "description" : "(for type = FLEET) Vehicle labels visible.\n"
          },
          "showNavigateTo" : {
            "type" : "boolean",
            "description" : "(for type = FLEET) Show navigate to buttons.\n"
          },
          "showActualSpeed" : {
            "type" : "boolean",
            "description" : "(for type = FLEET) Show the real-time speed of shared vehicle.\n"
          },
          "showAltitude" : {
            "type" : "boolean",
            "description" : "(for type = FLEET) Show the altituce of shared vehicle.\n"
          },
          "zoomLevel" : {
            "type" : "integer",
            "description" : "(for type = FLEET) Zoom level. Applicable only when 1 vehicle is selected, values in range 1-30, leave blank for auto zoom.\n",
            "format" : "int64"
          },
          "recentPositionType" : {
            "type" : "string",
            "description" : "(for type = FLEET) Show recent track part on live positions map.\n",
            "enum" : [ "stop", "trackBegin", "last10", "today" ]
          },
          "showShareButton" : {
            "type" : "boolean",
            "description" : "Show button with share options.\n"
          },
          "showDetails" : {
            "type" : "boolean",
            "description" : "Show details about shared entites.\n"
          },
          "showGeofences" : {
            "type" : "boolean",
            "description" : "Show geofences on the map.\n"
          },
          "showPoi" : {
            "type" : "boolean",
            "description" : "Show POI on the map.\n"
          },
          "hideHeader" : {
            "type" : "boolean",
            "description" : "Hide header with logo and options.\n"
          },
          "preferredMap" : {
            "type" : "string",
            "description" : "Map layer used as the default. Leave empty for default map from your settings. Available keys \"osm\", \"hb\" (HERE_BASE), \"hs\" (HERE_SATELLITE), \"ht\" (HERE_TERRAIN), \"mbst\" (MAPBOX_STREETS), \"mbsa\" (MAPBOX_SATELLITE), \"mbn\" (MAPBOX_NAVIGATION), \"hn\" (HERE_NIGHT).\n",
            "enum" : [ "osm", "hb", "hs", "ht", "mbst", "mbsa", "mbn", "hn" ]
          },
          "disableMapSwitch" : {
            "type" : "boolean",
            "description" : "Disable layer switcher on rendered map.\n"
          },
          "trackIds" : {
            "type" : "array",
            "description" : "(for type = TRACKS) ID's of shared tracks. Cannot be empty.\n",
            "items" : {
              "type" : "integer",
              "description" : "(for type = TRACKS) ID's of shared tracks. Cannot be empty.\n",
              "format" : "int64"
            }
          },
          "lineOpacity" : {
            "type" : "integer",
            "description" : "(for type = TRACKS) Set line opacity (1 - 100).\n",
            "format" : "int64"
          },
          "lineWidth" : {
            "type" : "integer",
            "description" : "(for type = TRACKS) Set the width of rendered line (1 - 50).\n",
            "format" : "int64"
          },
          "lineColor" : {
            "type" : "string",
            "description" : "(for type = TRACKS) Set color for all rendered tracks. Leave blank for colors by vehicle color.\n"
          },
          "enableVehicleFiltering" : {
            "type" : "boolean",
            "description" : "(for type = TRACKS) Enable vehicle filtering\n"
          },
          "enableDateSelector" : {
            "type" : "boolean",
            "description" : "(for type = TRACKS) Enable date range selector\n"
          },
          "substituteVehicleNames" : {
            "type" : "boolean",
            "description" : "(for type = TRACKS) Substitute vehicle names\n"
          },
          "customContent" : {
            "type" : "string",
            "description" : "(for type = TRACKS) Enter custom data that will be shown in details widget. HTML enabled\n"
          }
        },
        "description" : "Create new map sharing.\n"
      },
      "UpdateMapSharingModel" : {
        "required" : [ "id" ],
        "type" : "object",
        "properties" : {
          "urlKey" : {
            "type" : "string",
            "description" : "URL key. Leave empty for automatically generated.\n"
          },
          "type" : {
            "type" : "string",
            "description" : "The type of the share.\n",
            "enum" : [ "FLEET", "TRACKS" ]
          },
          "vehicleIds" : {
            "type" : "array",
            "description" : "(for type = FLEET) ID's of vehicles. If you leave blank the whole fleet is shared\n",
            "items" : {
              "type" : "integer",
              "description" : "(for type = FLEET) ID's of vehicles. If you leave blank the whole fleet is shared\n",
              "format" : "int64"
            }
          },
          "searchVisible" : {
            "type" : "boolean",
            "description" : "(for type = FLEET) Search visible on map.\n"
          },
          "searchText" : {
            "type" : "string",
            "description" : "(for type = FLEET) Search text.\n"
          },
          "showNames" : {
            "type" : "boolean",
            "description" : "(for type = FLEET) Vehicle labels visible.\n"
          },
          "showNavigateTo" : {
            "type" : "boolean",
            "description" : "(for type = FLEET) Show navigate to buttons.\n"
          },
          "showActualSpeed" : {
            "type" : "boolean",
            "description" : "(for type = FLEET) Show the real-time speed of shared vehicle.\n"
          },
          "showAltitude" : {
            "type" : "boolean",
            "description" : "(for type = FLEET) Show the altituce of shared vehicle.\n"
          },
          "zoomLevel" : {
            "type" : "integer",
            "description" : "(for type = FLEET) Zoom level. Applicable only when 1 vehicle is selected, values in range 1-30, leave blank for auto zoom.\n",
            "format" : "int64"
          },
          "recentPositionType" : {
            "type" : "string",
            "description" : "(for type = FLEET) Show recent track part on live positions map.\n",
            "enum" : [ "stop", "trackBegin", "last10", "today" ]
          },
          "showShareButton" : {
            "type" : "boolean",
            "description" : "Show button with share options.\n"
          },
          "showDetails" : {
            "type" : "boolean",
            "description" : "Show details about shared entites.\n"
          },
          "showGeofences" : {
            "type" : "boolean",
            "description" : "Show geofences on the map.\n"
          },
          "showPoi" : {
            "type" : "boolean",
            "description" : "Show POI on the map.\n"
          },
          "hideHeader" : {
            "type" : "boolean",
            "description" : "Hide header with logo and options.\n"
          },
          "preferredMap" : {
            "type" : "string",
            "description" : "Map layer used as the default. Leave empty for default map from your settings. Available keys \"osm\", \"hb\" (HERE_BASE), \"hs\" (HERE_SATELLITE), \"ht\" (HERE_TERRAIN), \"mbst\" (MAPBOX_STREETS), \"mbsa\" (MAPBOX_SATELLITE), \"mbn\" (MAPBOX_NAVIGATION), \"hn\" (HERE_NIGHT).\n",
            "enum" : [ "osm", "hb", "hs", "ht", "mbst", "mbsa", "mbn", "hn" ]
          },
          "disableMapSwitch" : {
            "type" : "boolean",
            "description" : "Disable layer switcher on rendered map.\n"
          },
          "trackIds" : {
            "type" : "array",
            "description" : "(for type = TRACKS) ID's of shared tracks. Cannot be empty.\n",
            "items" : {
              "type" : "integer",
              "description" : "(for type = TRACKS) ID's of shared tracks. Cannot be empty.\n",
              "format" : "int64"
            }
          },
          "lineOpacity" : {
            "type" : "integer",
            "description" : "(for type = TRACKS) Set line opacity (1 - 100).\n",
            "format" : "int64"
          },
          "lineWidth" : {
            "type" : "integer",
            "description" : "(for type = TRACKS) Set the width of rendered line (1 - 50).\n",
            "format" : "int64"
          },
          "lineColor" : {
            "type" : "string",
            "description" : "(for type = TRACKS) Set color for all rendered tracks. Leave blank for colors by vehicle color.\n"
          },
          "enableVehicleFiltering" : {
            "type" : "boolean",
            "description" : "(for type = TRACKS) Enable vehicle filtering\n"
          },
          "enableDateSelector" : {
            "type" : "boolean",
            "description" : "(for type = TRACKS) Enable date range selector\n"
          },
          "substituteVehicleNames" : {
            "type" : "boolean",
            "description" : "(for type = TRACKS) Substitute vehicle names\n"
          },
          "customContent" : {
            "type" : "string",
            "description" : "(for type = TRACKS) Enter custom data that will be shown in details widget. HTML enabled\n"
          },
          "id" : {
            "type" : "integer",
            "description" : "Unique identifier representing this shared map.\n",
            "format" : "int64"
          },
          "refreshS3" : {
            "type" : "boolean",
            "description" : "(for type = TRACKS) Aplicable only on update. If set to true the stored data is processed again and the changes can take more than 1 - 2 hours to take effect.\n"
          }
        },
        "description" : "Update existing shared map. Some columns are required for specific type.\n"
      },
      "MileageRateModel" : {
        "type" : "object",
        "properties" : {
          "id" : {
            "type" : "integer",
            "description" : "Mileage-rate ID.\n",
            "format" : "int32"
          },
          "countryCode" : {
            "type" : "string",
            "description" : "ISO 3166 country code for country rates.\n"
          },
          "description" : {
            "type" : "string",
            "description" : "Mileage-rate description.\n"
          },
          "rateType" : {
            "type" : "string",
            "description" : "Mileage-rate type.\n",
            "enum" : [ "SIMPLE", "TIERED", "TIERED_DISTANCE" ]
          },
          "effectiveDate" : {
            "type" : "integer",
            "description" : "Rate effective date as a Unix timestamp in milliseconds.\n",
            "format" : "int64"
          },
          "rate" : {
            "type" : "number",
            "description" : "Simple mileage rate. Present when rateType is SIMPLE.\n"
          },
          "currency" : {
            "type" : "string",
            "description" : "Currency code used by this rate.\n"
          },
          "unit" : {
            "type" : "string",
            "description" : "Distance unit used by this rate. Null can appear for older custom settings; in that case the user's measurement unit is used for calculations.\n",
            "enum" : [ "KM", "MILE" ]
          },
          "purpose" : {
            "type" : "string",
            "description" : "Translated or custom mileage-rate purpose label.\n"
          },
          "purposeKey" : {
            "type" : "string",
            "description" : "Dictionary key for public mileage-rate purposes. Null for user-defined custom purposes.\n"
          },
          "tiers" : {
            "type" : "array",
            "description" : "Tiered mileage rates. Present when rateType is TIERED or TIERED_DISTANCE.\n",
            "items" : {
              "$ref" : "#/components/schemas/MileageRateTierModel"
            }
          }
        },
        "description" : "Configured mileage rate.\n"
      },
      "MileageRateSettingsModel" : {
        "type" : "object",
        "properties" : {
          "option" : {
            "type" : "string",
            "description" : "Current mileage-rate option.\n",
            "enum" : [ "NOT_SET", "DISABLED", "COUNTRY", "CUSTOM" ]
          },
          "countryCode" : {
            "type" : "string",
            "description" : "Selected ISO 3166 country code when option is COUNTRY.\n"
          },
          "countryName" : {
            "type" : "string",
            "description" : "Selected country name when option is COUNTRY.\n"
          },
          "countryNameEnglish" : {
            "type" : "string",
            "description" : "Selected country English name when option is COUNTRY.\n"
          },
          "defaultCurrency" : {
            "type" : "string",
            "description" : "Default currency for the selected country.\n"
          },
          "rates" : {
            "type" : "array",
            "description" : "Configured rates for the selected option. Empty when option is DISABLED or NOT_SET.\n",
            "items" : {
              "$ref" : "#/components/schemas/MileageRateModel"
            }
          }
        },
        "description" : "Current account mileage-rate settings.\n"
      },
      "MileageRateTierModel" : {
        "type" : "object",
        "properties" : {
          "start" : {
            "type" : "number",
            "description" : "Tier start distance in kilometers or miles depending on the parent rate unit.\n",
            "format" : "double"
          },
          "end" : {
            "type" : "number",
            "description" : "Tier end distance in kilometers or miles depending on the parent rate unit. Null means no upper limit.\n",
            "format" : "double"
          },
          "rate" : {
            "type" : "number",
            "description" : "Mileage rate for this tier.\n"
          }
        },
        "description" : "Mileage-rate tier details.\n"
      },
      "LogBookReportExportRequestModel" : {
        "type" : "object",
        "properties" : {
          "format" : {
            "type" : "string",
            "description" : "Output file format. Defaults to `PDF` when omitted.\n",
            "example" : "PDF",
            "enum" : [ "PDF", "XLS", "CSV", "XML" ]
          },
          "dateFrom" : {
            "type" : "integer",
            "description" : "Inclusive report start date/time as Unix epoch milliseconds.\n",
            "format" : "int64",
            "example" : 1711929600000
          },
          "dateTo" : {
            "type" : "integer",
            "description" : "Inclusive report end date/time as Unix epoch milliseconds.\n",
            "format" : "int64",
            "example" : 1714521599000
          },
          "vehicleIds" : {
            "type" : "array",
            "description" : "Vehicle IDs to include. Omit or send an empty array to include all vehicles available to the authenticated user.\n",
            "example" : [ 101, 102 ],
            "items" : {
              "type" : "integer",
              "description" : "Vehicle IDs to include. Omit or send an empty array to include all vehicles available to the authenticated user.\n",
              "format" : "int64"
            }
          },
          "driverIds" : {
            "type" : "array",
            "description" : "Driver/user IDs to include. Omit or send an empty array to include all drivers available to the authenticated user.\n",
            "example" : [ 201, 202 ],
            "items" : {
              "type" : "integer",
              "description" : "Driver/user IDs to include. Omit or send an empty array to include all drivers available to the authenticated user.\n",
              "format" : "int64"
            }
          },
          "category" : {
            "type" : "string",
            "description" : "Track category filter. Omit to include all categories.\n",
            "example" : "BUSINESS",
            "enum" : [ "BUSINESS", "PERSONAL" ]
          },
          "language" : {
            "type" : "string",
            "description" : "Optional language code used for translated report labels, for example `en`, `sk`, or `de`. Defaults to the authenticated user's language.\n",
            "example" : "en"
          },
          "minMileage" : {
            "type" : "number",
            "description" : "Minimum track distance to include, expressed in the authenticated user's measurement unit.\n",
            "format" : "double",
            "example" : 1.5
          },
          "geofenceOption" : {
            "type" : "integer",
            "description" : "Geofence filter option ID. Omit to include tracks regardless of geofence matching.\n",
            "format" : "int64",
            "example" : 1
          },
          "showTracksMerged" : {
            "type" : "boolean",
            "description" : "When true, merge compatible tracks in the logbook output.\n",
            "example" : false
          },
          "simplifyAddresses" : {
            "type" : "boolean",
            "description" : "When true, simplify repeated address parts in route output.\n",
            "example" : true
          },
          "logBookHeader" : {
            "type" : "string",
            "description" : "Custom report header/title. Omit to use the localized default header.\n",
            "example" : "April 2026 logbook"
          },
          "addVehicleDescription" : {
            "type" : "boolean",
            "description" : "When true, include the selected vehicle description in the report header.\n",
            "example" : true
          },
          "vehicleDescription" : {
            "type" : "string",
            "description" : "Custom vehicle description used when `addVehicleDescription` is true.\n",
            "example" : "Sales fleet"
          },
          "includeTrackName" : {
            "type" : "boolean",
            "description" : "When true, include track names in formats that support the track name column.\n",
            "example" : true
          }
        },
        "description" : "Logbook report export request.\n"
      },
      "ReimbursementReportExportRequestModel" : {
        "type" : "object",
        "properties" : {
          "format" : {
            "type" : "string",
            "description" : "Output file format. Defaults to `PDF` when omitted.\n",
            "example" : "PDF",
            "enum" : [ "PDF", "XLS", "CSV", "XML" ]
          },
          "dateFrom" : {
            "type" : "integer",
            "description" : "Inclusive report start date/time as Unix epoch milliseconds.\n",
            "format" : "int64",
            "example" : 1711929600000
          },
          "dateTo" : {
            "type" : "integer",
            "description" : "Inclusive report end date/time as Unix epoch milliseconds.\n",
            "format" : "int64",
            "example" : 1714521599000
          },
          "vehicleIds" : {
            "type" : "array",
            "description" : "Vehicle IDs to include. Omit or send an empty array to include all vehicles available to the authenticated user.\n",
            "example" : [ 101, 102 ],
            "items" : {
              "type" : "integer",
              "description" : "Vehicle IDs to include. Omit or send an empty array to include all vehicles available to the authenticated user.\n",
              "format" : "int64"
            }
          },
          "driverIds" : {
            "type" : "array",
            "description" : "Driver/user IDs to include. Omit or send an empty array to include all drivers available to the authenticated user.\n",
            "example" : [ 201, 202 ],
            "items" : {
              "type" : "integer",
              "description" : "Driver/user IDs to include. Omit or send an empty array to include all drivers available to the authenticated user.\n",
              "format" : "int64"
            }
          },
          "category" : {
            "type" : "string",
            "description" : "Track category filter. Omit to include all categories.\n",
            "example" : "BUSINESS",
            "enum" : [ "BUSINESS", "PERSONAL" ]
          },
          "language" : {
            "type" : "string",
            "description" : "Optional language code used for translated report labels, for example `en`, `sk`, or `de`. Defaults to the authenticated user's language.\n",
            "example" : "en"
          },
          "minMileage" : {
            "type" : "number",
            "description" : "Minimum track distance to include, expressed in the authenticated user's measurement unit.\n",
            "format" : "double",
            "example" : 1.5
          },
          "geofenceOption" : {
            "type" : "integer",
            "description" : "Geofence filter option ID. Omit to include tracks regardless of geofence matching.\n",
            "format" : "int64",
            "example" : 1
          },
          "showTracksMerged" : {
            "type" : "boolean",
            "description" : "When true, merge compatible tracks in the logbook output.\n",
            "example" : false
          },
          "simplifyAddresses" : {
            "type" : "boolean",
            "description" : "When true, simplify repeated address parts in route output.\n",
            "example" : true
          },
          "logBookHeader" : {
            "type" : "string",
            "description" : "Custom report header/title. Omit to use the localized default header.\n",
            "example" : "April 2026 logbook"
          },
          "addVehicleDescription" : {
            "type" : "boolean",
            "description" : "When true, include the selected vehicle description in the report header.\n",
            "example" : true
          },
          "vehicleDescription" : {
            "type" : "string",
            "description" : "Custom vehicle description used when `addVehicleDescription` is true.\n",
            "example" : "Sales fleet"
          },
          "includeTrackName" : {
            "type" : "boolean",
            "description" : "When true, include track names in formats that support the track name column.\n",
            "example" : true
          },
          "reportName" : {
            "type" : "string",
            "description" : "Mileage reimbursement report name shown in reimbursement exports.\n",
            "example" : "April 2026 reimbursement"
          },
          "selectedApplyReimbursement" : {
            "type" : "integer",
            "description" : "Mileage reimbursement category scope. `1` applies reimbursement to business tracks, `2` to personal tracks, and `3` to all tracks.\n",
            "format" : "int32",
            "example" : 1,
            "enum" : [ 1, 2, 3 ]
          },
          "selectedPurposeOverride" : {
            "type" : "integer",
            "description" : "Category override mode for reimbursement purposes. `1` overrides as business, `2` does not override, `3` overrides as personal, and `4` overrides all tracks.\n",
            "format" : "int32",
            "example" : 2,
            "enum" : [ 1, 2, 3, 4 ]
          },
          "selectedRateType" : {
            "type" : "integer",
            "description" : "Mileage rate source. `1` uses custom/user-defined rates and `2` uses country rates.\n",
            "format" : "int64",
            "example" : 1,
            "enum" : [ 1, 2 ]
          },
          "selectedCountry" : {
            "type" : "string",
            "description" : "ISO 3166-1 alpha-2 country code used when `selectedRateType` is `2` (country rates).\n",
            "example" : "US"
          },
          "selectedTrackPurpose" : {
            "type" : "integer",
            "description" : "Mileage reimbursement purpose ID. Use `5` together with `otherPurpose` for the custom/other purpose.\n",
            "format" : "int64",
            "example" : 1
          },
          "rate" : {
            "type" : "object",
            "additionalProperties" : {
              "type" : "number",
              "description" : "Optional simple rate overrides keyed by effective-date Unix epoch milliseconds. Values are reimbursement rates per distance unit.\n",
              "format" : "double"
            },
            "description" : "Optional simple rate overrides keyed by effective-date Unix epoch milliseconds. Values are reimbursement rates per distance unit.\n",
            "example" : {
              "1711929600000" : 0.67
            }
          },
          "otherPurpose" : {
            "type" : "string",
            "description" : "Custom purpose text used when `selectedTrackPurpose` is `5`.\n",
            "example" : "Client visits"
          }
        },
        "description" : "Mileage reimbursement report export request. Includes logbook filters plus reimbursement and rate options.\n"
      },
      "StopsReportExportRequestModel" : {
        "type" : "object",
        "properties" : {
          "format" : {
            "type" : "string",
            "description" : "Output file format. Defaults to `PDF` when omitted.\n",
            "example" : "PDF",
            "enum" : [ "PDF", "XLS", "CSV", "XML" ]
          },
          "dateFrom" : {
            "type" : "integer",
            "description" : "Inclusive report start date/time as Unix epoch milliseconds.\n",
            "format" : "int64",
            "example" : 1711929600000
          },
          "dateTo" : {
            "type" : "integer",
            "description" : "Inclusive report end date/time as Unix epoch milliseconds.\n",
            "format" : "int64",
            "example" : 1714521599000
          },
          "vehicleIds" : {
            "type" : "array",
            "description" : "Vehicle IDs to include. Omit or send an empty array to include all vehicles available to the authenticated user.\n",
            "example" : [ 101, 102 ],
            "items" : {
              "type" : "integer",
              "description" : "Vehicle IDs to include. Omit or send an empty array to include all vehicles available to the authenticated user.\n",
              "format" : "int64"
            }
          },
          "driverIds" : {
            "type" : "array",
            "description" : "Driver/user IDs to include. Omit or send an empty array to include all drivers available to the authenticated user.\n",
            "example" : [ 201, 202 ],
            "items" : {
              "type" : "integer",
              "description" : "Driver/user IDs to include. Omit or send an empty array to include all drivers available to the authenticated user.\n",
              "format" : "int64"
            }
          },
          "category" : {
            "type" : "string",
            "description" : "Track category filter. Omit to include all categories.\n",
            "example" : "BUSINESS",
            "enum" : [ "BUSINESS", "PERSONAL" ]
          },
          "language" : {
            "type" : "string",
            "description" : "Optional language code used for translated report labels, for example `en`, `sk`, or `de`. Defaults to the authenticated user's language.\n",
            "example" : "en"
          },
          "maxSpeed" : {
            "type" : "number",
            "description" : "Maximum speed threshold for stop detection, expressed in the authenticated user's measurement unit. Omit or send `0` for no speed filter.\n",
            "format" : "double",
            "example" : 5
          },
          "stopLengthFrom" : {
            "type" : "integer",
            "description" : "Minimum stop duration in minutes. Defaults to `10` when omitted.\n",
            "format" : "int32",
            "example" : 10
          },
          "stopLengthTo" : {
            "type" : "integer",
            "description" : "Maximum stop duration in minutes. Defaults to `1440` when omitted.\n",
            "format" : "int32",
            "example" : 1440
          },
          "stopType" : {
            "type" : "string",
            "description" : "Stop type filter. `WITHIN_TRACK` returns stops detected inside tracks, `BETWEEN_TRACKS` returns stops between tracks. Omit to include both.\n",
            "example" : "WITHIN_TRACK",
            "enum" : [ "WITHIN_TRACK", "BETWEEN_TRACKS" ]
          }
        },
        "description" : "Stops report export request.\n"
      },
      "TrackpointModel" : {
        "type" : "object",
        "properties" : {
          "id" : {
            "type" : "integer",
            "description" : "Unique identifier representing a specific Trackpoint.\n",
            "format" : "int64"
          },
          "latitude" : {
            "type" : "number",
            "description" : "Trackpoint latitude.\n",
            "format" : "double"
          },
          "longitude" : {
            "type" : "number",
            "description" : "Trackpoint longitude.\n",
            "format" : "double"
          },
          "altitude" : {
            "type" : "number",
            "description" : "Trackpoint altitude in meters or foots depending on user settings.\n",
            "format" : "double"
          },
          "time" : {
            "type" : "integer",
            "description" : "Trackpoint timestamp in millis.\n",
            "format" : "int64"
          },
          "speed" : {
            "type" : "number",
            "description" : "Trackpoint speed in km/h or mph depending on user settings.\n",
            "format" : "double"
          },
          "accuracy" : {
            "type" : "number",
            "description" : "Trackpoint accurracy in meters or foots depending on user settings.\n",
            "format" : "double"
          }
        },
        "description" : "List of user or vehicle last positions\n"
      },
      "TrackpointsModel" : {
        "type" : "object",
        "properties" : {
          "object" : {
            "type" : "string",
            "description" : "String representing the object’s type.\n",
            "enum" : [ "LIST", "VEHICLE", "USER", "TRACK", "TRACKPOINT", "MAP_SHARING", "GEOFENCE", "GEOFENCE_ALERT", "GEOFENCE_ALERT_LOG", "GEOFENCE_REWRITE", "GEOFENCE_ACCESS", "CUSTOMER_CUSTOM_COLUMN", "CUSTOMER", "JOB", "JOB_STATE", "JOB_LOG", "USER_LAST_POSITION", "VEHICLE_LAST_POSITION", "USER_GROUP", "VEHICLE_GROUP", "USER_SUMMARY_STATS", "VEHICLE_SUMMARY_STATS", "EXPENSE", "EXPENSE_TYPE" ]
          },
          "url" : {
            "type" : "string",
            "description" : "Curent endpoint URL\n"
          },
          "hasMore" : {
            "type" : "boolean",
            "description" : "Indicating whether there are more results available. Use 'offset' parameter for pagination.\n"
          },
          "data" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/TrackpointModel"
            }
          }
        },
        "description" : "A representation of list of trackpoints.\n"
      },
      "TrackModel" : {
        "type" : "object",
        "properties" : {
          "name" : {
            "type" : "string",
            "description" : "Track name.\n"
          },
          "description" : {
            "type" : "string",
            "description" : "Track description.\n"
          },
          "category" : {
            "type" : "string",
            "description" : "Track category.\n",
            "enum" : [ "PERSONAL", "BUSINESS" ]
          },
          "carId" : {
            "type" : "integer",
            "description" : "Unique identifier representing a specific vehicle.\n",
            "format" : "int64"
          },
          "userId" : {
            "type" : "integer",
            "description" : "Unique identifier representing a specific user.\n",
            "format" : "int64"
          },
          "startTime" : {
            "type" : "integer",
            "description" : "Track start time in millis.\n",
            "format" : "int64"
          },
          "endTime" : {
            "type" : "integer",
            "description" : "Track end time in millis.\n",
            "format" : "int64"
          },
          "addressFrom" : {
            "type" : "string",
            "description" : "Start address\n"
          },
          "addressTo" : {
            "type" : "string",
            "description" : "End address\n"
          },
          "device" : {
            "type" : "string",
            "description" : "String representing the track source.\n",
            "enum" : [ "ANDROID", "MANUAL" ]
          },
          "id" : {
            "type" : "integer",
            "description" : "Unique identifier representing a specific track.\n",
            "format" : "int64"
          },
          "vehicleName" : {
            "type" : "string",
            "description" : "Vehicle name.\n"
          },
          "driverName" : {
            "type" : "string",
            "description" : "Driver's name - can be empty if it was not set.\n"
          },
          "driverIdentifier" : {
            "type" : "string",
            "description" : "Driver's email or Account ID.\n"
          },
          "totalDistance" : {
            "type" : "number",
            "description" : "Distance in meters or feet depending on user settings.\n",
            "format" : "double"
          },
          "totalTime" : {
            "type" : "integer",
            "description" : "Track total time in milliseconds.\n",
            "format" : "int64"
          },
          "movingTime" : {
            "type" : "integer",
            "description" : "Track moving time in milliseconds.\n",
            "format" : "int64"
          },
          "maxSpeed" : {
            "type" : "number",
            "description" : "Max speed in km/h or mph depending on user settings.\n",
            "format" : "double"
          },
          "avgSpeed" : {
            "type" : "number",
            "description" : "Average speed in km/h or mph depending on user settings.\n",
            "format" : "double"
          },
          "avgMovingSpeed" : {
            "type" : "number",
            "description" : "Average movingspeed in km/h or mph depending on user settings.\n",
            "format" : "double"
          },
          "minElevation" : {
            "type" : "number",
            "description" : "Min elevation in meters or feet depending on user settings.\n",
            "format" : "double"
          },
          "maxElevation" : {
            "type" : "number",
            "description" : "Max elevation in meters or feet depending on user settings.\n",
            "format" : "double"
          },
          "totalElevation" : {
            "type" : "number",
            "description" : "Total elevation in meters or feet depending on user settings.\n",
            "format" : "double"
          },
          "minGrade" : {
            "type" : "number",
            "description" : "Track min grade.\n",
            "format" : "double"
          },
          "maxGrade" : {
            "type" : "number",
            "description" : "Track max grade.\n",
            "format" : "double"
          },
          "startTimeFormatted" : {
            "type" : "string",
            "description" : "Formatted track start time (YYYY-MM-DDThh:mm:ssTZD).\n"
          },
          "endTimeFormatted" : {
            "type" : "string",
            "description" : "Formatted track end time (YYYY-MM-DDThh:mm:ssTZD).\n"
          },
          "created" : {
            "type" : "integer",
            "description" : "Track created time in unix timestamp.\n",
            "format" : "int64"
          },
          "updated" : {
            "type" : "integer",
            "description" : "Track updated time in unix timestamp.\n",
            "format" : "int64"
          },
          "exportData" : {
            "type" : "string",
            "description" : "If exportTrackpointsType parameter used this field will be populated with data in requested format.\n"
          },
          "mileageReimbursement" : {
            "type" : "number",
            "description" : "Mileage reimbursement calculated for this track when mileage rates are enabled and configured for the current account.\nNull when mileage rates are disabled, not configured, or not applicable to the track.\n"
          },
          "mileageReimbursementCurrency" : {
            "type" : "string",
            "description" : "Currency code for `mileageReimbursement`.\n"
          }
        },
        "description" : "Recorded track.\n"
      },
      "Tracks2Model" : {
        "type" : "object",
        "properties" : {
          "object" : {
            "type" : "string",
            "description" : "String representing the object's type.\n",
            "enum" : [ "LIST", "VEHICLE", "USER", "TRACK", "TRACKPOINT", "MAP_SHARING", "GEOFENCE", "GEOFENCE_ALERT", "GEOFENCE_ALERT_LOG", "GEOFENCE_REWRITE", "GEOFENCE_ACCESS", "CUSTOMER_CUSTOM_COLUMN", "CUSTOMER", "JOB", "JOB_STATE", "JOB_LOG", "USER_LAST_POSITION", "VEHICLE_LAST_POSITION", "USER_GROUP", "VEHICLE_GROUP", "USER_SUMMARY_STATS", "VEHICLE_SUMMARY_STATS", "EXPENSE", "EXPENSE_TYPE" ]
          },
          "url" : {
            "type" : "string",
            "description" : "Current endpoint URL.\n"
          },
          "hasMore" : {
            "type" : "boolean",
            "description" : "Indicating whether there are more results available.\n"
          },
          "offset" : {
            "type" : "integer",
            "description" : "Zero-based row offset used for this page.\n",
            "format" : "int32"
          },
          "limit" : {
            "type" : "integer",
            "description" : "Page size used for this page.\n",
            "format" : "int32"
          },
          "nextOffset" : {
            "type" : "integer",
            "description" : "Offset to use for the next page. Null when hasMore is false.\n",
            "format" : "int32"
          },
          "sort" : {
            "type" : "string",
            "description" : "Sort applied before paging.\n"
          },
          "totalCount" : {
            "type" : "integer",
            "description" : "Total number of tracks for the current filters. Present only when includeTotal=true.\n",
            "format" : "int32"
          },
          "data" : {
            "type" : "array",
            "description" : "Track data for this page.\n",
            "items" : {
              "$ref" : "#/components/schemas/TrackModel"
            }
          }
        },
        "description" : "Enhanced representation of a paged list of tracks.\n"
      },
      "TracksModel" : {
        "type" : "object",
        "properties" : {
          "object" : {
            "type" : "string",
            "description" : "String representing the object’s type.\n",
            "enum" : [ "LIST", "VEHICLE", "USER", "TRACK", "TRACKPOINT", "MAP_SHARING", "GEOFENCE", "GEOFENCE_ALERT", "GEOFENCE_ALERT_LOG", "GEOFENCE_REWRITE", "GEOFENCE_ACCESS", "CUSTOMER_CUSTOM_COLUMN", "CUSTOMER", "JOB", "JOB_STATE", "JOB_LOG", "USER_LAST_POSITION", "VEHICLE_LAST_POSITION", "USER_GROUP", "VEHICLE_GROUP", "USER_SUMMARY_STATS", "VEHICLE_SUMMARY_STATS", "EXPENSE", "EXPENSE_TYPE" ]
          },
          "url" : {
            "type" : "string",
            "description" : "Curent endpoint URL\n"
          },
          "hasMore" : {
            "type" : "boolean",
            "description" : "Indicating whether there are more results available. Use 'offset' parameter for pagination.\n"
          },
          "data" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/TrackModel"
            }
          }
        },
        "description" : "A representation of list of tracks.\n"
      },
      "CreateTrackModel" : {
        "required" : [ "carId", "category", "endTime", "latitudeFrom", "latitudeTo", "longitudeFrom", "longitudeTo", "name", "startTime", "totalDistance", "userId" ],
        "type" : "object",
        "properties" : {
          "name" : {
            "type" : "string",
            "description" : "Track name.\n"
          },
          "description" : {
            "type" : "string",
            "description" : "Track description.\n"
          },
          "category" : {
            "type" : "string",
            "description" : "Track category.\n",
            "enum" : [ "PERSONAL", "BUSINESS" ]
          },
          "carId" : {
            "type" : "integer",
            "description" : "Unique identifier representing a specific vehicle.\n",
            "format" : "int64"
          },
          "userId" : {
            "type" : "integer",
            "description" : "Unique identifier representing a specific user.\n",
            "format" : "int64"
          },
          "startTime" : {
            "type" : "integer",
            "description" : "Track start time in millis.\n",
            "format" : "int64"
          },
          "endTime" : {
            "type" : "integer",
            "description" : "Track end time in millis.\n",
            "format" : "int64"
          },
          "addressFrom" : {
            "type" : "string",
            "description" : "Start address\n"
          },
          "addressTo" : {
            "type" : "string",
            "description" : "End address\n"
          },
          "totalDistance" : {
            "type" : "number",
            "description" : "Distance in meters or feet depending on user settings.\n",
            "format" : "double"
          },
          "measurementUnit" : {
            "type" : "string",
            "description" : "Override default unit from user settings with this value.\n",
            "enum" : [ "KILOMETER", "MILE" ]
          },
          "latitudeFrom" : {
            "type" : "number",
            "description" : "Start trackpoint latitude.\n",
            "format" : "double"
          },
          "longitudeFrom" : {
            "type" : "number",
            "description" : "Start trackpoint longitude.\n",
            "format" : "double"
          },
          "latitudeTo" : {
            "type" : "number",
            "description" : "End trackpoint latitude.\n",
            "format" : "double"
          },
          "longitudeTo" : {
            "type" : "number",
            "description" : "End trackpoint longitude.\n",
            "format" : "double"
          }
        },
        "description" : "Create new track.\n"
      },
      "UpdateTrackModel" : {
        "required" : [ "carId", "category", "endTime", "id", "name", "startTime", "totalDistance", "userId" ],
        "type" : "object",
        "properties" : {
          "name" : {
            "type" : "string",
            "description" : "Track name.\n"
          },
          "description" : {
            "type" : "string",
            "description" : "Track description.\n"
          },
          "category" : {
            "type" : "string",
            "description" : "Track category.\n",
            "enum" : [ "PERSONAL", "BUSINESS" ]
          },
          "carId" : {
            "type" : "integer",
            "description" : "Unique identifier representing a specific vehicle.\n",
            "format" : "int64"
          },
          "userId" : {
            "type" : "integer",
            "description" : "Unique identifier representing a specific user.\n",
            "format" : "int64"
          },
          "startTime" : {
            "type" : "integer",
            "description" : "Track start time in millis.\n",
            "format" : "int64"
          },
          "endTime" : {
            "type" : "integer",
            "description" : "Track end time in millis.\n",
            "format" : "int64"
          },
          "addressFrom" : {
            "type" : "string",
            "description" : "Start address\n"
          },
          "addressTo" : {
            "type" : "string",
            "description" : "End address\n"
          },
          "totalDistance" : {
            "type" : "number",
            "description" : "Distance in meters or feet depending on user settings.\n",
            "format" : "double"
          },
          "measurementUnit" : {
            "type" : "string",
            "description" : "Override default unit from user settings with this value.\n",
            "enum" : [ "KILOMETER", "MILE" ]
          },
          "id" : {
            "type" : "integer",
            "description" : "Unique identifier representing this track.\n",
            "format" : "int64"
          }
        },
        "description" : "Update existing track.\n"
      },
      "UserModel" : {
        "type" : "object",
        "properties" : {
          "measurementUnit" : {
            "type" : "string",
            "description" : "Default unit that the user uses\n",
            "enum" : [ "KILOMETER", "MILE" ]
          },
          "email" : {
            "type" : "string",
            "description" : "User's unique email/login. If codeUser is TRUE then it contains Account ID. Leave this blank\nif you want to create Account ID user, set codeUser to TRUE and use contactEmail to define\nuser's email.\n"
          },
          "name" : {
            "type" : "string",
            "description" : "User name\n"
          },
          "address" : {
            "type" : "string",
            "description" : "User address (optional)\n"
          },
          "phone" : {
            "type" : "string",
            "description" : "User phone number (optional)\n"
          },
          "codeUser" : {
            "type" : "boolean",
            "description" : "User is identified either by email (FALSE) or Account ID (TRUE). When creating new Account ID\nuser set this to TRUE, leave email parameter blank and use contactEmail parameter to set users\nemail.\n"
          },
          "contactEmail" : {
            "type" : "string",
            "description" : "Optional contact email for a user. Use it with Account ID.\n"
          },
          "notificationsDisabled" : {
            "type" : "boolean",
            "description" : "Some notifications that the system sends can be disabled. We recommend to set it\nto TRUE if you're creating new driver.\n"
          },
          "vehicles" : {
            "type" : "array",
            "description" : "ID's of your vehicles that are shared with this user\n",
            "items" : {
              "type" : "integer",
              "description" : "ID's of your vehicles that are shared with this user\n",
              "format" : "int64"
            }
          },
          "id" : {
            "type" : "integer",
            "description" : "Unique identifier representing this user.\n",
            "format" : "int64"
          },
          "object" : {
            "type" : "string",
            "description" : "String representing the object’s type.\n",
            "readOnly" : true,
            "enum" : [ "LIST", "VEHICLE", "USER", "TRACK", "TRACKPOINT", "MAP_SHARING", "GEOFENCE", "GEOFENCE_ALERT", "GEOFENCE_ALERT_LOG", "GEOFENCE_REWRITE", "GEOFENCE_ACCESS", "CUSTOMER_CUSTOM_COLUMN", "CUSTOMER", "JOB", "JOB_STATE", "JOB_LOG", "USER_LAST_POSITION", "VEHICLE_LAST_POSITION", "USER_GROUP", "VEHICLE_GROUP", "USER_SUMMARY_STATS", "VEHICLE_SUMMARY_STATS", "EXPENSE", "EXPENSE_TYPE" ]
          }
        },
        "description" : "A representation of user, mostly driver. You are able to set only some parameters of an User,\nmostly those that the driver needs. In case you want to use this user in web application\nyou need to sign up with this user in the web app.\n",
        "example" : {
          "id" : 45089,
          "object" : "USER",
          "measurementUnit" : "KILOMETER",
          "email" : "ABCD123098",
          "name" : "John Snow",
          "address" : "Winterfell",
          "codeUser" : true,
          "contactEmail" : "johnsnow@thewall.com",
          "notificationsDisabled" : true,
          "vehicles" : [ 38600, 342567 ]
        }
      },
      "UsersModel" : {
        "type" : "object",
        "properties" : {
          "object" : {
            "type" : "string",
            "description" : "String representing the object’s type.\n",
            "readOnly" : true,
            "enum" : [ "LIST", "VEHICLE", "USER", "TRACK", "TRACKPOINT", "MAP_SHARING", "GEOFENCE", "GEOFENCE_ALERT", "GEOFENCE_ALERT_LOG", "GEOFENCE_REWRITE", "GEOFENCE_ACCESS", "CUSTOMER_CUSTOM_COLUMN", "CUSTOMER", "JOB", "JOB_STATE", "JOB_LOG", "USER_LAST_POSITION", "VEHICLE_LAST_POSITION", "USER_GROUP", "VEHICLE_GROUP", "USER_SUMMARY_STATS", "VEHICLE_SUMMARY_STATS", "EXPENSE", "EXPENSE_TYPE" ]
          },
          "url" : {
            "type" : "string",
            "description" : "Curent endpoint URL\n"
          },
          "hasMore" : {
            "type" : "boolean",
            "description" : "Indicating whether there are more results available. Use 'offset' parameter for pagination.\n"
          },
          "data" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/UserModel"
            }
          }
        },
        "description" : "A representation of list of users.\n"
      },
      "GroupModel" : {
        "type" : "object",
        "properties" : {
          "name" : {
            "type" : "string",
            "description" : "Group name\n"
          },
          "id" : {
            "type" : "integer",
            "description" : "Unique identifier representing this group.\n",
            "format" : "int64"
          },
          "object" : {
            "type" : "string",
            "description" : "String representing the object’s type.\n",
            "readOnly" : true,
            "enum" : [ "LIST", "VEHICLE", "USER", "TRACK", "TRACKPOINT", "MAP_SHARING", "GEOFENCE", "GEOFENCE_ALERT", "GEOFENCE_ALERT_LOG", "GEOFENCE_REWRITE", "GEOFENCE_ACCESS", "CUSTOMER_CUSTOM_COLUMN", "CUSTOMER", "JOB", "JOB_STATE", "JOB_LOG", "USER_LAST_POSITION", "VEHICLE_LAST_POSITION", "USER_GROUP", "VEHICLE_GROUP", "USER_SUMMARY_STATS", "VEHICLE_SUMMARY_STATS", "EXPENSE", "EXPENSE_TYPE" ]
          },
          "created" : {
            "type" : "integer",
            "description" : "Group created time in unix timestamp.\n",
            "format" : "int64"
          }
        },
        "description" : "A representation of a Group (vehicles or users).\n",
        "example" : {
          "id" : 341,
          "name" : "West truckers",
          "object" : "USER_GROUP",
          "created" : 1406015056000
        }
      },
      "GroupsModel" : {
        "type" : "object",
        "properties" : {
          "object" : {
            "type" : "string",
            "description" : "String representing the object’s type.\n",
            "readOnly" : true,
            "enum" : [ "LIST", "VEHICLE", "USER", "TRACK", "TRACKPOINT", "MAP_SHARING", "GEOFENCE", "GEOFENCE_ALERT", "GEOFENCE_ALERT_LOG", "GEOFENCE_REWRITE", "GEOFENCE_ACCESS", "CUSTOMER_CUSTOM_COLUMN", "CUSTOMER", "JOB", "JOB_STATE", "JOB_LOG", "USER_LAST_POSITION", "VEHICLE_LAST_POSITION", "USER_GROUP", "VEHICLE_GROUP", "USER_SUMMARY_STATS", "VEHICLE_SUMMARY_STATS", "EXPENSE", "EXPENSE_TYPE" ]
          },
          "url" : {
            "type" : "string",
            "description" : "Curent endpoint URL\n"
          },
          "hasMore" : {
            "type" : "boolean",
            "description" : "Indicating whether there are more results available. Use 'offset' parameter for pagination.\n"
          },
          "data" : {
            "type" : "array",
            "description" : "List of groups\n",
            "items" : {
              "$ref" : "#/components/schemas/GroupModel"
            }
          }
        },
        "description" : "A representation of list of groups (e.g. users, vehicles) depending on endpoint.\n"
      },
      "GroupMemberModel" : {
        "type" : "object",
        "properties" : {
          "id" : {
            "type" : "integer",
            "description" : "Unique identifier representing this group.\n",
            "format" : "int64"
          },
          "identification" : {
            "type" : "string",
            "description" : "Members identification (name or email)\n"
          }
        },
        "description" : "A representation of a Group (vehicles or users).\n",
        "example" : {
          "id" : 45,
          "identification" : "Arya Stark"
        }
      },
      "GroupMembersModel" : {
        "type" : "object",
        "properties" : {
          "object" : {
            "type" : "string",
            "description" : "String representing the object’s type.\n",
            "readOnly" : true,
            "enum" : [ "LIST", "VEHICLE", "USER", "TRACK", "TRACKPOINT", "MAP_SHARING", "GEOFENCE", "GEOFENCE_ALERT", "GEOFENCE_ALERT_LOG", "GEOFENCE_REWRITE", "GEOFENCE_ACCESS", "CUSTOMER_CUSTOM_COLUMN", "CUSTOMER", "JOB", "JOB_STATE", "JOB_LOG", "USER_LAST_POSITION", "VEHICLE_LAST_POSITION", "USER_GROUP", "VEHICLE_GROUP", "USER_SUMMARY_STATS", "VEHICLE_SUMMARY_STATS", "EXPENSE", "EXPENSE_TYPE" ]
          },
          "url" : {
            "type" : "string",
            "description" : "Curent endpoint URL\n"
          },
          "data" : {
            "type" : "array",
            "description" : "List of group members\n",
            "items" : {
              "$ref" : "#/components/schemas/GroupMemberModel"
            }
          }
        },
        "description" : "A representation of list of group members (e.g. users, vehicles) depending on endpoint.\n"
      },
      "AddGroupMembersModel" : {
        "type" : "object",
        "properties" : {
          "data" : {
            "type" : "array",
            "description" : "Array with IDs of members to add to the group\n",
            "items" : {
              "type" : "integer",
              "description" : "Array with IDs of members to add to the group\n",
              "format" : "int64"
            }
          }
        },
        "description" : "Add members defined by their ID to group\n",
        "example" : {
          "data" : [ 345, 387, 388 ]
        }
      },
      "CreateGroupModel" : {
        "type" : "object",
        "properties" : {
          "name" : {
            "type" : "string",
            "description" : "Group name\n"
          }
        },
        "description" : "Create new group\n",
        "example" : {
          "name" : "West group"
        }
      },
      "UpdateGroupModel" : {
        "required" : [ "id" ],
        "type" : "object",
        "properties" : {
          "name" : {
            "type" : "string",
            "description" : "Group name\n"
          },
          "id" : {
            "type" : "integer",
            "description" : "Unique identifier representing this group.\n",
            "format" : "int64"
          }
        },
        "description" : "Update existing user.\n",
        "example" : {
          "name" : "West truckers",
          "id" : 341
        }
      },
      "LastPostionBaseModel" : {
        "type" : "object",
        "properties" : {
          "userId" : {
            "type" : "integer",
            "format" : "int64"
          },
          "vehicleId" : {
            "type" : "integer",
            "format" : "int64"
          },
          "lastPosition" : {
            "$ref" : "#/components/schemas/TrackpointModel"
          }
        },
        "description" : "List of users or vehicles last location positions\n"
      },
      "LastPostionsModel" : {
        "type" : "object",
        "properties" : {
          "object" : {
            "type" : "string",
            "description" : "String representing the object’s type.\n",
            "readOnly" : true,
            "enum" : [ "LIST", "VEHICLE", "USER", "TRACK", "TRACKPOINT", "MAP_SHARING", "GEOFENCE", "GEOFENCE_ALERT", "GEOFENCE_ALERT_LOG", "GEOFENCE_REWRITE", "GEOFENCE_ACCESS", "CUSTOMER_CUSTOM_COLUMN", "CUSTOMER", "JOB", "JOB_STATE", "JOB_LOG", "USER_LAST_POSITION", "VEHICLE_LAST_POSITION", "USER_GROUP", "VEHICLE_GROUP", "USER_SUMMARY_STATS", "VEHICLE_SUMMARY_STATS", "EXPENSE", "EXPENSE_TYPE" ]
          },
          "url" : {
            "type" : "string",
            "description" : "Curent endpoint URL\n"
          },
          "data" : {
            "type" : "array",
            "description" : "List of users or vehicles last location positions\n",
            "items" : {
              "$ref" : "#/components/schemas/LastPostionBaseModel"
            }
          }
        },
        "description" : "A representation of list of users or vehicles and their last positions.\n"
      },
      "LastPostionModel" : {
        "type" : "object",
        "properties" : {
          "object" : {
            "type" : "string",
            "description" : "String representing the object’s type.\n",
            "readOnly" : true,
            "enum" : [ "LIST", "VEHICLE", "USER", "TRACK", "TRACKPOINT", "MAP_SHARING", "GEOFENCE", "GEOFENCE_ALERT", "GEOFENCE_ALERT_LOG", "GEOFENCE_REWRITE", "GEOFENCE_ACCESS", "CUSTOMER_CUSTOM_COLUMN", "CUSTOMER", "JOB", "JOB_STATE", "JOB_LOG", "USER_LAST_POSITION", "VEHICLE_LAST_POSITION", "USER_GROUP", "VEHICLE_GROUP", "USER_SUMMARY_STATS", "VEHICLE_SUMMARY_STATS", "EXPENSE", "EXPENSE_TYPE" ]
          },
          "url" : {
            "type" : "string",
            "description" : "Curent endpoint URL\n"
          },
          "data" : {
            "type" : "array",
            "description" : "List of user or vehicle last positions\n",
            "items" : {
              "$ref" : "#/components/schemas/TrackpointModel"
            }
          }
        },
        "description" : "A representation of Users or Vehicles last positions .\n"
      },
      "CreateUserModel" : {
        "type" : "object",
        "properties" : {
          "measurementUnit" : {
            "type" : "string",
            "description" : "Default unit that the user uses\n",
            "enum" : [ "KILOMETER", "MILE" ]
          },
          "email" : {
            "type" : "string",
            "description" : "User's unique email/login. If codeUser is TRUE then it contains Account ID. Leave this blank\nif you want to create Account ID user, set codeUser to TRUE and use contactEmail to define\nuser's email.\n"
          },
          "name" : {
            "type" : "string",
            "description" : "User name\n"
          },
          "address" : {
            "type" : "string",
            "description" : "User address (optional)\n"
          },
          "phone" : {
            "type" : "string",
            "description" : "User phone number (optional)\n"
          },
          "codeUser" : {
            "type" : "boolean",
            "description" : "User is identified either by email (FALSE) or Account ID (TRUE). When creating new Account ID\nuser set this to TRUE, leave email parameter blank and use contactEmail parameter to set users\nemail.\n"
          },
          "contactEmail" : {
            "type" : "string",
            "description" : "Optional contact email for a user. Use it with Account ID.\n"
          },
          "notificationsDisabled" : {
            "type" : "boolean",
            "description" : "Some notifications that the system sends can be disabled. We recommend to set it\nto TRUE if you're creating new driver.\n"
          },
          "vehicles" : {
            "type" : "array",
            "description" : "ID's of your vehicles that are shared with this user\n",
            "items" : {
              "type" : "integer",
              "description" : "ID's of your vehicles that are shared with this user\n",
              "format" : "int64"
            }
          }
        },
        "description" : "Create new user (driver).\n",
        "example" : {
          "name" : "John Snow",
          "measurementUnit" : "KILOMETER",
          "address" : "Winterfell",
          "codeUser" : true,
          "contactEmail" : "johnsnow@thewall.com",
          "notificationsDisabled" : true,
          "vehicles" : [ 38600, 342567 ]
        }
      },
      "UpdateUserModel" : {
        "required" : [ "id" ],
        "type" : "object",
        "properties" : {
          "measurementUnit" : {
            "type" : "string",
            "description" : "Default unit that the user uses\n",
            "enum" : [ "KILOMETER", "MILE" ]
          },
          "email" : {
            "type" : "string",
            "description" : "User's unique email/login. If codeUser is TRUE then it contains Account ID. Leave this blank\nif you want to create Account ID user, set codeUser to TRUE and use contactEmail to define\nuser's email.\n"
          },
          "name" : {
            "type" : "string",
            "description" : "User name\n"
          },
          "address" : {
            "type" : "string",
            "description" : "User address (optional)\n"
          },
          "phone" : {
            "type" : "string",
            "description" : "User phone number (optional)\n"
          },
          "codeUser" : {
            "type" : "boolean",
            "description" : "User is identified either by email (FALSE) or Account ID (TRUE). When creating new Account ID\nuser set this to TRUE, leave email parameter blank and use contactEmail parameter to set users\nemail.\n"
          },
          "contactEmail" : {
            "type" : "string",
            "description" : "Optional contact email for a user. Use it with Account ID.\n"
          },
          "notificationsDisabled" : {
            "type" : "boolean",
            "description" : "Some notifications that the system sends can be disabled. We recommend to set it\nto TRUE if you're creating new driver.\n"
          },
          "vehicles" : {
            "type" : "array",
            "description" : "ID's of your vehicles that are shared with this user\n",
            "items" : {
              "type" : "integer",
              "description" : "ID's of your vehicles that are shared with this user\n",
              "format" : "int64"
            }
          },
          "id" : {
            "type" : "integer",
            "description" : "Unique identifier representing this user.\n",
            "format" : "int64"
          }
        },
        "description" : "Update existing user.\n",
        "example" : {
          "id" : 45089,
          "name" : "John Snow",
          "measurementUnit" : "KILOMETER",
          "address" : "The Big Wall",
          "codeUser" : true,
          "contactEmail" : "johnsnow@thewall.com",
          "notificationsDisabled" : true,
          "vehicles" : [ 71934 ]
        }
      },
      "UserSummaryStatModel" : {
        "type" : "object",
        "properties" : {
          "object" : {
            "type" : "string",
            "description" : "String representing the object’s type.\n",
            "readOnly" : true,
            "enum" : [ "LIST", "VEHICLE", "USER", "TRACK", "TRACKPOINT", "MAP_SHARING", "GEOFENCE", "GEOFENCE_ALERT", "GEOFENCE_ALERT_LOG", "GEOFENCE_REWRITE", "GEOFENCE_ACCESS", "CUSTOMER_CUSTOM_COLUMN", "CUSTOMER", "JOB", "JOB_STATE", "JOB_LOG", "USER_LAST_POSITION", "VEHICLE_LAST_POSITION", "USER_GROUP", "VEHICLE_GROUP", "USER_SUMMARY_STATS", "VEHICLE_SUMMARY_STATS", "EXPENSE", "EXPENSE_TYPE" ]
          },
          "idUser" : {
            "type" : "integer",
            "description" : "Unique identifier representing the user.\n",
            "format" : "int64"
          },
          "totalDistance" : {
            "type" : "number",
            "description" : "Total distance in meters or feet depending on user settings.\n",
            "format" : "double"
          },
          "avgTotalDistance" : {
            "type" : "number",
            "description" : "Average distance for track in meters or feet depending on user settings.\n",
            "format" : "double"
          },
          "totalTime" : {
            "type" : "integer",
            "description" : "Total time in milliseconds.\n",
            "format" : "int64"
          },
          "movingTime" : {
            "type" : "integer",
            "description" : "Total moving time in milliseconds.\n",
            "format" : "int64"
          },
          "startTimeFormatted" : {
            "type" : "string",
            "description" : "Start time for data period (YYYY-MM-DDThh:mm:ssTZD).\n"
          },
          "endTimeFormatted" : {
            "type" : "string",
            "description" : "End time for data period (YYYY-MM-DDThh:mm:ssTZD).\n"
          },
          "drivingStartTimeFormatted" : {
            "type" : "string",
            "description" : "Formatted start time when driver started (YYYY-MM-DDThh:mm:ssTZD).\n"
          },
          "drivingEndTimeFormatted" : {
            "type" : "string",
            "description" : "Formatted end time when driver ended (YYYY-MM-DDThh:mm:ssTZD).\n"
          },
          "avgSpeed" : {
            "type" : "number",
            "description" : "Average speed in km/h or mph depending on user settings..\n",
            "format" : "double"
          },
          "avgMovingSpeed" : {
            "type" : "number",
            "description" : "Average moving speed in km/h or mph depending on user settings.\n",
            "format" : "double"
          },
          "maxSpeed" : {
            "type" : "number",
            "description" : "Maximum speed in km/h or mph depending on user settings.\n",
            "format" : "double"
          },
          "avgTotalTime" : {
            "type" : "integer",
            "description" : "Average total moving time for track in milliseconds.\n",
            "format" : "int64"
          },
          "avgMovingTime" : {
            "type" : "integer",
            "description" : "Average moving time for track in milliseconds.\n",
            "format" : "int64"
          }
        },
        "description" : "A representation of user summary stats.\n"
      },
      "UserSummaryStatsModel" : {
        "type" : "object",
        "properties" : {
          "object" : {
            "type" : "string",
            "description" : "String representing the object’s type.\n",
            "readOnly" : true,
            "enum" : [ "LIST", "VEHICLE", "USER", "TRACK", "TRACKPOINT", "MAP_SHARING", "GEOFENCE", "GEOFENCE_ALERT", "GEOFENCE_ALERT_LOG", "GEOFENCE_REWRITE", "GEOFENCE_ACCESS", "CUSTOMER_CUSTOM_COLUMN", "CUSTOMER", "JOB", "JOB_STATE", "JOB_LOG", "USER_LAST_POSITION", "VEHICLE_LAST_POSITION", "USER_GROUP", "VEHICLE_GROUP", "USER_SUMMARY_STATS", "VEHICLE_SUMMARY_STATS", "EXPENSE", "EXPENSE_TYPE" ]
          },
          "url" : {
            "type" : "string",
            "description" : "Curent endpoint URL\n"
          },
          "hasMore" : {
            "type" : "boolean",
            "description" : "Indicating whether there are more results available. Use 'offset' parameter for pagination.\n"
          },
          "data" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/UserSummaryStatModel"
            }
          }
        },
        "description" : "A representation of list of user summary stats.\n"
      },
      "VehicleModel" : {
        "type" : "object",
        "properties" : {
          "name" : {
            "type" : "string",
            "description" : "Vehicle identification name\n"
          },
          "description" : {
            "type" : "string",
            "description" : "Vehicle description\n"
          },
          "color" : {
            "type" : "string",
            "description" : "Vehicle color\n"
          },
          "odometerStart" : {
            "type" : "number",
            "description" : "Vehicle odometer start value in your measurementUnit (killometer or mile)\n",
            "format" : "double"
          },
          "deviceFilter" : {
            "type" : "string",
            "description" : "If you use one email on all devices (for all your drivers) you can define the visibility of this vehicle by seting phone number or IMEI of the driver who can see this vehicle on his phone or tablet. Don't enter both entries, only one, either IMEI or phone number. To filter more than one number or IMEI use comma ’,’ separated list.\n"
          },
          "forbidSharedUserEdit" : {
            "type" : "boolean",
            "description" : "Forbid modifications to shared users\n"
          },
          "sharedUsers" : {
            "type" : "array",
            "description" : "Emails or Account IDs of users that are shared with this vehicle, comma separated.\n",
            "items" : {
              "type" : "string",
              "description" : "Emails or Account IDs of users that are shared with this vehicle, comma separated.\n"
            }
          },
          "id" : {
            "type" : "integer",
            "description" : "Unique identifier representing this vehicle.\n",
            "format" : "int64"
          },
          "object" : {
            "type" : "string",
            "description" : "String representing the object’s type.\n",
            "readOnly" : true,
            "enum" : [ "LIST", "VEHICLE", "USER", "TRACK", "TRACKPOINT", "MAP_SHARING", "GEOFENCE", "GEOFENCE_ALERT", "GEOFENCE_ALERT_LOG", "GEOFENCE_REWRITE", "GEOFENCE_ACCESS", "CUSTOMER_CUSTOM_COLUMN", "CUSTOMER", "JOB", "JOB_STATE", "JOB_LOG", "USER_LAST_POSITION", "VEHICLE_LAST_POSITION", "USER_GROUP", "VEHICLE_GROUP", "USER_SUMMARY_STATS", "VEHICLE_SUMMARY_STATS", "EXPENSE", "EXPENSE_TYPE" ]
          },
          "ownerUserId" : {
            "type" : "integer",
            "description" : "Vehicle owner (who created this vehicle) ID.\n",
            "format" : "int64"
          }
        },
        "description" : "Vehicle details.\n",
        "example" : {
          "id" : 45089,
          "object" : "VEHICLE",
          "name" : "Citroen Jumper",
          "description" : "AB764",
          "color" : "#a596c8",
          "forbidSharedUserEdit" : true,
          "sharedUsers" : [ "mct.driver1@gmail.com", "mct.driver2@gmail.com", "ACCONTID77" ]
        }
      },
      "VehiclesModel" : {
        "type" : "object",
        "properties" : {
          "object" : {
            "type" : "string",
            "description" : "String representing the object’s type.\n",
            "readOnly" : true,
            "enum" : [ "LIST", "VEHICLE", "USER", "TRACK", "TRACKPOINT", "MAP_SHARING", "GEOFENCE", "GEOFENCE_ALERT", "GEOFENCE_ALERT_LOG", "GEOFENCE_REWRITE", "GEOFENCE_ACCESS", "CUSTOMER_CUSTOM_COLUMN", "CUSTOMER", "JOB", "JOB_STATE", "JOB_LOG", "USER_LAST_POSITION", "VEHICLE_LAST_POSITION", "USER_GROUP", "VEHICLE_GROUP", "USER_SUMMARY_STATS", "VEHICLE_SUMMARY_STATS", "EXPENSE", "EXPENSE_TYPE" ]
          },
          "url" : {
            "type" : "string",
            "description" : "Curent endpoint URL\n"
          },
          "hasMore" : {
            "type" : "boolean",
            "description" : "Indicating whether there are more results available. Use 'offset' parameter for pagination.\n"
          },
          "data" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/VehicleModel"
            }
          }
        },
        "description" : "A representation of list of vehicles.\n"
      },
      "LivePositionStreamRequestModel" : {
        "type" : "object",
        "properties" : {
          "vehicleIds" : {
            "type" : "array",
            "description" : "Vehicle IDs to include. Leave empty and leave vehicleGroupIds empty to stream all vehicles the API token can access, capped by maxVehicles.",
            "items" : {
              "type" : "integer",
              "description" : "Vehicle IDs to include. Leave empty and leave vehicleGroupIds empty to stream all vehicles the API token can access, capped by maxVehicles.",
              "format" : "int64"
            }
          },
          "vehicleGroupIds" : {
            "type" : "array",
            "description" : "Vehicle group IDs to include. Leave empty and leave vehicleIds empty to stream all vehicles the API token can access, capped by maxVehicles.",
            "items" : {
              "type" : "integer",
              "description" : "Vehicle group IDs to include. Leave empty and leave vehicleIds empty to stream all vehicles the API token can access, capped by maxVehicles.",
              "format" : "int64"
            }
          },
          "includeSharedVehicles" : {
            "type" : "boolean",
            "description" : "Whether vehicles shared with the authenticated account may be included.",
            "default" : true
          },
          "minIntervalSeconds" : {
            "type" : "integer",
            "description" : "Minimum seconds between position checks. Minimum and default is 5 seconds.",
            "format" : "int32",
            "example" : 5
          },
          "fields" : {
            "type" : "array",
            "description" : "Optional list of fields to include on vehicle.position.updated events. Supported values: vehicleId, vehicleName, userId, userName, latitude, longitude, speed, heading, recordedAt, receivedAt, onlineState.",
            "items" : {
              "type" : "string",
              "description" : "Optional list of fields to include on vehicle.position.updated events. Supported values: vehicleId, vehicleName, userId, userName, latitude, longitude, speed, heading, recordedAt, receivedAt, onlineState."
            }
          }
        },
        "description" : "Request for a short-lived live vehicle position WebSocket stream. If vehicleIds and vehicleGroupIds are omitted or empty, all vehicles the API token can access are selected, capped by maxVehicles."
      },
      "LivePositionStreamModel" : {
        "type" : "object",
        "properties" : {
          "streamId" : {
            "type" : "string",
            "description" : "Stream session identifier.",
            "example" : "lps_01HZ0000000000000000000000"
          },
          "websocketUrl" : {
            "type" : "string",
            "description" : "Short-lived WebSocket URL with one-time stream token."
          },
          "expiresAt" : {
            "type" : "string",
            "description" : "Stream expiration time in UTC.",
            "example" : "2026-06-01T14:30:00Z"
          },
          "heartbeatSeconds" : {
            "type" : "integer",
            "description" : "Heartbeat interval in seconds.",
            "format" : "int32",
            "example" : 30
          },
          "maxVehicles" : {
            "type" : "integer",
            "description" : "Maximum vehicles per stream.",
            "format" : "int32",
            "example" : 100
          },
          "minIntervalSeconds" : {
            "type" : "integer",
            "description" : "Minimum seconds between position checks for this stream.",
            "format" : "int32",
            "example" : 5
          }
        },
        "description" : "Short-lived live vehicle position stream session."
      },
      "CreateVehicleModel" : {
        "required" : [ "name" ],
        "type" : "object",
        "properties" : {
          "name" : {
            "type" : "string",
            "description" : "Vehicle identification name\n"
          },
          "description" : {
            "type" : "string",
            "description" : "Vehicle description\n"
          },
          "color" : {
            "type" : "string",
            "description" : "Vehicle color\n"
          },
          "odometerStart" : {
            "type" : "number",
            "description" : "Vehicle odometer start value in your measurementUnit (killometer or mile)\n",
            "format" : "double"
          },
          "deviceFilter" : {
            "type" : "string",
            "description" : "If you use one email on all devices (for all your drivers) you can define the visibility of this vehicle by seting phone number or IMEI of the driver who can see this vehicle on his phone or tablet. Don't enter both entries, only one, either IMEI or phone number. To filter more than one number or IMEI use comma ’,’ separated list.\n"
          },
          "forbidSharedUserEdit" : {
            "type" : "boolean",
            "description" : "Forbid modifications to shared users\n"
          },
          "sharedUsers" : {
            "type" : "array",
            "description" : "Emails or Account IDs of users that are shared with this vehicle, comma separated.\n",
            "items" : {
              "type" : "string",
              "description" : "Emails or Account IDs of users that are shared with this vehicle, comma separated.\n"
            }
          }
        },
        "description" : "Create new vehicle.\n",
        "example" : {
          "name" : "Citroen Jumper",
          "description" : "AB764",
          "color" : "#a596c8",
          "odometerStart" : 23045.6,
          "forbidSharedUserEdit" : false,
          "sharedUsers" : [ "mct.driver1@gmail.com", "mct.driver2@gmail.com" ]
        }
      },
      "UpdateVehicleModel" : {
        "required" : [ "id", "name" ],
        "type" : "object",
        "properties" : {
          "name" : {
            "type" : "string",
            "description" : "Vehicle identification name\n"
          },
          "description" : {
            "type" : "string",
            "description" : "Vehicle description\n"
          },
          "color" : {
            "type" : "string",
            "description" : "Vehicle color\n"
          },
          "odometerStart" : {
            "type" : "number",
            "description" : "Vehicle odometer start value in your measurementUnit (killometer or mile)\n",
            "format" : "double"
          },
          "deviceFilter" : {
            "type" : "string",
            "description" : "If you use one email on all devices (for all your drivers) you can define the visibility of this vehicle by seting phone number or IMEI of the driver who can see this vehicle on his phone or tablet. Don't enter both entries, only one, either IMEI or phone number. To filter more than one number or IMEI use comma ’,’ separated list.\n"
          },
          "forbidSharedUserEdit" : {
            "type" : "boolean",
            "description" : "Forbid modifications to shared users\n"
          },
          "sharedUsers" : {
            "type" : "array",
            "description" : "Emails or Account IDs of users that are shared with this vehicle, comma separated.\n",
            "items" : {
              "type" : "string",
              "description" : "Emails or Account IDs of users that are shared with this vehicle, comma separated.\n"
            }
          },
          "id" : {
            "type" : "integer",
            "description" : "Unique identifier representing this vehicle.\n",
            "format" : "int64"
          }
        },
        "description" : "Update existing vehicle. You must be owner of this vehicle.\n",
        "example" : {
          "id" : 45089,
          "name" : "Citroen Jumper",
          "description" : "AB764",
          "color" : "#a596c8",
          "forbidSharedUserEdit" : true,
          "sharedUsers" : [ "mct.driver1@gmail.com", "ACCONTID77" ]
        }
      },
      "VehicleSummaryStatsModel" : {
        "type" : "object",
        "properties" : {
          "object" : {
            "type" : "string",
            "description" : "String representing the object’s type.\n",
            "readOnly" : true,
            "enum" : [ "LIST", "VEHICLE", "USER", "TRACK", "TRACKPOINT", "MAP_SHARING", "GEOFENCE", "GEOFENCE_ALERT", "GEOFENCE_ALERT_LOG", "GEOFENCE_REWRITE", "GEOFENCE_ACCESS", "CUSTOMER_CUSTOM_COLUMN", "CUSTOMER", "JOB", "JOB_STATE", "JOB_LOG", "USER_LAST_POSITION", "VEHICLE_LAST_POSITION", "USER_GROUP", "VEHICLE_GROUP", "USER_SUMMARY_STATS", "VEHICLE_SUMMARY_STATS", "EXPENSE", "EXPENSE_TYPE" ]
          },
          "idVehicle" : {
            "type" : "integer",
            "description" : "Unique identifier representing the vehicle.\n",
            "format" : "int64"
          },
          "name" : {
            "type" : "string",
            "description" : "Vehicle identification name\n"
          },
          "description" : {
            "type" : "string",
            "description" : "Vehicle description\n"
          },
          "color" : {
            "type" : "string",
            "description" : "Vehicle color\n"
          },
          "totalDistance" : {
            "type" : "number",
            "description" : "Total distance in meters or feet depending on user settings.\n",
            "format" : "double"
          },
          "avgTotalDistance" : {
            "type" : "number",
            "description" : "Average distance for track in meters or feet depending on user settings.\n",
            "format" : "double"
          },
          "totalTime" : {
            "type" : "integer",
            "description" : "Total time in milliseconds.\n",
            "format" : "int64"
          },
          "movingTime" : {
            "type" : "integer",
            "description" : "Total moving time in milliseconds.\n",
            "format" : "int64"
          },
          "startTimeFormatted" : {
            "type" : "string",
            "description" : "Start time for data period (YYYY-MM-DDThh:mm:ssTZD).\n"
          },
          "endTimeFormatted" : {
            "type" : "string",
            "description" : "End time for data period (YYYY-MM-DDThh:mm:ssTZD).\n"
          },
          "drivingStartTimeFormatted" : {
            "type" : "string",
            "description" : "Formatted start time when driver started (YYYY-MM-DDThh:mm:ssTZD).\n"
          },
          "drivingEndTimeFormatted" : {
            "type" : "string",
            "description" : "Formatted end time when driver ended (YYYY-MM-DDThh:mm:ssTZD).\n"
          },
          "avgSpeed" : {
            "type" : "number",
            "description" : "Average speed in km/h or mph depending on user settings..\n",
            "format" : "double"
          },
          "avgMovingSpeed" : {
            "type" : "number",
            "description" : "Average moving speed in km/h or mph depending on user settings.\n",
            "format" : "double"
          },
          "maxSpeed" : {
            "type" : "number",
            "description" : "Maximum speed in km/h or mph depending on user settings.\n",
            "format" : "double"
          },
          "avgTotalTime" : {
            "type" : "integer",
            "description" : "Average total moving time for track in milliseconds.\n",
            "format" : "int64"
          },
          "avgMovingTime" : {
            "type" : "integer",
            "description" : "Average moving time for track in milliseconds.\n",
            "format" : "int64"
          }
        },
        "description" : "A representation of vehicle summary stats.\n"
      },
      "VehiclesSummaryStatsModel" : {
        "type" : "object",
        "properties" : {
          "object" : {
            "type" : "string",
            "description" : "String representing the object’s type.\n",
            "readOnly" : true,
            "enum" : [ "LIST", "VEHICLE", "USER", "TRACK", "TRACKPOINT", "MAP_SHARING", "GEOFENCE", "GEOFENCE_ALERT", "GEOFENCE_ALERT_LOG", "GEOFENCE_REWRITE", "GEOFENCE_ACCESS", "CUSTOMER_CUSTOM_COLUMN", "CUSTOMER", "JOB", "JOB_STATE", "JOB_LOG", "USER_LAST_POSITION", "VEHICLE_LAST_POSITION", "USER_GROUP", "VEHICLE_GROUP", "USER_SUMMARY_STATS", "VEHICLE_SUMMARY_STATS", "EXPENSE", "EXPENSE_TYPE" ]
          },
          "url" : {
            "type" : "string",
            "description" : "Curent endpoint URL\n"
          },
          "hasMore" : {
            "type" : "boolean",
            "description" : "Indicating whether there are more results available. Use 'offset' parameter for pagination.\n"
          },
          "data" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/VehicleSummaryStatsModel"
            }
          }
        },
        "description" : "A representation of list of vehicles summary stats.\n"
      },
      "LivePositionConnectedEventModel" : {
        "type" : "object",
        "properties" : {
          "type" : {
            "type" : "string",
            "example" : "connected"
          },
          "streamId" : {
            "type" : "string",
            "example" : "lps_01HZ0000000000000000000000"
          },
          "connectedAt" : {
            "type" : "string",
            "example" : "2026-06-01T14:15:00Z"
          }
        },
        "description" : "WebSocket event sent immediately after a stream is connected."
      },
      "LivePositionUpdatedEventModel" : {
        "type" : "object",
        "properties" : {
          "type" : {
            "type" : "string",
            "example" : "vehicle.position.updated"
          },
          "vehicleId" : {
            "type" : "integer",
            "format" : "int64"
          },
          "vehicleName" : {
            "type" : "string"
          },
          "userId" : {
            "type" : "integer",
            "description" : "ID of the user/driver that produced the live position.",
            "format" : "int64",
            "example" : 42
          },
          "userName" : {
            "type" : "string",
            "description" : "Name of the user/driver that produced the live position.",
            "example" : "John Smith"
          },
          "latitude" : {
            "type" : "number",
            "format" : "double"
          },
          "longitude" : {
            "type" : "number",
            "format" : "double"
          },
          "speed" : {
            "type" : "number",
            "format" : "double"
          },
          "heading" : {
            "type" : "number",
            "format" : "double"
          },
          "recordedAt" : {
            "type" : "string",
            "example" : "2026-06-01T14:21:35Z"
          },
          "receivedAt" : {
            "type" : "string",
            "example" : "2026-06-01T14:21:38Z"
          },
          "onlineState" : {
            "type" : "string",
            "example" : "online"
          }
        },
        "description" : "WebSocket event sent when an authorized vehicle position changes."
      },
      "LivePositionOfflineEventModel" : {
        "type" : "object",
        "properties" : {
          "type" : {
            "type" : "string",
            "example" : "vehicle.offline"
          },
          "vehicleId" : {
            "type" : "integer",
            "format" : "int64"
          },
          "lastSeenAt" : {
            "type" : "string",
            "example" : "2026-06-01T14:19:12Z"
          }
        },
        "description" : "WebSocket event sent when a vehicle becomes stale/offline during a stream."
      },
      "LivePositionHeartbeatEventModel" : {
        "type" : "object",
        "properties" : {
          "type" : {
            "type" : "string",
            "example" : "heartbeat"
          },
          "sentAt" : {
            "type" : "string",
            "example" : "2026-06-01T14:22:00Z"
          }
        },
        "description" : "WebSocket heartbeat event."
      },
      "LivePositionErrorEventModel" : {
        "type" : "object",
        "properties" : {
          "type" : {
            "type" : "string",
            "example" : "error"
          },
          "code" : {
            "type" : "string",
            "example" : "stream_expired"
          },
          "message" : {
            "type" : "string",
            "example" : "The live position stream has expired."
          }
        },
        "description" : "WebSocket error event."
      }
    },
    "securitySchemes" : {
      "OAuth2" : {
        "type" : "oauth2",
        "flows" : {
          "clientCredentials" : {
            "tokenUrl" : "https://mycartracks.com/oauth/token",
            "scopes" : {
              "read" : "Read API data.",
              "write" : "Create, update, and delete API data."
            }
          }
        }
      }
    }
  }
}