{ "swagger": "2.0", "info": { "version": "3.7", "title": "traccar" }, "host": "traccar.org", "basePath": "/api", "schemes": [ "http" ], "paths": { "/commands": { "post": { "consumes": [ "application/json" ], "produces": [ "application/json" ], "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/Command" } } ], "responses": { "200": { "description": "OK", "headers": {}, "schema": { "$ref": "#/definitions/Command" } } } } }, "/devices": { "get": { "consumes": [ "application/json" ], "produces": [ "application/json" ], "parameters": [ { "name": "all", "in": "query", "required": true, "type": "boolean" }, { "name": "userId", "in": "query", "required": true, "type": "integer" } ], "responses": { "200": { "description": "OK", "headers": {}, "schema": { "type": "array", "items": { "$ref": "#/definitions/Device" } } } } }, "post": { "consumes": [ "application/json" ], "produces": [ "application/json" ], "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/Device" } } ], "responses": { "200": { "description": "OK", "headers": {}, "schema": { "$ref": "#/definitions/Device" } } } } }, "/devices/{id}": { "put": { "consumes": [ "application/json" ], "produces": [ "application/json" ], "parameters": [ { "name": "id", "in": "path", "required": true, "type": "integer" }, { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/Device" } } ], "responses": { "200": { "description": "OK", "headers": {}, "schema": { "$ref": "#/definitions/Device" } } } }, "delete": { "consumes": [ "application/json" ], "produces": [ "application/json" ], "parameters": [ { "name": "id", "in": "path", "required": true, "type": "integer" } ], "responses": { "204": { "description": "No Content", "headers": {} } } } }, "/devices/geofences": { "post": { "consumes": [ "application/json" ], "produces": [ "application/json" ], "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/DeviceGeofence" } } ], "responses": { "200": { "description": "OK", "headers": {}, "schema": { "$ref": "#/definitions/DeviceGeofence" } } } }, "delete": { "consumes": [ "application/json" ], "produces": [ "application/json" ], "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/DeviceGeofence" } } ], "responses": { "204": { "description": "No Content", "headers": {} } } } }, "/groups": { "get": { "consumes": [ "application/json" ], "produces": [ "application/json" ], "parameters": [ { "name": "all", "in": "query", "required": true, "type": "boolean" }, { "name": "userId", "in": "query", "required": true, "type": "integer" } ], "responses": { "200": { "description": "OK", "headers": {}, "schema": { "type": "array", "items": { "$ref": "#/definitions/Group" } } } } }, "post": { "consumes": [ "application/json" ], "produces": [ "application/json" ], "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/Group" } } ], "responses": { "200": { "description": "OK", "headers": {}, "schema": { "$ref": "#/definitions/Group" } } } } }, "/groups/{id}": { "put": { "consumes": [ "application/json" ], "produces": [ "application/json" ], "parameters": [ { "name": "id", "in": "path", "required": true, "type": "integer" }, { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/Group" } } ], "responses": { "200": { "description": "OK", "headers": {}, "schema": { "$ref": "#/definitions/Group" } } } }, "delete": { "consumes": [ "application/json" ], "produces": [ "application/json" ], "parameters": [ { "name": "id", "in": "path", "required": true, "type": "integer" } ], "responses": { "204": { "description": "No Content", "headers": {} } } } }, "/groups/geofences": { "post": { "consumes": [ "application/json" ], "produces": [ "application/json" ], "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/GroupGeofence" } } ], "responses": { "200": { "description": "OK", "headers": {}, "schema": { "$ref": "#/definitions/GroupGeofence" } } } }, "delete": { "consumes": [ "application/json" ], "produces": [ "application/json" ], "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/GroupGeofence" } } ], "responses": { "204": { "description": "No Content", "headers": {} } } } }, "/permissions/devices": { "post": { "consumes": [ "application/json" ], "produces": [ "application/json" ], "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/DevicePermission" } } ], "responses": { "200": { "description": "OK", "headers": {}, "schema": { "$ref": "#/definitions/DevicePermission" } } } }, "delete": { "consumes": [ "application/json" ], "produces": [ "application/json" ], "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/DevicePermission" } } ], "responses": { "204": { "description": "No Content", "headers": {} } } } }, "/permissions/groups": { "post": { "consumes": [ "application/json" ], "produces": [ "application/json" ], "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/GroupPermission" } } ], "responses": { "200": { "description": "OK", "headers": {}, "schema": { "$ref": "#/definitions/GroupPermission" } } } }, "delete": { "consumes": [ "application/json" ], "produces": [ "application/json" ], "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/GroupPermission" } } ], "responses": { "204": { "description": "No Content", "headers": {} } } } }, "/permissions/geofences": { "post": { "consumes": [ "application/json" ], "produces": [ "application/json" ], "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/GeofencePermission" } } ], "responses": { "200": { "description": "OK", "headers": {}, "schema": { "$ref": "#/definitions/GeofencePermission" } } } }, "delete": { "consumes": [ "application/json" ], "produces": [ "application/json" ], "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/GeofencePermission" } } ], "responses": { "204": { "description": "No Content", "headers": {} } } } }, "/positions": { "get": { "consumes": [ "application/json" ], "produces": [ "application/json" ], "parameters": [ { "name": "deviceId", "in": "query", "description": "deviceId is optional, but requires the from and to parameters when used", "required": false, "type": "integer" }, { "name": "from", "in": "query", "required": false, "type": "string" }, { "name": "to", "in": "query", "required": false, "type": "string" } ], "responses": { "200": { "description": "OK", "headers": {}, "schema": { "type": "array", "items": { "$ref": "#/definitions/Position" } } } } } }, "/server": { "get": { "consumes": [ "application/json" ], "produces": [ "application/json" ], "parameters": [], "responses": { "200": { "description": "OK", "headers": {}, "schema": { "$ref": "#/definitions/Server" } } } }, "put": { "consumes": [ "application/json" ], "produces": [ "application/json" ], "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/Server" } } ], "responses": { "200": { "description": "OK", "headers": {}, "schema": { "$ref": "#/definitions/Server" } } } } }, "/session": { "get": { "consumes": [ "application/x-www-form-urlencoded" ], "produces": [ "application/json" ], "parameters": [], "responses": { "200": { "description": "OK", "headers": {}, "schema": { "$ref": "#/definitions/User" } }, "404": { "description": "Not Found", "headers": {} } } }, "post": { "consumes": [ "application/x-www-form-urlencoded" ], "produces": [ "application/json" ], "parameters": [ { "name": "email", "in": "formData", "required": true, "type": "string" }, { "name": "password", "in": "formData", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "headers": {}, "schema": { "$ref": "#/definitions/User" } }, "401": { "description": "Unauthorized", "headers": {} } } }, "delete": { "consumes": [ "application/x-www-form-urlencoded" ], "produces": [ "application/json" ], "parameters": [], "responses": { "204": { "description": "No Content", "headers": {} } } } }, "/users": { "get": { "consumes": [ "application/json" ], "produces": [ "application/json" ], "parameters": [], "responses": { "200": { "description": "OK", "headers": {}, "schema": { "type": "array", "items": { "$ref": "#/definitions/Position" } } } } }, "post": { "consumes": [ "application/json" ], "produces": [ "application/json" ], "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/User" } } ], "responses": { "200": { "description": "OK", "headers": {}, "schema": { "$ref": "#/definitions/User" } } } } }, "/users/{id}": { "put": { "consumes": [ "application/json" ], "produces": [ "application/json" ], "parameters": [ { "name": "id", "in": "path", "required": true, "type": "integer" }, { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/User" } } ], "responses": { "200": { "description": "OK", "headers": {}, "schema": { "$ref": "#/definitions/User" } } } }, "delete": { "consumes": [ "application/json" ], "produces": [ "application/json" ], "parameters": [ { "name": "id", "in": "path", "required": true, "type": "integer" } ], "responses": { "204": { "description": "No Content", "headers": {} } } } }, "/users/notifications": { "get": { "consumes": [ "application/json" ], "produces": [ "application/json" ], "parameters": [ { "name": "all", "in": "query", "required": true, "type": "boolean" }, { "name": "userId", "in": "query", "required": true, "type": "integer" } ], "responses": { "200": { "description": "OK", "headers": {}, "schema": { "type": "array", "items": { "$ref": "#/definitions/Notification" } } } } }, "post": { "consumes": [ "application/json" ], "produces": [ "application/json" ], "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/Notification" } } ], "responses": { "200": { "description": "OK", "headers": {}, "schema": { "$ref": "#/definitions/Notification" } } } } }, "/commandtypes": { "post": { "consumes": [ "application/json" ], "produces": [ "application/json" ], "parameters": [ { "name": "deviceId", "in": "query", "required": true, "type": "integer" } ], "responses": { "200": { "description": "OK", "headers": {}, "schema": { "type": "array", "items": { "$ref": "#/definitions/CommandType" } } } } } }, "/geofences": { "get": { "consumes": [ "application/json" ], "produces": [ "application/json" ], "parameters": [ { "name": "all", "in": "query", "required": true, "type": "boolean" }, { "name": "userId", "in": "query", "required": true, "type": "integer" }, { "name": "groupId", "in": "query", "required": true, "type": "integer" }, { "name": "deviceId", "in": "query", "required": true, "type": "integer" } ], "responses": { "200": { "description": "OK", "headers": {}, "schema": { "type": "array", "items": { "$ref": "#/definitions/Geofence" } } } } }, "post": { "consumes": [ "application/json" ], "produces": [ "application/json" ], "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/Geofence" } } ], "responses": { "200": { "description": "OK", "headers": {}, "schema": { "$ref": "#/definitions/Geofence" } } } } }, "/geofences/{id}": { "put": { "consumes": [ "application/json" ], "produces": [ "application/json" ], "parameters": [ { "name": "id", "in": "path", "required": true, "type": "integer" }, { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/Geofence" } } ], "responses": { "200": { "description": "OK", "headers": {}, "schema": { "$ref": "#/definitions/Geofence" } } } }, "delete": { "consumes": [ "application/json" ], "produces": [ "application/json" ], "parameters": [ { "name": "id", "in": "path", "required": true, "type": "integer" } ], "responses": { "204": { "description": "No Content", "headers": {} } } } }, "/events/{id}": { "get": { "consumes": [ "application/json" ], "produces": [ "application/json" ], "parameters": [ { "name": "id", "in": "path", "required": true, "type": "integer" } ], "responses": { "200": { "description": "OK", "headers": {}, "schema": { "$ref": "#/definitions/Event" } } } } }, "/reports/route": { "get": { "consumes": [ "application/json" ], "produces": [ "application/json" ], "parameters": [ { "name": "deviceId", "in": "query", "description": "at least one deviceId or one groupId must be passed", "required": true, "type": "array", "items": { "type": "integer" } }, { "name": "groupId", "in": "query", "description": "at least one deviceId or one groupId must be passed", "required": true, "type": "array", "items": { "type": "integer" } }, { "name": "from", "in": "query", "required": true, "type": "string" }, { "name": "to", "in": "query", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "headers": {}, "schema": { "type": "array", "items": { "$ref": "#/definitions/Position" } } } } } }, "/reports/events": { "get": { "consumes": [ "application/json" ], "produces": [ "application/json" ], "parameters": [ { "name": "deviceId", "in": "query", "description": "at least one deviceId or one groupId must be passed", "required": true, "type": "array", "items": { "type": "integer" } }, { "name": "groupId", "in": "query", "description": "at least one deviceId or one groupId must be passed", "required": true, "type": "array", "items": { "type": "integer" } }, { "name": "type", "in": "query", "description": "% can be used to return events of all types", "required": true, "type": "array", "items": { "type": "string" } }, { "name": "from", "in": "query", "required": true, "type": "string" }, { "name": "to", "in": "query", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "headers": {}, "schema": { "type": "array", "items": { "$ref": "#/definitions/Event" } } } } } }, "/reports/summary": { "get": { "consumes": [ "application/json" ], "produces": [ "application/json" ], "parameters": [ { "name": "deviceId", "in": "query", "description": "at least one deviceId or one groupId must be passed", "required": true, "type": "array", "items": { "type": "integer" } }, { "name": "groupId", "in": "query", "description": "at least one deviceId or one groupId must be passed", "required": true, "type": "array", "items": { "type": "integer" } }, { "name": "from", "in": "query", "required": true, "type": "string" }, { "name": "to", "in": "query", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "headers": {}, "schema": { "type": "array", "items": { "$ref": "#/definitions/ReportSummary" } } } } } }, "/reports/trips": { "get": { "consumes": [ "application/json" ], "produces": [ "application/json" ], "parameters": [ { "name": "deviceId", "in": "query", "description": "at least one deviceId or one groupId must be passed", "required": true, "type": "array", "items": { "type": "integer" } }, { "name": "groupId", "in": "query", "description": "at least one deviceId or one groupId must be passed", "required": true, "type": "array", "items": { "type": "integer" } }, { "name": "from", "in": "query", "required": true, "type": "string" }, { "name": "to", "in": "query", "required": true, "type": "string" } ], "responses": { "200": { "description": "OK", "headers": {}, "schema": { "type": "array", "items": { "$ref": "#/definitions/ReportTrips" } } } } } } }, "definitions": { "Position": { "properties": { "id": { "type": "integer" }, "deviceId": { "type": "integer" }, "protocol": { "type": "string" }, "deviceTime": { "type": "string" }, "fixTime": { "type": "string" }, "outdated": { "type": "boolean" }, "valid": { "type": "boolean" }, "latitude": { "type": "number" }, "longitude": { "type": "number" }, "altitude": { "type": "number" }, "speed": { "type": "number" }, "course": { "type": "number" }, "address": { "type": "string" }, "attributes": {} } }, "User": { "properties": { "id": { "type": "integer" }, "name": { "type": "string" }, "email": { "type": "string" }, "readonly": { "type": "boolean" }, "admin": { "type": "boolean" }, "map": { "type": "string" }, "language": { "type": "string" }, "distanceUnit": { "type": "string" }, "speedUnit": { "type": "string" }, "latitude": { "type": "number" }, "longitude": { "type": "number" }, "zoom": { "type": "integer" }, "password": { "type": "string" }, "twelveHourFormat": { "type": "boolean" }, "attributes": {} } }, "Server": { "properties": { "id": { "type": "integer" }, "registration": { "type": "boolean" }, "readonly": { "type": "boolean" }, "map": { "type": "string" }, "bingKey": { "type": "string" }, "mapUrl": { "type": "string" }, "distanceUnit": { "type": "string" }, "speedUnit": { "type": "string" }, "latitude": { "type": "number" }, "longitude": { "type": "number" }, "zoom": { "type": "integer" }, "twelveHourFormat": { "type": "boolean" }, "attributes": {} } }, "Command": { "properties": { "deviceId": { "type": "integer" }, "type": { "type": "string" }, "attributes": {} } }, "Device": { "properties": { "id": { "type": "integer" }, "name": { "type": "string" }, "uniqueId": { "type": "string" }, "status": { "type": "string" }, "lastUpdate": { "type": "string" }, "positionId": { "type": "integer" }, "groupId": { "type": "integer" }, "geofenceIds": {}, "attributes": {} } }, "Group": { "properties": { "id": { "type": "integer" }, "name": { "type": "string" }, "groupId": { "type": "integer" }, "attributes": {} } }, "DevicePermission": { "properties": { "userId": { "type": "integer" }, "deviceId": { "type": "integer" } } }, "GroupPermission": { "properties": { "userId": { "type": "integer" }, "groupId": { "type": "integer" } } }, "GeofencePermission": { "properties": { "userId": { "type": "integer" }, "geofenceId": { "type": "integer" } } }, "GroupGeofence": { "properties": { "groupId": { "type": "integer" }, "geofenceId": { "type": "integer" } } }, "DeviceGeofence": { "properties": { "deviceId": { "type": "integer" }, "geofenceId": { "type": "integer" } } }, "CommandType": { "properties": { "type": { "type": "string" } } }, "Geofence": { "properties": { "id": { "type": "integer" }, "name": { "type": "string" }, "description": { "type": "string" }, "area": { "type": "string" }, "attributes": {} } }, "Notification": { "properties": { "id": { "type": "integer" }, "type": { "type": "string" }, "userId": { "type": "integer" }, "attributes": {} } }, "Event": { "properties": { "id": { "type": "integer" }, "type": { "type": "string" }, "serverTime": { "type": "string" }, "deviceId": { "type": "integer" }, "positionId": { "type": "integer" }, "geofenceId": { "type": "integer" }, "attributes": {} } }, "ReportSummary": { "properties": { "deviceId": { "type": "integer" }, "deviceName": { "type": "string" }, "maxSpeed": { "type": "number" }, "averageSpeed": { "type": "number" }, "distance": { "type": "number" }, "engineHours": { "type": "integer" } } }, "ReportTrips": { "properties": { "deviceId": { "type": "integer" }, "deviceName": { "type": "string" }, "maxSpeed": { "type": "number" }, "averageSpeed": { "type": "number" }, "distance": { "type": "number" }, "duration": { "type": "integer" }, "startTime": { "type": "string" }, "startAddress": { "type": "string" }, "endTime": { "type": "string" }, "endAddress": { "type": "string" } } } } }