{"openapi":"3.0.1","info":{"title":"Locus Backend API","description":"The asset tracking application","contact":{"name":"Locus Support","email":"locus.support@tektelic.com"},"version":"1.0"},"servers":[{"url":"https://locus-api.tektelic.com","description":"Generated server url"}],"security":[{"bearerAuth":[]}],"tags":[{"name":"Thermostat Configuration","description":"Read the thermostat configuration state and request configuration changes (delivered to the device as downlinks)"},{"name":"Visible Map Preferences","description":"Endpoints for managing user's visible map elements preferences"}],"paths":{"/api/user-preferences":{"get":{"tags":["user-preferences-controller"],"summary":"Get user preferences","description":"Retrieves the current user preferences including column views and pagination settings","operationId":"getUserPreferences","responses":{"400":{"description":"User preferences not found"},"200":{"description":"User preferences retrieved successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserPreferencesDto"}}}}}},"put":{"tags":["user-preferences-controller"],"summary":"Update user preferences","description":"Updates user preferences such as column views and pagination settings","operationId":"updateUserPreferences","requestBody":{"description":"User preferences data to update","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserPreferencesDto"}}},"required":true},"responses":{"200":{"description":"User preferences updated successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserPreferencesDto"}}}},"400":{"description":"Invalid input","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}}}}},"/api/user-preferences/visible-map-preferences/site":{"get":{"tags":["Visible Map Preferences"],"summary":"Get user's visible map preferences on site page","operationId":"getSiteVisibleMapPreferences","responses":{"200":{"description":"Successfully retrieved preferences","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SiteMapVisiblePreferencesDto"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}}}},"put":{"tags":["Visible Map Preferences"],"summary":"Update user's visible map preferences on site page","operationId":"updateSiteVisibleMapPreferences","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SiteMapVisiblePreferencesDto"}}},"required":true},"responses":{"200":{"description":"Successfully updates preferences","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SiteMapVisiblePreferencesDto"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}}}}},"/api/user-preferences/visible-map-preferences/sensor":{"get":{"tags":["Visible Map Preferences"],"summary":"Get user's visible map preferences on sensor page","operationId":"getSensorVisibleMapPreferences","responses":{"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"200":{"description":"Successfully retrieved preferences","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SensorMapVisiblePreferencesDto"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}}}},"put":{"tags":["Visible Map Preferences"],"summary":"Update user's visible map preferences on sensor page","operationId":"updateSensorVisibleMapPreferences","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SensorMapVisiblePreferencesDto"}}},"required":true},"responses":{"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"200":{"description":"Successfully updates preferences","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SensorMapVisiblePreferencesDto"}}}}}}},"/api/user-preferences/visible-map-preferences/home":{"get":{"tags":["Visible Map Preferences"],"summary":"Get user's visible map preferences on home page","operationId":"getHomeVisibleMapPreferences","responses":{"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"200":{"description":"Successfully retrieved preferences","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HomeMapVisiblePreferencesDto"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}}}},"put":{"tags":["Visible Map Preferences"],"summary":"Update user's visible map preferences on home page","operationId":"updateHomeVisibleMapPreferences","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HomeMapVisiblePreferencesDto"}}},"required":true},"responses":{"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"200":{"description":"Successfully updates preferences","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HomeMapVisiblePreferencesDto"}}}}}}},"/api/user-preferences/visible-map-preferences/floorPlan":{"get":{"tags":["Visible Map Preferences"],"summary":"Get user's visible map preferences on floor plan page","operationId":"getFloorPlanVisibleMapPreferences","responses":{"200":{"description":"Successfully retrieved preferences","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FloorPlanMapVisiblePreferencesDto"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}}}},"put":{"tags":["Visible Map Preferences"],"summary":"Update user's visible map preferences on floor plan page","operationId":"updateFloorPlanVisibleMapPreferences","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FloorPlanMapVisiblePreferencesDto"}}},"required":true},"responses":{"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"200":{"description":"Successfully updates preferences","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FloorPlanMapVisiblePreferencesDto"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}}}}},"/api/user-preferences/visible-map-preferences/device":{"get":{"tags":["Visible Map Preferences"],"summary":"Get user's visible map preferences on device page","operationId":"getDeviceVisibleMapPreferences","responses":{"200":{"description":"Successfully retrieved preferences","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceMapVisiblePreferencesDto"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}}}},"put":{"tags":["Visible Map Preferences"],"summary":"Update user's visible map preferences on device page","operationId":"updateDeviceVisibleMapPreferences","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceMapVisiblePreferencesDto"}}},"required":true},"responses":{"200":{"description":"Successfully updates preferences","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceMapVisiblePreferencesDto"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}}}}},"/api/user-preferences/visible-map-preferences/building":{"get":{"tags":["Visible Map Preferences"],"summary":"Get user's visible map preferences on building page","operationId":"getBuildingVisibleMapPreferences","responses":{"200":{"description":"Successfully retrieved preferences","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BuildingMapVisiblePreferencesDto"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}}}},"put":{"tags":["Visible Map Preferences"],"summary":"Update user's visible map preferences on building page","operationId":"updateBuildingVisibleMapPreferences","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BuildingMapVisiblePreferencesDto"}}},"required":true},"responses":{"200":{"description":"Successfully updates preferences","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BuildingMapVisiblePreferencesDto"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}}}}},"/api/user-preferences/visible-map-preferences/beacon":{"get":{"tags":["Visible Map Preferences"],"summary":"Get user's visible map preferences on beacon page","operationId":"getBeaconVisibleMapPreferences","responses":{"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"200":{"description":"Successfully retrieved preferences","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BeaconMapVisiblePreferencesDto"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}}}},"put":{"tags":["Visible Map Preferences"],"summary":"Update user's visible map preferences on beacon page","operationId":"updateBeaconVisibleMapPreferences","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BeaconMapVisiblePreferencesDto"}}},"required":true},"responses":{"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"200":{"description":"Successfully updates preferences","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BeaconMapVisiblePreferencesDto"}}}}}}},"/api/user-preferences/visible-map-preferences/asset":{"get":{"tags":["Visible Map Preferences"],"summary":"Get user's visible map preferences on asset page","operationId":"getAssetVisibleMapPreferences","responses":{"200":{"description":"Successfully retrieved preferences","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssetMapVisiblePreferencesDto"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}}}},"put":{"tags":["Visible Map Preferences"],"summary":"Update user's visible map preferences on asset page","operationId":"updateAssetVisibleMapPreferences","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssetMapVisiblePreferencesDto"}}},"required":true},"responses":{"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"200":{"description":"Successfully updates preferences","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssetMapVisiblePreferencesDto"}}}}}}},"/api/user-preferences/table":{"get":{"tags":["user-preferences-controller"],"summary":"Get table preferences for a specific entity","description":"Fetches saved column visibility and ordering preferences for a specified table, such as 'asset', 'device', or 'site'.","operationId":"getUserTablePreferences","parameters":[{"name":"table","in":"query","description":"The table key (e.g., 'asset', 'home', 'floorPlan') for which preferences are requested","required":true,"schema":{"type":"string"},"example":"asset"}],"responses":{"400":{"description":"Missing or invalid table parameter","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"200":{"description":"Successfully retrieved table preferences","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BaseTablePreferencesDto"}}}}}},"put":{"tags":["user-preferences-controller"],"summary":"Update user table preferences","description":"Updates the column visibility and ordering preferences for a specific table such as 'asset', 'floorPlan', or 'home'. The actual structure depends on the table type.","operationId":"updateUserTablePreferences","parameters":[{"name":"table","in":"query","description":"The table key (e.g., 'asset', 'home', 'floorPlan') for which preferences are requested","required":true,"schema":{"type":"string"},"example":"asset"}],"requestBody":{"description":"Table preferences object for the selected table","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BaseTablePreferencesDto"}}},"required":true},"responses":{"200":{"description":"Successfully updated preferences","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BaseTablePreferencesDto"}}}},"400":{"description":"Invalid request body","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}}}}},"/api/user-preferences/sensor-table":{"get":{"tags":["user-preferences-controller"],"operationId":"getSensorTable","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/UserSensorPreferencesDto"}}}}}},"put":{"tags":["user-preferences-controller"],"operationId":"updateSensorTable","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserSensorPreferencesDto"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/UserSensorPreferencesDto"}}}}}}},"/api/user-preferences/sensor-last-parameters/{sensorId}":{"get":{"tags":["user-preferences-controller"],"operationId":"getLastSensorParametersView","parameters":[{"name":"sensorId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/LastSensorParametersViewDto"}}}}}}},"put":{"tags":["user-preferences-controller"],"operationId":"updateLastSensorParametersView","parameters":[{"name":"sensorId","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/LastSensorParametersViewDto"}}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/LastSensorParametersViewDto"}}}}}}}},"/api/user-preferences/map-settings/visibility-settings":{"put":{"tags":["user-preferences-controller"],"summary":"Update visibility settings for map","description":"Updates user preferences for the visibility of elements on the map, such as assets, geofences, and history tracks","operationId":"updateVisibleMapPreferences","requestBody":{"description":"Map element visibility preferences","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VisibleMapPreferencesDto"}}},"required":true},"responses":{"400":{"description":"Invalid request data","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"200":{"description":"Visibility settings updated successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VisibleMapPreferencesDto"}}}}}}},"/api/user-preferences/map-settings/map-type":{"put":{"tags":["user-preferences-controller"],"summary":"Update map type setting","description":"Updates the user’s preferred map type (e.g., standard, satellite)","operationId":"updateMapPreferences","requestBody":{"description":"Map type settings","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MapTypeSettings"}}},"required":true},"responses":{"200":{"description":"Map type setting updated successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MapTypeSettings"}}}},"400":{"description":"Invalid input data","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}}}}},"/api/tenant":{"get":{"tags":["tenant-controller"],"summary":"Get all tenants","description":"Retrieves a list of all tenants with basic information","operationId":"getAllTenants","responses":{"403":{"description":"Forbidden - insufficient permissions","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"400":{"description":"Something went wrong","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"200":{"description":"List of tenants retrieved successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenantDto"}}}}}},"put":{"tags":["tenant-controller"],"summary":"Update an existing tenant","description":"Updates details of an existing tenant","operationId":"updateTenant","requestBody":{"description":"Tenant data to save","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenantDto"}}},"required":true},"responses":{"403":{"description":"Forbidden - insufficient permissions","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"200":{"description":"Tenant updated successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenantDto"}}}},"400":{"description":"Invalid tenant data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}}}},"post":{"tags":["tenant-controller"],"summary":"Create or update a tenant","description":"Creates a new tenant or updates an existing one","operationId":"saveTenant","requestBody":{"description":"Tenant data to save","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenantDto"}}},"required":true},"responses":{"200":{"description":"Tenant saved successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenantDto"}}}},"403":{"description":"Forbidden - insufficient permissions","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"400":{"description":"Invalid tenant data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}}}},"delete":{"tags":["tenant-controller"],"summary":"Delete a tenant by ID","description":"Deletes the tenant identified by the given ID","operationId":"deleteTenant","parameters":[{"name":"id","in":"query","description":"ID of the tenant to delete","required":true,"schema":{"type":"string"},"example":"a1b2c3d4-5678-90ef-gh12-34567890abcd"}],"responses":{"403":{"description":"Forbidden - insufficient permissions","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"204":{"description":"Tenant deleted successfully"},"400":{"description":"Invalid tenant ID","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}}}}},"/api/site":{"get":{"tags":["site-controller"],"summary":"Get all sites","description":"Retrieves a list of all available sites for the current tenant","operationId":"getSites","responses":{"403":{"description":"Access denied due to insufficient permissions","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"200":{"description":"List of sites retrieved successfully","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/SiteDto"}}}}},"400":{"description":"Something went wrong","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}}}},"put":{"tags":["site-controller"],"summary":"Update an existing site","description":"Update an existing site with provided details","operationId":"updateSite","requestBody":{"description":"Site updating request payload","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SiteRequest"}}},"required":true},"responses":{"200":{"description":"Site updated successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SiteDto"}}}},"400":{"description":"Invalid input","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}}}},"post":{"tags":["site-controller"],"summary":"Create a new site","description":"Creates a new site with provided details","operationId":"createSite","requestBody":{"description":"Site creation request payload","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SiteRequest"}}},"required":true},"responses":{"200":{"description":"Site created successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SiteDto"}}}},"400":{"description":"Invalid input","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}}}}},"/api/sensor":{"put":{"tags":["sensor-controller"],"summary":"Update sensor","description":"Updates the details of an existing sensor.","operationId":"updateSensor","requestBody":{"description":"Sensor update request payload","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateSensorRequest"}}},"required":true},"responses":{"200":{"description":"Sensor updated successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SensorDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"403":{"description":"Forbidden: insufficient permissions","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}}}},"post":{"tags":["sensor-controller"],"summary":"Create a new sensor","description":"Creates a new sensor using the provided request body.","operationId":"addSensor","requestBody":{"description":"Sensor data to create a new sensor","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateSensorRequest"}}},"required":true},"responses":{"403":{"description":"Forbidden - insufficient permissions","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"400":{"description":"Invalid input data or validation failure","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"200":{"description":"Successfully created the sensor","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SensorDto"}}}}}}},"/api/sensor/unassign":{"put":{"tags":["sensor-controller"],"summary":"Unassign multiple sensors","description":"Unassigns sensors by their IDs. This action may detach them from a floor plan","operationId":"unassignSensors","requestBody":{"description":"List of sensor IDs to be unassigned","content":{"application/json":{"schema":{"type":"array","description":"Array of sensor UUID strings"},"examples":{"UnassignSensorsExample":{"summary":"Example request to unassign sensors","description":"UnassignSensorsExample","value":["123e4567-e89b-12d3-a456-426614174000","223e4567-e89b-12d3-a456-426614174001"]}}}},"required":true},"responses":{"403":{"description":"Forbidden - insufficient permissions","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"200":{"description":"Sensors unassigned successfully","content":{"*/*":{"schema":{"type":"boolean"}}}},"400":{"description":"Invalid sensor ID list or request format","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}}}}},"/api/sensor/positions":{"put":{"tags":["sensor-controller"],"summary":"Update sensor positions on the floor plan","description":"Updates the floor or map coordinates for a list of sensors. Requires manage sensors authority","operationId":"changeSensorsPositions","requestBody":{"description":"List of sensor IDs with their new floor or map coordinates","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SensorPositionRequest"},"example":[{"id":"123e4567-e89b-12d3-a456-426614174000","coordinates":{"x":154.23,"y":89.77},"location":{"lat":40.712776,"lng":-74.005974}}]}},"required":true},"responses":{"403":{"description":"Forbidden - insufficient permissions","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"200":{"description":"Sensor positions updated successfully","content":{"*/*":{"schema":{"type":"boolean"}}}},"400":{"description":"Invalid input data or missing fields","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}}}}},"/api/sensor/id/{id}/details":{"get":{"tags":["sensor-controller"],"summary":"Get detailed information about sensor by ID","description":"Returns sensor by ID. Requires manage or read sensor authority","operationId":"getSensorByIdDetailed","parameters":[{"name":"id","in":"path","description":"Sensor ID is the path variable","required":true,"schema":{"type":"string"},"example":"aab62a49-a437-4ea2-83b1-43fce670dd0a"}],"responses":{"200":{"description":"Sensor was found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Sensor Detail Response"}}}},"400":{"description":"Get Sensor by ID fails","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"403":{"description":"User does not have permission to view sensor","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}}}},"put":{"tags":["sensor-controller"],"summary":"Edit sensor details on the map","description":"Updates the details of a sensor on the map (e.g., name, tags). Requires manage sensor authority","operationId":"editSensorOnMap","parameters":[{"name":"id","in":"path","description":"ID of the sensor to update","required":true,"schema":{"type":"string"},"example":"123e4567-e89b-12d3-a456-426614174000"}],"requestBody":{"description":"Updated sensor data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EditSensorOnMapRequest"}}},"required":true},"responses":{"403":{"description":"Forbidden - insufficient permissions","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"400":{"description":"Invalid request data","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"200":{"description":"Sensor updated successfully","content":{"*/*":{"schema":{"type":"boolean"}}}}}}},"/api/sensor-model":{"put":{"tags":["sensor-model-controller"],"summary":"Update an existing Sensor Model","description":"Updates the name, description, or tags of an existing sensor model.","operationId":"updateSensorModel","requestBody":{"description":"Sensor model update data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SensorModelRequest"}}},"required":true},"responses":{"403":{"description":"Access denied","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"200":{"description":"Sensor model updated successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SensorModelDto"}}}},"400":{"description":"Invalid request body","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}}}},"post":{"tags":["sensor-model-controller"],"summary":"Create a Sensor Model","description":"Creates a new sensor model with optional tags and description.","operationId":"createSensorModel","requestBody":{"description":"Sensor model details","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SensorModelRequest"}}},"required":true},"responses":{"200":{"description":"Sensor model successfully created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SensorModelDto"}}}},"403":{"description":"Access denied","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"400":{"description":"Invalid request body","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}}}}},"/api/sensor-history-preferences/visibilityThresholds":{"get":{"tags":["sensor-history-preferences-controller"],"operationId":"getSensorHistoryVisibilityThresholds","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/VisibilityThresholdsDto"}}}}}},"put":{"tags":["sensor-history-preferences-controller"],"operationId":"updateSensorHistoryVisibilityThresholds","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VisibilityThresholdsDto"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/VisibilityThresholdsDto"}}}}}}},"/api/sensor-history-preferences/sensorId/{sensorId}":{"get":{"tags":["sensor-history-preferences-controller"],"operationId":"getSensorHistoryPreferences","parameters":[{"name":"sensorId","in":"path","required":true,"schema":{"type":"string"}},{"name":"viewMode","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/SensorHistoryPreferencesDto"}}}}}},"put":{"tags":["sensor-history-preferences-controller"],"operationId":"updateSensorHistoryPreferences","parameters":[{"name":"sensorId","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SensorHistoryPreferencesDto"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/SensorHistoryPreferencesDto"}}}}}}},"/api/ns-credentials":{"get":{"tags":["tek-ns-credentials-controller"],"summary":"Get Tektelic NS credentials","description":"Retrieves the current Tektelic Network Service credentials","operationId":"getCredentials","responses":{"403":{"description":"Forbidden - insufficient permissions","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"200":{"description":"Credentials retrieved successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TekNsCredentialsDto"}}}},"400":{"description":"Credentials not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}}}},"put":{"tags":["tek-ns-credentials-controller"],"summary":"Update Tektelic NS credentials","description":"Updates existing Tektelic Network Service credentials","operationId":"updateCredentials","requestBody":{"description":"Tektelic NS credentials data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TekNsCredentialsDto"}}},"required":true},"responses":{"403":{"description":"Forbidden - insufficient permissions","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"200":{"description":"Credentials updated successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TekNsCredentialsDto"}}}},"400":{"description":"Invalid input","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}}}},"post":{"tags":["tek-ns-credentials-controller"],"summary":"Create Tektelic NS credentials","description":"Creates new Tektelic Network Service credentials","operationId":"createCredentials","requestBody":{"description":"Tektelic NS credentials data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TekNsCredentialsDto"}}},"required":true},"responses":{"200":{"description":"Credentials created successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TekNsCredentialsDto"}}}},"403":{"description":"Forbidden - insufficient permissions","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"400":{"description":"Invalid input","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}}}},"delete":{"tags":["tek-ns-credentials-controller"],"summary":"Delete Tek NS credentials","description":"Deletes the existing Tek Network Service credentials","operationId":"deleteCredentials","responses":{"403":{"description":"Forbidden - insufficient permissions","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"204":{"description":"Credentials deleted successfully"},"400":{"description":"Something went wrong","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}}}}},"/api/lora-cloud-config":{"put":{"tags":["lora-cloud-config-controller"],"summary":"Update Lora Cloud Configuration","description":"Updates the Lora Cloud configuration for the given tenant.","operationId":"updateConfig","requestBody":{"description":"LoRa Cloud configuration to be created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LoraCloudConfig"}}},"required":true},"responses":{"200":{"description":"Configuration updated successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LoraCloudConfig"}}}},"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"403":{"description":"Forbidden - insufficient permissions","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}}}},"post":{"tags":["lora-cloud-config-controller"],"summary":"Create LoRa Cloud configuration","description":"Creates a new configuration for a tenant's LoRa Cloud integration.","operationId":"createConfig","requestBody":{"description":"LoRa Cloud configuration to be created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LoraCloudConfig"}}},"required":true},"responses":{"403":{"description":"Forbidden - insufficient permissions","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"201":{"description":"Configuration created successfully","content":{"*/*":{"schema":{"$ref":"#/components/schemas/LoraCloudConfig"}}}},"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}}}}},"/api/lora-cloud-config/auth-token":{"get":{"tags":["lora-cloud-config-controller"],"summary":"Get Authorization token","description":"Retrieves the Authorization token used for LoRa integration.","operationId":"getAuthTokenConfig","responses":{"200":{"description":"Authorization token successfully retrieved","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthApiKey"}}}},"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"403":{"description":"Forbidden - insufficient permissions","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}}}},"put":{"tags":["lora-cloud-config-controller"],"summary":"Update Authorization token Configuration","description":"Updates the LoRa authorization token used for communication.","operationId":"updateConfig_1","requestBody":{"description":"Authorization token","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthApiKey"}}},"required":true},"responses":{"200":{"description":"Authorization token updated successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthApiKey"}}}},"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"403":{"description":"Forbidden - insufficient permissions","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}}}},"post":{"tags":["lora-cloud-config-controller"],"summary":"Create Autorization token configuration","description":"Stores the provided authorization token for integration purposes.","operationId":"createAuthTokenConfig","requestBody":{"description":"Authorization token","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthApiKey"}}},"required":true},"responses":{"200":{"description":"Authorization configuration saved successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthApiKey"}}}},"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"403":{"description":"Forbidden - insufficient permissions","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}}}},"delete":{"tags":["lora-cloud-config-controller"],"summary":"Delete Authorization token Configuration","description":"Deletes the LoRa Authorization token configuration associated with the current tenant.","operationId":"deleteConfig_1","responses":{"403":{"description":"Forbidden - insufficient permissions","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"204":{"description":"Authorization token configuration deleted successfully"},"400":{"description":"Something went wrong","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}}}}},"/api/location/config/outdoor-position":{"get":{"tags":["outdoor-location-config-controller"],"operationId":"getOutdoorLocationConfig","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/OutdoorLocationConfigDto"}}}}}},"put":{"tags":["outdoor-location-config-controller"],"operationId":"updateOutdoorLocationConfig","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OutdoorLocationConfigDto"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/OutdoorLocationConfigDto"}}}}}},"post":{"tags":["outdoor-location-config-controller"],"operationId":"createOutdoorLocationConfig","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OutdoorLocationConfigDto"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/OutdoorLocationConfigDto"}}}}}},"delete":{"tags":["outdoor-location-config-controller"],"operationId":"deleteOutdoorLocationConfig","responses":{"200":{"description":"OK"}}}},"/api/location/config/indoor-position":{"get":{"tags":["indoor-location-config-controller"],"operationId":"getIndoorLocationConfig","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/IndoorLocationConfigDto"}}}}}},"put":{"tags":["indoor-location-config-controller"],"operationId":"updateIndoorLocationConfigDto","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/IndoorLocationConfigDto"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/IndoorLocationConfigDto"}}}}}},"post":{"tags":["indoor-location-config-controller"],"operationId":"createIndoorLocationConfigDto","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/IndoorLocationConfigDto"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/IndoorLocationConfigDto"}}}}}},"delete":{"tags":["indoor-location-config-controller"],"operationId":"deleteIndoorLocationConfigDto","responses":{"200":{"description":"OK"}}}},"/api/http-notification-config":{"get":{"tags":["notification-config-controller"],"operationId":"getAllNotificationConfig","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/NotificationConfigDto"}}}}}}},"put":{"tags":["notification-config-controller"],"operationId":"updateNotificationConfig","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotificationConfigDto"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/NotificationConfigDto"}}}}}},"post":{"tags":["notification-config-controller"],"operationId":"saveNotificationConfig","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotificationConfigDto"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/NotificationConfigDto"}}}}}}},"/api/geofence":{"put":{"tags":["geofence-controller"],"summary":"Update an existing geofence","description":"Updates geofence details such as name, color, opacity, and tags","operationId":"updateGeofence","requestBody":{"description":"Geofence update request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateGeofenceRequest"}}},"required":true},"responses":{"400":{"description":"Invalid geofence data supplied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"200":{"description":"Geofence updated successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeofenceInfo"}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}}}},"post":{"tags":["geofence-controller"],"summary":"Create a new geofence","description":"Creates a geofence with given details such as name, description, type, color, coordinates, and location.","operationId":"createGeofence","requestBody":{"description":"The geofence creation request with all required fields","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateGeofenceRequest"}}},"required":true},"responses":{"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"200":{"description":"Geofence created successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeofenceInfo"}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}}}}},"/api/geofence/positions":{"put":{"tags":["geofence-controller"],"summary":"Update positions of multiple geofences","description":"Allows updating coordinates and type for multiple geofences","operationId":"updatePosition","requestBody":{"description":"List of geofence position updates","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/GeofencePositionRequest"}}}},"required":true},"responses":{"200":{"description":"Positions updated successfully"},"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}}}}},"/api/floor-plan":{"get":{"tags":["floor-plan-controller"],"summary":"Get paginated list of simple floor plans","description":"Retrieves a paginated list of simple floor plans with minimal details. Requires 'manage_floor_plan' or 'read_floor_plan' authority.","operationId":"getAllSimpleFloorPlans","parameters":[{"name":"page","in":"query","description":"Page number (0-based)","required":true,"schema":{"type":"integer","format":"int32"},"example":0},{"name":"rowsPerPage","in":"query","description":"Number of items per page (must be greater than zero)","required":true,"schema":{"type":"integer","format":"int32"},"example":10}],"responses":{"403":{"description":"Forbidden - insufficient permissions","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"400":{"description":"Bad request - invalid page size","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"200":{"description":"Successful retrieval of paginated simple floor plans","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntityListResponse"},"example":{"content":[{"id":"floorPlan1","name":"First Floor"},{"id":"floorPlan2","name":"Second Floor"}],"numberOfElements":2}}}}}},"put":{"tags":["floor-plan-controller"],"summary":"Update floor plan","description":"Updates an existing floor plan using provided data.","operationId":"updateFloorPlan","requestBody":{"description":"Updated floor plan object","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FloorPlanUpdate"}}},"required":true},"responses":{"403":{"description":"User does not have the required permissions","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"200":{"description":"Successfully updated floor plan","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FloorPlanDto"}}}},"400":{"description":"Invalid request body or parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}}}},"post":{"tags":["floor-plan-controller"],"summary":"Create a new floor plan","description":"Creates a floor plan and returns the created object.","operationId":"createFloorPlan","requestBody":{"description":"Payload to create a new floor plan","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateFloorPlanRequest"}}},"required":true},"responses":{"200":{"description":"Successfully created floor plan","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FloorPlanDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}}}}},"/api/floor-plan/{id}/image-info":{"put":{"tags":["floor-plan-controller"],"summary":"Update floor plan image info","description":"Updates the image metadata for the specified floor plan by ID","operationId":"updateImageInfo","parameters":[{"name":"id","in":"path","description":"Unique identifier of the floor plan","required":true,"schema":{"type":"string"},"example":"123e4567-e89b-12d3-a456-426614174000"}],"requestBody":{"description":"Request body containing the updated floor plan details","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateFloorImageInfo"}}},"required":true},"responses":{"400":{"description":"Invalid input or floor plan ID","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"200":{"description":"Image info successfully updated"}}}},"/api/floor-plan/{id}/details":{"get":{"tags":["floor-plan-controller"],"summary":"Get detailed information about a floor plan by ID","description":"Returns detailed information of the floor plan specified by its unique ID","operationId":"getFloorPlanDetails","parameters":[{"name":"id","in":"path","description":"Unique identifier of the floor plan","required":true,"schema":{"type":"string"},"example":"123e4567-e89b-12d3-a456-426614174000"}],"responses":{"200":{"description":"Successful retrieval of floor plan details","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FloorPlanInfo"}}}},"400":{"description":"Invalid floor plan ID supplied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}}}},"put":{"tags":["floor-plan-controller"],"summary":"Update floor plan details","description":"Updates the details of the specified floor plan by its unique ID","operationId":"updateFloorPlanDetails","parameters":[{"name":"id","in":"path","description":"Unique identifier of the floor plan","required":true,"schema":{"type":"string"},"example":"123e4567-e89b-12d3-a456-426614174000"}],"requestBody":{"description":"Request body containing the updated floor plan details","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateFloorPlanDetailsRequest"}}},"required":true},"responses":{"200":{"description":"Successful retrieval of floor plan details","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FloorPlanInfo"}}}},"400":{"description":"Invalid floor plan ID supplied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}}}}},"/api/event-rule":{"put":{"tags":["event-rule-controller"],"summary":"Update an existing event rule","description":"Updates the configuration of an existing event rule using its ID.","operationId":"updateEventRule","requestBody":{"description":"Event rule definition","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EventRuleRequest"}}},"required":true},"responses":{"400":{"description":"Invalid request data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"403":{"description":"Forbidden - Insufficient permissions","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"200":{"description":"Event rule updated successfully"}}},"post":{"tags":["event-rule-controller"],"summary":"Create a new event rule","description":"Creates a new event rule for triggering alerts or actions when specified conditions are met.","operationId":"createEventRule","requestBody":{"description":"Event rule definition","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EventRuleRequest"}}},"required":true},"responses":{"403":{"description":"Forbidden - insufficient permissions","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"400":{"description":"Invalid input or validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"200":{"description":"Event rule created successfully"}}}},"/api/device":{"put":{"tags":["device-controller"],"summary":"Update device","description":"Updates the details of an existing device.","operationId":"updateDevice","requestBody":{"description":"Device update request payload","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateDeviceRequest"}}},"required":true},"responses":{"200":{"description":"Device updated successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceDto"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"403":{"description":"Forbidden: insufficient permissions","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}}}},"post":{"tags":["device-controller"],"summary":"Create a new device","description":"Creates a new device using the provided request body.","operationId":"addDevice","requestBody":{"description":"Device data to create a new device","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceRequest"}}},"required":true},"responses":{"403":{"description":"Forbidden - insufficient permissions","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"400":{"description":"Invalid input data or validation failure","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"200":{"description":"Successfully created the device","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceDto"}}}}}}},"/api/configuration":{"put":{"tags":["configuration-controller"],"summary":"Update Configuration","description":"Updates an existing device configuration. Requires 'manage_configuration' authority.","operationId":"updateConfiguration","requestBody":{"description":"Update request payload for the configuration","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateConfigurationRequest"}}},"required":true},"responses":{"200":{"description":"Configuration successfully updated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConfigurationDto"}}}},"403":{"description":"Forbidden - insufficient permissions","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"400":{"description":"Invalid update request","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}}}},"post":{"tags":["configuration-controller"],"summary":"Create Configuration","description":"Creates a new device configuration. Requires manage configurations authority.","operationId":"createConfiguration","requestBody":{"description":"Configuration creation request payload","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConfigurationRequest"}}},"required":true},"responses":{"403":{"description":"Forbidden - insufficient permissions","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"200":{"description":"Configuration successfully created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConfigurationDto"}}}},"400":{"description":"Invalid request payload","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}}}}},"/api/building":{"get":{"tags":["building-controller"],"summary":"Get all buildings","description":"Retrieves a list of all buildings with full metadata including tags, coordinates, and site info.","operationId":"getAllBuildings","responses":{"400":{"description":"Something went wrong","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"200":{"description":"List of all buildings","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/BuildingDto"}}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}}}},"put":{"tags":["building-controller"],"summary":"Update existing building","description":"Updates a building with the given details","operationId":"updateBuilding","requestBody":{"description":"Building creation request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BuildingRequest"}}},"required":true},"responses":{"200":{"description":"Successfully updated the building","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BuildingDto"}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}}}},"post":{"tags":["building-controller"],"summary":"Create a new building","description":"Creates a new building and returns the building information","operationId":"createBuilding","requestBody":{"description":"Building creation request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BuildingRequest"}}},"required":true},"responses":{"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"200":{"description":"Successfully created the building","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BuildingDto"}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}}}}},"/api/beacon":{"put":{"tags":["beacon-controller"],"summary":"Update an existing beacon","description":"Updates the properties of an existing beacon. Requires manage beacons authority.","operationId":"updateBeacon","requestBody":{"description":"Updated data for the beacon","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BaseBeaconRequest"}}},"required":true},"responses":{"403":{"description":"Forbidden - insufficient permissions","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"400":{"description":"Invalid request or validation error","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"200":{"description":"Beacon updated successfully","content":{"*/*":{"schema":{"$ref":"#/components/schemas/BeaconDto"},"examples":{"UpdatedBeaconExample":{"summary":"Example of a successfully updated beacon","description":"UpdatedBeaconExample","value":{"id":"123e4567-e89b-12d3-a456-426614174000","name":"Updated Beacon","siteId":"123e4567-e89b-12d3-a456-426614174000","buildingId":"123e4567-e89b-12d3-a456-426614174000","floorPlanId":"123e4567-e89b-12d3-a456-426614174000","modelId":"123e4567-e89b-12d3-a456-426614174000","localizationMode":"Regular","lastModifiedBy":"admin@email.com","lastModifiedDate":"2025-07-18T12:45:00Z"}}}}}}}},"post":{"tags":["beacon-controller"],"summary":"Create a new beacon","description":"Creates a new beacon with the provided configuration and returns the created beacon details.","operationId":"createBeacon_1","requestBody":{"description":"Details for the beacon to be created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateBeaconRequest"}}},"required":true},"responses":{"200":{"description":"Beacon successfully created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BeaconDto"}}}},"403":{"description":"Forbidden - insufficient permissions","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"400":{"description":"Invalid request data","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}}}}},"/api/beacon/{beaconId}":{"put":{"tags":["beacon-controller"],"summary":"Edit beacon details on the map","description":"Updates the details of a beacon on the map (e.g., name, model, MAC address, localization mode, tags). Requires manage beacons authority","operationId":"editBeaconOnMap","parameters":[{"name":"beaconId","in":"path","description":"ID of the beacon to update","required":true,"schema":{"type":"string"},"example":"123e4567-e89b-12d3-a456-426614174000"}],"requestBody":{"description":"Updated beacon data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EditBeaconRequest"},"examples":{"EditBeaconExample":{"summary":"Example beacon update request","description":"EditBeaconExample","value":{"name":"Main Hall Beacon","modelId":"789e4567-e89b-12d3-a456-426614174000","deviceEui":"647FDA0000000000","macAddress":"00:1A:7D:DA:71:13","localizationMode":"Regular","description":"Updated beacon for the main hall area","tags":["aab62a49-a437-4ea2-83b1-43fce670dd0a","aab62a49-a437-4ea2-83b1-43fce670dd0c"]}}}}},"required":true},"responses":{"403":{"description":"Forbidden - insufficient permissions","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"400":{"description":"Invalid request data","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"200":{"description":"Beacon updated successfully","content":{"*/*":{"schema":{"type":"boolean"}}}}}}},"/api/beacon/unassign":{"put":{"tags":["beacon-controller"],"summary":"Unassign multiple beacons","description":"Unassigns beacons by their IDs. This action may detach them from a floor plan","operationId":"unassignBeacons","requestBody":{"description":"List of beacon IDs to be unassigned","content":{"application/json":{"schema":{"type":"array","description":"Array of beacon UUID strings"},"examples":{"UnassignBeaconsExample":{"summary":"Example request to unassign beacons","description":"UnassignBeaconsExample","value":["123e4567-e89b-12d3-a456-426614174000","223e4567-e89b-12d3-a456-426614174001"]}}}},"required":true},"responses":{"200":{"description":"Beacons unassigned successfully","content":{"*/*":{"schema":{"type":"boolean"}}}},"403":{"description":"Forbidden - insufficient permissions","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"400":{"description":"Invalid beacon ID list or request format","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}}}}},"/api/beacon/positions":{"put":{"tags":["beacon-controller"],"summary":"Update beacon positions on the floor plan","description":"Updates the floor coordinates for a list of beacons. Requires manage beacons authority","operationId":"changeBeaconsPositions","requestBody":{"description":"List of beacon IDs with their new floor coordinates","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceCoordinatesRequest"}}},"required":true},"responses":{"403":{"description":"Forbidden - insufficient permissions","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"400":{"description":"Invalid input data or missing fields","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"200":{"description":"Beacon positions updated successfully","content":{"*/*":{"schema":{"type":"boolean"}}}}}}},"/api/beacon-model":{"get":{"tags":["beacon-model-controller"],"summary":"Get all beacon models","description":"Returns a list of all available beacon models.","operationId":"getAllBeaconModels","responses":{"403":{"description":"Access denied","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"200":{"description":"List of beacon models returned successfully","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/BeaconModelDto"}},"examples":{"BeaconModelListExample":{"summary":"Sample list of beacon models","description":"BeaconModelListExample","value":[{"id":"model-001","name":"LoRa Beacon v2","description":"Advanced beacon model for indoor use","tags":[{"id":"tag-1","name":"Indoor"}],"createDate":"2025-07-20T10:15:30+03:00"},{"id":"model-002","name":"LoRa Beacon v3","description":"Outdoor rugged beacon","tags":[],"createDate":"2025-07-19T08:45:00+03:00"}]}}}}},"400":{"description":"Something went wrong","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}}}},"put":{"tags":["beacon-model-controller"],"summary":"Update an existing Beacon Model","description":"Updates the name, description, or tags of an existing beacon model.","operationId":"updateBeaconModel","requestBody":{"description":"Beacon model update data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BeaconModelRequest"}}},"required":true},"responses":{"403":{"description":"Access denied","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"200":{"description":"Beacon model updated successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BeaconModelDto"}}}},"400":{"description":"Invalid request body","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}}}},"post":{"tags":["beacon-model-controller"],"summary":"Create a Beacon Model","description":"Creates a new beacon model with optional tags and description.","operationId":"createBeaconModel","requestBody":{"description":"Beacon model details","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BeaconModelRequest"}}},"required":true},"responses":{"403":{"description":"Access denied","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"400":{"description":"Invalid request body","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"200":{"description":"Beacon model successfully created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BeaconModelDto"}}}}}}},"/api/asset":{"get":{"tags":["asset-controller"],"summary":"Get all assets","description":"Returns a list of all available assets. Requires manage or read assets authority.","operationId":"getAllAssets","responses":{"400":{"description":"Get Assets operation fails","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"200":{"description":"Assets retrieved successfully","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/AssetDto"}}}}},"403":{"description":"User does not have permission to view assets","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}}}},"put":{"tags":["asset-controller"],"summary":"Update Asset","description":"Requires manage asset authority","operationId":"updateAsset","requestBody":{"description":"Update asset request payload","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssetUpdateRequest"}}},"required":true},"responses":{"403":{"description":"User does not have permission to update asset or does not have access to the site","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"400":{"description":"Operation update asset failed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"200":{"description":"The asset was created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssetDto"}}}}}},"post":{"tags":["asset-controller"],"summary":"Create Asset","description":"Requires manage asset authority","operationId":"createAsset","requestBody":{"description":"Asset creation request payload","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateAssetRequest"}}},"required":true},"responses":{"403":{"description":"User does not have permission to create asset or does not have access to the site","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"200":{"description":"The asset was created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssetDto"}}}},"400":{"description":"Operation create asset failed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}}}}},"/api/asset-type":{"get":{"tags":["asset-type-controller"],"summary":"Get All Asset Types","description":"Retrieves a list of all asset types. Requires either manage or read assets authority.","operationId":"getAllAssetTypes","responses":{"400":{"description":"Operation get all asset types fails","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"403":{"description":"Access denied due to insufficient permissions","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"200":{"description":"Successfully retrieved asset types","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/AssetTypeDto"}}}}}},"security":[{"bearerAuth":[]}]},"put":{"tags":["asset-type-controller"],"summary":"Update Asset Type","description":"Updates an existing asset type. Requires manage assets authority","operationId":"updateAssetType","requestBody":{"description":"Asset type update payload","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateAssetTypeRequest"}}},"required":true},"responses":{"200":{"description":"Asset type successfully updated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssetTypeDto"}}}},"403":{"description":"User lacks permission to update asset type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"400":{"description":"Invalid input or update failure","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}}},"security":[{"bearerAuth":[]}]},"post":{"tags":["asset-type-controller"],"summary":"Create Asset Type","description":"Creates a new asset type. Requires manage assets authority","operationId":"createAssetType","requestBody":{"description":"Asset type creation payload","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateAssetTypeRequest"}}},"required":true},"responses":{"200":{"description":"Asset type successfully created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssetTypeDto"}}}},"403":{"description":"User does not have permission to create Asset or does not have access to the site","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"400":{"description":"Operation create Asset Type fails","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}}},"security":[{"bearerAuth":[]}]}},"/api/user-preferences/selected-item":{"post":{"tags":["user-preferences-controller"],"summary":"Save selected item","description":"Stores the selected item (e.g., site, building) for the current user","operationId":"saveSelectedItem","requestBody":{"description":"Selected item to save","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SelectedItem"}}},"required":true},"responses":{"200":{"description":"Selected item saved successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SelectedItem"}}}},"400":{"description":"Invalid request payload"}}}},"/api/thermostat/requested-configuration":{"post":{"tags":["Thermostat Configuration"],"summary":"Request a thermostat configuration change","description":"Sends a configuration change to the thermostat as a downlink and stores it as the pending (requested) configuration with status PENDING. Poll the GET endpoint to observe the outcome (APPLIED / FAILED / TIMEOUT).\n\nThe request is partial: only non-null fields are treated as requested changes, and among them only values that differ from the current confirmed ones are sent to the device. Setpoints are in °C, 0–50, in 0.5 °C steps.\n\nRejected with 400 if: no field would change anything (\"The configuration with the same parameters is set already\"), a previous request is still pending (\"A configuration request is already pending for this device\"), a setpoint is out of range or not a 0.5 °C step, deviceEui is missing, or the tenant has no TEKTELIC NS credentials configured.","operationId":"setRequestedConfiguration","requestBody":{"description":"Requested thermostat configuration; only non-null fields are applied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ThermostatRequestedConfigurationDto"},"examples":{"Switch to Eco and lower the comfort setpoint":{"description":"Switch to Eco and lower the comfort setpoint","value":{"deviceEui":"647FDA0000000000","operationalMode":"Eco","fanSpeed":"Medium","comfortSetpoint":21.0,"economySetpoint":18.0}}}}},"required":true},"responses":{"200":{"description":"Change accepted and sent to the device; stored as PENDING. Empty body."},"403":{"description":"Forbidden - insufficient permissions","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"400":{"description":"Validation failure, duplicate/pending request, or downlink delivery failure","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}}}}},"/api/tag":{"get":{"tags":["tag-controller"],"summary":"Get all tags","description":"Returns a list of all tags","operationId":"getAllTags","responses":{"200":{"description":"List of tags retrieved successfully","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/TagShort"}}}}},"400":{"description":"Something went wrong","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}}}},"post":{"tags":["tag-controller"],"summary":"Create a new tag","description":"Creates a new tag with the given details. Requires 'manage_tag' authority.","operationId":"createTag","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TagDto"}}},"required":true},"responses":{"403":{"description":"Access denied","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"200":{"description":"Tag created successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TagDto"}}}},"400":{"description":"Invalid tag data","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}}}}},"/api/tag-log/filter":{"post":{"tags":["tag-log-controller"],"operationId":"getAllTagLogsByPeriod","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TagLogFilter"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/TagLogDto"}}}}}}}},"/api/site/get-csv":{"post":{"tags":["site-controller"],"summary":"Generate CSV file of sites","description":"Creates and returns a CSV file with site data filtered by the given criteria and adjusted for the provided timezone offset","operationId":"getCsvFile","parameters":[{"name":"timezone","in":"query","description":"User's timezone (e.g., 'Europe/Berlin')","required":true,"schema":{"type":"string"},"example":"Europe/Berlin"}],"requestBody":{"description":"Optional filter criteria for sites","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SiteFilterRequest"}}}},"responses":{"200":{"description":"CSV file generated successfully","content":{"text/csv":{}}},"403":{"description":"Access denied due to insufficient permissions","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"400":{"description":"Invalid parameters or request body","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}}}}},"/api/site/filter":{"post":{"tags":["site-controller"],"summary":"Filter and paginate sites","description":"Returns a paginated and filtered list of sites based on search text and tags","operationId":"getSitesByFilter","requestBody":{"description":"Filtering criteria for sites","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SiteFilterRequest"}}},"required":true},"responses":{"400":{"description":"Invalid filter request format"},"200":{"description":"Filtered list of sites retrieved successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntityListResponse"},"examples":{"Example response":{"summary":"Example of paginated SiteDto list","description":"Example response","value":"{\n  \"content\": [\n    {\n      \"id\": \"123e4567-e89b-12d3-a456-426614174000\",\n      \"name\": \"Main Warehouse\",\n      \"tenantId\": \"123e4567-e89b-12d3-a456-426614174000\",\n      \"coordinates\": [],\n      \"createDate\": \"2025-07-23T10:15:30+03:00\",\n      \"description\": \"Primary storage site\",\n      \"tags\": [\n        { \"id\": \"123e4567-e89b-12d3-a456-426614174000\", \"name\": \"cold-storage\" }\n      ],\n      \"assetsInside\": 42,\n      \"sensorsInside\": 10,\n    }\n  ],\n  \"numberOfElements\": 1,\n  \"page\": 0\n}\n"}}}}},"403":{"description":"Access denied due to insufficient permissions"}}}},"/api/site/check-delete/bulk":{"post":{"tags":["site-controller"],"summary":"Check if multiple sites can be deleted","description":"Checks deletion eligibility for a bulk list of site IDs","operationId":"checkDeleteSiteBulk","requestBody":{"content":{"application/json":{"schema":{"type":"array","description":"List of site IDs to check for deletion eligibility","items":{"type":"string","example":"123e4567-e89b-12d3-a456-426614174000"}}}},"required":true},"responses":{"400":{"description":"Invalid input - malformed or empty list"},"403":{"description":"Access denied due to insufficient permissions"},"200":{"description":"Successfully checked deletion eligibility","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckDeleteEntityResponse"}}}}}}},"/api/sensor/parameters":{"post":{"tags":["sensor-controller"],"operationId":"getSensorParametersByModels","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SensorParametersRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/FilterEntityResponse"}}}}}}},"/api/sensor/on-prem":{"post":{"tags":["sensor-controller"],"summary":"Create a new sensor on-prem","description":"Creates a new sensor using the provided request body.","operationId":"addSensorOnPrem","requestBody":{"description":"Sensor data to create a new sensor","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateSensorOnPremRequest"}}},"required":true},"responses":{"403":{"description":"Forbidden - insufficient permissions","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"400":{"description":"Invalid input data or validation failure","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"200":{"description":"Successfully created the sensor","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SensorDto"}}}}}}},"/api/sensor/get-csv":{"post":{"tags":["sensor-controller"],"summary":"Export sensors as CSV","description":"Returns a CSV file containing sensor information filtered according to the provided request body and query parameters","operationId":"getCsvFile_1","parameters":[{"name":"table","in":"query","description":"The name of the table to export (optional)","required":false,"schema":{"type":"string"},"example":"floorPlan"},{"name":"location","in":"query","description":"Location of the sensors: indoor or outdoor","required":false,"schema":{"type":"string"},"example":"outdoor"},{"name":"timezone","in":"query","description":"The timezone of a user, e.g. 'Europe/Berlin'","required":true,"schema":{"type":"string"},"example":"Europe/Berlin"}],"requestBody":{"description":"Filtering criteria for exported sensors","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SensorFilterRequest"}}}},"responses":{"400":{"description":"Invalid request parameters","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"401":{"description":"Forbidden - insufficient permissions","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"403":{"description":"Forbidden - insufficient permissions"},"200":{"description":"CSV file generated successfully","content":{"application/octet-stream":{}}}}}},"/api/sensor/filter":{"post":{"tags":["sensor-controller"],"summary":"Get filtered list of sensors","description":"Returns a paginated list of sensors based on filter, search, and sort criteria","operationId":"getAllSensors","requestBody":{"description":"Filter criteria for sensor search","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SensorFilterRequest"}}},"required":true},"responses":{"400":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"200":{"description":"Successful retrieval of filtered sensor list","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntityListResponse"},"examples":{"FilteredDevicesResponseExample":{"summary":"Example of paginated sensor list","description":"FilteredDevicesResponseExample","value":{"content":[{"id":"123e4567-e89b-12d3-a456-426614174000","deviceEui":"647FDA0000000000","status":"Online","name":"My Sensor","model":"BREEZE","battery":95,"homeSite":{"id":"123e4567-e89b-12d3-a456-426614174000","name":"Main Campus"},"building":{"id":"123e4567-e89b-12d3-a456-426614174000","name":"Administration Building"},"floorPlan":{"id":"123e4567-e89b-12d3-a456-426614174000","name":"First Floor","floorNumber":1},"coordinateX":120.5,"coordinateY":85.3,"latitude":45.0,"longitude":-75.0,"tags":[{"id":"123e4567-e89b-12d3-a456-426614174000","color":"ORANGE","value":"Entrance"}],"lastActivity":"2023-12-01T10:15:30Z","lastModifiedDate":"2023-12-01T10:15:30Z","lastModifiedBy":"admin@email.com","inactivityTimeout":360,"createDate":"2023-12-01T10:15:30Z","sensorParams":{"accelerationVectorX":0.01,"accelerationVectorY":0.02,"accelerationVectorZ":0.98,"accelerationMagnitude":1.0,"activePower":100.5,"apparentPower":110.2,"batterySensorCapacity":40,"batteryDisplayCapacity":95,"batteryRemainingDays":284,"batteryVoltage":3.6,"co2":450,"co2Row":400,"ammeter":1.2,"hallEffectCount":10,"hallEffectState":"Magnet Present (Low) | Magnet Absent (High) | Invalid","energyConsumed":1234.5,"extAnalogInputB":2.5,"extDigitalInputStateA":"Short-Circuited | Open-Circuited | Invalid","extDigitalInputStateB":"Short-Circuited | Open-Circuited | Invalid","extRelativeCountA":5,"extRelativeCountB":2,"extTotalCountA":100,"extTotalCountB":50,"fanSpeed":1500,"humidity":45.5,"operatingMode":"Auto | Eco","impactAlarm":"Impact Alarm Inactive | Impact Alarm Active | Invalid","in2Mode":"Digital | Analog","in2State":"For mode Digital: High—open | Low—short. For Analog: 15","io1Mode":"Digital | Analog | ECM Fan","io1State":"High—open | Low—short","lightIntensity":250,"lightState":"Dark | Bright | Invalid","lineFrequency":60,"mcuTemperature":35.5,"meterStatus":true,"meterElapsed":3600,"accelerationAlarmStatus":"Impact Alarm Inactive | Impact Alarm Active | Invalid","motionEventCount":15,"motionEventState":"None | Detected | Invalid","pirInitStatus":"Initialization Successful | Initialization Unsuccessful | Invalid","powerFactorMeter":0.95,"presenceEventCount":5,"presenceEventValue":1,"presenceEventState":"No Motion/Presence Detected | Motion/Presence Detected | Invalid","presenceTemperature":22.5,"barometricPressure":1013.25,"extProbeTemperature":20.0,"extProbeVoltage":3.3,"reactivePower":20.5,"extReedSwitchCount":3,"extReedSwitchState":"Magnet Present | Magnet Absent | Invalid","relayState":"true","relayState1_5":"true","extOutputState":"SSR non-conducting (Low) | SSR conducting (High) | Invalid","temperature":23.5,"temperatureSetpoint":22.0,"voltmeter":12.0}}],"numberOfElements":1}}}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}}}}},"/api/sensor/create/onprem":{"post":{"tags":["sensor-controller"],"summary":"Upload sensor data from CSV file for on-prem","description":"Uploads a CSV file containing sensor data for bulk creation.","operationId":"createSensorsOnPrem","requestBody":{"content":{"multipart/form-data":{"schema":{"required":["file"],"type":"object","properties":{"file":{"type":"string","description":"The CSV file to upload","format":"binary"}}}}}},"responses":{"200":{"description":"CSV file processed successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CsvListUploadResponse"}}}},"400":{"description":"Invalid file format or missing file","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"403":{"description":"Forbidden: user does not have permission"},"401":{"description":"Forbidden: user does not have permission","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}}}}},"/api/sensor/create/file":{"post":{"tags":["sensor-controller"],"summary":"Upload sensor data from CSV file","description":"Uploads a CSV file containing sensor data for bulk creation.","operationId":"uploadFile","requestBody":{"content":{"multipart/form-data":{"schema":{"required":["file"],"type":"object","properties":{"file":{"type":"string","description":"The CSV file to upload","format":"binary"}}}}}},"responses":{"200":{"description":"CSV file processed successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CsvListUploadResponse"}}}},"400":{"description":"Invalid file format or missing file","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"403":{"description":"Forbidden: user does not have permission"},"401":{"description":"Forbidden: user does not have permission","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}}}}},"/api/sensor/assign":{"post":{"tags":["sensor-controller"],"summary":"Assign a sensor to a floor plan with coordinates","description":"Assigns a sensor to a specific floor plan at given coordinates. Requires manage sensors authority","operationId":"assignSensors","requestBody":{"description":"Details to assign a sensor to a floor plan with coordinates","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssignSensorRequest"}}},"required":true},"responses":{"403":{"description":"Forbidden - insufficient permissions","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"200":{"description":"Sensor assigned successfully","content":{"*/*":{"schema":{"type":"boolean"}}}},"400":{"description":"Invalid input data","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}}}}},"/api/sensor-model/filter":{"post":{"tags":["sensor-model-controller"],"summary":"Get Sensor Models by Filter","description":"Retrieves a paginated and filtered list of sensor models based on search value, tags, and sorting.","operationId":"findAllByFilter","requestBody":{"description":"Filter criteria to search and paginate sensor models","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SensorModelFilterRequest"}}},"required":true},"responses":{"200":{"description":"Successfully retrieved filtered sensor models","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntityListResponse"},"examples":{"SensorModelFilterResponse":{"summary":"Sample response with filtered sensor models","description":"SensorModelFilterResponse","value":{"content":[{"id":"model-1","name":"Temperature Tracker","description":"Low-power sensor in the entrance","tags":[{"id":"123e4567-e89b-12d3-a456-426614174000","name":"LoRa"}],"createDate":"2025-07-20T10:15:00+03:00"}],"numberOfElements":1}}}}}},"403":{"description":"Forbidden - user does not have permission to access beacon models","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"400":{"description":"Something went wrong","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}}}}},"/api/sensor-history/thresholds/sensorId/{sensorId}":{"post":{"tags":["sensor-history-controller"],"operationId":"getSensorThresholds","parameters":[{"name":"sensorId","in":"path","description":"Sensor ID of the sensor whose thresholds are requested","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"array","items":{"type":"string","enum":["accelerationVector","accelerationVectorX","accelerationVectorY","accelerationVectorZ","accelerationMagnitude","activePower","apparentPower","batterySensorCapacity","batteryDisplayCapacity","batteryRemainingDays","batteryVoltage","co2","co2Raw","ammeter","hallEffectCount","hallEffectState","energyConsumed","extAnalogInputB","extDigitalInputStateA","extDigitalInputStateB","extRelativeCountA","extRelativeCountB","extTotalCountA","extTotalCountB","fanSpeed","humidity","operatingMode","impactAlarm","in2Analog","in2Changeover","in2Mode","in2State","io1Analog","io1Changeover","io1Ecm","io1Mode","io1State","lightIntensity","lightState","lineFrequency","mcuTemperature","meterStatus","meterElapsed","accelerationAlarmStatus","motionEventCount","pirInitStatus","pm1_0","pm2_5","pm10_0","powerFactorMeter","presenceEventCount","presenceEventValue","occupancyStatus","presenceTemperature","barometricPressure","extProbeTemperature","extProbeVoltage","reactivePower","extReedSwitchCount","extReedSwitchState","relayState","relay1","relay2","relay3","relay4","relay5","extOutputState","temperature","temperatureSetpoint","voltmeter"]}}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ParameterThreshold"}}}}}}}},"/api/sensor-history/sensorId/{sensorId}/table":{"post":{"tags":["sensor-history-controller"],"summary":"Get Sensor History records","description":"Returns paginated list of sensor history records based on filter. Requires sensor access rights.","operationId":"getSensorHistory","parameters":[{"name":"sensorId","in":"path","description":"Sensor ID of the sensor whose history is requested","required":true,"schema":{"type":"string"}}],"requestBody":{"description":"Filter criteria for history search","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SensorHistoryFilter"}}},"required":true},"responses":{"200":{"description":"Successful retrieval of sensor history","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntityListResponse"},"example":{"content":[{"timestamp":"2023-01-01T12:00:00Z","historyUnits":[{"parameter":"temperature","value":22.5},{"parameter":"humidity","value":45}]}],"numberOfElements":1}}}},"400":{"description":"Invalid input provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"403":{"description":"Access denied or insufficient permissions","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}}}}},"/api/sensor-history/sensorId/{sensorId}/chart":{"post":{"tags":["sensor-history-controller"],"summary":"Get Sensor History records","description":"Returns paginated list of sensor history records based on filter. Requires sensor access rights.","operationId":"getSensorHistoryChart","parameters":[{"name":"sensorId","in":"path","description":"Sensor ID of the sensor whose history is requested","required":true,"schema":{"type":"string"}}],"requestBody":{"description":"Filter criteria for history search","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SensorHistoryFilter"}}},"required":true},"responses":{"200":{"description":"Successful retrieval of sensor history","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntityListResponse"},"example":{"content":[{"timestamp":"2023-01-01T12:00:00Z","historyUnits":[{"parameter":"temperature","value":22.5},{"parameter":"humidity","value":45}]}],"numberOfElements":1}}}},"400":{"description":"Invalid input provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"403":{"description":"Access denied or insufficient permissions","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}}}}},"/api/sensor-history/raw":{"post":{"tags":["sensor-history-controller"],"summary":"Get raw (non-aggregated) sensor data","description":"Returns a paginated, newest-first list of raw sensor_data readings (one per parameter reading) for the caller's tenant. deviceEuis and parameters are optional (omit/empty = all); fromMillis/toMillis (Unix epoch millis) are required. Requires sensor access rights.","operationId":"getRawSensorData","requestBody":{"description":"Raw sensor data filter (deviceEuis/parameters optional; from/to required)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RawSensorFilter"}}},"required":true},"responses":{"400":{"description":"Invalid input provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"200":{"description":"Paginated raw sensor data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntityListResponse"}}}},"403":{"description":"Access denied or insufficient permissions","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}}}}},"/api/sensor-history/get-csv/{sensorId}":{"post":{"tags":["sensor-history-controller"],"summary":"Export sensor`s history records as CSV","description":"Returns a CSV file containing sensor information filtered according to the provided request body and query parameters","operationId":"getCsvFile_2","parameters":[{"name":"sensorId","in":"path","description":"Sensor ID of the sensor whose history is requested","required":true,"schema":{"type":"string"}}],"requestBody":{"description":"Filter criteria for history search","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SensorHistoryFilter"}}},"required":true},"responses":{"400":{"description":"Invalid request parameters","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"401":{"description":"Forbidden - insufficient permissions","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"403":{"description":"Forbidden - insufficient permissions"},"200":{"description":"CSV file generated successfully","content":{"application/octet-stream":{}}}}}},"/api/ns-api-key":{"get":{"tags":["ns-api-key-controller"],"operationId":"getAllApiKeys","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/TekNsApiKeyDto"}}}}}}},"post":{"tags":["ns-api-key-controller"],"operationId":"generateApiKey","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"string"}}}}}}},"/api/inverted/device":{"post":{"tags":["inverted-controller"],"summary":"Creates a device with fixed position","operationId":"createDevice","requestBody":{"description":"The device with fixed position creation request with all required fields","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateInvertedBeaconDeviceRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/BeaconDeviceDto"}}}},"400":{"description":"Bad Request","content":{"*/*":{"schema":{"type":"string"}}}}}}},"/api/inverted/beacon":{"post":{"tags":["inverted-controller"],"summary":"Creates a movable Beacon","operationId":"createBeacon","requestBody":{"description":"The beacon as device creation request with all required fields","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateInvertedBeaconDeviceRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/BeaconDeviceDto"}}}},"400":{"description":"Bad Request","content":{"*/*":{"schema":{"type":"string"}}}}}}},"/api/geofence/table":{"post":{"tags":["geofence-controller"],"summary":"Get paged list of geofences filtered by criteria","description":"Returns a paginated list of geofence table responses filtered by the provided criteria","operationId":"findAllByFilterPage","requestBody":{"description":"Filter request with pagination and optional search item ID","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeofenceFilterRequestWithItemId"}}},"required":true},"responses":{"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"200":{"description":"Successful retrieval of filtered geofence table list","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntityListResponsePage"},"examples":{"GeofenceTableResponsePageExample":{"description":"GeofenceTableResponsePageExample","value":{"content":[{"id":"123e4567-e89b-12d3-a456-426614174000","name":"Main Entrance","createDate":"2025-07-20T10:15:30Z","assetCount":5,"lastModifiedDate":"2025-07-21T12:00:00Z","lastModifiedBy":"admin_user","tags":[{"id":"123e4567-e89b-12d3-a456-426614174000","name":"security"},{"id":"123e4567-e89b-12d3-a456-426614174001","name":"indoor"}],"coordinates":[{"lat":40.7128,"lng":-74.006},{"lat":40.7138,"lng":-74.005}]},{"id":"123e4567-e89b-12d3-a456-426614174001","name":"Loading Dock","createDate":"2025-06-10T09:00:00Z","assetCount":3,"lastModifiedDate":"2025-07-15T08:30:00Z","lastModifiedBy":"floor_manager","tags":[{"id":"123e4567-e89b-12d3-a456-426614174000","name":"loading"},{"id":"123e4567-e89b-12d3-a456-426614174001","name":"outdoor"}],"coordinates":[{"lat":40.712,"lng":-74.007},{"lat":40.7125,"lng":-74.0065}]}],"numberOfElements":20,"page":1}}}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}}}}},"/api/geofence/filter":{"post":{"tags":["geofence-controller"],"summary":"Filter geofences with pagination and search criteria","description":"Returns a paginated list of geofences matching the filter criteria.","operationId":"findAllByFilter_1","requestBody":{"description":"Filter criteria for geofence search with pagination, sorting and bounding box","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeofenceFilterRequest"}}},"required":true},"responses":{"200":{"description":"Successful retrieval of filtered geofence list","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntityListResponse"},"example":{"content":[{"id":"123e4567-e89b-12d3-a456-426614174000","name":"Main Entrance","description":"Geofence at main entrance","color":"#FF0000","opacity":0.5,"createDate":"2025-07-22T10:00:00Z","lastModifiedDate":"2025-07-23T10:00:00Z","lastModifiedBy":"admin","tagIds":["tag1","tag2"],"assetCount":5}],"numberOfElements":1}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"400":{"description":"Invalid filter request parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}}}}},"/api/geofence/delete":{"post":{"tags":["geofence-controller"],"summary":"Delete multiple geofences","description":"Deletes all geofences specified by their IDs","operationId":"deleteAll","requestBody":{"description":"List of geofence UUIDs to delete","content":{"application/json":{"schema":{"type":"array","items":{"type":"string","format":"uuid","example":"123e4567-e89b-12d3-a456-426614174000"}}}},"required":true},"responses":{"400":{"description":"Invalid geofence IDs","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"200":{"description":"Geofences deleted successfully"}}}},"/api/floor-plan/{floorPlanId}/geofence":{"post":{"tags":["floor-plan-controller"],"summary":"Get geofences by floor plan ID with filter","description":"Retrieves a paginated list of geofences for a given floor plan ID, filtered by tags and search value.","operationId":"getGeofencesByFloorIdByFilter","parameters":[{"name":"floorPlanId","in":"path","description":"Floor plan ID","required":true,"schema":{"type":"string"},"example":"123e4567-e89b-12d3-a456-426614174000"}],"requestBody":{"description":"Filter criteria for geofences by floor plan","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeofenceFilterByFloorPlan"}}},"required":true},"responses":{"403":{"description":"Access denied due to insufficient permissions","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"200":{"description":"Successful retrieval of filtered geofences list","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntityListResponse"},"example":{"content":[{"id":"123e4567-e89b-12d3-a456-426614174000","name":"Main Entrance","description":"Geofence for main entrance","color":"#FF0000","opacity":0.5,"createDate":"2025-07-21T10:00:00Z","lastModifiedDate":"2025-07-22T11:00:00Z","lastModifiedBy":"admin","tags":[{"id":"123e4567-e89b-12d3-a456-426614174000","name":"entrance"}],"coordinates":[{"lat":50.45,"lng":30.52},{"lat":50.46,"lng":30.53}],"assetCount":3,"type":"polygon","isGeofenceIndoor":true}],"numberOfElements":10}}}},"400":{"description":"Bad request due to invalid input","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}}}}},"/api/floor-plan/{floorPlanId}/beacon/table":{"post":{"tags":["floor-plan-controller"],"summary":"Get paginated list of beacons on a floor plan","description":"Returns a paginated list of beacons assigned to a specific floor plan based on search criteria","operationId":"getFloorPlanBeacons","parameters":[{"name":"floorPlanId","in":"path","description":"ID of the floor plan","required":true,"schema":{"type":"string"},"example":"123e4567-e89b-12d3-a456-426614174000"}],"requestBody":{"description":"Search and pagination parameters for querying beacons","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchRequestBody"}}},"required":true},"responses":{"403":{"description":"Forbidden - insufficient permissions","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"200":{"description":"Successful retrieval of paginated beacon list","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntityListResponsePage"},"examples":{"SuccessfulResponse":{"description":"SuccessfulResponse","value":{"content":[{"id":"9c4d2b80-f1cd-4a95-a47c-e292cdad13c1","status":"active","name":"Beacon A1","deviceEui":"647FDA0000000000","macAddress":"00:11:22:33:44:55","coordinateX":12.45,"coordinateY":67.9},{"id":"9c4d2b80-f1cd-4a95-a47c-e292cdad13c0","status":"inactive","name":"Beacon B2","deviceEui":"647FDA0000000001","macAddress":"66:77:88:99:AA:BB","coordinateX":223.45,"coordinateY":778.9}],"numberOfElements":2,"page":0}}}}}},"400":{"description":"Bad request - invalid parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}}}}},"/api/floor-plan/{floorPlanId}/add-map":{"post":{"tags":["floor-plan-controller"],"summary":"Upload map image to floor plan","description":"Adds an image (e.g. PNG, JPG) as a map for the specified floor plan.","operationId":"addImageToFloorPlan","parameters":[{"name":"floorPlanId","in":"path","description":"ID of the floor plan","required":true,"schema":{"type":"string"},"example":"floor-abc-123"}],"requestBody":{"content":{"multipart/form-data":{"schema":{"required":["file"],"type":"object","properties":{"file":{"type":"string","description":"Map image file (PNG, JPG, etc.)","format":"binary"}}}}}},"responses":{"400":{"description":"Invalid input or missing file","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"403":{"description":"Access denied","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"200":{"description":"Map image uploaded successfully","content":{"*/*":{"schema":{"type":"boolean"}}}}}}},"/api/floor-plan/filter":{"post":{"tags":["floor-plan-controller"],"summary":"Filter floor plans","description":"Retrieve a list of floor plans based on various filter criteria","operationId":"getAllFloorPlans","requestBody":{"description":"Request object with filter parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FloorPlanFilterRequest"}}},"required":true},"responses":{"400":{"description":"Invalid request parameter","content":{"*/*":{"schema":{"$ref":"#/components/schemas/EntityListResponseFloorPlanDto"}}}},"200":{"description":"Successfully retrieved filtered floor plans","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntityListResponse"}}}},"403":{"description":"Forbidden - insufficient permissions","content":{"*/*":{"schema":{"$ref":"#/components/schemas/EntityListResponseFloorPlanDto"}}}}}}},"/api/event/nack-count":{"post":{"tags":["event-controller"],"summary":"Get count of not acknowledged events","description":"Returns the number of events not acknowledged matching the given filter criteria.","operationId":"getNotAcknowledgeEventsCount","requestBody":{"description":"Filter criteria to count not acknowledged events","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EventFilterRequest"}}},"required":true},"responses":{"403":{"description":"Forbidden: insufficient permissions","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"200":{"description":"Count of not acknowledged events","content":{"application/json":{"schema":{"type":"integer","example":5}}}},"400":{"description":"Invalid filter request","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}}}}},"/api/event/get-csv":{"post":{"tags":["event-controller"],"summary":"Generate CSV file for filtered events","description":"Generates and returns a CSV file of events filtered by the given criteria and timezone offset.","operationId":"getCsvFile_3","parameters":[{"name":"timezone","in":"query","description":"Timezone offset of the user, e.g. 'Europe/Berlin'","required":true,"schema":{"type":"string"},"example":"Europe/Berlin"},{"name":"table","in":"query","description":"Optional table name to filter CSV content, available values: home, asset, floorPlan","required":false,"schema":{"type":"string"},"example":"home"}],"requestBody":{"description":"Filter criteria for events to include in the CSV","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EventFilterRequest"}}},"required":true},"responses":{"400":{"description":"Invalid request parameters or filter","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"403":{"description":"Forbidden: insufficient permissions","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"200":{"description":"CSV file generated successfully","content":{"text/csv":{"schema":{"type":"string","format":"binary"}}}}}}},"/api/event/filter":{"post":{"tags":["event-controller"],"summary":"Get filtered events","description":"Returns a list of events based on filter criteria such as time range, type, site, etc.","operationId":"getEventsByFilter","requestBody":{"description":"Filtering criteria for querying events","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EventFilterRequest"}}},"required":true},"responses":{"400":{"description":"Invalid filter parameters provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"403":{"description":"Access forbidden for the current user","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"200":{"description":"Filtered list of events successfully retrieved","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntityListResponse"},"examples":{"EventListExample":{"summary":"A successful response example","description":"EventListExample","value":{"content":[{"id":"event123","eventStatus":"unacknowledged","assetName":"Forklift A1","assetId":"asset567","assetType":"Forklift","eventType":"assetEntersGeofence","site":{"id":"site1","name":"Main Warehouse"},"building":{"id":"building1","name":"Building A"},"floorPlan":{"id":"floor1","name":"Ground Floor"},"timestamp":"2025-07-22T08:30:00Z","coordinateX":12.34,"coordinateY":56.78,"latitude":50.4501,"longitude":30.5234,"altitude":5.0,"eventRuleName":"Rule1","eventDetails":"Asset entered the monitored zone"}],"numberOfElements":1}}}}}}}}},"/api/event/acknowledge":{"post":{"tags":["event-controller"],"summary":"Acknowledge events","description":"Acknowledge events by given list of IDs","operationId":"acknowledgeEvents","requestBody":{"description":"List of event IDs to acknowledge","content":{"application/json":{"schema":{"type":"array","items":{"type":"string","example":"f2d435b1-aeaf-4f02-b0f6-0e57f83d671a"}},"examples":{"EventIdsExample":{"summary":"Example list of event IDs","description":"EventIdsExample","value":["f2d435b1-aeaf-4f02-b0f6-0e57f83d6710","f2d435b1-aeaf-4f02-b0f6-0e57f83d6711","f2d435b1-aeaf-4f02-b0f6-0e57f83d6712"]}}}},"required":true},"responses":{"400":{"description":"Invalid event IDs supplied","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"403":{"description":"Forbidden: insufficient permissions","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"200":{"description":"Events acknowledged successfully"}}}},"/api/event-rule/test-webhook":{"post":{"tags":["event-rule-controller"],"summary":"Test webhook connection","description":"Sends a test request to the specified webhook to verify connectivity and configuration.","operationId":"testWebhook","requestBody":{"description":"Webhook details including URL, headers, and body","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookDataDto"}}},"required":true},"responses":{"400":{"description":"Bad request - invalid webhook data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"200":{"description":"Webhook test request sent successfully"},"403":{"description":"Forbidden - insufficient permissions to test webhook","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}}}}},"/api/event-rule/filter":{"post":{"tags":["event-rule-controller"],"summary":"Filter event rules","description":"Filters event rules based on state, trigger type, site, tags, and search criteria","operationId":"getEventRulesByFilter","requestBody":{"description":"Filtering criteria for event rules","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EventRuleFilterRequest"}}},"required":true},"responses":{"403":{"description":"Forbidden - insufficient permissions","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"400":{"description":"Invalid ID supplied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"200":{"description":"Successful retrieval of filtered event rules","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntityListResponse"},"examples":{"EventRulesListExample":{"summary":"Example response with event rules","description":"EventRulesListExample","value":"{\n  \"content\": [\n    {\n      \"id\": \"f2d435b1-aeaf-4f02-b0f6-0e57f83d671a\",\n      \"name\": \"Low Battery Alert\",\n      \"siteId\": \"f2d435b1-aeaf-4f02-b0f6-0e57f83d671a\",\n      \"tags\": [\"tag1\", \"tag2\"],\n      \"description\": \"Triggers when battery is low\",\n      \"eventType\": \"lowBattery\",\n      \"geofenceId\": null,\n      \"assetIds\": [\"f2d435b1-aeaf-4f02-b0f6-0e57f83d671a\", \"f2d435b1-aeaf-4f02-b0f6-0e57f83d6710\"],\n      \"webhookData\": {\n        \"url\": \"https://example.com/webhook\",\n        \"headers\": \"Authorization: Bearer token\",\n        \"body\": \"{ \"message\": \"Low battery detected\" }\"\n      },\n      \"lowBatteryLevel\": 20,\n      \"enabled\": true,\n      \"createDate\": \"2025-07-22T10:15:30Z\"\n    }\n  ],\n  \"numberOfElements\": 10\n}\n"}}}}}}}},"/api/event-rule/delete-bulk":{"post":{"tags":["event-rule-controller"],"summary":"Delete multiple event rules","description":"Deletes event rules in bulk by their IDs","operationId":"deleteEventRuleBulk","requestBody":{"description":"List of event rule IDs to delete","content":{"application/json":{"schema":{"type":"array","items":{"type":"string"}},"examples":{"EventRuleIdsExample":{"description":"EventRuleIdsExample","value":["f2d435b1-aeaf-4f02-b0f6-0e57f83d671a","f2d435b1-aeaf-4f02-b0f6-0e57f83d6710","f2d435b1-aeaf-4f02-b0f6-0e57f83d6711"]}}}},"required":true},"responses":{"200":{"description":"Event rules successfully deleted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"},"examples":{"SuccessMessage":{"description":"SuccessMessage","value":{"message":"Event rules deleted successfully"}}}}}},"400":{"description":"Bad request - invalid input","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"403":{"description":"Forbidden - not authorized to delete event rules","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}}}}},"/api/event-rule/create-treshold":{"post":{"tags":["event-rule-controller"],"operationId":"createTreshold","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EventThresholdRuleRequest"}}},"required":true},"responses":{"200":{"description":"OK"}}}},"/api/event-rule/create-device-condition":{"post":{"tags":["event-rule-controller"],"operationId":"createCondition","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EventConditionRequest"}}},"required":true},"responses":{"200":{"description":"OK"}}}},"/api/device/onprem":{"post":{"tags":["device-controller"],"summary":"Create a new device on-prem","description":"Creates a new device using the provided request body for on-prem.","operationId":"addDeviceOnPrem","requestBody":{"description":"Device data to create a new device","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceOnPremRequest"}}},"required":true},"responses":{"403":{"description":"Forbidden - insufficient permissions","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"400":{"description":"Invalid input data or validation failure","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"200":{"description":"Successfully created the device","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceDto"}}}}}}},"/api/device/get-csv":{"post":{"tags":["device-controller"],"summary":"Export devices as CSV","description":"Returns a CSV file containing device information filtered according to the provided request body and query parameters","operationId":"getCsvFile_4","parameters":[{"name":"table","in":"query","description":"The name of the table to export (optional)","required":false,"schema":{"type":"string"},"example":"floorPlan"},{"name":"timezone","in":"query","description":"The user`s timezone, e.g. 'Europe/Berlin'","required":true,"schema":{"type":"string"},"example":"Europe/Berlin"}],"requestBody":{"description":"Filtering and pagination criteria for exported devices","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceFilterRequest"}}}},"responses":{"400":{"description":"Invalid request parameters","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"403":{"description":"Forbidden - insufficient permissions","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"200":{"description":"CSV file generated successfully","content":{"application/octet-stream":{}}}}}},"/api/device/filter":{"post":{"tags":["device-controller"],"summary":"Get filtered list of devices","description":"Returns a paginated list of devices based on filter, search, and sort criteria","operationId":"getAllDevices","requestBody":{"description":"Filter criteria for device search","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceFilterRequest"}}},"required":true},"responses":{"400":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"200":{"description":"Successful retrieval of filtered device list","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntityListResponse"},"examples":{"FilteredDevicesResponseExample":{"summary":"Example of paginated device list","description":"FilteredDevicesResponseExample","value":{"content":[{"id":"123e4567-e89b-12d3-a456-426614174000","deviceEui":"647FDA0000000000","name":"My Device","deviceType":"SEAL","description":"Installed in Warehouse A","site":{"id":"123e4567-e89b-12d3-a456-426614174000","name":"Main Warehouse"},"status":"ACTIVE","tags":[{"id":"123e4567-e89b-12d3-a456-426614174000","name":"critical"}],"inactivityTimeout":60,"lastActivity":"2025-07-20T14:30:00Z","batteryStatus":95,"asset":{"id":"123e4567-e89b-12d3-a456-426614174000","name":"Forklift"},"createDate":"2025-07-01T10:00:00Z","rssi":-70,"snr":7.5,"psr":0.99,"beaconExtension":false,"fixedPosition":true}],"numberOfElements":10}}}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}}}}},"/api/device/create/onprem":{"post":{"tags":["device-controller"],"summary":"Upload TEKTELIC device data from CSV file for on-prem","description":"Uploads a CSV file containing device data for bulk creation.","operationId":"createDevicesOnPrem","requestBody":{"content":{"multipart/form-data":{"schema":{"required":["file"],"type":"object","properties":{"file":{"type":"string","description":"The CSV file to upload","format":"binary"}}}}}},"responses":{"200":{"description":"CSV file processed successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceCsvListUploadResponse"}}}},"400":{"description":"Invalid file format or missing file","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"403":{"description":"Forbidden: user does not have permission","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}}}}},"/api/device/create/file":{"post":{"tags":["device-controller"],"summary":"Upload device data from CSV file","description":"Uploads a CSV file containing device data for bulk creation.","operationId":"uploadFile_1","requestBody":{"content":{"multipart/form-data":{"schema":{"required":["file"],"type":"object","properties":{"file":{"type":"string","description":"The CSV file to upload","format":"binary"}}}}}},"responses":{"200":{"description":"CSV file processed successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceCsvListUploadResponse"}}}},"400":{"description":"Invalid file format or missing file","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"403":{"description":"Forbidden: user does not have permission","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}}}}},"/api/configuration/filter":{"post":{"tags":["configuration-controller"],"summary":"Filter configurations","description":"Filters configurations based on tags, device family, and other criteria.","operationId":"getConfigurationByFilter","requestBody":{"description":"Filter parameters for configurations","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConfigurationFilterRequest"}}},"required":true},"responses":{"200":{"description":"Filtered list of configurations returned successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntityListResponse"},"examples":{"List of configuration":{"summary":"Example of filtered configuration list","description":"List of configuration","value":{"content":[{"id":"aab62a49-a437-4ea2-83b1-43fce670dd0a","name":"Temperature Sensor Config","description":"Used for temperature sensors","deviceFamily":{"id":"aab62a49-a437-4ea2-83b1-43fce670dd0a","name":"SEAL"},"tags":[{"id":"aab62a49-a437-4ea2-83b1-43fce670dd0a","name":"tag1"},{"id":"aab62a49-a437-4ea2-83b1-43fce670dd01","name":"tag2"}],"downlink":"A1B2C3D4","port":10,"createDate":"2024-07-01T10:00:00Z","lastModifiedDate":"2024-07-20T12:45:00Z","lastModifiedBy":"admin@email.com"}],"numberOfElements":10}}}}}},"400":{"description":"Invalid filter criteria","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"403":{"description":"Forbidden","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}}}}},"/api/configuration/apply/sensor":{"post":{"tags":["apply-configuration-controller"],"summary":"Apply Configuration to Multiple Beacons","description":"Applies the specified configuration to a bulk set of sensors. Requires 'manage_configuration' AND 'manage_sensors' authority.","operationId":"applyConfigurationBulkSensor","requestBody":{"description":"Request payload containing the configuration ID and sensor(`s) IDs, on which configuration will be applied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApplyConfigurationBulkRequest"}}},"required":true},"responses":{"403":{"description":"Forbidden - insufficient permissions","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"200":{"description":"Configuration successfully applied to beacons","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkApplyResult"},"examples":{"BulkApplyResult response":{"summary":"Successful message response example","description":"BulkApplyResult response","value":{"successful":[{"id":"3f904ac5-70ff-4291-8134-be136ae21628"}],"failed":[]}}}}}},"400":{"description":"Invalid request payload","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}}}}},"/api/configuration/apply/device":{"post":{"tags":["apply-configuration-controller"],"summary":"Apply Configuration to Multiple Devices","description":"Applies the specified configuration to a bulk set of devices. Requires 'manage_configuration' AND 'manage_device' authority.","operationId":"applyConfigurationBulkDevice","requestBody":{"description":"Request payload containing the configuration ID and device(`s) IDs, on which configuration will be applied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApplyConfigurationBulkRequest"}}},"required":true},"responses":{"403":{"description":"Forbidden - insufficient permissions","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"200":{"description":"Configuration successfully applied to devices","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkApplyResult"},"examples":{"BulkApplyResult response":{"summary":"Successful message response example","description":"BulkApplyResult response","value":{"successful":[{"id":"3f904ac5-70ff-4291-8134-be136ae21628"}],"failed":[]}}}}}},"400":{"description":"Invalid request payload","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}}}}},"/api/configuration/apply/beacon":{"post":{"tags":["apply-configuration-controller"],"summary":"Apply Configuration to Multiple Beacons","description":"Applies the specified configuration to a bulk set of beacons. Requires 'manage_configuration' AND 'manage_beacons' authority.","operationId":"applyConfigurationBulkBeacon","requestBody":{"description":"Request payload containing the configuration ID and beacon(`s) IDs, on which configuration will be applied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApplyConfigurationBulkRequest"}}},"required":true},"responses":{"403":{"description":"Forbidden - insufficient permissions","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"200":{"description":"Configuration successfully applied to beacons","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkApplyResult"},"examples":{"BulkApplyResult response":{"summary":"Successful message response example","description":"BulkApplyResult response","value":{"successful":[{"id":"3f904ac5-70ff-4291-8134-be136ae21628"}],"failed":[]}}}}}},"400":{"description":"Invalid request payload","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}}}}},"/api/building/id/{id}/pins":{"post":{"tags":["building-controller"],"summary":"Add pins to a building","description":"Adds a list of coordinate pins to the building specified by ID","operationId":"addPins","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"description":"List of coordinates representing pins to be added","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Coordinates"}}}},"required":true},"responses":{"200":{"description":"Pins successfully added","content":{"*/*":{"schema":{"$ref":"#/components/schemas/BuildingPinsResponse"}}}},"400":{"description":"Something went wrong","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}}}}},"/api/building/get-csv":{"post":{"tags":["building-controller"],"summary":"Generate CSV file of buildings with optional filtering","description":"Creates a CSV file containing buildings data filtered by optional criteria","operationId":"getCsvFile_5","parameters":[{"name":"timezone","in":"query","required":true,"schema":{"type":"string"}},{"in":"query","description":"Timezone offset of the user, e.g. 'Europe/Berlin'","example":"Europe/Berlin"}],"requestBody":{"description":"Optional building filter criteria","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Building filter request"}}}},"responses":{"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"200":{"description":"CSV file generated successfully","content":{"text/csv":{}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}}}}},"/api/building/filter":{"post":{"tags":["building-controller"],"summary":"Get all buildings by filter","description":"Returns a paginated list of buildings filtered by search criteria, site IDs, and tags.","operationId":"getAllBuildingsByFilter","requestBody":{"description":"Building filter request with pagination and filters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Building filter request"}}},"required":true},"responses":{"403":{"description":"Access denied due to insufficient permissions","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"200":{"description":"Successful retrieval of filtered buildings","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntityListResponse"},"example":{"content":[{"id":"123e4567-e89b-12d3-a456-426614174000","name":"Main Office","tenantId":"tenant-uuid-1","site":{"id":"123e4567-e89b-12d3-a456-426614174000","name":"Headquarters"},"coordinates":[{"lat":40.7128,"lng":-74.006}],"description":"Corporate HQ building","address":"123 Main St, City","assetsInside":15,"sensorsInside":10,"floorPlans":3,"createDate":"2025-07-01T12:00:00Z","tags":[{"id":"123e4567-e89b-12d3-a456-426614174000","name":"Office"},{"id":"123e4567-e89b-12d3-a456-426614174000","name":"HQ"}]}],"numberOfElements":1}}}},"400":{"description":"Invalid filter parameters supplied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}}}}},"/api/building/check-delete/bulk":{"post":{"tags":["building-controller"],"summary":"Check if multiple buildings can be deleted","description":"Checks if the list of building IDs can be safely deleted","operationId":"checkDeleteBulk","requestBody":{"description":"List of building IDs to check for deletion","content":{"application/json":{"schema":{"type":"string"}}},"required":true},"responses":{"400":{"description":"Invalid request data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"200":{"description":"Check delete bulk successful","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckDeleteEntityResponse"}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}}}}},"/api/beacon/on-prem":{"post":{"tags":["beacon-controller"],"summary":"Create a new beacon","description":"Creates a new beacon with the provided configuration and returns the created beacon details.","operationId":"createBeaconOnPrem","requestBody":{"description":"Details for the beacon to be created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateBeaconRequest"}}},"required":true},"responses":{"200":{"description":"Beacon successfully created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BeaconDto"}}}},"403":{"description":"Forbidden - insufficient permissions","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"400":{"description":"Invalid request data","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}}}}},"/api/beacon/get-csv":{"post":{"tags":["beacon-controller"],"summary":"Export filtered beacons to CSV","description":"Generates a CSV file of beacons based on the provided filters and timezone offset. Requires manage or read beacons authority","operationId":"getBeaconCsvFile","parameters":[{"name":"timezone","in":"query","description":"The user's timezone (e.g. 'Europe/Berlin')","required":true,"schema":{"type":"string"},"example":"Europe/Berlin"},{"name":"table","in":"query","description":"Optional name of the parent table on the UI, nullable","required":false,"schema":{"type":"string"},"example":"home"}],"requestBody":{"description":"Optional name of the parent table on the UI. Can be: floorPlan or null.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BeaconFilterRequest"}}}},"responses":{"403":{"description":"Forbidden - insufficient permissions","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"200":{"description":"CSV file generated and returned successfully","content":{"application/octet-stream":{}}},"400":{"description":"Invalid request parameters or filters","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}}}}},"/api/beacon/filter":{"post":{"tags":["beacon-controller"],"summary":"Filter and retrieve beacons","description":"Returns a list of beacons filtered by criteria provided in the request body. Requires manage or read beacons authority.","operationId":"findAllByFilter_2","requestBody":{"description":"Filtering and pagination criteria for beacons","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BeaconFilterRequest"}}},"required":true},"responses":{"403":{"description":"Forbidden - insufficient permissions","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"400":{"description":"Operation find beacons by filter fails","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"200":{"description":"Beacons successfully retrieved","content":{"*/*":{"schema":{"$ref":"#/components/schemas/EntityListResponse"},"examples":{"BeaconsListExample":{"summary":"Example successful beacon list response","description":"BeaconsListExample","value":{"content":[{"id":"123e4567-e89b-12d3-a456-426614174000","name":"Beacon A","siteId":"a1b2c3d4-5678-90ef-gh12-34567890abcd","buildingId":"a1b2c3d4-5678-90ef-gh12-34567890abcd","floorPlanId":"a1b2c3d4-5678-90ef-gh12-34567890abcd","modelId":"a1b2c3d4-5678-90ef-gh12-34567890abcd","localizationMode":"Nearest","lastModifiedBy":"admin@email.com","lastModifiedDate":"2025-07-18T10:15:30Z"}],"numberOfElements":2}}}}}}}}},"/api/beacon/create/onprem":{"post":{"tags":["beacon-controller"],"summary":"Upload beacon data via CSV file for on-prem","description":"Uploads a CSV file to create beacon records. Requires manage beacons authority.","operationId":"uploadCsvFile","requestBody":{"content":{"multipart/form-data":{"schema":{"required":["file"],"type":"object","properties":{"file":{"type":"string","description":"The CSV file to upload","format":"binary"}}}}}},"responses":{"200":{"description":"File uploaded and processed successfully","content":{"*/*":{"schema":{"$ref":"#/components/schemas/CsvListUploadResponse"}}}},"403":{"description":"Forbidden - insufficient permissions","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"400":{"description":"Invalid file format or content","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}}}}},"/api/beacon/create/file":{"post":{"tags":["beacon-controller"],"summary":"Upload beacon data via CSV file","description":"Uploads a CSV file to create beacon records. Requires manage beacons authority.","operationId":"uploadCsvFile_1","requestBody":{"description":"CSV file to upload (must have .csv extension)","content":{"multipart/form-data":{"schema":{"type":"string","format":"binary"}}},"required":true},"responses":{"200":{"description":"File uploaded and processed successfully","content":{"*/*":{"schema":{"$ref":"#/components/schemas/CsvListUploadResponse"}}}},"403":{"description":"Forbidden - insufficient permissions","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"400":{"description":"Invalid file format or content","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}}}}},"/api/beacon/assign":{"post":{"tags":["beacon-controller"],"summary":"Assign a beacon to a floor plan with coordinates","description":"Assigns a beacon to a specific floor plan at given coordinates. Requires manage beacons authority","operationId":"assignBeacons","requestBody":{"description":"Details to assign a beacon to a floor plan with coordinates","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssignBeaconRequest"}}},"required":true},"responses":{"403":{"description":"Forbidden - insufficient permissions","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"200":{"description":"Beacon assigned successfully","content":{"*/*":{"schema":{"type":"boolean"}}}},"400":{"description":"Invalid input data","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}}}}},"/api/beacon-model/filter":{"post":{"tags":["beacon-model-controller"],"summary":"Get Beacon Models by Filter","description":"Retrieves a paginated and filtered list of beacon models based on search value, tags, and sorting.","operationId":"findAllByFilter_3","requestBody":{"description":"Filter criteria to search and paginate beacon models","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BeaconModelFilterRequest"}}},"required":true},"responses":{"403":{"description":"Forbidden - user does not have permission to access beacon models","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"200":{"description":"Successfully retrieved filtered beacon models","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntityListResponse"},"examples":{"BeaconModelFilterResponse":{"summary":"Sample response with filtered beacon models","description":"BeaconModelFilterResponse","value":{"content":[{"id":"model-1","name":"LoRa Tracker","description":"Low-power beacon for indoor use","tags":[{"id":"tag-123","name":"LoRa"}],"createDate":"2025-07-20T10:15:00+03:00"}],"numberOfElements":1}}}}}},"400":{"description":"Something went wrong","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}}}}},"/api/beacon-model/check-delete/bulk":{"post":{"tags":["beacon-model-controller"],"summary":"Check delete eligibility for multiple Beacon Models","description":"Checks whether each beacon model in the provided list of IDs can be deleted, returning associated data for each.","operationId":"checkDeleteBulk_1","requestBody":{"description":"List of Beacon Model IDs to check for deletion eligibility","content":{"application/json":{"schema":{"type":"array","items":{"type":"string","example":"123e4567-e89b-12d3-a456-426614174000"}},"examples":{"CheckDeleteBulkRequestExample":{"description":"CheckDeleteBulkRequestExample","value":["123e4567-e89b-12d3-a456-426614174000","123e4567-e89b-12d3-a456-426614174001","123e4567-e89b-12d3-a456-426614174002"]}}}},"required":true},"responses":{"403":{"description":"Forbidden - insufficient permissions","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"400":{"description":"Invalid request (e.g., empty or malformed ID list)","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"200":{"description":"Bulk deletion eligibility check results","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckDeleteBeaconModelsInBulkResponse"}}}}}}},"/api/auth/token":{"post":{"tags":["a-1-auth-controller"],"summary":"Get authorization token","description":"Retrieves an authorization token","operationId":"getAuthToken","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TokenRequest"}}},"required":true},"responses":{"400":{"description":"Tenant not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"200":{"description":"Token retrieved successfully","content":{"application/json":{"examples":{"Example token":{"description":"Example token","value":{"access_token":"eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia...","expires_in":31104000,"refresh_expires_in":31104000,"refresh_token":"eyJhbGciOiJIUzUxMiIsInR5cCIgOiAiSldUIiwia...","token_type":"Bearer","not-before-policy":0,"session_state":"32b9bf31-bac3-4cbd-a819-498edb7953a6","scope":"email profile groups"}}}}}}}}},"/api/asset/table":{"post":{"tags":["asset-controller"],"summary":"Get filtered asset table","description":"Returns a paginated list of assets based on filter criteria. Requires manage or read assets authority","operationId":"getAssetTableList","requestBody":{"description":"Optional filter request to define which assets are included in the list of assets","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssetTableFilterRequest"}}},"required":true},"responses":{"200":{"description":"Asset table retrieved successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntityListResponsePage"},"examples":{"Asset list for table response":{"summary":"Asset list for table response example","description":"Asset list for table response","value":{"content":[{"id":"aab62a49-a437-4ea2-83b1-43fce670dd0a","name":"My Asset","status":"Offline","type":"My Asset Type","x":29.17,"y":4.45,"latitude":50.46803305882353,"longitude":30.506978117647055,"homeSite":"My Site","emergency":false}],"numberOfElements":18,"page":0}}}}}},"403":{"description":"Access denied due to missing authority","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"400":{"description":"Invalid request format","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}}}}},"/api/asset/short":{"post":{"tags":["asset-controller"],"summary":"Get short asset list by filter","description":"Returns a list of assets in short form (id and name only) that match the provided filter criteria.","operationId":"getShortAssetsByFilter","requestBody":{"description":"Filter criteria to retrieve short asset list","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssetFilterRequest"},"examples":{"Filter example":{"summary":"Example request","description":"Filter example","value":{"siteIds":["aab62a49-a437-4ea2-83b1-43fce670dd0a"],"page":0,"size":50}}}}},"required":true},"responses":{"400":{"description":"Invalid filter request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"200":{"description":"List of matching short assets","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SimpleEntity"},"examples":{"Short assets example":{"summary":"Example response","description":"Short assets example","value":[{"id":"aab62a49-a437-4ea2-83b1-43fce670dd0a","name":"My Asset 1"},{"id":"aab62a49-a437-4ea2-83b1-43fce670dd0b","name":"My Asset 2"}]}}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}}}}},"/api/asset/get-csv":{"post":{"tags":["asset-controller"],"summary":"Export filtered asset data as CSV","description":"Generates and returns a CSV file containing filtered asset data. Requires manage or read assets authority","operationId":"getCsvFile_6","parameters":[{"name":"timezone","in":"query","description":"The timezone of the user (e.g., 'Europe/Berlin')","required":true,"schema":{"type":"string"},"example":"Europe/Berlin"},{"name":"table","in":"query","description":"The name of the parent table on the UI. Allowed values: 'home', 'floorPlan', null","required":false,"schema":{"type":"string"},"example":"home"}],"requestBody":{"description":"Optional filter request to define which assets are included in the CSV export","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssetCsvFilterRequest"}}}},"responses":{"200":{"description":"CSV file generated successfully","content":{"text/csv":{}}},"400":{"description":"Invalid request parameters or filter criteria","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"403":{"description":"User does not have permission to export assets","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}}}}},"/api/asset/filter":{"post":{"tags":["asset-controller"],"summary":"Filter and retrieve assets","description":"Returns a list of assets that match the specified filter criteria. Requires manage or read assets authority.","operationId":"findAllByFilter_4","requestBody":{"description":"Filter request containing asset filter criteria such as name, type, site, etc.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssetFilterRequest"}}},"required":true},"responses":{"403":{"description":"User does not have permission to filter assets","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"200":{"description":"Assets retrieved successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntityListResponse"},"examples":{"Asset list response":{"summary":"Asset list response example","description":"Asset list response","value":{"content":[{"id":"aab62a49-a437-4ea2-83b1-43fce670dd0a","status":"Offline","name":"My Asset","description":"Test Description","type":{"id":"aab62a49-a437-4ea2-83b1-43fce670dd0a","name":"My Asset Type"},"site":{"id":"aab62a49-a437-4ea2-83b1-43fce670dd0a","name":"My Site"},"building":{"id":"aab62a49-a437-4ea2-83b1-43fce670dd0a","name":"My Building"},"floorPlan":{"id":"aab62a49-a437-4ea2-83b1-43fce670dd0a","name":"My Floor Plan","floorNumber":"1"},"coordinateX":29.17,"coordinateY":4.45,"latitude":50.46803305882353,"longitude":30.506978117647055,"homeSite":{"id":"aab62a49-a437-4ea2-83b1-43fce670dd0a","name":"My Site"},"deviceEui":"647FDA0000000000","deviceType":"CHICKADEE","locationUpdateOutdoor":"2025-06-16T15:21:10Z","locationUpdateIndoor":"2025-07-14T09:12:47Z","lastActivityDevice":"2025-07-18T16:00:06Z","batteryStatus":39,"rssi":-38,"snr":11.5,"psr":null,"altitude":0,"tags":[{"id":"aab62a49-a437-4ea2-83b1-43fce670dd0a","value":"My Tag 1","color":"TURQUOISE"},{"id":"aab62a49-a437-4ea2-83b1-43fce670dd0a","value":"My Tag 2","color":"RED"}],"createDate":"2025-05-29T11:03:35.238Z","emergency":false,"assetTypeIcon":{"svg":"PHN2ZyB3aWR0aD0iMjYiIGhlaWdodD0iMjYiIHZpZXdCb3g9IjAgMCAyNiAyNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGcgaWQ9Imljb25faHVtYW4iPgo8cGF0aCBpZD0iVmVjdG9yIiBkPSJNMTMgMTVDMTQuOTMzIDE1IDE2LjUgMTMuNDMzIDE2LjUgMTEuNUMxNi41IDkuNTY3IDE0LjkzMyA4IDEzIDhDMTEuMDY3IDggOS41IDkuNTY3IDkuNSAxMS41QzkuNSAxMy40MzMgMTEuMDY3IDE1IDEzIDE1WiIgc3Ryb2tlPSJ3aGl0ZSIgc3Ryb2tlLXdpZHRoPSIxLjUiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIi8+CjwvZz4KPC9zdmc+Cg==","opacity":100,"color":"BLUE","name":"alt-battery-5-svgrepo-com.svg","size":757,"default":false}}],"numberOfElements":18,"page":0}}}}}},"400":{"description":"Invalid filter request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}}}}},"/api/asset/create/file":{"post":{"tags":["asset-controller"],"summary":"Upload asset data from a CSV file","description":"Accepts a .csv file and processes asset data in bulk. Requires manage assets authority. Example of the CSV file can be downloaded from Locus application UI.","operationId":"uploadFile_2","requestBody":{"description":"CSV file containing asset data","content":{"multipart/form-data":{"schema":{"type":"string","format":"binary"}}},"required":true},"responses":{"200":{"description":"CSV file uploaded and processed successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CsvListUploadResponse"},"examples":{"MissingColumn":{"description":"MissingColumn","value":{"errorMessageCodes":[{"message":"Missing required column: name"}],"savedRowCount":15}},"NoErrors":{"description":"NoErrors","value":{"errorMessageCodes":null,"savedRowCount":25}}}}}},"403":{"description":"User does not have permission to upload asset data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"400":{"description":"Invalid file format or processing error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}}}}},"/api/asset-type/filter":{"post":{"tags":["asset-type-controller"],"summary":"Filter Asset Types","description":"Returns a list of asset types matching the filter criteria. Requires 'manage_asset' or 'read_asset' authority.","operationId":"getAllAssetTypesByFilter","requestBody":{"description":"Filtering criteria for asset types","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssetTypeFilterRequest"}}},"required":true},"responses":{"400":{"description":"Operation get all asset types fails","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"403":{"description":"Access denied due to insufficient permissions","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"200":{"description":"Filtered asset types returned successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntityListResponse"},"examples":{"Filtered asset types list":{"description":"Filtered asset types list","value":{"content":[{"id":"aab62a49-a437-4ea2-83b1-43fce670dd0a","name":"My Asset Type","description":"Used for camion monitoring","tags":[{"id":"aab62a49-a437-4ea2-83b1-43fce670dd0a","value":"My Tag 1","color":"TURQUOISE"},{"id":"aab62a49-a437-4ea2-83b1-43fce670dd0a","value":"My Tag 2","color":"RED"}],"icon":{"svg":"PHN2ZyB3aWR0aD0iMjYi...","opacity":100,"color":"BLUE","name":"defaultIconName","size":726,"default":true},"createDate":"2025-07-16T09:02:45.111Z"}],"numberOfElements":10}}}}}}},"security":[{"bearerAuth":[]}]}},"/api/asset-type/check-delete/bulk":{"post":{"tags":["asset-type-controller"],"summary":"Check possibility for delete of multiple asset types","description":"Checks whether each asset type in the provided list can be deleted. Requires manage assets authority","operationId":"checkDeleteAssetTypesInBulk","requestBody":{"description":"List of asset type IDs to check whether asset type can be deleted","content":{"application/json":{"schema":{"type":"array","items":{"type":"string","format":"uuid"}},"examples":{"UUIDsExample":{"description":"UUIDsExample","value":["123e4567-e89b-12d3-a456-426614174000","223e4567-e89b-12d3-a456-426614174001"]}}}},"required":true},"responses":{"200":{"description":"Check results for each asset type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckDeleteAssetTypesInBulkResponse"}}}},"400":{"description":"Operation fails","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"403":{"description":"User not authorized to perform this operation","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}}},"security":[{"bearerAuth":[]}]}},"/api/asset-history/id/{assetId}/table":{"post":{"tags":["asset-history-controller"],"summary":"Get Asset History Table","description":"Returns paginated list of asset history records based on filter. Requires asset access rights.","operationId":"getAssetHistory","parameters":[{"name":"assetId","in":"path","description":"ID of the asset whose history is requested","required":true,"schema":{"type":"string"},"example":"a1b2c3d4-5678-90ef-gh12-34567890abcd"}],"requestBody":{"description":"Filter criteria for history search","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssetHistoryFilter"}}},"required":true},"responses":{"200":{"description":"Successful retrieval of asset history","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntityListResponse"},"examples":{"Asset history response":{"summary":"Asset history response example","description":"Asset history response","value":"{\n  \"content\": [\n    {\n      \"id\": \"9fabc3e2-1c1e-4d23-abc0-1234567890ab\",\n      \"assetId\": \"9fabc3e2-1c1e-4d23-abc0-1234567890ab,\n      \"timestamp\": \"2025-07-19T15:30:00+03:00\",\n      \"coordinateX\": 10.5,\n      \"coordinateY\": 20.0,\n      \"latitude\": 50.4501,\n      \"longitude\": 30.5234,\n      \"altitude\": 5.0,\n      \"site\": { \"id\": \"9fabc3e2-1c1e-4d23-abc0-1234567890ab\", \"name\": \"My Site\" },\n      \"building\": { \"id\": \"9fabc3e2-1c1e-4d23-abc0-1234567890ab\", \"name\": \"My Building\" },\n      \"floorPlan\": {\n        \"id\": \"9fabc3e2-1c1e-4d23-abc0-1234567890ab\",\n        \"name\": \"My Floor\",\n        \"floorNumber\": \"1\"\n      },\n      \"rssi\": -67,\n      \"snr\": 12.3\n    }\n  ],\n  \"numberOfElements\": 10\n}\n"}}}}},"400":{"description":"Invalid input provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"403":{"description":"Access denied or insufficient permissions","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}}}}},"/api/asset-history/id/{assetId}/get-csv":{"post":{"tags":["asset-history-controller"],"summary":"Download Asset History CSV","description":"Generates and returns a CSV file of asset history filtered by given criteria and timezone offset.","operationId":"getCsvFile_7","parameters":[{"name":"assetId","in":"path","description":"ID of the asset","required":true,"schema":{"type":"string"},"example":"a1b2c3d4-5678-90ef-gh12-34567890abcd"},{"name":"timezone","in":"query","description":"Timezone of the user, e.g., 'Europe/Berlin'","required":true,"schema":{"type":"string"},"example":"Europe/Berlin"}],"requestBody":{"description":"Filter criteria for asset history","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssetHistoryFilter"}}},"required":true},"responses":{"400":{"description":"Invalid request parameters or filter","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"200":{"description":"CSV file generated successfully","content":{"text/csv":{"schema":{"type":"string","format":"binary"}}}},"403":{"description":"User not authorized to access this resource","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}}}}},"/api/asset-history/filter/merged":{"post":{"tags":["asset-history-controller"],"operationId":"getMerged","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssetHistorySearchFilterRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/EntityListResponseAssetStateHistory"}}}}}}},"/api/asset-history/filter/merged/geofence/{geofenceId}":{"post":{"tags":["asset-history-controller"],"operationId":"getMergedGeofence","parameters":[{"name":"geofenceId","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssetHistorySearchFilterRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/EntityListResponseAssetStateHistory"}}}}}}},"/google-map/call":{"get":{"tags":["google-map-call-controller"],"summary":"Collect a Google Maps API call","description":"Registers a Google Maps API call for a given site. This endpoint is typically invoked internally when a Google Maps service is used.","operationId":"collectGoogleMapCall","parameters":[{"name":"siteId","in":"query","description":"Unique identifier of the site where the Google Maps API call is tracked","required":true,"schema":{"type":"string"},"example":"site-12345"}],"responses":{"200":{"description":"Google Maps call successfully collected"},"400":{"description":"Invalid siteId parameter"}}}},"/api/user-preferences/map-settings":{"get":{"tags":["user-preferences-controller"],"summary":"Get user's map settings","description":"Retrieves the current user's map preferences including visibility options and selected map type","operationId":"getVisibleMapPreferences","responses":{"400":{"description":"Some error while retrieving map settings","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"200":{"description":"Successfully retrieved map settings","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MapSettingsDto"}}}}}}},"/api/thermostat/full-configuration/{devEui}":{"get":{"tags":["Thermostat Configuration"],"summary":"Get full thermostat configuration","description":"Returns the full configuration state of a thermostat: the last device-confirmed values (confirmed*), the last user-requested values still awaiting confirmation (requested*), and the request status.\n\nStatus lifecycle: PENDING — a change was sent to the device and is awaiting confirmation; APPLIED — the device confirmed the requested values; FAILED — the device rejected the change; TIMEOUT — the device did not confirm within twice its reporting period (requested* fields are cleared and a state refresh is requested from the device).\n\nrequested* fields are only set for the parameters of the outstanding request (null = not part of the pending change). If the device has never reported nor been configured, all fields except deviceEui are null.","operationId":"getFullConfiguration","parameters":[{"name":"devEui","in":"path","description":"Device EUI of the thermostat","required":true,"schema":{"type":"string"},"example":"647FDA0000000000"}],"responses":{"403":{"description":"Forbidden - insufficient permissions","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"200":{"description":"Current thermostat configuration state","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ThermostatFullConfigurationDto"},"examples":{"Pending setpoint change":{"description":"Pending setpoint change","value":{"deviceEui":"647FDA0000000000","confirmedOperationalMode":"Auto","confirmedFanSpeed":"Low","confirmedComfortSetpoint":22.5,"confirmedEconomySetpoint":18.0,"confirmedAt":1753100000000,"requestedOperationalMode":"Eco","requestedFanSpeed":null,"requestedComfortSetpoint":21.0,"requestedEconomySetpoint":null,"requestedAt":1753103600000,"status":"PENDING"}}}}}}}}},"/api/tenant/auth":{"get":{"tags":["tenant-controller"],"summary":"Get tenant authentication details","description":"Retrieves authentication details for a tenant by its name","operationId":"getTenantAuth","parameters":[{"name":"name","in":"query","description":"Name of the tenant to retrieve authentication details for","required":true,"schema":{"type":"string"},"example":"tenant123"}],"responses":{"200":{"description":"Tenant authentication details retrieved successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenantAuth"}}}},"400":{"description":"Tenant not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}}}}},"/api/tag/id/{id}":{"get":{"tags":["tag-controller"],"summary":"Get tag by ID","description":"Retrieves a tag by its unique identifier","operationId":"getById","parameters":[{"name":"id","in":"path","description":"Unique identifier of the tag","required":true,"schema":{"type":"string"},"example":"123e4567-e89b-12d3-a456-426614174000"}],"responses":{"400":{"description":"Tag not found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"200":{"description":"Tag found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TagShort"}}}}}},"delete":{"tags":["tag-controller"],"summary":"Delete tag by ID","description":"Delete a tag by its unique identifier","operationId":"deleteTag","parameters":[{"name":"id","in":"path","description":"Unique identifier of the tag","required":true,"schema":{"type":"string"},"example":"123e4567-e89b-12d3-a456-426614174000"}],"responses":{"400":{"description":"Tag not found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"200":{"description":"Tag is successfully deleted"}}}},"/api/site/{id}/check-delete":{"get":{"tags":["site-controller"],"summary":"Check if a site can be deleted","description":"Returns a response indicating whether the specified site can be safely deleted","operationId":"checkDeleteSite","parameters":[{"name":"id","in":"path","description":"Unique identifier of the site","required":true,"schema":{"type":"string"},"example":"123e4567-e89b-12d3-a456-426614174000"}],"responses":{"200":{"description":"Successfully checked site deletability","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckDeleteEntityResponse"}}}},"403":{"description":"Access denied due to insufficient permissions"},"400":{"description":"Site not found"}}}},"/api/site/short":{"get":{"tags":["site-controller"],"summary":"Get short info for all sites","description":"Returns a list of sites with simplified fields (id and name)","operationId":"getSitesShortInfo","responses":{"200":{"description":"Short site information retrieved successfully","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/SimpleEntity"}}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"403":{"description":"Forbidden - insufficient permissions","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}}}}},"/api/site/navigation-tree":{"get":{"tags":["site-controller"],"summary":"Get hierarchical navigation tree of sites, buildings, and floor plans","description":"Returns the selected item along with lists of sites, buildings, and floor plans in a hierarchical structure.","operationId":"getFloorPlanHierarch","responses":{"200":{"description":"Successful retrieval of navigation tree","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NavigationTreeResponse"}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}}}}},"/api/site/id/{id}/detailed":{"get":{"tags":["site-controller"],"summary":"Get detailed site information by ID","description":"Retrieves detailed information about a specific site, including tags, asset count, and metadata","operationId":"getDetailedSiteInfo","parameters":[{"name":"id","in":"path","description":"Unique identifier of the site","required":true,"schema":{"type":"string"},"example":"123e4567-e89b-12d3-a456-426614174000"}],"responses":{"403":{"description":"Access denied","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"400":{"description":"Site not found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"200":{"description":"Successfully retrieved detailed site info","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DetailedSiteDto"}}}}}}},"/api/sensor/unassigned":{"get":{"tags":["sensor-controller"],"summary":"Get unassigned sensors","description":"Retrieves a list of sensors that are not assigned to any floor plan. Optionally filter by site ID. Requires manage sensors authority","operationId":"getUnassignedSensors","parameters":[{"name":"siteId","in":"query","description":"Optional site ID to filter unassigned sensors","required":false,"schema":{"type":"string"},"example":"123e4567-e89b-12d3-a456-426614174000"}],"responses":{"400":{"description":"Invalid request parameters","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"403":{"description":"Forbidden - insufficient permissions","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"200":{"description":"List of unassigned sensors retrieved successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SimpleSensor"}}}}}}},"/api/sensor/parameters/id/{sensorId}":{"get":{"tags":["sensor-controller"],"summary":"Get all sensor parameters for sensor","description":"Returns a list of all available sensor parameters with their metadata for sensor.","operationId":"getAllSensorParametersBySensorId","parameters":[{"name":"sensorId","in":"path","required":true,"schema":{"type":"string"}},{"name":"viewMode","in":"query","required":false,"schema":{"type":"string","enum":["CHART","TABLE"]}}],"responses":{"200":{"description":"Successfully retrieved all sensor parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SensorParameterResponse"}}}}}}},"/api/sensor/parameters/all":{"get":{"tags":["sensor-controller"],"summary":"Get all sensor parameters","description":"Returns a list of all available sensor parameters with their metadata.","operationId":"getAllSensorParameters","responses":{"200":{"description":"Successfully retrieved all sensor parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SensorParameterResponse"}}}}}}},"/api/sensor/id/{id}":{"get":{"tags":["sensor-controller"],"summary":"Get sensor information by ID","description":"Returns a sensor by ID","operationId":"getSensorById","parameters":[{"name":"id","in":"path","description":"The ID of the sensor to retrieve","required":true,"schema":{"type":"string"},"example":"123e4567-e89b-12d3-a456-426614174000"}],"responses":{"403":{"description":"Forbidden - insufficient permissions","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"200":{"description":"Successfully retrieved the sensor","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SensorDto"}}}},"400":{"description":"Device not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}}}},"delete":{"tags":["sensor-controller"],"summary":"Delete a sensor by ID","description":"Delete the sensor with the specified ID if the user has permission.","operationId":"deleteSensor","parameters":[{"name":"id","in":"path","description":"ID of the sensor to delete","required":true,"schema":{"type":"string"},"example":"9c4d2b80-f1cd-4a95-a47c-e292cdad13c1"}],"responses":{"200":{"description":"Sensor deleted successfully","content":{"*/*":{"schema":{"type":"boolean"}}}},"403":{"description":"Forbidden: user lacks permission","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"404":{"description":"Sensor not found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}}}}},"/api/sensor/id/{id}/last-activity":{"get":{"tags":["sensor-last-activity-controller"],"summary":"Get sensor last activity","description":"Returns the last activity timestamp and parameter values for the specified sensor. Requires sensor access rights.","operationId":"getSensorLastActivity","parameters":[{"name":"id","in":"path","description":"ID of the sensor","required":true,"schema":{"type":"string"}}],"responses":{"404":{"description":"Sensor not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"200":{"description":"Successful retrieval of sensor last activity","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SensorLastActivityResponse"}}}},"403":{"description":"Access denied or insufficient permissions","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}}}}},"/api/sensor/csv/template":{"get":{"tags":["sensor-controller"],"summary":"Get sensor CSV template","description":"Get a template of a CSV file for sensors. Requires manage or read sensors authority","operationId":"getSensorCsvTemplateFile","parameters":[{"name":"manufacturer","in":"query","description":"The sensor`s manufacturer, can be 'TEKTELIC' or 'Other'","required":true,"schema":{"type":"string"},"example":"TEKTELIC"}],"responses":{"400":{"description":"Invalid request parameters","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"403":{"description":"Forbidden - insufficient permissions","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"200":{"description":"CSV file returned successfully","content":{"application/octet-stream":{}}}}}},"/api/sensor-model/id/{id}":{"get":{"tags":["sensor-model-controller"],"summary":"Get Sensor Model by ID","description":"Retrieves a specific sensor model by its unique identifier.","operationId":"getSensorModelById","parameters":[{"name":"id","in":"path","description":"The ID of the sensor model","required":true,"schema":{"type":"string"},"example":"123e4567-e89b-12d3-a456-426614174000"}],"responses":{"403":{"description":"Forbidden - insufficient permissions","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"400":{"description":"Sensor model not found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"200":{"description":"Successfully retrieved sensor model","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SensorModelDto"}}}}}},"delete":{"tags":["sensor-model-controller"],"summary":"Delete a sensor model by ID","description":"Deletes the sensor model with the specified ID if the user has permission.","operationId":"deleteFloorPlan","parameters":[{"name":"id","in":"path","description":"ID of the sensor model to delete","required":true,"schema":{"type":"string"},"example":"9c4d2b80-f1cd-4a95-a47c-e292cdad13c1"}],"responses":{"403":{"description":"Forbidden: user lacks permission","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"200":{"description":"Sensor model deleted successfully","content":{"*/*":{"schema":{"type":"boolean"}}}},"404":{"description":"Sensor not found or there is sensors linked to the sensor model","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}}}}},"/api/resources/period":{"get":{"tags":["resource-consumption-report-controller"],"summary":"Get resource consumption report for a current month period","description":"Retrieves an aggregated resource consumption report between two dates (inclusive).","operationId":"getMonthlyResourceReport","parameters":[{"name":"from","in":"query","description":"Start date-time of the reporting period (inclusive). Must be ISO date-time format.","required":true,"schema":{"type":"string","format":"date-time"},"example":"2025-08-01T00:00:00+03:00"},{"name":"to","in":"query","description":"End date at the end of day of the reporting period (inclusive). Must be ISO date-time format.","required":true,"schema":{"type":"string","format":"date-time"},"example":"2025-08-31T23:59:59+03:00"}],"responses":{"200":{"description":"Successfully retrieved resource consumption report","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResourceConsumptionReportTotal"}}}},"401":{"description":"Forbidden - missing required authority","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResourceConsumptionReportTotal"}}}},"400":{"description":"Invalid date range parameters","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResourceConsumptionReportTotal"}}}}}}},"/api/resources/month":{"get":{"tags":["resource-consumption-report-controller"],"summary":"Get resource consumption report for previous month","description":"Retrieves an aggregated resource consumption report for the given month.","operationId":"getMonthlyResourceReport_1","parameters":[{"name":"timestamp","in":"query","description":"Timestamp (any day in the target month). Must be ISO date-time format.","required":true,"schema":{"type":"string","format":"date-time"},"example":"2025-08-31T23:59:59+03:00"}],"responses":{"200":{"description":"Successfully retrieved resource consumption report","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResourceConsumptionReportTotal"}}}},"401":{"description":"Forbidden - missing required authority","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResourceConsumptionReportTotal"}}}},"400":{"description":"Invalid parameter","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResourceConsumptionReportTotal"}}}}}}},"/api/lora-cloud-config/{tenantId}":{"get":{"tags":["lora-cloud-config-controller"],"summary":"Get LoRa Cloud Config","description":"Retrieves the LoRa Cloud configuration for the given tenant ID.","operationId":"getConfig","parameters":[{"name":"tenantId","in":"path","description":"ID of the tenant","required":true,"schema":{"type":"string"},"example":"2fd1dbea-3e54-4f55-b90b-9a23eaf7c168"}],"responses":{"200":{"description":"LoRa Cloud configuration found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LoraCloudConfig"}}}},"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"403":{"description":"Forbidden - insufficient permissions","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}}}},"delete":{"tags":["lora-cloud-config-controller"],"summary":"Delete LoRa Cloud Configuration","description":"Deletes the LoRa Cloud configuration for a given tenant ID.","operationId":"deleteConfig","parameters":[{"name":"tenantId","in":"path","description":"ID of the tenant","required":true,"schema":{"type":"string"},"example":"f2d435b1-aeaf-4f02-b0f6-0e57f83d671a"}],"responses":{"403":{"description":"Forbidden - insufficient permissions","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"400":{"description":"Something went wrong","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"204":{"description":"Configuration deleted successfully"}}}},"/api/location/map":{"get":{"tags":["location-controller"],"summary":"Get map information for a specific location","description":"Retrieves map details including beacons, geofences, and building pins for the specified location and entities, optionally filtered by bounding box coordinates.","operationId":"getMapInfo","parameters":[{"name":"locationType","in":"query","description":"Type of location (e.g., 'site', 'building', 'floorPlan')","required":true,"schema":{"type":"string"},"example":"floorPlan"},{"name":"locationId","in":"query","description":"Unique identifier of the location","required":true,"schema":{"type":"string"},"example":"123e4567-e89b-12d3-a456-426614174000"},{"name":"mapEntities","in":"query","description":"Comma-separated list of entities to include on the map (e.g., 'beacon,geofence,buildingPin,sensor')","required":true,"schema":{"type":"string"},"example":"beacon,geofence,sensor"},{"name":"bottomLeft","in":"query","description":"Optional bottom-left coordinates of bounding box for filtering map entities (format: [lat, lng])","required":false,"schema":{"type":"array","items":{"type":"number","format":"double"}},"example":[40.7128,-74.006]},{"name":"topRight","in":"query","description":"Optional top-right coordinates of bounding box for filtering map entities (format: [lat, lng])","required":false,"schema":{"type":"array","items":{"type":"number","format":"double"}},"example":[40.7308,-73.995]}],"responses":{"200":{"description":"Successful retrieval of map information","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MapResponse"}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}}}}},"/api/location/map/assets":{"get":{"tags":["location-controller"],"summary":"Get all asset points on the map for a given location","description":"Returns a list of AssetPointXyEntity representing assets in the specified location and optional bounding box","operationId":"getAllAssetsMap","parameters":[{"name":"locationType","in":"query","description":"Type of the location (e.g., site, building, floorPlan)","required":true,"schema":{"type":"string"},"example":"site"},{"name":"locationId","in":"query","description":"Unique identifier of the location","required":true,"schema":{"type":"string"},"example":"123e4567-e89b-12d3-a456-426614174000"},{"name":"bottomLeft","in":"query","description":"Optional bottom-left coordinates of the bounding box filter [latitude, longitude]","required":false,"schema":{"type":"array","items":{"type":"number","format":"double"}},"example":[40.7128,-74.006]},{"name":"topRight","in":"query","description":"Optional top-right coordinates of the bounding box filter [latitude, longitude]","required":false,"schema":{"type":"array","items":{"type":"number","format":"double"}},"example":[40.7158,-74.001]}],"responses":{"200":{"description":"Successful retrieval of asset points","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssetPointXyEntity"}}}},"400":{"description":"Invalid parameters supplied","content":{"application/json":{}}},"403":{"description":"Access denied","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/AssetPointXyEntity"}}}}}}}},"/api/inverted/id/{id}":{"get":{"tags":["inverted-controller"],"summary":"Get beacon as device details by ID","description":"Retrieves beacon information along with full device details using a common ID. ","operationId":"getById_1","parameters":[{"name":"id","in":"path","description":"Unique identifier of the beacon/device","required":true,"schema":{"type":"string"},"example":"123e4567-e89b-12d3-a456-426614174000"}],"responses":{"400":{"description":"Invalid ID or one of the entities was not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"200":{"description":"Successfully retrieved beacon and device data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BeaconDeviceDto"}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}}}},"delete":{"tags":["inverted-controller"],"summary":"Delete beacon and device by ID","description":"Deletes both the beacon and the corresponding device using the provided ID. Returns true if deletion is successful.","operationId":"deleteBeaconById","parameters":[{"name":"id","in":"path","description":"Unique identifier of the beacon/device","required":true,"schema":{"type":"string"},"example":"123e4567-e89b-12d3-a456-426614174000"}],"responses":{"200":{"description":"Beacon and device successfully deleted","content":{"application/json":{"schema":{"type":"boolean"},"example":true}}},"400":{"description":"Invalid ID or deletion failed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}}}}},"/api/http-notification-config/id/{id}":{"get":{"tags":["notification-config-controller"],"operationId":"getNotificationConfig","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/NotificationConfigDto"}}}}}},"delete":{"tags":["notification-config-controller"],"operationId":"deleteNotificationConfig","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}}}},"/api/geofence/short":{"get":{"tags":["geofence-controller"],"summary":"Get simplified geofence list for a site","description":"Returns a list of geofences associated with the specified site in simplified form, suitable for dropdowns or selection lists.","operationId":"getSimpleGeofences","parameters":[{"name":"siteId","in":"query","description":"Unique identifier of the site","required":true,"schema":{"type":"string"},"example":"123e4567-e89b-12d3-a456-426614174000"}],"responses":{"200":{"description":"List of simple geofence entities","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/SimpleEntity"}}}}},"403":{"description":"Forbidden - user does not have permission","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"400":{"description":"Missing or invalid site ID","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}}}}},"/api/geofence/id/{id}":{"get":{"tags":["geofence-controller"],"summary":"Get geofence by ID","description":"Retrieve detailed information about a specific geofence by its unique ID.","operationId":"getGeofenceById","parameters":[{"name":"id","in":"path","description":"Unique identifier of the geofence","required":true,"schema":{"type":"string"},"example":"123e4567-e89b-12d3-a456-426614174000"}],"responses":{"400":{"description":"Invalid geofence ID supplied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"200":{"description":"Successful retrieval of geofence","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeofenceInfo"}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}}}},"delete":{"tags":["geofence-controller"],"summary":"Delete geofence by ID","description":"Deletes a geofence identified by the unique ID.","operationId":"deleteGeofence","parameters":[{"name":"id","in":"path","description":"Unique identifier of the geofence","required":true,"schema":{"type":"string"},"example":"123e4567-e89b-12d3-a456-426614174000"}],"responses":{"400":{"description":"Invalid geofence ID supplied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"200":{"description":"Geofence successfully deleted","content":{"application/json":{"schema":{"type":"boolean"}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}}}}},"/api/geofence/filter-in-bounds":{"get":{"tags":["geofence-controller"],"summary":"Retrieve geofences within map bounds","description":"Returns geofences located within the given bounding box (bottomLeft and topRight), filtered by map type (indoor/outdoor) and location ID (site, building, or floorPlan).","operationId":"getGeofencesByPolygon","parameters":[{"name":"mapType","in":"query","description":"Type of map: 'indoor' or 'outdoor'","required":true,"schema":{"type":"string"},"example":"indoor"},{"name":"locationId","in":"query","description":"Location ID (e.g., siteId, buildingId, or floorPlanId) depending on map type","required":true,"schema":{"type":"string"},"example":"123e4567-e89b-12d3-a456-426614174000"},{"name":"bottomLeft","in":"query","description":"Bottom-left corner of the bounding box as [longitude, latitude]","required":true,"schema":{"type":"array","items":{"type":"number","format":"double"}},"example":[30.516667,50.433333]},{"name":"topRight","in":"query","description":"Top-right corner of the bounding box as [longitude, latitude]","required":true,"schema":{"type":"array","items":{"type":"number","format":"double"}},"example":[30.537667,50.443333]}],"responses":{"400":{"description":"Invalid input parameters (e.g., malformed coordinates)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"403":{"description":"Forbidden - user does not have permission","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"200":{"description":"List of geofences within the specified bounds","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/GeofenceMapResponse"}}}}}}}},"/api/geofence/asset-count":{"get":{"tags":["geofence-controller"],"summary":"Get asset count for geofences","description":"Returns a list of asset counts for geofences filtered by site, building, or floor plan. At least one filter parameter must be provided.","operationId":"getAssetCount","parameters":[{"name":"siteId","in":"query","description":"Filter by site ID","required":false,"schema":{"type":"string"},"example":"site-123e4567-e89b-12d3-a456-426614174000"},{"name":"buildingId","in":"query","description":"Filter by building ID","required":false,"schema":{"type":"string"},"example":"building-123e4567-e89b-12d3-a456-426614174000"},{"name":"floorPlanId","in":"query","description":"Filter by floor plan ID","required":false,"schema":{"type":"string"},"example":"floor-123e4567-e89b-12d3-a456-426614174000"}],"responses":{"403":{"description":"Forbidden - insufficient permissions","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"400":{"description":"Bad request - missing all required parameters (siteId, buildingId, floorPlanId)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"200":{"description":"Successful retrieval of geofence asset counts","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/GeofenceAssetCount"}}}}}}}},"/api/floor":{"get":{"tags":["floor-controller"],"summary":"Get all floors","description":"Returns a list of all floors","operationId":"findAll","responses":{"200":{"description":"Successful retrieval of floors","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FloorDto"}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}}}}},"/api/floor/id/{id}":{"get":{"tags":["floor-controller"],"summary":"Find floor by ID","description":"Returns a FloorDto for the given floor ID","operationId":"findById","parameters":[{"name":"id","in":"path","description":"Unique identifier of the floor","required":true,"schema":{"type":"string"},"example":"123e4567-e89b-12d3-a456-426614174000"}],"responses":{"200":{"description":"Floor found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FloorDto"}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"400":{"description":"Invalid floor ID supplied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}}}}},"/api/floor-plan/{floorPlanId}/beacon/map":{"get":{"tags":["floor-plan-controller"],"summary":"Get beacon map data for a specific floor plan","description":"Returns the floor plan's dimensions and a list of beacons mapped to it.","operationId":"getFloorPlanBeaconMap","parameters":[{"name":"floorPlanId","in":"path","description":"ID of the floor plan","required":true,"schema":{"type":"string"},"example":"123e4567-e89b-12d3-a456-426614174000"}],"responses":{"400":{"description":"Invalid floorPlanId supplied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"200":{"description":"Successfully retrieved floor plan beacon map","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FloorPlanBeaconMap"}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}}}}},"/api/floor-plan/{floorPlanId}/beacon/csv":{"get":{"tags":["floor-plan-controller"],"summary":"Export beacon data by floor plan as CSV","description":"Generates and downloads a CSV file of beacon data filtered by floor plan ID and optional search term.","operationId":"getBeaconCsvByFloorPlanId","parameters":[{"name":"floorPlanId","in":"path","required":true,"schema":{"type":"string"}},{"name":"search","in":"query","required":false,"schema":{"type":"string"}},{"name":"timezone","in":"query","required":true,"schema":{"type":"string"}},{"in":"query","description":"Optional search filter for beacon names or properties","example":"beacon123"}],"responses":{"200":{"description":"CSV file generated successfully","content":{"*/*":{"schema":{"type":"string","format":"byte"}}}},"400":{"description":"Invalid input provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}}}}},"/api/floor-plan/short":{"get":{"tags":["floor-plan-controller"],"summary":"Get all floor plans in simplified form","description":"Returns a list of simplified floor plan entities that include floor ID, name, and associated building ID.","operationId":"getFloorSimpleEntities","responses":{"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"200":{"description":"List of simplified floor plan entities","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FloorSimpleEntity"}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}}}}},"/api/floor-plan/map/image":{"get":{"tags":["floor-plan-controller"],"summary":"Get floor plan image","description":"Returns the image of a floor plan based on its ID.","operationId":"getFloorPlanImage","parameters":[{"name":"id","in":"query","description":"The ID of the floor plan","required":true,"schema":{"type":"string"},"example":"f2d435b1-aeaf-4f02-b0f6-0e57f83d671a"}],"responses":{"400":{"description":"Bad request due to missing or invalid parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"200":{"description":"Successful retrieval of the floor plan image (.png, .jpeg, .jpg)","content":{"image/png":{}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}}}}},"/api/floor-plan/info/id/{floorPlanId}":{"get":{"tags":["floor-plan-controller"],"summary":"Get Floor Plan Map Entities","description":"Retrieve map data including assets and geofences for the specified floor plan ID.","operationId":"getMapEntities","parameters":[{"name":"floorPlanId","in":"path","description":"ID of the floor plan to retrieve map entities for","required":true,"schema":{"type":"string"},"example":"floorplan-123"}],"responses":{"200":{"description":"Successfully retrieved map data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FloorPlanMapResponse"}}}},"400":{"description":"Floor plan not found"},"403":{"description":"Access denied"}}}},"/api/floor-plan/id/{floorPlanId}":{"get":{"tags":["floor-plan-controller"],"summary":"Get floor plan by ID","description":"Retrieves detailed information about a floor plan by its unique ID. Requires 'manage_floor_plan' or 'read_floor_plan' authority.","operationId":"getById_2","parameters":[{"name":"floorPlanId","in":"path","description":"The ID of the floor plan to retrieve","required":true,"schema":{"type":"string"},"example":"123e4567-e89b-12d3-a456-426614174000"}],"responses":{"403":{"description":"Forbidden - insufficient permissions","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"200":{"description":"Successful retrieval of the floor plan by ID","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FloorPlanDto"}}}},"400":{"description":"Bad request - invalid floorPlanId","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}}}}},"/api/filter/eventType/{siteId}":{"get":{"tags":["entity-filter-controller"],"operationId":"getEventFilterResponse","parameters":[{"name":"siteId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/EventFilterResponse"}}}}}}},"/api/filter/entities":{"get":{"tags":["entity-filter-controller"],"summary":"Get list of entities","description":"Get list of short information of entities by the key","operationId":"getEntities","parameters":[{"name":"keys","in":"query","description":"The list of key. Available keys: site, homeSite, building, floorPlan, floorLevel, assetType, deviceType, tag, eventStatus, eventType, inactivityTimeout, localizationMode, beaconModel, beaconLastModifiedBy, geofence, deviceFamily, configurationLastModifiedBy, sensorModel, sensorParameters, sensorInactivityTimeout, sensorLastModifiedBy","required":true,"schema":{"type":"array","items":{"type":"string"}}},{"name":"siteId","in":"query","required":false,"schema":{"type":"string"}},{"name":"buildingId","in":"query","required":false,"schema":{"type":"string"}},{"name":"floorPlanId","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/FilterEntityResponse"}}}}}}}},"/api/event/id/{id}/map/outdoor":{"get":{"tags":["event-controller"],"summary":"Get Outdoor Asset History for Map","description":"Returns a list of asset history records for events suitable for rendering on an outdoor map, filtered by time range and optional map bounding box","operationId":"getEventsForOutdoor","parameters":[{"name":"id","in":"path","description":"ID of the asset","required":true,"schema":{"type":"string"},"example":"a1b2c3d4-5678-90ef-gh12-34567890abcd"},{"name":"from","in":"query","description":"Start datetime of the time range (ISO format)","required":true,"schema":{"type":"string","format":"date-time"},"example":"2025-07-01T00:00:00+03:00"},{"name":"to","in":"query","description":"End datetime of the time range (ISO format)","required":true,"schema":{"type":"string","format":"date-time"},"example":"2025-07-19T23:59:59+03:00"},{"name":"bottomLeft","in":"query","description":"Bottom-left coordinates [longitude, latitude] of the map bounding box, optional","required":false,"schema":{"type":"array","items":{"type":"number","format":"double"}},"example":[30.5234,50.4501]},{"name":"topRight","in":"query","description":"Top-right coordinates [longitude, latitude] of the map bounding box, optional","required":false,"schema":{"type":"array","items":{"type":"number","format":"double"}},"example":[30.54,50.46]}],"responses":{"400":{"description":"Invalid request parameters","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"200":{"description":"Successfully retrieved asset location history for outdoor map","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssetHistoryMapResponse"}}}},"403":{"description":"User does not have permission to access this data","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}}}}},"/api/event/id/{id}/map/indoor":{"get":{"tags":["event-controller"],"summary":"Get Events for Indoor Map","description":"Returns asset location history for events for indoor maps within a specified time range and floor plan.","operationId":"getEventsForIndoor","parameters":[{"name":"id","in":"path","description":"ID of the asset","required":true,"schema":{"type":"string"},"example":"a1b2c3d4-5678-90ef-gh12-34567890abcd"},{"name":"from","in":"query","description":"Start datetime of the time range (ISO format)","required":true,"schema":{"type":"string","format":"date-time"},"example":"2025-07-01T00:00:00+03:00"},{"name":"to","in":"query","description":"End datetime of the time range (ISO format)","required":true,"schema":{"type":"string","format":"date-time"},"example":"2025-07-19T23:59:59+03:00"},{"name":"floorPlanId","in":"query","description":"Floor plan identifier","required":true,"schema":{"type":"string"},"example":"a1b2c3d4-5678-90ef-gh12-34567890abc0"}],"responses":{"200":{"description":"Successfully retrieved asset location history for events for indoor map","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssetHistoryMapResponse"}}}},"403":{"description":"Access denied due to insufficient permissions","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"400":{"description":"Invalid input parameters","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}}}}},"/api/event/event-details/{id}":{"get":{"tags":["event-controller"],"summary":"Get Event Details","description":"Retrieve detailed information for a specific event by its ID.","operationId":"getEventDetails","parameters":[{"name":"id","in":"path","description":"ID of the event to retrieve details for","required":true,"schema":{"type":"string"},"example":"f2d435b1-aeaf-4f02-b0f6-0e57f83d671a"}],"responses":{"403":{"description":"Forbidden: insufficient permissions","content":{"application/json":{}}},"400":{"description":"Something went wrong","content":{"application/json":{}}},"200":{"description":"Successful retrieval of event details","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EventDetails"}}}}}}},"/api/device/short":{"get":{"tags":["device-controller"],"summary":"Get all unassigned devices in short form","description":"Returns a list of devices that are not assigned to any asset, optionally filtered by site ID","operationId":"getAllUnassignedDevicesShort","parameters":[{"name":"siteId","in":"query","description":"Optional filter to return devices only from the specified site","required":false,"schema":{"type":"string"},"example":"123e4567-e89b-12d3-a456-426614174000"}],"responses":{"403":{"description":"Forbidden - insufficient permissions","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"400":{"description":"Something went wrong","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"200":{"description":"Successfully retrieved list of unassigned devices","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceShort"}}}}}}},"/api/device/id/{id}":{"get":{"tags":["device-controller"],"summary":"Get full device information by ID","description":"Returns a device including indoor and outdoor location information","operationId":"getDeviceById","parameters":[{"name":"id","in":"path","description":"The ID of the device to retrieve","required":true,"schema":{"type":"string"},"example":"123e4567-e89b-12d3-a456-426614174000"}],"responses":{"403":{"description":"Forbidden - insufficient permissions","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"200":{"description":"Successfully retrieved the device","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceFullInfo"}}}},"400":{"description":"Device not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}}}},"delete":{"tags":["device-controller"],"summary":"Delete device by ID","description":"Deletes a device with the specified ID. Returns true if the device was successfully deleted.","operationId":"deleteDevice","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Device successfully deleted","content":{"application/json":{"schema":{"type":"boolean"},"examples":{"DeleteSuccessExample":{"description":"DeleteSuccessExample","value":true}}}}},"400":{"description":"Device not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"403":{"description":"Forbidden: insufficient permissions","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}}}}},"/api/device/devEui":{"get":{"tags":["device-controller"],"summary":"Get Device EUI","description":"Returns the Device EUI for a given serial number, T-code, and revision.","operationId":"getDeviceEui","parameters":[{"name":"serialNumber","in":"query","description":"Device serial number","required":true,"schema":{"type":"string"},"example":"1234N5678"},{"name":"tcode","in":"query","description":"Device T-code","required":true,"schema":{"type":"string"},"example":"T0001111"},{"name":"revision","in":"query","description":"Device revision","required":true,"schema":{"type":"string"},"example":"A1"}],"responses":{"403":{"description":"User does not have permission","content":{"application/json":{}}},"200":{"description":"Successfully retrieved Device EUI","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceEuiResponse"}}}},"400":{"description":"Invalid input parameters","content":{"application/json":{}}}}}},"/api/device/csv/template":{"get":{"tags":["device-controller"],"summary":"Get device CSV template","description":"Get a template of a CSV file for devices. Requires manage or read devices authority","operationId":"getDeviceCsvTemplateFile","responses":{"400":{"description":"Invalid request parameters","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"403":{"description":"Forbidden - insufficient permissions","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"200":{"description":"CSV file returned successfully","content":{"application/octet-stream":{}}}}}},"/api/device-family":{"get":{"tags":["device-family-controller"],"summary":"Get all device families","description":"Returns a list of all available device families. Requires read or manage configuration authority.","operationId":"getAllDeviceFamily","responses":{"403":{"description":"User is not authorized to access this resource","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/DeviceFamilyDto"}}}}},"200":{"description":"Successfully retrieved list of device families","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/DeviceFamilyDto"}}}}},"400":{"description":"Fails while retrieving device families","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/DeviceFamilyDto"}}}}}}}},"/api/configuration/id/{id}":{"get":{"tags":["configuration-controller"],"summary":"Get Configuration by ID","description":"Retrieve a configuration by its unique ID. Requires manage or read configurations authority.","operationId":"getConfigurationById","parameters":[{"name":"id","in":"path","description":"Unique identifier of the configuration","required":true,"schema":{"type":"string"},"example":"config-12345"}],"responses":{"200":{"description":"Configuration found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConfigurationDto"}}}},"400":{"description":"Configuration not found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"403":{"description":"Forbidden","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}}}},"delete":{"tags":["configuration-controller"],"summary":"Delete Configuration by ID","description":"Delete a configuration by its unique ID. Requires manage or read configurations authority.","operationId":"deleteConfigurationById","parameters":[{"name":"id","in":"path","description":"Unique identifier of the configuration","required":true,"schema":{"type":"string"},"example":"config-12345"}],"responses":{"400":{"description":"Configuration not found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"200":{"description":"Configuration deleted successfully"},"403":{"description":"Forbidden","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}}}}},"/api/configuration/create-default":{"get":{"tags":["configuration-controller"],"summary":"Create default configurations","description":"Initializes and saves a predefined set of default configurations to the system. Intended for admin or setup purposes.","operationId":"createDefaultConfiguration","responses":{"403":{"description":"User lacks the required authority to create configurations"},"400":{"description":"Something went wrong"},"200":{"description":"Default configurations created successfully"}}}},"/api/building/{id}/check-delete":{"get":{"tags":["building-controller"],"summary":"Check if building can be deleted","description":"Returns whether the building can be deleted and how many floor plans are associated with it.","operationId":"checkDelete","parameters":[{"name":"id","in":"path","description":"Unique identifier of the building","required":true,"schema":{"type":"string"},"example":"123e4567-e89b-12d3-a456-426614174000"}],"responses":{"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"200":{"description":"Delete check result","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckDeleteBuildingResponse"}}}}}}},"/api/building/site/{siteId}/pins":{"get":{"tags":["building-controller"],"summary":"Get building pins by site ID","description":"Retrieves a list of building pins (coordinates) for all buildings under the specified site ID.","operationId":"getBuildingPins","parameters":[{"name":"siteId","in":"path","description":"Unique identifier of the site","required":true,"schema":{"type":"string"},"example":"123e4567-e89b-12d3-a456-426614174000"}],"responses":{"400":{"description":"Invalid site ID supplied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"200":{"description":"Successfully retrieved building pins","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/BuildingPinsResponse"}}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}}}}},"/api/building/short":{"get":{"tags":["building-controller"],"summary":"Get short info about buildings","description":"Returns a list of simplified building entities, optionally filtered by siteId.","operationId":"getBuildingShortInfo","parameters":[{"name":"siteId","in":"query","description":"Optional site ID to filter buildings","required":false,"schema":{"type":"string"},"example":"123e4567-e89b-12d3-a456-426614174000"}],"responses":{"400":{"description":"Bad request or invalid building IDs","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"200":{"description":"List of building short info","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/EntityWithSiteIdSimpleEntity"}}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}}}}},"/api/building/id/{id}":{"get":{"tags":["building-controller"],"summary":"Get a building by its ID","description":"Get the building identified by the given Id","operationId":"getBuildingById","parameters":[{"name":"id","in":"path","description":"Unique identifier of the building","required":true,"schema":{"type":"string"},"example":"123e4567-e89b-12d3-a456-426614174000"}],"responses":{"400":{"description":"Building not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"200":{"description":"Building successfully found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BuildingDto"}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}}}},"delete":{"tags":["building-controller"],"summary":"Delete building by ID","description":"Deletes a building and its associated data by the specified unique identifier.","operationId":"deleteBuilding","parameters":[{"name":"id","in":"path","description":"Unique identifier of the building","required":true,"schema":{"type":"string"},"example":"123e4567-e89b-12d3-a456-426614174000"}],"responses":{"400":{"description":"Bad request or unable to delete building","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"200":{"description":"Returns true if deletion was successful","content":{"application/json":{"schema":{"type":"boolean"},"example":true}}}}}},"/api/beacon/unassigned":{"get":{"tags":["beacon-controller"],"summary":"Get unassigned beacons","description":"Retrieves a list of beacons that are not assigned to any floor plan. Optionally filter by site ID. Requires manage beacons authority","operationId":"getUnassignedBeacon","parameters":[{"name":"siteId","in":"query","description":"Optional site ID to filter unassigned beacons","required":false,"schema":{"type":"string"},"example":"123e4567-e89b-12d3-a456-426614174000"}],"responses":{"400":{"description":"Invalid request parameters","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"403":{"description":"Forbidden - insufficient permissions","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"200":{"description":"List of unassigned beacons retrieved successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnassignedBeaconResponse"}}}}}}},"/api/beacon/models":{"get":{"tags":["beacon-controller"],"summary":"Get list of beacon models","description":"Retrieves a list of simple beacon models, optionally filtered by manufacturer. Requires manage beacons authority.","operationId":"getBeaconModels","parameters":[{"name":"manufacturer","in":"query","description":"Optional manufacturer to filter beacon models, available: TEKTELIC, Other","required":false,"schema":{"type":"string"},"example":"TEKTELIC"}],"responses":{"200":{"description":"List of beacon models retrieved successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SimpleEntity"}}}},"400":{"description":"Invalid request parameters","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"403":{"description":"Forbidden - insufficient permissions","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}}}}},"/api/beacon/id/{id}":{"get":{"tags":["beacon-controller"],"summary":"Get Beacon by ID","description":"Retrieve the details of a beacon by its unique identifier.","operationId":"getBeaconById","parameters":[{"name":"id","in":"path","description":"Unique identifier of the beacon","required":true,"schema":{"type":"string"},"example":"a1b2c3d4-5678-90ef-gh12-34567890abcd"}],"responses":{"200":{"description":"Beacon found and returned","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BeaconDto"}}}},"400":{"description":"Beacon not found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"403":{"description":"Access denied due to insufficient permissions","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}}}},"delete":{"tags":["beacon-controller"],"summary":"Delete a beacon by ID","description":"Deletes a beacon identified by its ID. Requires manage beacons authority","operationId":"deleteBeaconById_1","parameters":[{"name":"id","in":"path","description":"Unique identifier of the beacon","required":true,"schema":{"type":"string"},"example":"a1b2c3d4-5678-90ef-gh12-34567890abcd"}],"responses":{"200":{"description":"Beacon deleted successfully","content":{"*/*":{"schema":{"type":"boolean"}}}},"400":{"description":"Beacon not found","content":{"*/*":{"schema":{"type":"boolean"}}}},"403":{"description":"Forbidden - insufficient permissions","content":{"*/*":{"schema":{"type":"boolean"}}}}}}},"/api/beacon/devEui":{"get":{"tags":["beacon-controller"],"summary":"Get Device EUI","description":"Retrieves the Device EUI based on the provided serial number, T-code, and revision. Requires manage beacons authority","operationId":"getDeviceEui_1","parameters":[{"name":"serialNumber","in":"query","description":"Device serial number","required":true,"schema":{"type":"string"},"example":"1234S1234"},{"name":"tcode","in":"query","description":"Device T-code","required":true,"schema":{"type":"string"},"example":"T0001111"},{"name":"revision","in":"query","description":"Device hardware revision","required":true,"schema":{"type":"string"},"example":"A1"}],"responses":{"200":{"description":"Device EUI retrieved successfully","content":{"*/*":{"schema":{"$ref":"#/components/schemas/DeviceEuiResponse"}}}},"403":{"description":"Forbidden - insufficient permissions","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"400":{"description":"Invalid input parameters","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}}}}},"/api/beacon/csv/template":{"get":{"tags":["beacon-controller"],"summary":"Get beacon CSV template","description":"Get a template of a CSV file for beacons. Requires manage or read beacons authority","operationId":"getBeaconCsvTemplateFile","parameters":[{"name":"manufacturer","in":"query","description":"The beacon`s manufacturer, can be 'TEKTELIC' or 'Other'","required":true,"schema":{"type":"string"},"example":"TEKTELIC"}],"responses":{"400":{"description":"Invalid request parameters","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"403":{"description":"Forbidden - insufficient permissions","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"200":{"description":"CSV file returned successfully","content":{"application/octet-stream":{}}}}}},"/api/beacon-model/{id}/check-delete":{"get":{"tags":["beacon-model-controller"],"summary":"Check if Beacon Model can be deleted","description":"Checks whether a beacon model with the given ID can be safely deleted, returning dependencies if any exist.","operationId":"checkDeleteBeaconModel","parameters":[{"name":"id","in":"path","description":"The ID of the beacon model","required":true,"schema":{"type":"string"},"example":"123e4567-e89b-12d3-a456-426614174000"}],"responses":{"200":{"description":"Check result for deletion eligibility","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckDeleteBeaconModelResponse"}}}},"403":{"description":"Forbidden - insufficient permissions","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"400":{"description":"Beacon model not found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}}}}},"/api/beacon-model/id/{id}":{"get":{"tags":["beacon-model-controller"],"summary":"Get Beacon Model by ID","description":"Retrieves a specific beacon model by its unique identifier.","operationId":"getBeaconModelById","parameters":[{"name":"id","in":"path","description":"The ID of the beacon model","required":true,"schema":{"type":"string"},"example":"123e4567-e89b-12d3-a456-426614174000"}],"responses":{"200":{"description":"Successfully retrieved beacon model","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BeaconModelDto"}}}},"403":{"description":"Forbidden - insufficient permissions","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"400":{"description":"Beacon model not found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}}}},"delete":{"tags":["beacon-model-controller"],"summary":"Delete Beacon Model by ID","description":"Deletes a specific beacon model identified by its unique ID.","operationId":"deleteBeaconModelById","parameters":[{"name":"id","in":"path","description":"The ID of the beacon model","required":true,"schema":{"type":"string"},"example":"123e4567-e89b-12d3-a456-426614174000"}],"responses":{"200":{"description":"Beacon model successfully deleted","content":{"application/json":{"schema":{"type":"boolean"},"examples":{"SuccessExample":{"description":"SuccessExample","value":true}}}}},"403":{"description":"Forbidden - insufficient permissions","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"400":{"description":"Beacon model not found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}}}}},"/api/asset/id/{id}":{"get":{"tags":["asset-controller"],"summary":"Get asset by ID","description":"Returns asset by ID. Requires manage or read assets authority.","operationId":"getAssetById","parameters":[{"name":"id","in":"path","description":"Asset ID is the path variable","required":true,"schema":{"type":"string"},"example":"aab62a49-a437-4ea2-83b1-43fce670dd0a"}],"responses":{"403":{"description":"User does not have permission to view asset","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"400":{"description":"Get Asset by ID operation fails","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"200":{"description":"Asset was found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssetFullInfo"}}}}}},"delete":{"tags":["asset-controller"],"summary":"Delete Asset by ID","description":"Delete one asset by ID, requires manage asset authority","operationId":"deleteAssetById","parameters":[{"name":"id","in":"path","description":"Asset ID is the path variable","required":true,"schema":{"type":"string"},"example":"aab62a49-a437-4ea2-83b1-43fce670dd0a"}],"responses":{"200":{"description":"Asset was deleted by ID successfully","content":{"application/json":{"schema":{"type":"boolean"}}}},"403":{"description":"User does not have permission to delete asset","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"400":{"description":"Operation delete asset failed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}}}}},"/api/asset/id/{id}/details":{"get":{"tags":["asset-controller"],"summary":"Get detailed information about asset by ID","description":"Returns asset by ID. Requires manage or read assets authority","operationId":"getAssetByIdDetailed","parameters":[{"name":"id","in":"path","description":"Asset ID is the path variable","required":true,"schema":{"type":"string"},"example":"aab62a49-a437-4ea2-83b1-43fce670dd0a"}],"responses":{"403":{"description":"User does not have permission to view asset","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"200":{"description":"Asset was found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssetDetailResponse"}}}},"400":{"description":"Get Asset by ID operation fails","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}}}}},"/api/asset/eventRule/filter":{"get":{"tags":["asset-controller"],"summary":"Get assets by event type","description":"Returns a list of assets that are associated with the provided event type. Requires manage or read assets authority","operationId":"getAssetsByEventType","parameters":[{"name":"eventType","in":"query","description":"Type of the event to filter assets, available event types: assetEntersGeofence, assetExitsGeofence, sosAlertTrigger, fallDetectedTrigger, hookAlertTrigger,lowBattery","required":true,"schema":{"type":"string"},"example":"lowBattery"},{"name":"siteId","in":"query","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"List of matching assets","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SimpleEntity"},"examples":{"Example of Simple asset list":{"summary":"Example response","description":"Example of Simple asset list","value":[{"id":"aab62a49-a437-4ea2-83b1-43fce670dd0a","name":"My Asset 1"},{"id":"aab62a49-a437-4ea2-83b1-43fce670dd0b","name":"My Asset 2"}]}}}}}}}},"/api/asset/csv/template":{"get":{"tags":["asset-controller"],"summary":"Get asset CSV template","description":"Get a template of a CSV file for assets. Requires manage or read assets authority","operationId":"getAssetCsvTemplateFile","responses":{"400":{"description":"Invalid request parameters","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"403":{"description":"Forbidden - insufficient permissions","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"200":{"description":"CSV file returned successfully","content":{"application/octet-stream":{}}}}}},"/api/asset-type/{id}/check-delete":{"get":{"tags":["asset-type-controller"],"summary":"Check if Asset Type can be deleted","description":"Validates whether the asset type with the given ID can be deleted. Requires manage assets authority.","operationId":"checkDeleteAssetType","parameters":[{"name":"id","in":"path","description":"Asset Type ID is the path variable","required":true,"schema":{"type":"string"},"example":"aab62a49-a437-4ea2-83b1-43fce670dd0a"}],"responses":{"400":{"description":"Asset type with the specified ID was not found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"403":{"description":"User is not authorized to check whether asset type can be removed from the system.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"200":{"description":"Check whether asset type can be removed from the system","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckDeleteAssetTypeResponse"},"examples":{"Check delete asset type example":{"description":"Check delete asset type example","value":{"deletable":false,"reason":"Asset type is in use by 3 assets."}}}}}}},"security":[{"bearerAuth":[]}]}},"/api/asset-type/short":{"get":{"tags":["asset-type-controller"],"summary":"Get All Asset Types (Short Version)","description":"Returns a simplified list of asset types containing only ID and name. Requires manage or read assets authority","operationId":"getAllAssetTypesShort","responses":{"200":{"description":"List of asset types (short info) returned successfully","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/SimpleEntity"}},"examples":{"Short asset type List":{"description":"Short asset type List","value":[{"id":"aab62a49-a437-4ea2-83b1-43fce670dd0a","name":"Asset Type 1"},{"id":"aab62a49-a437-4ea2-83b1-43fce670dd0b","name":"Asset Type 2"}]}}}}},"400":{"description":"Operation get short asset types fails","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"403":{"description":"User does not have permission to access this resource","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}}},"security":[{"bearerAuth":[]}]}},"/api/asset-history/id/{id}/map/outdoor":{"get":{"tags":["asset-history-controller"],"summary":"Get Outdoor Asset History for Map","description":"Returns a list of asset history records suitable for rendering on an outdoor map, filtered by time range and optional map bounding box","operationId":"getAssetHistoryForOutdoor","parameters":[{"name":"id","in":"path","description":"ID of the asset","required":true,"schema":{"type":"string"},"example":"a1b2c3d4-5678-90ef-gh12-34567890abcd"},{"name":"from","in":"query","description":"Start datetime of the time range (ISO format)","required":true,"schema":{"type":"string","format":"date-time"},"example":"2025-07-01T00:00:00+03:00"},{"name":"to","in":"query","description":"End datetime of the time range (ISO format)","required":true,"schema":{"type":"string","format":"date-time"},"example":"2025-07-19T23:59:59+03:00"},{"name":"bottomLeft","in":"query","description":"Bottom-left coordinates [longitude, latitude] of the map bounding box, optional","required":false,"schema":{"type":"array","items":{"type":"number","format":"double"}},"example":[30.5234,50.4501]},{"name":"topRight","in":"query","description":"Top-right coordinates [longitude, latitude] of the map bounding box, optional","required":false,"schema":{"type":"array","items":{"type":"number","format":"double"}},"example":[30.54,50.46]}],"responses":{"400":{"description":"Invalid request parameters","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"403":{"description":"User does not have permission to access this data","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"200":{"description":"Successfully retrieved asset history for outdoor map","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssetHistoryMapResponse"}}}}}}},"/api/asset-history/id/{id}/map/indoor":{"get":{"tags":["asset-history-controller"],"summary":"Get Asset History for Indoor Map","description":"Returns asset location history for indoor maps within a specified time range and floor plan.","operationId":"getAssetHistoryForIndoor","parameters":[{"name":"id","in":"path","description":"ID of the asset","required":true,"schema":{"type":"string"},"example":"a1b2c3d4-5678-90ef-gh12-34567890abcd"},{"name":"from","in":"query","description":"Start datetime of the time range (ISO format)","required":true,"schema":{"type":"string","format":"date-time"},"example":"2025-07-01T00:00:00+03:00"},{"name":"to","in":"query","description":"End datetime of the time range (ISO format)","required":true,"schema":{"type":"string","format":"date-time"},"example":"2025-07-19T23:59:59+03:00"},{"name":"floorPlanId","in":"query","description":"Floor plan identifier","required":true,"schema":{"type":"string"},"example":"a1b2c3d4-5678-90ef-gh12-34567890abc0"}],"responses":{"403":{"description":"Access denied due to insufficient permissions","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"400":{"description":"Invalid input parameters","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"200":{"description":"Successfully retrieved asset history for indoor map","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssetHistoryMapResponse"}}}}}}},"/api/site/id/{id}":{"delete":{"tags":["site-controller"],"summary":"Delete site","description":"Returns a response indicating whether the specified site is deleted","operationId":"deleteSite","parameters":[{"name":"id","in":"path","description":"Unique identifier of the site to delete","required":true,"schema":{"type":"string"},"example":"123e4567-e89b-12d3-a456-426614174000"}],"responses":{"403":{"description":"Access denied due to insufficient permissions","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"400":{"description":"Site not found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"200":{"description":"Successfully checked site deletability","content":{"application/json":{"schema":{"type":"boolean"}}}}}}},"/api/site/delete-bulk":{"delete":{"tags":["site-controller"],"summary":"Delete multiple sites","description":"Deletes a list of sites by their IDs. This operation is restricted to users with 'manage_site' authority.","operationId":"deleteItems","requestBody":{"content":{"application/json":{"schema":{"type":"array","description":"List of site IDs to be deleted","items":{"type":"string","example":"123e4567-e89b-12d3-a456-426614174000"}}}},"required":true},"responses":{"200":{"description":"Sites deleted successfully"},"400":{"description":"Invalid input (e.g. empty or malformed list of IDs)"},"403":{"description":"Access denied due to insufficient permissions"}}}},"/api/sensor/delete-bulk":{"delete":{"tags":["sensor-controller"],"summary":"Bulk delete sensors","description":"Deletes a list of sensors by their IDs. Requires manage sensors authority","operationId":"deleteSensorsInBulk","requestBody":{"description":"List of sensor`s IDs to delete","content":{"application/json":{"schema":{"type":"array","example":["123e4567-e89b-12d3-a456-426614174000"]}}},"required":true},"responses":{"200":{"description":"Sensors successfully deleted","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"403":{"description":"Forbidden - insufficient permissions","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"400":{"description":"Bad request - invalid sensors ID or something went wrong","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}}}}},"/api/ns-api-key/createdAtMs/{timestamp}":{"delete":{"tags":["ns-api-key-controller"],"operationId":"deleteApiKey","parameters":[{"name":"timestamp","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"string"}}}}}}},"/api/floor-plan/id/{id}":{"delete":{"tags":["floor-plan-controller"],"summary":"Delete a floor plan by ID","description":"Deletes the floor plan with the specified ID if the user has permission.","operationId":"deleteFloorPlan_1","parameters":[{"name":"id","in":"path","description":"ID of the floor plan to delete","required":true,"schema":{"type":"string"},"example":"9c4d2b80-f1cd-4a95-a47c-e292cdad13c1"}],"responses":{"403":{"description":"Forbidden: user lacks permission","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"200":{"description":"Floor plan deleted successfully","content":{"*/*":{"schema":{"type":"boolean"}}}},"404":{"description":"Floor plan not found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}}}}},"/api/floor-plan/delete-bulk":{"delete":{"tags":["floor-plan-controller"],"summary":"Delete multiple floor plans in bulk","description":"Deletes floor plans by a list of their IDs if the user has appropriate permissions.","operationId":"deleteInBulk","requestBody":{"description":"List of floor plan IDs to delete","content":{"application/json":{"schema":{"type":"array","items":{"type":"string","example":"9c4d2b80-f1cd-4a95-a47c-e292cdad13c1"}},"example":["9c4d2b80-f1cd-4a95-a47c-e292cdad13c0","9c4d2b80-f1cd-4a95-a47c-e292cdad13c1","9c4d2b80-f1cd-4a95-a47c-e292cdad13c2"]}},"required":true},"responses":{"403":{"description":"Forbidden: user lacks permission","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"400":{"description":"Invalid request","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"200":{"description":"Bulk deletion processed successfully","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}}}}},"/api/event-rule/id/{id}":{"delete":{"tags":["event-rule-controller"],"summary":"Delete event rule by ID","description":"Deletes an event rule specified by its unique ID","operationId":"deleteEventRule","parameters":[{"name":"id","in":"path","description":"ID of the event rule to delete","required":true,"schema":{"type":"string"},"example":"f2d435b1-aeaf-4f02-b0f6-0e57f83d671a"}],"responses":{"403":{"description":"Forbidden - insufficient permissions","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"400":{"description":"Invalid ID supplied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"200":{"description":"Event rule successfully deleted","content":{"*/*":{"schema":{"type":"boolean"}}}}}}},"/api/device/delete-bulk":{"delete":{"tags":["device-controller"],"summary":"Delete multiple devices by IDs","description":"Deletes a list of devices specified by their IDs in bulk.","operationId":"deleteInBulk_1","requestBody":{"description":"List of device IDs to delete","content":{"application/json":{"schema":{"type":"array","items":{"type":"string","example":"123e4567-e89b-12d3-a456-426614174000"}},"examples":{"DeviceIdsExample":{"description":"DeviceIdsExample","value":["123e4567-e89b-12d3-a456-426614174000","223e4567-e89b-12d3-a456-426614174001","323e4567-e89b-12d3-a456-426614174002"]}}}},"required":true},"responses":{"403":{"description":"Forbidden: insufficient permissions","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"400":{"description":"Something went wrong","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"200":{"description":"Devices deleted successfully","content":{"application/json":{}}}}}},"/api/configuration/delete-bulk":{"delete":{"tags":["configuration-controller"],"summary":"Bulk Delete Configurations","description":"Delete multiple configurations by their IDs. Requires manage or read configurations authority.","operationId":"deleteConfigurationByIdInBulk","requestBody":{"description":"List of configuration IDs to delete","content":{"application/json":{"schema":{"type":"array","items":{"type":"string","example":"aab62a49-a437-4ea2-83b1-43fce670dd0a"}},"examples":{"BulkDeleteConfigurationsExample":{"description":"BulkDeleteConfigurationsExample","value":["aab62a49-a437-4ea2-83b1-43fce670dd0a","aab62a49-a437-4ea2-83b1-43fce670dd01","aab62a49-a437-4ea2-83b1-43fce670dd02"]}}}},"required":true},"responses":{"400":{"description":"Invalid request payload"},"200":{"description":"Configurations deleted successfully"},"403":{"description":"Forbidden","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}}}}},"/api/building/pin/{pinId}":{"delete":{"tags":["building-controller"],"summary":"Delete a building pin by its ID","description":"Deletes the building pin identified by the given pinId","operationId":"deleteBuildingPin","parameters":[{"name":"pinId","in":"path","description":"Unique identifier of the pin to delete","required":true,"schema":{"type":"string"},"example":"123e4567-e89b-12d3-a456-426614174000"}],"responses":{"400":{"description":"Pin not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"200":{"description":"Pin successfully deleted","content":{"application/json":{"schema":{"type":"boolean"}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}}}}},"/api/building/delete-bulk":{"delete":{"tags":["building-controller"],"summary":"Bulk delete buildings","description":"Deletes multiple buildings given a list of building IDs.","operationId":"deleteBulk","requestBody":{"description":"List of building IDs to delete","content":{"application/json":{"schema":{"type":"array","items":{"type":"string","example":"123e4567-e89b-12d3-a456-426614174000"}},"example":["123e4567-e89b-12d3-a456-426614174000","223e4567-e89b-12d3-a456-426614174111"]}},"required":true},"responses":{"400":{"description":"Bad request or invalid building IDs","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"200":{"description":"Buildings deleted successfully"},"403":{"description":"Access denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}}}}},"/api/beacon/delete-bulk":{"delete":{"tags":["beacon-controller"],"summary":"Bulk delete beacons","description":"Deletes a list of beacons by their IDs. Requires manage beacons authority","operationId":"deleteBeaconsInBulk","requestBody":{"description":"List of beacon IDs to delete","content":{"application/json":{"schema":{"type":"array","example":["123e4567-e89b-12d3-a456-426614174000"]}}},"required":true},"responses":{"403":{"description":"Forbidden - insufficient permissions","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"200":{"description":"Beacons successfully deleted","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"400":{"description":"Bad request - invalid or missing beacon IDs","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}}}}},"/api/beacon-model/delete-bulk":{"delete":{"tags":["beacon-model-controller"],"summary":"Delete multiple Beacon Models in bulk","description":"Deletes beacon models with the provided list of IDs. Requires manage_beacon authority.","operationId":"deleteBeaconModelsBulk","requestBody":{"description":"List of Beacon Model IDs to check for deletion eligibility","content":{"application/json":{"schema":{"type":"array","items":{"type":"string","example":"123e4567-e89b-12d3-a456-426614174000"}},"examples":{"CheckDeleteBulkRequestExample":{"description":"CheckDeleteBulkRequestExample","value":["123e4567-e89b-12d3-a456-426614174000","123e4567-e89b-12d3-a456-426614174001","123e4567-e89b-12d3-a456-426614174002"]}}}},"required":true},"responses":{"403":{"description":"Forbidden - insufficient permissions","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"400":{"description":"Invalid request or IDs not found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"200":{"description":"Bulk delete operation completed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"},"examples":{"BulkDeleteSuccessExample":{"description":"BulkDeleteSuccessExample","value":{"message":"Successfully deleted 3 beacon models."}}}}}}}}},"/api/asset/delete-bulk":{"delete":{"tags":["asset-controller"],"summary":"Delete assets in bulk","description":"Deletes multiple assets based on the provided list of asset IDs, requires manage assets authority","operationId":"deleteAssetinBulk","requestBody":{"description":"List of asset IDs to delete","content":{"application/json":{"schema":{"type":"array","items":{"type":"string","example":"aab62a49-a437-4ea2-83b1-43fce670dd0a"}}}},"required":true},"responses":{"200":{"description":"Assets deleted successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"403":{"description":"User does not have permission to delete assets","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"400":{"description":"Invalid request or asset deletion failed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}}}}},"/api/asset-type/id/{id}":{"delete":{"tags":["asset-type-controller"],"summary":"Delete Asset Type by ID","description":"Deletes the asset type specified by the ID. Requires manage assets authority.","operationId":"deleteAssetType","parameters":[{"name":"id","in":"path","description":"Asset Type ID is the path variable","required":true,"schema":{"type":"string"},"example":"aab62a49-a437-4ea2-83b1-43fce670dd0a"}],"responses":{"400":{"description":"Asset type with the specified ID was not found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"403":{"description":"User does not have permission to delete asset types","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"200":{"description":"Asset type successfully deleted"}},"security":[{"bearerAuth":[]}]}},"/api/asset-type/delete-bulk":{"delete":{"tags":["asset-type-controller"],"summary":"Bulk Delete Asset Types","description":"Deletes multiple asset types by their IDs. Requires manage assets authority","operationId":"deleteAssetTypesBulk","requestBody":{"description":"List of asset type UUIDs to delete","content":{"application/json":{"schema":{"type":"array","items":{"type":"string","format":"uuid"}},"examples":{"UUIDListExample":{"description":"UUIDListExample","value":["e9a1a5f3-15fb-44d6-a75b-2d3fba4d6d2c","1b2c4e6f-2b0c-4b5d-988d-d4f6e3a9e3ee"]}}}},"required":true},"responses":{"200":{"description":"Asset types successfully deleted or processed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"},"examples":{"Successful bulk delete response":{"description":"Successful bulk delete response","value":{"message":"Deleted 5 asset types successfully"}}}}}},"400":{"description":"Invalid request or some IDs not found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}},"403":{"description":"User not authorized to delete asset types","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}}},"security":[{"bearerAuth":[]}]}}},"components":{"schemas":{"ActiveDeviceMonthDto":{"type":"object","properties":{"deviceCount":{"type":"integer","description":"Maximum number of active devices in a day","format":"int64","example":95},"beaconCount":{"type":"integer","description":"Maximum number of active beacons in a day","format":"int64","example":70},"sensorCount":{"type":"integer","description":"Maximum number of active sensors in a day","format":"int64","example":260},"totalDeviceCount":{"type":"integer","description":"Maximum total number of active devices (devices + beacons + sensors) in a day","format":"int64","example":425}},"description":"Report with statistics on maximum active devices per day for a period"},"ApplyConfigurationBulkRequest":{"required":["configId","ids"],"type":"object","properties":{"configId":{"type":"string","description":"ID of the configuration to apply","example":"aab62a49-a437-4ea2-83b1-43fce670dd00"},"ids":{"uniqueItems":true,"type":"array","description":"Set of IDs of devices to which the configuration will be applied","example":["7482c99f-9093-4cb9-84ad-5f548cca432a","aab62a49-a437-4ea2-83b1-43fce670dd0a"],"items":{"type":"string","description":"Set of IDs of devices to which the configuration will be applied","example":"[\"7482c99f-9093-4cb9-84ad-5f548cca432a\",\"aab62a49-a437-4ea2-83b1-43fce670dd0a\"]"}}},"description":"Request object to apply a configuration to multiple devices"},"AssetCsvFilterRequest":{"type":"object","properties":{"deviceTypeFilter":{"type":"array","description":"Filter by device types, optional","example":["SEAL","ROBIN"],"items":{"type":"string","description":"Filter by device types, optional","example":"[\"SEAL\",\"ROBIN\"]"}},"assetTypeFilter":{"type":"array","description":"Filter by asset type IDs, optional","example":["aab62a49-a437-4ea2-83b1-43fce670dd0a","bab62a49-a437-4ea2-83b1-43fce670dd01"],"items":{"type":"string","description":"Filter by asset type IDs, optional","example":"[\"aab62a49-a437-4ea2-83b1-43fce670dd0a\",\"bab62a49-a437-4ea2-83b1-43fce670dd01\"]"}},"homeSiteFilter":{"type":"array","description":"Filter by site IDs to which asset was attached during creation, optional","example":["aab62a49-a437-4ea2-83b1-43fce670dd0b","aab62a49-a437-4ea2-83b1-43fce670dd0b"],"items":{"type":"string","description":"Filter by site IDs to which asset was attached during creation, optional","example":"[\"aab62a49-a437-4ea2-83b1-43fce670dd0b\",\"aab62a49-a437-4ea2-83b1-43fce670dd0b\"]"}},"tagFilter":{"type":"array","description":"Filter by tag IDs, optional","example":["aab62a49-a437-4ea2-83b1-43fce670dd0a","aab62a49-a437-4ea2-83b1-43fce670dd0c"],"items":{"type":"string","description":"Filter by tag IDs, optional","example":"[\"aab62a49-a437-4ea2-83b1-43fce670dd0a\",\"aab62a49-a437-4ea2-83b1-43fce670dd0c\"]"}},"floorPlanFilter":{"type":"array","description":"Filter by floor plan IDs, where asset`s position was tracked, optional","example":["aab62a49-a437-4ea2-83b1-43fce670dd0a","aab62a49-a437-4ea2-83b1-43fce670dd0b"],"items":{"type":"string","description":"Filter by floor plan IDs, where asset`s position was tracked, optional","example":"[\"aab62a49-a437-4ea2-83b1-43fce670dd0a\",\"aab62a49-a437-4ea2-83b1-43fce670dd0b\"]"}},"siteFilter":{"type":"array","description":"Filter by location site IDs, where asset`s position was tracked, optional","example":["aab62a49-a437-4ea2-83b1-43fce670dd0a","aab62a49-a437-4ea2-83b1-43fce670dd0b"],"items":{"type":"string","description":"Filter by location site IDs, where asset`s position was tracked, optional","example":"[\"aab62a49-a437-4ea2-83b1-43fce670dd0a\",\"aab62a49-a437-4ea2-83b1-43fce670dd0b\"]"}},"buildingFilter":{"type":"array","description":"Filter by building IDs, where asset`s position was tracked, optional","example":["aab62a49-a437-4ea2-83b1-43fce670dd0a","aab62a49-a437-4ea2-83b1-43fce670dd0b"],"items":{"type":"string","description":"Filter by building IDs, where asset`s position was tracked, optional","example":"[\"aab62a49-a437-4ea2-83b1-43fce670dd0a\",\"aab62a49-a437-4ea2-83b1-43fce670dd0b\"]"}},"sortingParameters":{"type":"array","description":"Sorting parameters (name, createDate, id, siteName, buildingName, floorName, type, siteId, buildingId, floorId), by default sort by name for floor plan and home tables, otherwise default is the last activity device. Optional","example":["name","createdDate"],"items":{"type":"string","description":"Sorting parameters (name, createDate, id, siteName, buildingName, floorName, type, siteId, buildingId, floorId), by default sort by name for floor plan and home tables, otherwise default is the last activity device. Optional","example":"[\"name\",\"createdDate\"]"}},"geofenceFilter":{"type":"array","description":"Filter by geofence IDs, where asset`s position was tracked, optional","example":["aab62a49-a437-4ea2-83b1-43fce670dd0a","aab62a49-a437-4ea2-83b1-43fce670dd0b"],"items":{"type":"string","description":"Filter by geofence IDs, where asset`s position was tracked, optional","example":"[\"aab62a49-a437-4ea2-83b1-43fce670dd0a\",\"aab62a49-a437-4ea2-83b1-43fce670dd0b\"]"}},"searchValue":{"type":"string","description":"Search text value to find assets by name, DevEUI, ID, device type, site name, building name or floor plan name, optional","example":"my value"},"bottomLeft":{"type":"array","description":"Bottom-left coordinates of polygon for map-based filtering (latitude, longitude). Optional","example":[49.8397,24.0297],"items":{"type":"number","description":"Bottom-left coordinates of polygon for map-based filtering (latitude, longitude). Optional","format":"double"}},"topRight":{"type":"array","description":"Top-right coordinates of polygon for map-based filtering (latitude, longitude). Optional","example":[50.4501,30.5234],"items":{"type":"number","description":"Top-right coordinates of polygon for map-based filtering (latitude, longitude). Optional","format":"double"}}},"description":"Filter request for retrieve assets"},"AssetDetailResponse":{"type":"object","properties":{"id":{"type":"string"},"status":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"type":{"type":"string"},"coordinateX":{"type":"number"},"coordinateY":{"type":"number"},"latitude":{"type":"number"},"longitude":{"type":"number"},"locationUpdateOutdoor":{"type":"string","format":"date-time"},"locationUpdateIndoor":{"type":"string","format":"date-time"},"lastActivityDevice":{"type":"string","format":"date-time"},"altitude":{"type":"number","format":"double"},"safetyStatus":{"$ref":"#/components/schemas/SafetyStatus"},"lowBatteryStatus":{"type":"boolean"},"onlineSince":{"type":"integer","format":"int64"},"offlineSince":{"type":"integer","format":"int64"}}},"AssetDto":{"type":"object","properties":{"id":{"type":"string","description":"Asset ID, is required","example":"aab62a49-a437-4ea2-83b1-43fce670dd0a"},"name":{"type":"string","description":"Asset name, is required","example":"My Asset"},"description":{"type":"string","description":"Description for the Asset, optional","example":"Some description"},"type":{"$ref":"#/components/schemas/SimpleEntity"},"site":{"$ref":"#/components/schemas/SimpleEntity"},"deviceEui":{"type":"string","description":"Device EUI for device that may be assigned to the asset, optional","example":"647FDA0000000000"},"tags":{"type":"array","description":"Array of tags simple objects","items":{"$ref":"#/components/schemas/TagShort"}},"createDate":{"type":"string","description":"Timestamp of asset creation in ISO 8601 format with offset","format":"date-time","example":"2025-07-18T15:30:00+03:00"}}},"AssetFilterRequest":{"type":"object","properties":{"deviceTypeFilter":{"type":"array","description":"Filter by device types, optional","example":["SEAL","ROBIN"],"items":{"type":"string","description":"Filter by device types, optional","example":"[\"SEAL\",\"ROBIN\"]"}},"assetTypeFilter":{"type":"array","description":"Filter by asset type IDs, optional","example":["aab62a49-a437-4ea2-83b1-43fce670dd0a","bab62a49-a437-4ea2-83b1-43fce670dd01"],"items":{"type":"string","description":"Filter by asset type IDs, optional","example":"[\"aab62a49-a437-4ea2-83b1-43fce670dd0a\",\"bab62a49-a437-4ea2-83b1-43fce670dd01\"]"}},"homeSiteFilter":{"type":"array","description":"Filter by site IDs to which asset was attached during creation, optional","example":["aab62a49-a437-4ea2-83b1-43fce670dd0b","aab62a49-a437-4ea2-83b1-43fce670dd0b"],"items":{"type":"string","description":"Filter by site IDs to which asset was attached during creation, optional","example":"[\"aab62a49-a437-4ea2-83b1-43fce670dd0b\",\"aab62a49-a437-4ea2-83b1-43fce670dd0b\"]"}},"tagFilter":{"type":"array","description":"Filter by tag IDs, optional","example":["aab62a49-a437-4ea2-83b1-43fce670dd0a","aab62a49-a437-4ea2-83b1-43fce670dd0c"],"items":{"type":"string","description":"Filter by tag IDs, optional","example":"[\"aab62a49-a437-4ea2-83b1-43fce670dd0a\",\"aab62a49-a437-4ea2-83b1-43fce670dd0c\"]"}},"floorPlanFilter":{"type":"array","description":"Filter by floor plan IDs, where asset`s position was tracked, optional","example":["aab62a49-a437-4ea2-83b1-43fce670dd0a","aab62a49-a437-4ea2-83b1-43fce670dd0b"],"items":{"type":"string","description":"Filter by floor plan IDs, where asset`s position was tracked, optional","example":"[\"aab62a49-a437-4ea2-83b1-43fce670dd0a\",\"aab62a49-a437-4ea2-83b1-43fce670dd0b\"]"}},"siteFilter":{"type":"array","description":"Filter by location site IDs, where asset`s position was tracked, optional","example":["aab62a49-a437-4ea2-83b1-43fce670dd0a","aab62a49-a437-4ea2-83b1-43fce670dd0b"],"items":{"type":"string","description":"Filter by location site IDs, where asset`s position was tracked, optional","example":"[\"aab62a49-a437-4ea2-83b1-43fce670dd0a\",\"aab62a49-a437-4ea2-83b1-43fce670dd0b\"]"}},"buildingFilter":{"type":"array","description":"Filter by building IDs, where asset`s position was tracked, optional","example":["aab62a49-a437-4ea2-83b1-43fce670dd0a","aab62a49-a437-4ea2-83b1-43fce670dd0b"],"items":{"type":"string","description":"Filter by building IDs, where asset`s position was tracked, optional","example":"[\"aab62a49-a437-4ea2-83b1-43fce670dd0a\",\"aab62a49-a437-4ea2-83b1-43fce670dd0b\"]"}},"sortingParameters":{"type":"array","description":"Sorting parameters (name, createDate, id, siteName, buildingName, floorName, type, siteId, buildingId, floorId), by default sort by name for floor plan and home tables, otherwise default is the last activity device. Optional","example":["name","createdDate"],"items":{"type":"string","description":"Sorting parameters (name, createDate, id, siteName, buildingName, floorName, type, siteId, buildingId, floorId), by default sort by name for floor plan and home tables, otherwise default is the last activity device. Optional","example":"[\"name\",\"createdDate\"]"}},"geofenceFilter":{"type":"array","description":"Filter by geofence IDs, where asset`s position was tracked, optional","example":["aab62a49-a437-4ea2-83b1-43fce670dd0a","aab62a49-a437-4ea2-83b1-43fce670dd0b"],"items":{"type":"string","description":"Filter by geofence IDs, where asset`s position was tracked, optional","example":"[\"aab62a49-a437-4ea2-83b1-43fce670dd0a\",\"aab62a49-a437-4ea2-83b1-43fce670dd0b\"]"}},"searchValue":{"type":"string","description":"Search text value to find assets by name, DevEUI, ID, device type, site name, building name or floor plan name, optional","example":"my value"},"bottomLeft":{"type":"array","description":"Bottom-left coordinates of polygon for map-based filtering (latitude, longitude). Optional","example":[49.8397,24.0297],"items":{"type":"number","description":"Bottom-left coordinates of polygon for map-based filtering (latitude, longitude). Optional","format":"double"}},"topRight":{"type":"array","description":"Top-right coordinates of polygon for map-based filtering (latitude, longitude). Optional","example":[50.4501,30.5234],"items":{"type":"number","description":"Top-right coordinates of polygon for map-based filtering (latitude, longitude). Optional","format":"double"}},"pageSize":{"type":"integer","description":"Page size (number of items per page), optional","format":"int32","example":20},"pageNumber":{"type":"integer","description":"Page number (0-based index), optional","format":"int32","example":0}},"description":"Request object for filtering and paginating asset list"},"AssetFullInfo":{"type":"object","properties":{"id":{"type":"string","description":"Asset ID, is required","example":"aab62a49-a437-4ea2-83b1-43fce670dd0a"},"status":{"type":"string","description":"Asset`s status, online or offline, may be null","example":"offline"},"name":{"type":"string","description":"Asset name, is required","example":"My Asset"},"description":{"type":"string","description":"Description for the Asset, optional","example":"Some description"},"type":{"$ref":"#/components/schemas/SimpleEntity"},"site":{"$ref":"#/components/schemas/SimpleEntity"},"building":{"$ref":"#/components/schemas/SimpleEntity"},"floorPlan":{"$ref":"#/components/schemas/SimpleFloorPlan"},"coordinateX":{"type":"number","description":"Indoor coordinate X for floor plan","example":10.83},"coordinateY":{"type":"number","description":"Indoor coordinate Y for floor plan","example":12.03},"latitude":{"type":"number","description":"Outdoor latitude coordinate for map","example":49.8397},"longitude":{"type":"number","description":"Outdoor longitude coordinate for map","example":24.0297},"homeSite":{"$ref":"#/components/schemas/SimpleEntity"},"deviceEui":{"type":"string","description":"Device EUI for device that may be assigned to the asset, optional","example":"647FDA0000000000"},"deviceType":{"type":"string","description":"Device type","example":"[\"SEAL\",\"ROBIN\"]"},"locationUpdateOutdoor":{"type":"string","description":"Timestamp of outdoor last triggered location in ISO 8601 format with offset","format":"date-time","example":"2025-07-18T15:30:00+03:00"},"locationUpdateIndoor":{"type":"string","description":"Timestamp of indoor last triggered location in ISO 8601 format with offset","format":"date-time","example":"2025-07-18T15:30:00+03:00"},"lastActivityDevice":{"type":"string","description":"Timestamp of last device activity in ISO 8601 format with offset","format":"date-time","example":"2025-07-18T15:30:00+03:00"},"batteryStatus":{"type":"integer","description":"Battery level in percents, integer","format":"int32","example":90},"rssi":{"type":"integer","description":"Received Signal Strength Indicator, integer","format":"int32","example":-49},"snr":{"type":"number","description":"Signal-to-Noise Ratio, double","format":"double","example":9.8},"psr":{"type":"number","description":"Packet Success Rate in percents, double","format":"double","example":80.5},"altitude":{"type":"number","description":"Outdoor altitude coordinate for map","format":"double","example":205.22},"tags":{"type":"array","description":"Array of tags simple objects","items":{"$ref":"#/components/schemas/TagShort"}},"createDate":{"type":"string","description":"Timestamp of asset creation in ISO 8601 format with offset","format":"date-time","example":"2025-07-18T15:30:00+03:00"},"emergency":{"type":"boolean","description":"Marker if device is in emergency status, boolean","example":false},"assetTypeIcon":{"$ref":"#/components/schemas/IconDto"},"onlineSince":{"type":"integer","description":"Timestamp (epoch millis) when device last came online, null if offline","format":"int64","example":1774544090764},"offlineSince":{"type":"integer","description":"Timestamp (epoch millis) when device last went offline, null if online","format":"int64","example":1774544150663}}},"AssetHistoryFilter":{"type":"object","properties":{"from":{"type":"string","description":"Start date/time for filtering (inclusive), ISO 8601 format, mandatory","format":"date-time","example":"2025-07-01T00:00:00+03:00"},"to":{"type":"string","description":"End date/time for filtering (inclusive), ISO 8601 format, mandatory","format":"date-time","example":"2025-07-19T23:59:59+03:00"},"pageSize":{"type":"integer","description":"Page size for paginated results, mandatory","format":"int32","example":20},"pageNumber":{"type":"integer","description":"Page number for paginated results (zero-based), mandatory","format":"int32","example":0},"searchValue":{"type":"string","description":"General search text value to filter results, available values for name, id, site name, building name, floor plan name, optional","example":"Tracker"},"searchItemId":{"type":"string","description":"Specific item ID to filter results, optional","example":"9fabc3e2-1c1e-4d23-abc0-1234567890ab"},"assetFilter":{"type":"array","description":"List of asset IDs to filter, optional","example":["9fabc3e2-1c1e-4d23-abc0-1234567890ab","9fabc3e2-1c1e-4d23-abc0-1234567890a0"],"items":{"type":"string","description":"List of asset IDs to filter, optional","example":"[\"9fabc3e2-1c1e-4d23-abc0-1234567890ab\",\"9fabc3e2-1c1e-4d23-abc0-1234567890a0\"]"}},"siteFilter":{"type":"array","description":"List of site IDs to filter, optional","example":["9fabc3e2-1c1e-4d23-abc0-1234567890ab"],"items":{"type":"string","description":"List of site IDs to filter, optional","example":"[\"9fabc3e2-1c1e-4d23-abc0-1234567890ab\"]"}},"buildingFilter":{"type":"array","description":"List of building IDs to filter, optional","example":["9fabc3e2-1c1e-4d23-abc0-1234567890ab"],"items":{"type":"string","description":"List of building IDs to filter, optional","example":"[\"9fabc3e2-1c1e-4d23-abc0-1234567890ab\"]"}},"floorPlanFilter":{"type":"array","description":"List of floor plan IDs to filter, optional","example":["9fabc3e2-1c1e-4d23-abc0-1234567890ab"],"items":{"type":"string","description":"List of floor plan IDs to filter, optional","example":"[\"9fabc3e2-1c1e-4d23-abc0-1234567890ab\"]"}},"floorLevelFilter":{"type":"array","description":"List of floor levels to filter, optional","example":["1"],"items":{"type":"string","description":"List of floor levels to filter, optional","example":"[\"1\"]"}}},"description":"Filter parameters for querying asset history records"},"AssetHistoryItem":{"type":"object","properties":{"id":{"type":"string","description":"Unique ID of the history item","example":"e9a1a5f3-15fb-44d6-a75b-2d3fba4d6d2c"},"timestamp":{"type":"string","description":"Timestamp of the asset's location","format":"date-time","example":"2025-07-18T10:30:00+03:00"},"coordinateX":{"type":"number","description":"X coordinate of the asset (indoor)","example":15.3},"coordinateY":{"type":"number","description":"Y coordinate of the asset (indoor)","example":25.6},"latitude":{"type":"number","description":"Latitude (for outdoor map)","example":50.4501},"longitude":{"type":"number","description":"Longitude (for outdoor map)","example":30.5234},"altitude":{"type":"number","description":"Altitude in meters","example":5.0}},"description":"Single asset location and signal data point in history"},"AssetHistoryMapResponse":{"type":"object","properties":{"width":{"type":"number","description":"Width of the floor plan","example":120.5},"height":{"type":"number","description":"Height of the floor plan","example":85.75},"assetHistoryItems":{"type":"array","description":"List of asset history items","items":{"$ref":"#/components/schemas/AssetHistoryItem"}},"geofences":{"type":"array","description":"List of geofences","items":{"$ref":"#/components/schemas/GeofenceMapResponse"}},"buildingPins":{"type":"array","description":"List of pins representing buildings","items":{"$ref":"#/components/schemas/PointXyEntity"}}},"description":"Response for outdoor asset history map"},"AssetHistorySearchFilterRequest":{"type":"object","properties":{"tenantId":{"type":"string"},"fromMillis":{"type":"integer","format":"int64"},"toMillis":{"type":"integer","format":"int64"},"siteIds":{"type":"array","items":{"type":"string"}},"buildingIds":{"type":"array","items":{"type":"string"}},"floorIds":{"type":"array","items":{"type":"string"}},"floorLevels":{"type":"array","items":{"type":"string"}},"dataTypes":{"type":"array","items":{"type":"string"}},"assetIds":{"type":"array","items":{"type":"string"}},"homeSiteIds":{"type":"array","items":{"type":"string"}},"indoorLocationStatuses":{"type":"array","items":{"type":"string"}},"deviceEuis":{"type":"array","items":{"type":"string"}},"searchString":{"type":"string"},"orderBy":{"type":"string"},"orderDirection":{"type":"string"},"page":{"type":"integer","format":"int32"},"size":{"type":"integer","format":"int32"},"indoorPolygons":{"type":"array","items":{"$ref":"#/components/schemas/IndoorPolygon"}},"outdoorPolygons":{"type":"array","items":{"type":"array","items":{"$ref":"#/components/schemas/LocationCoordinates"}}}}},"AssetMapVisiblePreferencesDto":{"type":"object","properties":{"detailsElements":{"type":"array","description":"Elements visible on asset details page","example":["assets","sensors"],"items":{"type":"string","description":"Elements visible on asset details page","example":"[\"assets\",\"sensors\"]"}},"eventsElements":{"type":"array","description":"Asset event elements","example":["assets","sensors"],"items":{"type":"string","description":"Asset event elements","example":"[\"assets\",\"sensors\"]"}},"historyElements":{"type":"array","description":"Asset history elements","example":["assets","sensors"],"items":{"type":"string","description":"Asset history elements","example":"[\"assets\",\"sensors\"]"}},"mapType":{"type":"string","description":"Type of map selected by the user (e.g., satellite, standard)","example":"satellite"}}},"AssetPointXyEntity":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the point","example":"e9a1a5f3-15fb-44d6-a75b-2d3fba4d6d2c"},"coordinates":{"$ref":"#/components/schemas/FloorCoordinates"},"assetsInside":{"type":"integer","description":"Number of assets inside the building","format":"int32","example":42},"sensorsInside":{"type":"integer","description":"Number of sensors inside the building","format":"int32","example":10},"unacknowledgedEventsCount":{"type":"integer","description":"Number of unacknowledged events inside the building","format":"int32","example":10},"oldestUnacknowledgedEventDate":{"type":"string","description":"Date and time of the first unacknowledged event","format":"date-time","example":"2025-07-21T10:00:00Z"},"buildingId":{"type":"string","description":"Unique identifier for the building","example":"e9a1a5f3-15fb-44d6-a75b-2d3fba4d6d2c"},"assetTypeIcon":{"$ref":"#/components/schemas/IconDto"},"assetTypeName":{"type":"string","description":"Name of the asset type","example":"Fire Extinguisher"},"emergency":{"type":"boolean","description":"Indicates if the asset is an emergency asset","example":false}},"description":"Represents an asset point on XY coordinate system with additional metadata"},"AssetStateHistory":{"type":"object","properties":{"deviceEui":{"type":"string"},"timestamp":{"type":"string","format":"date-time"},"tenantId":{"type":"string","format":"uuid"},"assetId":{"type":"string","format":"uuid"},"outdoorCoords":{"type":"string"},"outdoorAltitude":{"type":"number","format":"double"},"outdoorSource":{"type":"string"},"outdoorAggStatus":{"type":"string"},"outdoorTimestamp":{"type":"string","format":"date-time"},"indoorCoords":{"type":"string"},"indoorSiteId":{"type":"string","format":"uuid"},"indoorBuildingId":{"type":"string","format":"uuid"},"indoorFloorId":{"type":"string","format":"uuid"},"indoorStatus":{"type":"string"},"indoorTimestamp":{"type":"string","format":"date-time"},"motionIsMoving":{"type":"boolean"},"motionStateStart":{"type":"string","format":"date-time"},"motionTimestamp":{"type":"string","format":"date-time"},"batteryPercentage":{"type":"integer","format":"int32"},"batteryDays":{"type":"integer","format":"int32"},"batteryTimestamp":{"type":"string","format":"date-time"},"emergencySos":{"type":"boolean"},"emergencySafetyHook":{"type":"boolean"},"emergencyFall":{"type":"boolean"},"emergencyPressure":{"type":"boolean"},"emergencyEar":{"type":"boolean"},"emergencyTimestamp":{"type":"string","format":"date-time"},"networkPsr":{"type":"number","format":"float"},"deviceData":{"type":"string"},"deviceDataTimestamp":{"type":"string","format":"date-time"},"nsUplink":{"type":"string"}},"description":"List of elements"},"AssetTableFilterRequest":{"type":"object","properties":{"pageSize":{"type":"integer","description":"Number of items per page, mandatory","format":"int32","example":50},"pageNumber":{"type":"integer","description":"Page number to retrieve (0-based index), mandatory","format":"int32","example":0},"tagFilter":{"type":"array","description":"List of tag IDs to filter assets by, optional","example":["aab62a49-a437-4ea2-83b1-43fce670dd0a","bab62a49-a437-4ea2-83b1-43fce670dd10"],"items":{"type":"string","description":"List of tag IDs to filter assets by, optional","example":"[\"aab62a49-a437-4ea2-83b1-43fce670dd0a\",\"bab62a49-a437-4ea2-83b1-43fce670dd10\"]"}},"homeSiteFilter":{"type":"array","description":"List of home site IDs to which asset was attached during creation, to filter assets by, optional","example":["aab62a49-a437-4ea2-83b1-43fce670dd0a","bab62a49-a437-4ea2-83b1-43fce670dd10"],"items":{"type":"string","description":"List of home site IDs to which asset was attached during creation, to filter assets by, optional","example":"[\"aab62a49-a437-4ea2-83b1-43fce670dd0a\",\"bab62a49-a437-4ea2-83b1-43fce670dd10\"]"}},"siteFilter":{"type":"array","description":"List of site IDs, where asset's position was tracked, to filter assets by, optional","example":["aab62a49-a437-4ea2-83b1-43fce670dd0a","bab62a49-a437-4ea2-83b1-43fce670dd10"],"items":{"type":"string","description":"List of site IDs, where asset's position was tracked, to filter assets by, optional","example":"[\"aab62a49-a437-4ea2-83b1-43fce670dd0a\",\"bab62a49-a437-4ea2-83b1-43fce670dd10\"]"}},"buildingFilter":{"type":"array","description":"List of building IDs, where asset's position was tracked, to filter assets by, optional","example":["aab62a49-a437-4ea2-83b1-43fce670dd0a","bab62a49-a437-4ea2-83b1-43fce670dd10"],"items":{"type":"string","description":"List of building IDs, where asset's position was tracked, to filter assets by, optional","example":"[\"aab62a49-a437-4ea2-83b1-43fce670dd0a\",\"bab62a49-a437-4ea2-83b1-43fce670dd10\"]"}},"floorPlanFilter":{"type":"array","description":"List of floor plan IDs, where asset's position was tracked, to filter assets by, optional","example":["aab62a49-a437-4ea2-83b1-43fce670dd0a","bab62a49-a437-4ea2-83b1-43fce670dd10"],"items":{"type":"string","description":"List of floor plan IDs, where asset's position was tracked, to filter assets by, optional","example":"[\"aab62a49-a437-4ea2-83b1-43fce670dd0a\",\"bab62a49-a437-4ea2-83b1-43fce670dd10\"]"}},"assetFilter":{"type":"array","description":"List of specific asset IDs to filter the output, optional","example":["aab62a49-a437-4ea2-83b1-43fce670dd0a","bab62a49-a437-4ea2-83b1-43fce670dd10"],"items":{"type":"string","description":"List of specific asset IDs to filter the output, optional","example":"[\"aab62a49-a437-4ea2-83b1-43fce670dd0a\",\"bab62a49-a437-4ea2-83b1-43fce670dd10\"]"}},"assetTypeFilter":{"type":"array","description":"List of asset type IDs to filter the output, optional","example":["aab62a49-a437-4ea2-83b1-43fce670dd0a","bab62a49-a437-4ea2-83b1-43fce670dd10"],"items":{"type":"string","description":"List of asset type IDs to filter the output, optional","example":"[\"aab62a49-a437-4ea2-83b1-43fce670dd0a\",\"bab62a49-a437-4ea2-83b1-43fce670dd10\"]"}},"deviceTypeFilter":{"type":"array","description":"List of device type IDs to filter the output, optional","example":["aab62a49-a437-4ea2-83b1-43fce670dd0a","bab62a49-a437-4ea2-83b1-43fce670dd10"],"items":{"type":"string","description":"List of device type IDs to filter the output, optional","example":"[\"aab62a49-a437-4ea2-83b1-43fce670dd0a\",\"bab62a49-a437-4ea2-83b1-43fce670dd10\"]"}},"indoorLocationStatuses":{"type":"array","description":"Filter by indoor location statuses, available value is AGGREGATED_LOCATION, for other should be null, optional","example":["AGGREGATED_LOCATION"],"items":{"type":"string","description":"Filter by indoor location statuses, available value is AGGREGATED_LOCATION, for other should be null, optional","example":"[\"AGGREGATED_LOCATION\"]"}},"searchValue":{"type":"string","description":"General search value to match against asset properties: name, ID, devEUI, site`s name, building`s name, floor plan`s name, optional","example":"My Asset"},"searchItemId":{"type":"string","description":"Specific asset ID to search for, return the correct page with the asset, optional","example":"aab62a49-a437-4ea2-83b1-43fce670dd0a"},"bottomLeft":{"type":"array","description":"Bottom-left coordinates of the bounding box (latitude, longitude) for location filtering","example":[50.4501,30.5234],"items":{"type":"number","description":"Bottom-left coordinates of the bounding box (latitude, longitude) for location filtering","format":"double"}},"topRight":{"type":"array","description":"Top-right coordinates of the bounding box (latitude, longitude) for location filtering","example":[50.4547,30.53],"items":{"type":"number","description":"Top-right coordinates of the bounding box (latitude, longitude) for location filtering","format":"double"}}},"description":"Request object for filtering and paginating the asset table"},"AssetTypeDto":{"required":["name"],"type":"object","properties":{"id":{"type":"string","description":"Asset Type ID, is required","example":"aab62a49-a437-4ea2-83b1-43fce670dd0a"},"name":{"type":"string","description":"Display name of the asset type","example":"My Asset Type"},"description":{"type":"string","description":"Optional description of the asset type","example":"Used for camion monitoring"},"tags":{"type":"array","description":"Array of tags simple objects","items":{"$ref":"#/components/schemas/TagShort"}},"icon":{"$ref":"#/components/schemas/IconDto"},"createDate":{"type":"string","description":"Timestamp of asset type creation in ISO 8601 format with offset","format":"date-time","example":"2025-07-18T15:30:00+03:00"}}},"AssetTypeFilterRequest":{"type":"object","properties":{"pageSize":{"type":"integer","description":"Page size (number of items per page), optional","format":"int32","example":20},"pageNumber":{"type":"integer","description":"Page number (0-based index), optional","format":"int32","example":0},"tagFilter":{"type":"array","description":"Filter by tag IDs, optional","example":["aab62a49-a437-4ea2-83b1-43fce670dd0a","aab62a49-a437-4ea2-83b1-43fce670dd0c"],"items":{"type":"string","description":"Filter by tag IDs, optional","example":"[\"aab62a49-a437-4ea2-83b1-43fce670dd0a\",\"aab62a49-a437-4ea2-83b1-43fce670dd0c\"]"}},"sortingParameters":{"type":"array","description":"Sorting parameters in the format 'field', available values: name, createDate","example":["name","createdDate"],"items":{"type":"string","description":"Sorting parameters in the format 'field', available values: name, createDate","example":"[\"name\",\"createdDate\"]"}},"searchValue":{"type":"string","description":"Search value to filter assets by name","example":"my value"}},"description":"Request object for filtering and paginating asset type list"},"AssetUpdateRequest":{"type":"object","properties":{"id":{"type":"string","description":"ID of the asset, mandatory","example":"aab62a49-a437-4ea2-83b1-43fce670dd0a"},"name":{"type":"string","description":"The name of the asset, mandatory","example":"My Asset"},"description":{"type":"string","description":"Description for the asset, optional","example":"Some description"},"typeId":{"type":"string","description":"ID of the bounded asset type, asset type should be created earlier, mandatory","example":"7482c99f-9093-4cb9-84ad-5f548cca432a"},"siteId":{"type":"string","description":"ID of site to which asset is attached, user should have permission to the site, mandatory","example":"aab62a49-a437-4ea2-83b1-43fce670dd0a"},"deviceEui":{"type":"string","description":"DevEUI of attached TEKTELIC device, optional","example":"647FDA0000000000"},"tags":{"type":"string","description":"ID of additional markers for grouping, tags should be added earlier, optional","example":"[\"7482c99f-9093-4cb9-84ad-5f548cca432a\",\"aab62a49-a437-4ea2-83b1-43fce670dd0a\"]"}}},"AssignBeaconRequest":{"required":["beaconId","coordinates","floorPlanId"],"type":"object","properties":{"beaconId":{"type":"string","description":"Unique identifier of the beacon to assign","example":"123e4567-e89b-12d3-a456-426614174000"},"floorPlanId":{"type":"string","description":"Unique identifier of the floor plan where the beacon will be assigned","example":"789e4567-e89b-12d3-a456-426614174999"},"coordinates":{"$ref":"#/components/schemas/FloorCoordinates"}},"description":"Request to assign a beacon to a floor plan with specific coordinates"},"AssignSensorRequest":{"required":["floorPlanId","id"],"type":"object","properties":{"id":{"type":"string","description":"Unique identifier of the entity, mandatory","example":"123e4567-e89b-12d3-a456-426614174000"},"coordinates":{"$ref":"#/components/schemas/FloorCoordinates"},"floorPlanId":{"type":"string","description":"Unique identifier of the floor plan where the sensor will be assigned, mandatory","example":"789e4567-e89b-12d3-a456-426614174999"}},"description":"Request to assign a sensor to a floor plan with specific coordinates"},"AuthApiKey":{"type":"object","properties":{"apiKey":{"type":"string","description":"Authorization token used for integration","example":"abc123xyz789"}},"description":"DTO for Authorization token"},"BaseBeaconRequest":{"type":"object","properties":{"id":{"type":"string","description":"ID of the beacon, mandatory for update","example":"a1b2c3d4-5678-90ef-gh12-34567890abcd"},"name":{"type":"string","description":"Name of the beacon, mandatory","example":"Entrance Beacon"},"description":{"type":"string","description":"Description of the beacon, optional","example":"Located at main entrance"},"tags":{"type":"array","description":"List of tag IDs associated with the beacon, additional markers for grouping, optional","example":["aab62a49-a437-4ea2-83b1-43fce670dd0a","aab62a49-a437-4ea2-83b1-43fce670dd0c"],"items":{"type":"string","description":"List of tag IDs associated with the beacon, additional markers for grouping, optional","example":"[\"aab62a49-a437-4ea2-83b1-43fce670dd0a\",\"aab62a49-a437-4ea2-83b1-43fce670dd0c\"]"}},"buildingId":{"type":"string","description":"ID of the building where the beacon is located, optional","example":"aab62a49-a437-4ea2-83b1-43fce670dd0a"},"floorPlanId":{"type":"string","description":"ID of the floor plan where the beacon is located, optional","example":"aab62a49-a437-4ea2-83b1-43fce670dd0a"},"beaconModelId":{"type":"string","description":"ID of the beacon model, mandatory for 3rd party beacons, automatically assigned by the system for TEKTELIC beacons","example":"aab62a49-a437-4ea2-83b1-43fce670dd0a"},"macAddress":{"type":"string","description":"MAC address of the beacon, mandatory for 3rd party beacons, automatically assigned by the system for TEKTELIC beacons","example":"00:1A:7D:DA:71:13"},"localizationMode":{"type":"string","description":"Mode of the beacon for indoor tracking, mandatory. Can be regular/nearest","example":"Regular"},"coordinateX":{"type":"number","description":"X-axis coordinate of indoor position on the floor plan, optional","example":120.75},"coordinateY":{"type":"number","description":"Y-axis coordinate of indoor position on the floor plan, optional","example":85.2},"batteryInstallDate":{"type":"string","description":"Calendar date of battery installation, optional. Is applicable only for 3rd party beacons","format":"date-time","example":"2025-07-01T10:00:00+03:00"},"discoveredTimeout":{"type":"integer","description":"Timeout value for TEKTELIC beacons in minutes after which the beacon is considered lost, optional","format":"int32","example":60},"batteryCapacity":{"type":"integer","description":"Capacity of installed battery is mAh. Applicable for 3rd party beacons, optional","format":"int32","example":1500},"deviceConsumption":{"type":"number","description":"Device power consumption of installed battery in mA, optional. Applicable for 3rd party beacons","format":"double","example":2.5},"deviceExtension":{"type":"boolean","description":"Set 'true' only in the inverted solution, optional","example":false,"default":false},"fixedPosition":{"type":"boolean","description":"Used only in the inverted solution, optional. Whether the beacon has a fixed position","example":true,"default":true}},"description":"Base request object for creating or updating a beacon"},"BaseTablePreferencesDto":{"required":["type"],"type":"object","properties":{"id":{"type":"string","description":"Unique identifier of the table preferences","example":"123e4567-e89b-12d3-a456-426614174000"},"itemsPerPage":{"type":"integer","description":"Number of items per page","format":"int32","example":20},"type":{"type":"string"}},"description":"Base class for user table preferences, polymorphic by 'type' property","discriminator":{"propertyName":"type","mapping":{"asset":"#/components/schemas/UserAssetTablePreferencesDto","floorPlan":"#/components/schemas/UserFloorTablePreferencesDto","home":"#/components/schemas/UserHomeTablePreferencesDto","sensor":"#/components/schemas/UserSensorTablePreferencesDto"}},"oneOf":[{"$ref":"#/components/schemas/UserAssetTablePreferencesDto"},{"$ref":"#/components/schemas/UserFloorTablePreferencesDto"},{"$ref":"#/components/schemas/UserHomeTablePreferencesDto"}]},"BeaconDeviceDto":{"type":"object","properties":{"beaconDto":{"$ref":"#/components/schemas/BeaconDto"},"deviceDto":{"$ref":"#/components/schemas/DeviceDto"}}},"BeaconDto":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier of the beacon","example":"a1b2c3d4-5678-90ef-gh12-34567890abcd"},"status":{"type":"string","description":"Operational status of the beacon: Offline, Online","example":"Offline"},"beaconModel":{"$ref":"#/components/schemas/SimpleModel"},"deviceEui":{"type":"string","description":"Device EUI (Extended Unique Identifier)","example":"647FDA0000000000"},"macAddress":{"type":"string","description":"MAC address of the beacon","example":"00:11:22:33:44:55"},"name":{"type":"string","description":"Name of the beacon","example":"Beacon A"},"localizationMode":{"type":"string","description":"Localization mode used by the beacon, available values: Nearest, Regular","example":"Nearest"},"site":{"$ref":"#/components/schemas/SimpleEntity"},"building":{"$ref":"#/components/schemas/SimpleEntity"},"floorPlan":{"$ref":"#/components/schemas/SimpleFloorPlan"},"coordinateX":{"type":"number","description":"X coordinate of the beacon on the floor plan","example":120.5},"coordinateY":{"type":"number","description":"Y coordinate of the beacon on the floor plan","example":85.3},"batteryInstallDate":{"type":"string","description":"Battery installation date (user-provided)","format":"date-time","example":"2025-07-01T10:00:00+03:00"},"battery":{"type":"integer","description":"Current battery level from payload","format":"int32","example":95},"batteryCapacity":{"type":"integer","description":"Battery capacity (user-provided)","format":"int32","example":1500},"deviceConsumption":{"type":"number","description":"Device power consumption in mA (user-provided)","format":"double","example":2.5},"rssi":{"type":"integer","description":"Received Signal Strength Indicator","format":"int32","example":-70},"snr":{"type":"number","description":"Signal-to-noise ratio","format":"double","example":12.7},"psr":{"type":"number","description":"Packet success ratio","format":"double","example":99.9},"beaconRssi":{"type":"integer","description":"RSSI from BLE device","format":"int32","example":-65},"lastDiscoveredDate":{"type":"string","description":"Last time the beacon was discovered","format":"date-time","example":"2025-07-19T08:15:00+03:00"},"discoveredTimeout":{"type":"integer","description":"Timeout in minutes after which the beacon is considered lost","format":"int32","example":60},"lastBatteryReport":{"type":"string","description":"Last time a battery report was received","format":"date-time","example":"2025-07-18T16:45:00+03:00"},"lastActivity":{"type":"string","description":"Last known activity timestamp from the device","format":"date-time","example":"2025-07-19T08:30:00+03:00"},"bleTrackerEui":{"type":"string","description":"EUI of the BLE tracker detected by the beacon","example":"BLE123456"},"bleAssetName":{"type":"string","description":"Name of the BLE asset detected by the beacon","example":"Tracker A"},"description":{"type":"string","description":"Optional description of the beacon","example":"Installed near entrance"},"lastModifiedDate":{"type":"string","description":"Timestamp of last modification","format":"date-time","example":"2025-07-18T14:00:00+03:00"},"lastModifiedBy":{"type":"string","description":"User who last modified the beacon","example":"admin_user"},"tags":{"type":"array","description":"Tags associated with the beacon","items":{"$ref":"#/components/schemas/TagShort"}},"createdDate":{"type":"string","description":"Timestamp when the beacon was created","format":"date-time","example":"2025-06-15T09:00:00+03:00"},"deviceExtension":{"type":"boolean","description":"Whether the beacon uses as a device","example":true},"fixedPosition":{"type":"boolean","description":"Whether the beacon has a fixed position","example":false}},"description":"Details of a beacon device"},"BeaconFilterRequest":{"type":"object","properties":{"pageSize":{"type":"integer","description":"Number of items per page, optional","format":"int32","example":20},"pageNumber":{"type":"integer","description":"Page number to retrieve, optional","format":"int32","example":0},"tagFilter":{"type":"array","description":"Filter by tag IDs, optional","example":["aab62a49-a437-4ea2-83b1-43fce670dd0a","aab62a49-a437-4ea2-83b1-43fce670dd0c"],"items":{"type":"string","description":"Filter by tag IDs, optional","example":"[\"aab62a49-a437-4ea2-83b1-43fce670dd0a\",\"aab62a49-a437-4ea2-83b1-43fce670dd0c\"]"}},"siteFilter":{"type":"array","description":"Filter by site IDs, optional","example":["aab62a49-a437-4ea2-83b1-43fce670dd0a","aab62a49-a437-4ea2-83b1-43fce670dd0c"],"items":{"type":"string","description":"Filter by site IDs, optional","example":"[\"aab62a49-a437-4ea2-83b1-43fce670dd0a\",\"aab62a49-a437-4ea2-83b1-43fce670dd0c\"]"}},"buildingFilter":{"type":"array","description":"Filter by building IDs, optional","example":["aab62a49-a437-4ea2-83b1-43fce670dd0a","aab62a49-a437-4ea2-83b1-43fce670dd0c"],"items":{"type":"string","description":"Filter by building IDs, optional","example":"[\"aab62a49-a437-4ea2-83b1-43fce670dd0a\",\"aab62a49-a437-4ea2-83b1-43fce670dd0c\"]"}},"floorPlanFilter":{"type":"array","description":"Filter by floor plan IDs, optional","example":["aab62a49-a437-4ea2-83b1-43fce670dd0a","aab62a49-a437-4ea2-83b1-43fce670dd0c"],"items":{"type":"string","description":"Filter by floor plan IDs, optional","example":"[\"aab62a49-a437-4ea2-83b1-43fce670dd0a\",\"aab62a49-a437-4ea2-83b1-43fce670dd0c\"]"}},"modelFilter":{"type":"array","description":"Filter by beacon model IDs, optional","example":["aab62a49-a437-4ea2-83b1-43fce670dd0a","aab62a49-a437-4ea2-83b1-43fce670dd0c"],"items":{"type":"string","description":"Filter by beacon model IDs, optional","example":"[\"aab62a49-a437-4ea2-83b1-43fce670dd0a\",\"aab62a49-a437-4ea2-83b1-43fce670dd0c\"]"}},"localizationModeFilter":{"type":"array","description":"Filter by localization modes (e.g., 'Nearest', 'Regular'), optional","example":["Nearest"],"items":{"type":"string","description":"Filter by localization modes (e.g., 'Nearest', 'Regular'), optional","example":"[\"Nearest\"]"}},"lastModifiedByFilter":{"type":"array","description":"Filter by users who last modified the beacon, optional","example":["example@email.com"],"items":{"type":"string","description":"Filter by users who last modified the beacon, optional","example":"[\"example@email.com\"]"}},"sortingParameters":{"type":"array","description":"Sorting parameters in the format 'fieldName', optional","example":"name","items":{"type":"string","description":"Sorting parameters in the format 'fieldName', optional","example":"name"}},"searchValue":{"type":"string","description":"Free-text search across beacon fields"}},"description":"Request object for filtering beacon data"},"BeaconMapResponse":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier of the beacon","example":"123e4567-e89b-12d3-a456-426614174000"},"name":{"type":"string","description":"Name of the beacon","example":"Beacon A1"},"localizationMode":{"type":"string","description":"Localization mode of the beacon, available values: Regular, Nearest","example":"Regular"},"coordinates":{"$ref":"#/components/schemas/FloorCoordinates"}},"description":"Details of a beacon mapped on a floor plan"},"BeaconMapVisiblePreferencesDto":{"type":"object","properties":{"detailsElements":{"type":"array","description":"Elements visible on beacon details page","example":["assets","sensors"],"items":{"type":"string","description":"Elements visible on beacon details page","example":"[\"assets\",\"sensors\"]"}},"eventsElements":{"type":"array","description":"Beacon event elements","example":["assets","sensors"],"items":{"type":"string","description":"Beacon event elements","example":"[\"assets\",\"sensors\"]"}},"mapType":{"type":"string","description":"Type of map selected by the user (e.g., satellite, standard)","example":"satellite"}}},"BeaconModelDto":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier of the beacon model","example":"123e4567-e89b-12d3-a456-426614174000"},"name":{"type":"string","description":"Name of the beacon model","example":"My Beacon Model"},"description":{"type":"string","description":"Description of the beacon model","example":"High-performance indoor positioning beacon"},"tags":{"type":"array","description":"List of associated tags","items":{"$ref":"#/components/schemas/TagShort"}},"createDate":{"type":"string","description":"Timestamp of when the beacon model was created","format":"date-time","example":"2025-07-01T09:30:00+03:00"}},"description":"Entity representing a beacon model"},"BeaconModelFilterRequest":{"type":"object","properties":{"pageSize":{"type":"integer","description":"Number of items per page, optional","format":"int32","example":10},"pageNumber":{"type":"integer","description":"Page number to retrieve, starts with 0, optional","format":"int32","example":0},"tagFilter":{"type":"array","description":"List of tag IDs to filter beacon models by, optional","example":["aab62a49-a437-4ea2-83b1-43fce670dd0a","aab62a49-a437-4ea2-83b1-43fce670dd0c"],"items":{"type":"string","description":"List of tag IDs to filter beacon models by, optional","example":"[\"aab62a49-a437-4ea2-83b1-43fce670dd0a\",\"aab62a49-a437-4ea2-83b1-43fce670dd0c\"]"}},"sortingParameters":{"type":"array","description":"Sorting parameters. Use field names: name, id, createDate. Optional","example":["name","createDate"],"items":{"type":"string","description":"Sorting parameters. Use field names: name, id, createDate. Optional","example":"[\"name\",\"createDate\"]"}},"searchValue":{"type":"string","description":"Text to search in beacon model name or id, optional","example":"LoRa Beacon"}},"description":"Filter and pagination parameters for retrieving beacon models."},"BeaconModelRequest":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier of the beacon model, mandatory for update, null for create","example":"123e4567-e89b-12d3-a456-426614174000"},"name":{"type":"string","description":"Name of the beacon model, mandatory","example":"Beacon v2"},"description":{"type":"string","description":"Description of the beacon model, optional","example":"High-performance indoor positioning beacon"},"tags":{"type":"array","description":"List of tag IDs associated with this beacon model, , additional markers for grouping, optional","example":["aab62a49-a437-4ea2-83b1-43fce670dd0a","aab62a49-a437-4ea2-83b1-43fce670dd0c"],"items":{"type":"string","description":"List of tag IDs associated with this beacon model, , additional markers for grouping, optional","example":"[\"aab62a49-a437-4ea2-83b1-43fce670dd0a\",\"aab62a49-a437-4ea2-83b1-43fce670dd0c\"]"}}},"description":"Request body for creating or updating a beacon model"},"Building filter request":{"type":"object","properties":{"pageSize":{"type":"integer","description":"Number of items per page, optional","format":"int32","example":10},"pageNumber":{"type":"integer","description":"Page number starting from 0, optional","format":"int32","example":0},"searchValue":{"type":"string","description":"Search text value to filter by building name, or description, or ID, optional","example":"Main"},"siteFilter":{"type":"array","description":"Filter by site IDs with existing buildings to filter the output, optional","items":{"type":"string","description":"Filter by site IDs with existing buildings to filter the output, optional"}},"tagFilter":{"type":"array","description":"Filter by tag IDs, optional","items":{"type":"string","description":"Filter by tag IDs, optional"}}},"description":"Request to filter buildings with pagination and optional filters"},"BuildingDto":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier of the building","example":"123e4567-e89b-12d3-a456-426614174000"},"name":{"type":"string","description":"Name of the building","example":"Headquarters Tower"},"tenantId":{"type":"string","description":"Unique identifier of the tenant owning the building","example":"123e4567-e89b-12d3-a456-426614174000"},"site":{"$ref":"#/components/schemas/SimpleEntity"},"coordinates":{"type":"array","description":"List of coordinates outlining the building footprint","example":[{"lat":40.712776,"lng":-74.005974},{"lat":40.71278,"lng":-74.006}],"items":{"$ref":"#/components/schemas/Coordinates"}},"description":{"type":"string","description":"Description of the building","example":"Main office building with 20 floors"},"address":{"type":"string","description":"Physical address of the building","example":"123 Main St, New York, NY"},"assetsInside":{"type":"integer","description":"Number of assets inside the building","format":"int32","example":42},"sensorsInside":{"type":"integer","description":"Number of sensors inside the building","format":"int32","example":10},"unacknowledgedEventsCount":{"type":"integer","description":"Number of unacknowledged events inside the building","format":"int32","example":10},"oldestUnacknowledgedEventDate":{"type":"string","description":"Date and time of the first unacknowledged event","format":"date-time","example":"2025-07-21T10:00:00Z"},"floorPlans":{"type":"integer","description":"Number of floor plans available for the building","format":"int32","example":5},"createDate":{"type":"string","description":"Date and time when the building was created","format":"date-time","example":"2025-07-21T10:00:00Z"},"tags":{"type":"array","description":"List of tags associated with the building","items":{"$ref":"#/components/schemas/TagShort"}}},"description":"Data transfer object representing building details"},"BuildingMapVisiblePreferencesDto":{"type":"object","properties":{"detailsElements":{"type":"array","description":"Elements visible on building details page","example":["assets","sensors"],"items":{"type":"string","description":"Elements visible on building details page","example":"[\"assets\",\"sensors\"]"}},"mapType":{"type":"string","description":"Type of map selected by the user (e.g., satellite, standard)","example":"satellite"}}},"BuildingPinsResponse":{"type":"object","properties":{"buildingId":{"type":"string","description":"Unique identifier of the building","example":"123e4567-e89b-12d3-a456-426614174000"},"pins":{"type":"array","description":"List of pins (points) associated with the building","items":{"$ref":"#/components/schemas/PointXyEntity"}}},"description":"Response containing building ID and list of pins with coordinates"},"BuildingRequest":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier of the building, mandatory for update","example":"123e4567-e89b-12d3-a456-426614174000"},"name":{"type":"string","description":"Name of the building, mandatory","example":"Headquarters Tower"},"siteId":{"type":"string","description":"Unique identifier of the site where building is located, mandatory","example":"987e6543-e21b-12d3-a456-426614174999"},"coordinates":{"type":"array","description":"Real coordinates of the building's location, mandatory","example":[{"lat":40.712776,"lng":-74.005974},{"lat":40.71278,"lng":-74.006}],"items":{"$ref":"#/components/schemas/Coordinates"}},"description":{"type":"string","description":"Description of the building, optional","example":"Main office building with 20 floors"},"address":{"type":"string","description":"Physical address of the building, optional","example":"123 Main St, New York, NY"},"tags":{"type":"array","description":"List of tag IDs associated with the building, additional markers for grouping, optional","example":["123e4567-e89b-12d3-a456-426614174000","123e4567-e89b-12d3-a456-426614174001"],"items":{"type":"string","description":"List of tag IDs associated with the building, additional markers for grouping, optional","example":"[\"123e4567-e89b-12d3-a456-426614174000\",\"123e4567-e89b-12d3-a456-426614174001\"]"}},"buildingPin":{"$ref":"#/components/schemas/Coordinates"}},"description":"Request payload for creating or updating a building"},"BulkApplyResult":{"required":["failed","successful"],"type":"object","properties":{"successful":{"type":"array","description":"List of successfully applied entries","items":{"$ref":"#/components/schemas/BulkApplyResultEntry"}},"failed":{"type":"array","description":"List of entries where application failed","items":{"$ref":"#/components/schemas/BulkApplyResultEntry"}}},"description":"Result of a bulk configuration apply operation, detailing successes and failures"},"BulkApplyResultEntry":{"required":["id"],"type":"object","properties":{"id":{"type":"string","description":"ID of the entity","example":"7482c99f-9093-4cb9-84ad-5f548cca432a"},"message":{"type":"string","description":"Result message or error description","example":"To send configuration downlinks to devices, you must first set up downlink settings"}},"description":"Entry representing the result of applying configuration to a single entity"},"CheckDeleteAssetTypeResponse":{"type":"object","properties":{"associatedAssetsCount":{"type":"integer","description":"Number of assets associated with this asset type","format":"int32","example":2},"accessRightsToSites":{"type":"string","description":"Description of access rights for related sites, available values: full, partial, absent","example":"partial"}},"description":"Deletion eligibility response for a specific asset type"},"CheckDeleteAssetTypesInBulkResponse":{"type":"object","properties":{"associatedAssetsCount":{"type":"integer","description":"Number of assets associated with this asset type","format":"int32","example":2},"accessRightsToSites":{"type":"string","description":"Description of access rights for related sites, available values: full, partial, absent","example":"partial"},"associatedAssetTypesCount":{"type":"integer","description":"Number of asset types to be deleted","format":"int32","example":2}}},"CheckDeleteBeaconModelResponse":{"type":"object","properties":{"associatedBeaconsCount":{"type":"integer","description":"Number of beacons associated with the beacon model","format":"int32","example":3},"accessRightsToSites":{"type":"string","description":"Information about user access rights to sites related to the beacon model, available values: full, absent, partial","example":"partial"}},"description":"Response object indicating if a beacon model can be deleted"},"CheckDeleteBeaconModelsInBulkResponse":{"type":"object","properties":{"associatedBeaconsCount":{"type":"integer","description":"Number of beacons associated with the beacon model","format":"int32","example":3},"accessRightsToSites":{"type":"string","description":"Information about user access rights to sites related to the beacon model, available values: full, absent, partial","example":"partial"},"associatedBeaconModelsCount":{"type":"integer","description":"Number of beacon models associated with the requested beacon models","format":"int32","example":5}},"description":"Response object for bulk check-delete of beacon models, including counts of associated beacons and models."},"CheckDeleteBuildingResponse":{"type":"object","properties":{"canDelete":{"type":"boolean","description":"Flag indicating if the building can be deleted","example":false},"associatedFloorPlans":{"type":"integer","description":"Number of floor plans associated with the building","format":"int64","example":3}},"description":"Response indicating whether a building can be deleted and how many floor plans are associated with it."},"CheckDeleteEntityResponse":{"type":"object","properties":{"canDelete":{"type":"boolean","description":"Indicates if the entity can be deleted","example":true}},"description":"Response indicating whether an entity can be safely deleted"},"ConfigurationDto":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier of the configuration","example":"aab62a49-a437-4ea2-83b1-43fce670dd0a"},"name":{"type":"string","description":"Name of the configuration","example":"Reset to Defaults"},"description":{"type":"string","description":"Description of the configuration","example":"Set default configuration for device SEAL"},"deviceFamily":{"$ref":"#/components/schemas/DeviceFamilyDto"},"tags":{"type":"array","description":"List of tags associated with the configuration","items":{"$ref":"#/components/schemas/TagShort"}},"downlink":{"type":"string","description":"Downlink payload as a hex string","example":"A1B2C3D4"},"port":{"type":"integer","description":"Port number used for downlink","format":"int32","example":10},"createDate":{"type":"string","description":"Date and time when the configuration was created","format":"date-time","example":"2025-07-21T12:34:56+03:00"},"lastModifiedDate":{"type":"string","description":"Date and time when the configuration was last modified","format":"date-time","example":"2025-07-22T08:20:00+03:00"},"lastModifiedBy":{"type":"string","description":"User who last modified the configuration","example":"admin"}},"description":"Data Transfer Object representing a device configuration"},"ConfigurationFilterRequest":{"type":"object","properties":{"pageSize":{"type":"integer","description":"Number of items per page, optional","format":"int32","example":20},"pageNumber":{"type":"integer","description":"Page number starting from 0, optional","format":"int32","example":0},"tagFilter":{"type":"array","description":"Filter by tag IDs, optional","example":["aab62a49-a437-4ea2-83b1-43fce670dd0a","aab62a49-a437-4ea2-83b1-43fce670dd01"],"items":{"type":"string","description":"Filter by tag IDs, optional","example":"[\"aab62a49-a437-4ea2-83b1-43fce670dd0a\",\"aab62a49-a437-4ea2-83b1-43fce670dd01\"]"}},"deviceFamilyFilter":{"type":"array","description":"Filter by device family IDs, optional","example":["aab62a49-a437-4ea2-83b1-43fce670dd0a","aab62a49-a437-4ea2-83b1-43fce670dd01"],"items":{"type":"string","description":"Filter by device family IDs, optional","example":"[\"aab62a49-a437-4ea2-83b1-43fce670dd0a\",\"aab62a49-a437-4ea2-83b1-43fce670dd01\"]"}},"lastModifiedByFilter":{"type":"array","description":"Filter by usernames, that modified a configuration last, optional","example":["admin@email.com","user1@email.com"],"items":{"type":"string","description":"Filter by usernames, that modified a configuration last, optional","example":"[\"admin@email.com\",\"user1@email.com\"]"}},"sortingParameter":{"type":"string","description":"Sorting parameter, available values: name, createDate, optional","example":"name"},"searchValue":{"type":"string","description":"Search text value for searching by name, ID, username that modified a configuration last","example":"default"}},"description":"Request payload for filtering and paginating configurations"},"ConfigurationRequest":{"required":["deviceFamilyId","downlink","name","port"],"type":"object","properties":{"name":{"type":"string","description":"Name of the configuration, mandatory","example":"Reset to Defaults"},"description":{"type":"string","description":"Description of the configuration, optional","example":"Set default configuration for device SEAL"},"deviceFamilyId":{"type":"string","description":"ID of the device family this configuration belongs to, mandatory","example":"aab62a49-a437-4ea2-83b1-43fce670dd0a"},"downlink":{"type":"string","description":"Downlink payload as a hex string, mandatory","example":"A1B2C3D4"},"port":{"type":"integer","description":"Port number used for downlink, mandatory","format":"int32","example":10},"tags":{"type":"array","description":"List of tags associated with the configuration, additional markers for grouping, optional","example":["aab62a49-a437-4ea2-83b1-43fce670dd0a","aab62a49-a437-4ea2-83b1-43fce670dd01"],"items":{"type":"string","description":"List of tags associated with the configuration, additional markers for grouping, optional","example":"[\"aab62a49-a437-4ea2-83b1-43fce670dd0a\",\"aab62a49-a437-4ea2-83b1-43fce670dd01\"]"}}},"description":"Request payload for creating or updating a device configuration"},"Coordinates":{"type":"object","properties":{"lat":{"type":"number","description":"Latitude value","example":50.4501},"lng":{"type":"number","description":"Longitude value","example":30.5234}},"description":"Coordinates with latitude and longitude values","example":[{"lat":40.712776,"lng":-74.005974},{"lat":40.71278,"lng":-74.006}]},"CreateAssetRequest":{"type":"object","properties":{"name":{"type":"string","description":"The name of the asset, mandatory","example":"My Asset"},"description":{"type":"string","description":"Description for the asset, optional","example":"Some description"},"typeId":{"type":"string","description":"ID of the bounded asset type, asset type should be created earlier, mandatory","example":"7482c99f-9093-4cb9-84ad-5f548cca432a"},"siteId":{"type":"string","description":"ID of site to which asset is attached, user should have permission to the site, mandatory","example":"aab62a49-a437-4ea2-83b1-43fce670dd0a"},"deviceEui":{"type":"string","description":"DevEUI of attached TEKTELIC device, optional","example":"647FDA0000000000"},"tags":{"type":"string","description":"ID of additional markers for grouping, tags should be added earlier, optional","example":"[\"7482c99f-9093-4cb9-84ad-5f548cca432a\",\"aab62a49-a437-4ea2-83b1-43fce670dd0a\"]"}}},"CreateAssetTypeRequest":{"required":["name"],"type":"object","properties":{"name":{"type":"string","description":"Icon name, mandatory","example":"My Icon"},"description":{"type":"string","description":"Optional description of the asset type, optional","example":"Used for camion monitoring"},"iconSvg":{"type":"string","description":"SVG content of the icon, either raw base64-encoded string, if value is absent the default svg is set. Optional","example":"PD94bWwgdmVyc..."},"iconColor":{"type":"string","description":"Hex color code of the icon, available colors: TURQUOISE, GREEN, YELLOW, ORANGE, RED, LIGHTBLUE, BLUE, PURPLE, PINK, BROWN. If value is absent the default color is set, optional","example":"BLUE"},"iconOpacity":{"type":"integer","description":"Opacity level of the icon (0 to 100). By default opacity is set 100. Optional","format":"int32","example":85},"iconSize":{"type":"integer","description":"Size of the icon in bytes. Required to get correct value, by default 352, optional","format":"int64","example":2048},"tags":{"type":"string","description":"List of tag`s ID for the asset type, additional markers for grouping, tags should be added earlier, optional","example":"[\"7482c99f-9093-4cb9-84ad-5f548cca432a\",\"aab62a49-a437-4ea2-83b1-43fce670dd0a\"]"}},"description":"Request to create a new asset type"},"CreateBeaconRequest":{"type":"object","properties":{"id":{"type":"string","description":"ID of the beacon, mandatory for update","example":"a1b2c3d4-5678-90ef-gh12-34567890abcd"},"name":{"type":"string","description":"Name of the beacon, mandatory","example":"Entrance Beacon"},"description":{"type":"string","description":"Description of the beacon, optional","example":"Located at main entrance"},"tags":{"type":"array","description":"List of tag IDs associated with the beacon, additional markers for grouping, optional","example":["aab62a49-a437-4ea2-83b1-43fce670dd0a","aab62a49-a437-4ea2-83b1-43fce670dd0c"],"items":{"type":"string","description":"List of tag IDs associated with the beacon, additional markers for grouping, optional","example":"[\"aab62a49-a437-4ea2-83b1-43fce670dd0a\",\"aab62a49-a437-4ea2-83b1-43fce670dd0c\"]"}},"buildingId":{"type":"string","description":"ID of the building where the beacon is located, optional","example":"aab62a49-a437-4ea2-83b1-43fce670dd0a"},"floorPlanId":{"type":"string","description":"ID of the floor plan where the beacon is located, optional","example":"aab62a49-a437-4ea2-83b1-43fce670dd0a"},"beaconModelId":{"type":"string","description":"ID of the beacon model, mandatory for 3rd party beacons, automatically assigned by the system for TEKTELIC beacons","example":"aab62a49-a437-4ea2-83b1-43fce670dd0a"},"macAddress":{"type":"string","description":"MAC address of the beacon, mandatory for 3rd party beacons, automatically assigned by the system for TEKTELIC beacons","example":"00:1A:7D:DA:71:13"},"localizationMode":{"type":"string","description":"Mode of the beacon for indoor tracking, mandatory. Can be regular/nearest","example":"Regular"},"coordinateX":{"type":"number","description":"X-axis coordinate of indoor position on the floor plan, optional","example":120.75},"coordinateY":{"type":"number","description":"Y-axis coordinate of indoor position on the floor plan, optional","example":85.2},"batteryInstallDate":{"type":"string","description":"Calendar date of battery installation, optional. Is applicable only for 3rd party beacons","format":"date-time","example":"2025-07-01T10:00:00+03:00"},"discoveredTimeout":{"type":"integer","description":"Timeout value for TEKTELIC beacons in minutes after which the beacon is considered lost, optional","format":"int32","example":60},"batteryCapacity":{"type":"integer","description":"Capacity of installed battery is mAh. Applicable for 3rd party beacons, optional","format":"int32","example":1500},"deviceConsumption":{"type":"number","description":"Device power consumption of installed battery in mA, optional. Applicable for 3rd party beacons","format":"double","example":2.5},"deviceExtension":{"type":"boolean","description":"Set 'true' only in the inverted solution, optional","example":false,"default":false},"fixedPosition":{"type":"boolean","description":"Used only in the inverted solution, optional. Whether the beacon has a fixed position","example":true,"default":true},"deviceEui":{"type":"string","description":"Device EUI (Extended Unique Identifier) of the beacon, for TEKTELIC beacon is mandatory","example":"647FDA0000000000"},"siteId":{"type":"string","description":"ID of the site where the beacon is installed, mandatory","example":"aab62a49-a437-4ea2-83b1-43fce670dd0a"}}},"CreateFloorPlanRequest":{"type":"object","properties":{"name":{"type":"string","description":"Name of the floor plan, mandatory","example":"Lobby Level 1"},"floorNumber":{"type":"string","description":"Floor plan level, optional","example":"1"},"siteId":{"type":"string","description":"ID of the site to attach the floor plan, mandatory","example":"9c4d2b80-f1cd-4a95-a47c-e292cdad13c1"},"buildingId":{"type":"string","description":"ID of the building to attach the floor plan, mandatory","example":"9c4d2b80-f1cd-4a95-a47c-e292cdad13c1"},"assetId":{"type":"string","description":"Optional asset ID associated with this floor plan","example":"9c4d2b80-f1cd-4a95-a47c-e292cdad13c1"},"tags":{"type":"array","description":"Tag IDs associated with the floor plan, additional markers for grouping, optional","example":["f2d435b1-aeaf-4f02-b0f6-0e57f83d671a","f2d435b1-aeaf-4f02-b0f6-0e57f83d6710"],"items":{"type":"string","description":"Tag IDs associated with the floor plan, additional markers for grouping, optional","example":"[\"f2d435b1-aeaf-4f02-b0f6-0e57f83d671a\",\"f2d435b1-aeaf-4f02-b0f6-0e57f83d6710\"]"}},"description":{"type":"string","description":"Floor plan description","example":"First floor lobby and reception area"},"distance":{"type":"number","description":"Real-world distance between the two assigned by user dots to calculate the indoor size, in meters. Mandatory","format":"double","example":50.0},"pixels":{"type":"number","description":"Number of pixels between two dots to calculate the indoor size, mandatory","format":"double","example":10.0},"mapHeight":{"type":"integer","description":"Height of the floor plan picture uploaded by the user in pixels","format":"int64","example":1024},"mapWidth":{"type":"integer","description":"Width of the floor plan picture uploaded by the user in pixels","format":"int64","example":2048}},"description":"Request payload to create a new floor plan"},"CreateGeofenceRequest":{"required":["color","type"],"type":"object","properties":{"name":{"type":"string","description":"Name of the geofence, mandatory","example":"Main Entrance Zone"},"description":{"type":"string","description":"Description of the geofence, optional","example":"Restricted access area at the main gate"},"type":{"type":"string","description":"Type of geofence, available values: polygon, rectangle. Mandatory","example":"rectangle"},"color":{"type":"string","description":"Color used to display the geofence, mandatory","example":"#00FF00"},"opacity":{"type":"number","description":"Opacity value for display in percents, from 0(transparent) to 100, optional","format":"double","example":60},"tagIds":{"type":"array","description":"List of tag IDs associated with the geofence, additional markers for grouping, optional","example":["aab62a49-a437-4ea2-83b1-43fce670dd0a","aab62a49-a437-4ea2-83b1-43fce670dd0c"],"items":{"type":"string","description":"List of tag IDs associated with the geofence, additional markers for grouping, optional","example":"[\"aab62a49-a437-4ea2-83b1-43fce670dd0a\",\"aab62a49-a437-4ea2-83b1-43fce670dd0c\"]"}},"coordinates":{"type":"array","description":"Coordinates defining the shape of the geofence, optional","example":{"x":154.23,"y":89.77},"items":{"$ref":"#/components/schemas/FloorCoordinates"}},"location":{"$ref":"#/components/schemas/Location"}},"description":"Request for creating Geofence"},"CreateInvertedBeaconDeviceRequest":{"type":"object","properties":{"beacon":{"$ref":"#/components/schemas/CreateBeaconRequest"},"device":{"$ref":"#/components/schemas/DeviceRequest"}},"description":"Request for creation inverted beacon/device"},"CreateSensorOnPremRequest":{"type":"object","properties":{"name":{"type":"string","description":"Human-readable name of the sensor, mandatory","example":"My Sensor"},"inactivityTimeout":{"type":"integer","description":"Timeout in minutes after which the sensor is considered lost, mandatory","format":"int32","example":60},"tags":{"type":"array","description":"List of tag IDs associated with the sensor, additional filter marker, optional","example":["aab62a49-a437-4ea2-83b1-43fce670dd0a","aab62a49-a437-4ea2-83b1-43fce670dd0c"],"items":{"type":"string","description":"List of tag IDs associated with the sensor, additional filter marker, optional","example":"[\"aab62a49-a437-4ea2-83b1-43fce670dd0a\",\"aab62a49-a437-4ea2-83b1-43fce670dd0c\"]"}},"description":{"type":"string","description":"Description of the sensor, optional","example":"Located at main entrance"},"buildingId":{"type":"string","description":"ID of the building where the sensor is located, optional","example":"aab62a49-a437-4ea2-83b1-43fce670dd0a"},"floorPlanId":{"type":"string","description":"ID of the floor plan where the sensor is located, optional","example":"aab62a49-a437-4ea2-83b1-43fce670dd0a"},"coordinateX":{"type":"number","description":"X coordinate of the sensor on the floor plan, optional","example":120.75},"coordinateY":{"type":"number","description":"Y coordinate of the sensor on the floor plan, optional","example":85.2},"latitude":{"type":"number","description":"Latitude of the sensor on the map, optional","example":40.7128},"longitude":{"type":"number","description":"Longitude of the sensor on the map, optional","example":-74.006},"deviceEui":{"type":"string","description":"EUI of the device, mandatory","example":"647FDA0000000000"},"homeSiteId":{"type":"string","description":"ID of the site where the sensor is located, mandatory","example":"aab62a49-a437-4ea2-83b1-43fce670dd0a"},"sensorModelId":{"type":"string","description":"ID of the sensor model, mandatory","example":"aab62a49-a437-4ea2-83b1-43fce670dd0a"}}},"CreateSensorRequest":{"type":"object","properties":{"name":{"type":"string","description":"Human-readable name of the sensor, mandatory","example":"My Sensor"},"inactivityTimeout":{"type":"integer","description":"Timeout in minutes after which the sensor is considered lost, mandatory","format":"int32","example":60},"tags":{"type":"array","description":"List of tag IDs associated with the sensor, additional filter marker, optional","example":["aab62a49-a437-4ea2-83b1-43fce670dd0a","aab62a49-a437-4ea2-83b1-43fce670dd0c"],"items":{"type":"string","description":"List of tag IDs associated with the sensor, additional filter marker, optional","example":"[\"aab62a49-a437-4ea2-83b1-43fce670dd0a\",\"aab62a49-a437-4ea2-83b1-43fce670dd0c\"]"}},"description":{"type":"string","description":"Description of the sensor, optional","example":"Located at main entrance"},"buildingId":{"type":"string","description":"ID of the building where the sensor is located, optional","example":"aab62a49-a437-4ea2-83b1-43fce670dd0a"},"floorPlanId":{"type":"string","description":"ID of the floor plan where the sensor is located, optional","example":"aab62a49-a437-4ea2-83b1-43fce670dd0a"},"coordinateX":{"type":"number","description":"X coordinate of the sensor on the floor plan, optional","example":120.75},"coordinateY":{"type":"number","description":"Y coordinate of the sensor on the floor plan, optional","example":85.2},"latitude":{"type":"number","description":"Latitude of the sensor on the map, optional","example":40.7128},"longitude":{"type":"number","description":"Longitude of the sensor on the map, optional","example":-74.006},"serialNumber":{"type":"string","description":"Serial number of the device, optional","example":"1234A5678"},"tcode":{"type":"string","description":"TCode of the device, optional","example":"T000XXXX"},"revision":{"type":"string","description":"Revision number of the device, optional","example":"A1"},"deviceEui":{"type":"string","description":"EUI of the device, optional","example":"647FDA0000000000"},"homeSiteId":{"type":"string","description":"ID of the site where the sensor is located, mandatory","example":"aab62a49-a437-4ea2-83b1-43fce670dd0a"},"sensorModelId":{"type":"string","description":"ID of the sensor model, mandatory for non-tektelic sensor","example":"aab62a49-a437-4ea2-83b1-43fce670dd0a"}},"description":"Request body for creating a sensor"},"CsvListUploadResponse":{"type":"object","properties":{"errorMessageCodes":{"type":"array","description":"List of validation or processing errors per row in the uploaded file","example":[{"message":"Missing required column: name"}],"items":{"$ref":"#/components/schemas/ErrorMessage"}},"savedRowCount":{"type":"integer","description":"Number of rows successfully saved to the database","format":"int32","example":25}},"description":"Response for CSV file upload containing saved row count and validation errors"},"DetailedSiteDto":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier of the site","example":"123e4567-e89b-12d3-a456-426614174000"},"name":{"type":"string","description":"Name of the site","example":"Main Distribution Center"},"assetsInside":{"type":"integer","description":"Number of assets located inside the site","format":"int32","example":27},"sensorsInside":{"type":"integer","description":"Number of sensors located inside the site","format":"int32","example":100},"createDate":{"type":"string","description":"Date and time when the site was created","format":"date-time","example":"2025-07-23T10:15:30+03:00"},"description":{"type":"string","description":"Human-readable description of the site","example":"This site handles all regional logistics."},"tags":{"type":"array","description":"List of associated tags","items":{"$ref":"#/components/schemas/TagShort"}}},"description":"Detailed information about a site, including metadata and tags"},"DeviceCoordinatesRequest":{"required":["id"],"type":"object","properties":{"id":{"type":"string","description":"Unique identifier of the entity, mandatory","example":"123e4567-e89b-12d3-a456-426614174000"},"coordinates":{"$ref":"#/components/schemas/FloorCoordinates"}},"description":"Request containing entity ID and its new coordinates on the floor"},"DeviceCsvListUploadResponse":{"type":"object","properties":{"errorMessageCodes":{"type":"array","description":"List of validation or processing errors per row in the uploaded file","example":[{"message":"Missing required column: name"}],"items":{"$ref":"#/components/schemas/ErrorMessage"}},"savedRowCount":{"type":"integer","description":"Number of rows successfully saved to the database","format":"int32","example":25},"requireSemtechApiKey":{"type":"boolean"}}},"DeviceDto":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier of the device","example":"123e4567-e89b-12d3-a456-426614174000"},"deviceEui":{"type":"string","description":"Device EUI (Extended Unique Identifier)","example":"647FDA0000000000"},"name":{"type":"string","description":"Human-readable name of the device","example":"My Device"},"deviceType":{"type":"string","description":"Type of the device","example":"SEAL"},"description":{"type":"string","description":"Optional description of the device","example":"Mounted near entrance"},"site":{"$ref":"#/components/schemas/SimpleEntity"},"status":{"type":"string","description":"Current status of the device, Offline or Online","example":"Offline"},"tags":{"type":"array","description":"List of tags associated with the device","items":{"$ref":"#/components/schemas/TagShort"}},"inactivityTimeout":{"type":"integer","description":"Timeout in minutes after which the device is considered inactive","format":"int32","example":180},"lastActivity":{"type":"string","description":"Timestamp of the last activity from the device","format":"date-time","example":"2024-07-21T15:30:00+03:00"},"batteryStatus":{"type":"integer","description":"Battery level/status of the device in percentage or specific scale","format":"int32","example":85},"asset":{"$ref":"#/components/schemas/SimpleAsset"},"createDate":{"type":"string","description":"Timestamp when the device was created","format":"date-time","example":"2023-12-01T10:15:30+03:00"},"rssi":{"type":"integer","description":"Received Signal Strength Indicator","format":"int32","example":-75},"snr":{"type":"number","description":"Signal-to-Noise Ratio","format":"double","example":7.5},"psr":{"type":"number","description":"Packet Success Rate","format":"double","example":98.7},"beaconExtension":{"type":"boolean","description":"Indicates if the device is used as a beacon","example":false},"fixedPosition":{"type":"boolean","description":"Indicates if the device as a beacon has a fixed position","example":true},"onlineSince":{"type":"integer","description":"Timestamp (epoch millis) when device last came online, null if offline","format":"int64","example":1774544090764},"offlineSince":{"type":"integer","description":"Timestamp (epoch millis) when device last went offline, null if online","format":"int64","example":1774544150663}},"description":"Data Transfer Object representing a device"},"DeviceEuiResponse":{"type":"object","properties":{"deviceEui":{"type":"string","description":"The device's unique EUI identifier","example":"647FDA0000000000"}},"description":"Response containing a single Device EUI (Extended Unique Identifier)"},"DeviceFamilyDto":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier of the device family","example":"aab62a49-a437-4ea2-83b1-43fce670dd0a"},"name":{"type":"string","description":"Name of the device family","example":"All TEKTELIC devices"}},"description":"Data Transfer Object representing a device family"},"DeviceFilterRequest":{"type":"object","properties":{"pageSize":{"type":"integer","description":"Number of devices per page, optional","format":"int32","example":20},"pageNumber":{"type":"integer","description":"Current page number (0-indexed), optional","format":"int32","example":0},"sortingParameters":{"type":"array","description":"List of sorting parameters. Available values: name, deviceEui, deviceType, inactivityTimeout, lastActivity, createDate, site (for site name). Optional","example":["name"],"items":{"type":"string","description":"List of sorting parameters. Available values: name, deviceEui, deviceType, inactivityTimeout, lastActivity, createDate, site (for site name). Optional","example":"[\"name\"]"}},"homeSiteFilter":{"type":"array","description":"Filter by site IDs to which device was attached during creation, optional","example":["aab62a49-a437-4ea2-83b1-43fce670dd0a","aab62a49-a437-4ea2-83b1-43fce670dd0c"],"items":{"type":"string","description":"Filter by site IDs to which device was attached during creation, optional","example":"[\"aab62a49-a437-4ea2-83b1-43fce670dd0a\",\"aab62a49-a437-4ea2-83b1-43fce670dd0c\"]"}},"deviceTypeFilter":{"type":"array","description":"Filter by device types, optional","example":["SEAL","PELICAN"],"items":{"type":"string","description":"Filter by device types, optional","example":"[\"SEAL\",\"PELICAN\"]"}},"tagFilter":{"type":"array","description":"Filter by tag IDs, optional","example":["aab62a49-a437-4ea2-83b1-43fce670dd0a","aab62a49-a437-4ea2-83b1-43fce670dd0c"],"items":{"type":"string","description":"Filter by tag IDs, optional","example":"[\"aab62a49-a437-4ea2-83b1-43fce670dd0a\",\"aab62a49-a437-4ea2-83b1-43fce670dd0c\"]"}},"inactivityTimeoutFilter":{"type":"array","description":"Filter by inactivity timeout values (in minutes)","example":[30,60,90],"items":{"type":"integer","description":"Filter by inactivity timeout values (in minutes)","format":"int32"}},"searchValue":{"type":"string","description":"Search keyword for searching by name or ID","example":"beacon123"}},"description":"Request payload to filter devices with pagination, search, and filter options"},"DeviceFullInfo":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier of the device","example":"123e4567-e89b-12d3-a456-426614174000"},"deviceEui":{"type":"string","description":"Device EUI (Extended Unique Identifier)","example":"647FDA0000000000"},"name":{"type":"string","description":"Human-readable name of the device","example":"My Device"},"deviceType":{"type":"string","description":"Type of the device","example":"SEAL"},"description":{"type":"string","description":"Optional description of the device","example":"Mounted near entrance"},"site":{"$ref":"#/components/schemas/SimpleEntity"},"status":{"type":"string","description":"Current status of the device, Offline or Online","example":"Offline"},"tags":{"type":"array","description":"List of tags associated with the device","items":{"$ref":"#/components/schemas/TagShort"}},"inactivityTimeout":{"type":"integer","description":"Timeout in minutes after which the device is considered inactive","format":"int32","example":180},"lastActivity":{"type":"string","description":"Timestamp of the last activity from the device","format":"date-time","example":"2024-07-21T15:30:00+03:00"},"batteryStatus":{"type":"integer","description":"Battery level/status of the device in percentage or specific scale","format":"int32","example":85},"asset":{"$ref":"#/components/schemas/SimpleAsset"},"createDate":{"type":"string","description":"Timestamp when the device was created","format":"date-time","example":"2023-12-01T10:15:30+03:00"},"rssi":{"type":"integer","description":"Received Signal Strength Indicator","format":"int32","example":-75},"snr":{"type":"number","description":"Signal-to-Noise Ratio","format":"double","example":7.5},"psr":{"type":"number","description":"Packet Success Rate","format":"double","example":98.7},"beaconExtension":{"type":"boolean","description":"Indicates if the device is used as a beacon","example":false},"fixedPosition":{"type":"boolean","description":"Indicates if the device as a beacon has a fixed position","example":true},"onlineSince":{"type":"integer","description":"Timestamp (epoch millis) when device last came online, null if offline","format":"int64","example":1774544090764},"offlineSince":{"type":"integer","description":"Timestamp (epoch millis) when device last went offline, null if online","format":"int64","example":1774544150663},"indoorLocation":{"$ref":"#/components/schemas/IndoorLocation"},"outdoorLocation":{"$ref":"#/components/schemas/OutdoorLocationEntity"}},"description":"Full device information, including indoor and outdoor locations"},"DeviceMapVisiblePreferencesDto":{"type":"object","properties":{"detailsElements":{"type":"array","description":"Elements visible on device details page","example":["assets","sensors"],"items":{"type":"string","description":"Elements visible on device details page","example":"[\"assets\",\"sensors\"]"}},"eventsElements":{"type":"array","description":"Device event elements","example":["assets","sensors"],"items":{"type":"string","description":"Device event elements","example":"[\"assets\",\"sensors\"]"}},"mapType":{"type":"string","description":"Type of map selected by the user (e.g., satellite, standard)","example":"satellite"}}},"DeviceOnPremRequest":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier of the device, mandatory for update","example":"123e4567-e89b-12d3-a456-426614174000"},"deviceEui":{"type":"string","description":"DevEUI of the physical TEKTELIC device, optional","example":"647FDA0000000000"},"name":{"type":"string","description":"Human-readable name of the device, optional","example":"My Device"},"frequency":{"type":"integer","description":"Defines the time of the device reporting in minutes, since the last uplink after which\nthe device's status will change to offline. By default is set 60 min, optional\n","format":"int32","example":60},"siteId":{"type":"string","description":"ID of the site the device is assigned to, mandatory","example":"123e4567-e89b-12d3-a456-426614174000"},"assetId":{"type":"string","description":"ID of the asset associated with the device, optional","example":"123e4567-e89b-12d3-a456-4266141740006"},"description":{"type":"string","description":"Optional description of the device, optional","example":"Located in Zone A, Floor 2"},"tags":{"type":"array","description":"List of tag IDs associated with the device, additional markers for grouping, optional","example":["aab62a49-a437-4ea2-83b1-43fce670dd0a","aab62a49-a437-4ea2-83b1-43fce670dd0c"],"items":{"type":"string","description":"List of tag IDs associated with the device, additional markers for grouping, optional","example":"[\"aab62a49-a437-4ea2-83b1-43fce670dd0a\",\"aab62a49-a437-4ea2-83b1-43fce670dd0c\"]"}},"beaconExtension":{"type":"boolean","description":"Flag indicating whether the device is used as a beacon, used only in inverted solution, optional","example":false},"fixedPosition":{"type":"boolean","description":"Flag indicating whether the device as a beacon is fixed in position, used only in inverted solution, optional","example":true},"deviceType":{"type":"string"}},"description":"Request body for creating or updating a device on-prem"},"DeviceRequest":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier of the device, mandatory for update","example":"123e4567-e89b-12d3-a456-426614174000"},"deviceEui":{"type":"string","description":"DevEUI of the physical TEKTELIC device, optional","example":"647FDA0000000000"},"name":{"type":"string","description":"Human-readable name of the device, optional","example":"My Device"},"frequency":{"type":"integer","description":"Defines the time of the device reporting in minutes, since the last uplink after which\nthe device's status will change to offline. By default is set 60 min, optional\n","format":"int32","example":60},"siteId":{"type":"string","description":"ID of the site the device is assigned to, mandatory","example":"123e4567-e89b-12d3-a456-426614174000"},"assetId":{"type":"string","description":"ID of the asset associated with the device, optional","example":"123e4567-e89b-12d3-a456-4266141740006"},"description":{"type":"string","description":"Optional description of the device, optional","example":"Located in Zone A, Floor 2"},"tags":{"type":"array","description":"List of tag IDs associated with the device, additional markers for grouping, optional","example":["aab62a49-a437-4ea2-83b1-43fce670dd0a","aab62a49-a437-4ea2-83b1-43fce670dd0c"],"items":{"type":"string","description":"List of tag IDs associated with the device, additional markers for grouping, optional","example":"[\"aab62a49-a437-4ea2-83b1-43fce670dd0a\",\"aab62a49-a437-4ea2-83b1-43fce670dd0c\"]"}},"beaconExtension":{"type":"boolean","description":"Flag indicating whether the device is used as a beacon, used only in inverted solution, optional","example":false},"fixedPosition":{"type":"boolean","description":"Flag indicating whether the device as a beacon is fixed in position, used only in inverted solution, optional","example":true},"serialNumber":{"type":"string","description":"Serial number of the physical TEKTELIC device, optional","example":"1234A5678"},"tcode":{"type":"string","description":"T-Code of the physical TEKTELIC device, optional","example":"T000XXXX"},"revision":{"type":"string","description":"Revision number of the physical TEKTELIC device, optional","example":"A1"}},"description":"Request body for creating or updating a device"},"DeviceShort":{"type":"object","properties":{"deviceEui":{"type":"string","description":"Device EUI (Extended Unique Identifier)","example":"647FDA0000000000"},"siteId":{"type":"string","description":"ID of the site where the device is located","example":"123e4567-e89b-12d3-a456-426614174000"}},"description":"A minimal representation of a device contains its EUI and site ID"},"EditBeaconRequest":{"type":"object","properties":{"name":{"type":"string","description":"Display name of the beacon, mandatory","example":"My Beacon"},"modelId":{"type":"string","description":"ID of the beacon model, mandatory","example":"123e4567-e89b-12d3-a456-426614174000"},"deviceEui":{"type":"string","description":"Device EUI (Extended Unique Identifier), optional","example":"647FDA0000000000"},"macAddress":{"type":"string","description":"MAC address of the beacon device, mandatory","example":"00:1A:7D:DA:71:13"},"localizationMode":{"type":"string","description":"Localization mode (Regular, Nearest), mandatory","example":"Regular"},"description":{"type":"string","description":"Optional description of the beacon, optional","example":"Located near the main entrance for tracking entry events"},"tags":{"type":"array","description":"List of tag identifiers associated with the beacon, additional marker for grouping, optional","example":["aab62a49-a437-4ea2-83b1-43fce670dd0a","aab62a49-a437-4ea2-83b1-43fce670dd0c"],"items":{"type":"string","description":"List of tag identifiers associated with the beacon, additional marker for grouping, optional","example":"[\"aab62a49-a437-4ea2-83b1-43fce670dd0a\",\"aab62a49-a437-4ea2-83b1-43fce670dd0c\"]"}}},"description":"Request body for editing an existing beacon's details"},"EditSensorOnMapRequest":{"type":"object","properties":{"name":{"type":"string","description":"Display name of the sensor, mandatory","example":"Breeze A1"},"description":{"type":"string","description":"Optional description of the sensor","example":"Located near the main entrance for tracking temperature"},"tags":{"type":"array","description":"List of tag IDs associated with the sensor, additional filter marker, optional","example":["aab62a49-a437-4ea2-83b1-43fce670dd0a","aab62a49-a437-4ea2-83b1-43fce670dd0c"],"items":{"type":"string","description":"List of tag IDs associated with the sensor, additional filter marker, optional","example":"[\"aab62a49-a437-4ea2-83b1-43fce670dd0a\",\"aab62a49-a437-4ea2-83b1-43fce670dd0c\"]"}}},"description":"Request body for editing an existing sensor's details on a map"},"EntityListResponse":{"type":"object","properties":{"content":{"type":"array","description":"List of elements","items":{"type":"object","description":"List of elements"}},"numberOfElements":{"type":"integer","description":"Total number of elements","format":"int64"}},"description":"Base class for list responses"},"EntityListResponseAssetStateHistory":{"type":"object","properties":{"content":{"type":"array","description":"List of elements","items":{"$ref":"#/components/schemas/AssetStateHistory"}},"numberOfElements":{"type":"integer","description":"Total number of elements","format":"int64"}},"description":"Base class for list responses"},"EntityListResponseFloorPlanDto":{"type":"object","properties":{"content":{"type":"array","description":"List of elements","items":{"$ref":"#/components/schemas/FloorPlanDto"}},"numberOfElements":{"type":"integer","description":"Total number of elements","format":"int64"}},"description":"Base class for list responses"},"EntityListResponsePage":{"type":"object","properties":{"content":{"type":"array","description":"List of elements","items":{"type":"object","description":"List of elements"}},"numberOfElements":{"type":"integer","description":"Total number of elements","format":"int64"},"page":{"type":"integer","description":"Current page number","format":"int32"}},"description":"Paginated list response"},"EntityWithSiteIdSimpleEntity":{"type":"object","properties":{"id":{"type":"string","description":"The Entity`s ID, is required","example":"aab62a49-a437-4ea2-83b1-43fce670dd0a"},"name":{"type":"string","description":"The Entity`s name, is required","example":"My Entity"},"siteId":{"type":"string","description":"ID of the site to which the entity belongs","example":"123e4567-e89b-12d3-a456-426614174000"}},"description":"A simplified entity with an associated site ID"},"ErrorMessage":{"type":"object","properties":{"message":{"type":"string","example":"Something went wrong. Please try again or contact TEKTELIC Support"}}},"EventConditionRequest":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier of the event rule, mandatory for update","example":"f2d435b1-aeaf-4f02-b0f6-0e57f83d671a"},"name":{"type":"string","description":"Name of the event rule, mandatory","example":"Low Battery Alert"},"siteId":{"type":"string","description":"Site ID where this rule applies","example":"f2d435b1-aeaf-4f02-b0f6-0e57f83d671a"},"tags":{"type":"array","description":"Tag IDs associated with the event rule, additional markers for grouping, optional","example":["f2d435b1-aeaf-4f02-b0f6-0e57f83d671a","f2d435b1-aeaf-4f02-b0f6-0e57f83d6710"],"items":{"type":"string","description":"Tag IDs associated with the event rule, additional markers for grouping, optional","example":"[\"f2d435b1-aeaf-4f02-b0f6-0e57f83d671a\",\"f2d435b1-aeaf-4f02-b0f6-0e57f83d6710\"]"}},"description":{"type":"string","description":"Description of the event rule, optional","example":"Triggers alert when battery level is low"},"eventType":{"type":"string","description":"Type of the event, available values: assetExitsGeofence, assetEntersGeofence, fallDetectedTrigger, sosAlertTrigger, lowBattery, temperatureThresholdTrigger, humidityThresholdTrigger, probeTemperatureThresholdTrigger, deviceOnline, deviceOffline. Mandatory","example":"lowBattery"},"geofenceId":{"type":"string","description":"ID of the geofence associated with this event rule, mandatory for assetExitsGeofence, assetEntersGeofence event types","example":"f2d435b1-aeaf-4f02-b0f6-0e57f83d671a"},"assetIds":{"type":"array","description":"List of asset IDs associated with this event rule, optional. If null the rule is triggered for all assets","example":["f2d435b1-aeaf-4f02-b0f6-0e57f83d671a","f2d435b1-aeaf-4f02-b0f6-0e57f83d6710"],"items":{"type":"string","description":"List of asset IDs associated with this event rule, optional. If null the rule is triggered for all assets","example":"[\"f2d435b1-aeaf-4f02-b0f6-0e57f83d671a\",\"f2d435b1-aeaf-4f02-b0f6-0e57f83d6710\"]"}},"webhookData":{"$ref":"#/components/schemas/WebhookDataDto"},"lowBatteryLevel":{"type":"integer","description":"Battery level threshold to trigger low battery event, by default 20, optional","format":"int32","example":15},"enabled":{"type":"boolean","description":"Whether this event rule is enabled or not, mandatory","example":true},"createDate":{"type":"string","description":"Creation date of the event rule, is automatically generated by the system, mandatory for update","format":"date-time","example":"2025-07-22T12:34:56+03:00"},"comparisonOperator":{"type":"string","description":"Comparison operator for threshold comparison, available options: EXISTS, NOT_EXISTS","example":"EXISTS","enum":["EQ","NE","LT","LTE","GT","GTE","IN","NOT_IN","EXISTS","NOT_EXISTS"]},"deviceEuis":{"type":"array","description":"List of device EUIs associated with this event rule, optional. If null the rule is triggered for all sensors","example":["647FDA0000000000","647FDA0000000001"],"items":{"type":"string","description":"List of device EUIs associated with this event rule, optional. If null the rule is triggered for all sensors","example":"[\"647FDA0000000000\",\"647FDA0000000001\"]"}}},"description":"Request object for creating a new event condition"},"EventDetails":{"type":"object","properties":{"eventId":{"type":"string","description":"Unique identifier of the event","example":"f2d435b1-aeaf-4f02-b0f6-0e57f83d671a"},"eventRuleName":{"type":"string","description":"Name of the event rule that triggered this event","example":"Low Battery Alert"},"eventDetails":{"type":"object","additionalProperties":{"type":"object","description":"Map of detailed event attributes and values","example":{"macAddress":"12:A0:23:00:F1:00","site":"f2d435b1-aeaf-4f02-b0f6-0e57f83d671a","deviceEui":"647FDA0000000000","floorPlan":"f2d435b1-aeaf-4f02-b0f6-0e57f83d671a","battery":31,"deviceName":"My Device","building":"f2d435b1-aeaf-4f02-b0f6-0e57f83d671a","coordinateY":12.36,"coordinateX":10.4,"latitude":-40.15623,"longitude":120.04562}},"description":"Map of detailed event attributes and values","example":{"macAddress":"12:A0:23:00:F1:00","site":"f2d435b1-aeaf-4f02-b0f6-0e57f83d671a","deviceEui":"647FDA0000000000","floorPlan":"f2d435b1-aeaf-4f02-b0f6-0e57f83d671a","battery":31,"deviceName":"My Device","building":"f2d435b1-aeaf-4f02-b0f6-0e57f83d671a","coordinateY":12.36,"coordinateX":10.4,"latitude":-40.15623,"longitude":120.04562}}},"description":"Detailed information about a specific event"},"EventFilterRequest":{"type":"object","properties":{"pageSize":{"type":"integer","description":"Number of items per page, mandatory","format":"int32","example":20},"pageNumber":{"type":"integer","description":"Page number to retrieve, starts with 0, mandatory","format":"int32","example":0},"searchValue":{"type":"string","description":"Free text to search by asset name, asset ID, event ID, site name, building name, floor plan name. Optional","example":"emergency"},"assetTypeFilter":{"type":"array","description":"Filter events by asset type IDs, optional","example":["f2d435b1-aeaf-4f02-b0f6-0e57f83d671a","f2d435b1-aeaf-4f02-b0f6-0e57f83d6710"],"items":{"type":"string","description":"Filter events by asset type IDs, optional","example":"[\"f2d435b1-aeaf-4f02-b0f6-0e57f83d671a\",\"f2d435b1-aeaf-4f02-b0f6-0e57f83d6710\"]"}},"eventTypeFilter":{"type":"array","description":"Filter by event type name, optional","example":["safetyButtonOn","lowBattery"],"items":{"type":"string","description":"Type of the event that was triggered.","example":"[\"safetyButtonOn\",\"lowBattery\"]","enum":["assetEntersGeofence","assetExitsGeofence","assetInsideGeofence","assetOutsideGeofence","safetyButtonOn","safetyButtonOff","safetyHookOn","safetyHookOff","safetyFallOn","safetyFallOff","lowBattery","temperatureThresholdTrigger","humidityThresholdTrigger","probeTemperatureThresholdTrigger","deviceOnlineTrigger","deviceOfflineTrigger"]}},"eventStatusFilter":{"type":"array","description":"Filter by event statuses, optional","example":["acknowledged","unacknowledged"],"items":{"type":"string","description":"Status of the event: whether it has been acknowledged or not.","example":"[\"acknowledged\",\"unacknowledged\"]","enum":["acknowledged","unacknowledged"]}},"siteFilter":{"type":"array","description":"Filter by site IDs where an event was triggered, optional","example":["f2d435b1-aeaf-4f02-b0f6-0e57f83d671a","f2d435b1-aeaf-4f02-b0f6-0e57f83d6710"],"items":{"type":"string","description":"Filter by site IDs where an event was triggered, optional","example":"[\"f2d435b1-aeaf-4f02-b0f6-0e57f83d671a\",\"f2d435b1-aeaf-4f02-b0f6-0e57f83d6710\"]"}},"buildingFilter":{"type":"array","description":"Filter by building IDs where an event was triggered, optional","example":["f2d435b1-aeaf-4f02-b0f6-0e57f83d671a","f2d435b1-aeaf-4f02-b0f6-0e57f83d6710"],"items":{"type":"string","description":"Filter by building IDs where an event was triggered, optional","example":"[\"f2d435b1-aeaf-4f02-b0f6-0e57f83d671a\",\"f2d435b1-aeaf-4f02-b0f6-0e57f83d6710\"]"}},"floorPlanFilter":{"type":"array","description":"Filter by floor plan IDs where an event was triggered, optional","example":["f2d435b1-aeaf-4f02-b0f6-0e57f83d671a","f2d435b1-aeaf-4f02-b0f6-0e57f83d6710"],"items":{"type":"string","description":"Filter by floor plan IDs where an event was triggered, optional","example":"[\"f2d435b1-aeaf-4f02-b0f6-0e57f83d671a\",\"f2d435b1-aeaf-4f02-b0f6-0e57f83d6710\"]"}},"assetFilter":{"type":"array","description":"Filter by asset IDs that triggered the event, optional","example":["f2d435b1-aeaf-4f02-b0f6-0e57f83d671a","f2d435b1-aeaf-4f02-b0f6-0e57f83d6710"],"items":{"type":"string","description":"Filter by asset IDs that triggered the event, optional","example":"[\"f2d435b1-aeaf-4f02-b0f6-0e57f83d671a\",\"f2d435b1-aeaf-4f02-b0f6-0e57f83d6710\"]"}},"sensorFilter":{"type":"array","description":"Filter by sensor IDs that triggered the event, optional","example":["f2d435b1-aeaf-4f02-b0f6-0e57f83d671a","f2d435b1-aeaf-4f02-b0f6-0e57f83d6710"],"items":{"type":"string","description":"Filter by sensor IDs that triggered the event, optional","example":"[\"f2d435b1-aeaf-4f02-b0f6-0e57f83d671a\",\"f2d435b1-aeaf-4f02-b0f6-0e57f83d6710\"]"}},"geofenceFilter":{"type":"array","description":"Filter by geofence IDs that triggered the event, optional","example":["f2d435b1-aeaf-4f02-b0f6-0e57f83d671a","f2d435b1-aeaf-4f02-b0f6-0e57f83d6710"],"items":{"type":"string","description":"Filter by geofence IDs that triggered the event, optional","example":"[\"f2d435b1-aeaf-4f02-b0f6-0e57f83d671a\",\"f2d435b1-aeaf-4f02-b0f6-0e57f83d6710\"]"}},"sortingParameter":{"type":"string","description":"Sorting parameter field name. Available values: timestamp, assetName, assetId, siteName, buildingName, floorName, assetType, siteId, buildingId, floorId. Optional","example":"timestamp"},"from":{"type":"string","description":"Start date-time (inclusive) in ISO 8601 format, mandatory","format":"date-time","example":"2024-12-01T00:00:00Z"},"to":{"type":"string","description":"End date-time (inclusive) in ISO 8601 format, mandatory","format":"date-time","example":"2024-12-31T23:59:59Z"}},"description":"Request object for filtering events based on various criteria."},"EventFilterResponse":{"type":"object","properties":{"sosAlertTrigger":{"type":"boolean"},"fallDetectedTrigger":{"type":"boolean"},"safetyHookAlarm":{"type":"boolean"},"assetEntersGeofence":{"type":"boolean"},"lowBattery":{"type":"boolean"}}},"EventRuleFilterRequest":{"type":"object","properties":{"ruleStateFilter":{"type":"array","description":"Rule state to filter the output. Can be enabled or disabled, optional","example":["disabled"],"items":{"type":"string","description":"Rule state to filter the output. Can be enabled or disabled, optional","example":"[\"disabled\"]"}},"eventTriggerFilter":{"type":"array","description":"Filter the output by existing event trigger type. Available values: assetExitsGeofence, assetEntersGeofence, fallDetectedTrigger, sosAlertTrigger,  lowBattery. Optional","example":["sosAlertTrigger"],"items":{"type":"string","description":"Filter the output by existing event trigger type. Available values: assetExitsGeofence, assetEntersGeofence, fallDetectedTrigger, sosAlertTrigger,  lowBattery. Optional","example":"[\"sosAlertTrigger\"]"}},"site":{"type":"string","description":"Filter the output by existing site ID, optional","example":"[\"f2d435b1-aeaf-4f02-b0f6-0e57f83d671a\",\"f2d435b1-aeaf-4f02-b0f6-0e57f83d6710\"]","deprecated":true},"siteFilter":{"type":"array","description":"Filter the output by site IDs, optional","example":["f2d435b1-aeaf-4f02-b0f6-0e57f83d671a","f2d435b1-aeaf-4f02-b0f6-0e57f83d6710"],"items":{"type":"string","description":"Filter the output by site IDs, optional","example":"[\"f2d435b1-aeaf-4f02-b0f6-0e57f83d671a\",\"f2d435b1-aeaf-4f02-b0f6-0e57f83d6710\"]"}},"tagFilter":{"type":"array","description":"Filter the output by existing tag ID, optional","example":["f2d435b1-aeaf-4f02-b0f6-0e57f83d671a","f2d435b1-aeaf-4f02-b0f6-0e57f83d6710"],"items":{"type":"string","description":"Filter the output by existing tag ID, optional","example":"[\"f2d435b1-aeaf-4f02-b0f6-0e57f83d671a\",\"f2d435b1-aeaf-4f02-b0f6-0e57f83d6710\"]"}},"searchValue":{"type":"string","description":"Free text to search by name, description, id. Optional","example":"Low battery"},"pageSize":{"type":"integer","description":"Number of items per page, mandatory","format":"int32","example":20},"pageNumber":{"type":"integer","description":"Page number to retrieve, starts with 0, mandatory","format":"int32","example":0}}},"EventRuleRequest":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier of the event rule, mandatory for update","example":"f2d435b1-aeaf-4f02-b0f6-0e57f83d671a"},"name":{"type":"string","description":"Name of the event rule, mandatory","example":"Low Battery Alert"},"siteId":{"type":"string","description":"Site ID where this rule applies","example":"f2d435b1-aeaf-4f02-b0f6-0e57f83d671a"},"tags":{"type":"array","description":"Tag IDs associated with the event rule, additional markers for grouping, optional","example":["f2d435b1-aeaf-4f02-b0f6-0e57f83d671a","f2d435b1-aeaf-4f02-b0f6-0e57f83d6710"],"items":{"type":"string","description":"Tag IDs associated with the event rule, additional markers for grouping, optional","example":"[\"f2d435b1-aeaf-4f02-b0f6-0e57f83d671a\",\"f2d435b1-aeaf-4f02-b0f6-0e57f83d6710\"]"}},"description":{"type":"string","description":"Description of the event rule, optional","example":"Triggers alert when battery level is low"},"eventType":{"type":"string","description":"Type of the event, available values: assetExitsGeofence, assetEntersGeofence, fallDetectedTrigger, sosAlertTrigger, lowBattery, temperatureThresholdTrigger, humidityThresholdTrigger, probeTemperatureThresholdTrigger, deviceOnline, deviceOffline. Mandatory","example":"lowBattery"},"geofenceId":{"type":"string","description":"ID of the geofence associated with this event rule, mandatory for assetExitsGeofence, assetEntersGeofence event types","example":"f2d435b1-aeaf-4f02-b0f6-0e57f83d671a"},"assetIds":{"type":"array","description":"List of asset IDs associated with this event rule, optional. If null the rule is triggered for all assets","example":["f2d435b1-aeaf-4f02-b0f6-0e57f83d671a","f2d435b1-aeaf-4f02-b0f6-0e57f83d6710"],"items":{"type":"string","description":"List of asset IDs associated with this event rule, optional. If null the rule is triggered for all assets","example":"[\"f2d435b1-aeaf-4f02-b0f6-0e57f83d671a\",\"f2d435b1-aeaf-4f02-b0f6-0e57f83d6710\"]"}},"webhookData":{"$ref":"#/components/schemas/WebhookDataDto"},"lowBatteryLevel":{"type":"integer","description":"Battery level threshold to trigger low battery event, by default 20, optional","format":"int32","example":15},"enabled":{"type":"boolean","description":"Whether this event rule is enabled or not, mandatory","example":true},"createDate":{"type":"string","description":"Creation date of the event rule, is automatically generated by the system, mandatory for update","format":"date-time","example":"2025-07-22T12:34:56+03:00"}},"description":"Request object to create or update an event rule"},"EventThresholdRuleRequest":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier of the event rule, mandatory for update","example":"f2d435b1-aeaf-4f02-b0f6-0e57f83d671a"},"name":{"type":"string","description":"Name of the event rule, mandatory","example":"Low Battery Alert"},"siteId":{"type":"string","description":"Site ID where this rule applies","example":"f2d435b1-aeaf-4f02-b0f6-0e57f83d671a"},"tags":{"type":"array","description":"Tag IDs associated with the event rule, additional markers for grouping, optional","example":["f2d435b1-aeaf-4f02-b0f6-0e57f83d671a","f2d435b1-aeaf-4f02-b0f6-0e57f83d6710"],"items":{"type":"string","description":"Tag IDs associated with the event rule, additional markers for grouping, optional","example":"[\"f2d435b1-aeaf-4f02-b0f6-0e57f83d671a\",\"f2d435b1-aeaf-4f02-b0f6-0e57f83d6710\"]"}},"description":{"type":"string","description":"Description of the event rule, optional","example":"Triggers alert when battery level is low"},"eventType":{"type":"string","description":"Type of the event, available values: assetExitsGeofence, assetEntersGeofence, fallDetectedTrigger, sosAlertTrigger, lowBattery, temperatureThresholdTrigger, humidityThresholdTrigger, probeTemperatureThresholdTrigger, deviceOnline, deviceOffline. Mandatory","example":"lowBattery"},"geofenceId":{"type":"string","description":"ID of the geofence associated with this event rule, mandatory for assetExitsGeofence, assetEntersGeofence event types","example":"f2d435b1-aeaf-4f02-b0f6-0e57f83d671a"},"assetIds":{"type":"array","description":"List of asset IDs associated with this event rule, optional. If null the rule is triggered for all assets","example":["f2d435b1-aeaf-4f02-b0f6-0e57f83d671a","f2d435b1-aeaf-4f02-b0f6-0e57f83d6710"],"items":{"type":"string","description":"List of asset IDs associated with this event rule, optional. If null the rule is triggered for all assets","example":"[\"f2d435b1-aeaf-4f02-b0f6-0e57f83d671a\",\"f2d435b1-aeaf-4f02-b0f6-0e57f83d6710\"]"}},"webhookData":{"$ref":"#/components/schemas/WebhookDataDto"},"lowBatteryLevel":{"type":"integer","description":"Battery level threshold to trigger low battery event, by default 20, optional","format":"int32","example":15},"enabled":{"type":"boolean","description":"Whether this event rule is enabled or not, mandatory","example":true},"createDate":{"type":"string","description":"Creation date of the event rule, is automatically generated by the system, mandatory for update","format":"date-time","example":"2025-07-22T12:34:56+03:00"},"min":{"type":"number","description":"Minimum threshold value for the parameter, double","format":"double","example":10.5},"max":{"type":"number","description":"Maximum threshold value for the parameter, double","format":"double","example":20.5},"comparisonOperator":{"type":"string","description":"Comparison operator for threshold comparison, available options: LT (less then), GT (greter then), LTE (less then or equals), GTE (greter then or equals) ","example":"LT","enum":["EQ","NE","LT","LTE","GT","GTE","IN","NOT_IN","EXISTS","NOT_EXISTS"]},"sensorIds":{"type":"array","description":"List of sensor IDs associated with this event rule, optional. If null the rule is triggered for all sensors","example":["f2d435b1-aeaf-4f02-b0f6-0e57f83d671a","f2d435b1-aeaf-4f02-b0f6-0e57f83d6710"],"items":{"type":"string","description":"List of sensor IDs associated with this event rule, optional. If null the rule is triggered for all sensors","example":"[\"f2d435b1-aeaf-4f02-b0f6-0e57f83d671a\",\"f2d435b1-aeaf-4f02-b0f6-0e57f83d6710\"]"}}},"description":"Request object to create or update a threshold event rule for parameter"},"ExistDeviceMonthDto":{"type":"object","properties":{"deviceCount":{"type":"integer","description":"Number of registered devices","format":"int64","example":120},"beaconCount":{"type":"integer","description":"Number of registered beacons","format":"int64","example":85},"sensorCount":{"type":"integer","description":"Number of registered sensors","format":"int64","example":300},"totalDeviceCount":{"type":"integer","description":"Total number of devices (devices + beacons + sensors)","format":"int64","example":505}},"description":"Report with statistics on existing devices"},"FilterEntityResponse":{"type":"object","properties":{"key":{"type":"string"},"label":{"type":"string"},"values":{"type":"array","items":{"$ref":"#/components/schemas/SimpleEntity"}}}},"FloorCoordinates":{"type":"object","properties":{"x":{"type":"number","description":"X coordinate on the floor plan, typically in pixels or relative units","example":154.23},"y":{"type":"number","description":"Y coordinate on the floor plan, typically in pixels or relative units","example":89.77}},"description":"Represents a 2D coordinate on a floor plan with X and Y values."},"FloorDto":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier of the floor","example":"123e4567-e89b-12d3-a456-426614174000"},"name":{"type":"string","description":"Name of the floor","example":"First Floor"},"tenantId":{"type":"string","description":"Identifier of the tenant owning the floor","example":"123e4567-e89b-12d3-a456-426614174000"},"siteId":{"type":"string","description":"Identifier of the site where the floor is located","example":"123e4567-e89b-12d3-a456-426614174000"},"buildingId":{"type":"string","description":"Identifier of the building containing the floor","example":"123e4567-e89b-12d3-a456-426614174000"}},"description":"Data transfer object for Floor details"},"FloorPlanBeaconMap":{"type":"object","properties":{"floorPlanId":{"type":"string","description":"Unique identifier of the floor plan","example":"123e4567-e89b-12d3-a456-426614174000"},"height":{"type":"number","description":"Height of the floor plan in units","example":2500.75},"width":{"type":"number","description":"Width of the floor plan in units","example":1800.5},"beacons":{"type":"array","description":"List of beacons positioned on the floor plan","items":{"$ref":"#/components/schemas/BeaconMapResponse"}}},"description":"Response containing floor plan dimensions and list of beacons mapped to the floor plan"},"FloorPlanDto":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier of the floor plan","example":"9c4d2b80-f1cd-4a95-a47c-e292cdad13c1"},"name":{"type":"string","description":"Name of the floor plan","example":"My Floor"},"floorNumber":{"type":"string","description":"Floor number in the building","example":"1"},"site":{"$ref":"#/components/schemas/SimpleEntity"},"building":{"$ref":"#/components/schemas/SimpleEntity"},"assetsInside":{"type":"integer","description":"Number of assets inside the floor plan","format":"int32","example":42},"sensorsInside":{"type":"integer","description":"Number of sensors inside the floor plan","format":"int32","example":10},"description":{"type":"string","description":"Optional description of the floor plan","example":"Main floor near reception"},"createDate":{"type":"string","description":"Date and time when the floor plan was created","format":"date-time","example":"2024-01-10T14:20:00Z"},"lastModifiedDate":{"type":"string","description":"Date and time when the floor plan was last modified","format":"date-time","example":"2025-07-01T08:15:00Z"},"tags":{"type":"array","description":"List of tags associated with the floor plan","items":{"$ref":"#/components/schemas/TagShort"}}},"description":"Represents a floor plan within a site or building"},"FloorPlanFilterRequest":{"type":"object","properties":{"pageSize":{"type":"integer","description":"Number of items per page, optional","format":"int32","example":20},"pageNumber":{"type":"integer","description":"Page number to retrieve, starts with 0, optional","format":"int32","example":0},"siteFilter":{"type":"array","description":"Filter the output by existing site ID's, optional","example":["f2d435b1-aeaf-4f02-b0f6-0e57f83d671a","f2d435b1-aeaf-4f02-b0f6-0e57f83d6710"],"items":{"type":"string","description":"Filter the output by existing site ID's, optional","example":"[\"f2d435b1-aeaf-4f02-b0f6-0e57f83d671a\",\"f2d435b1-aeaf-4f02-b0f6-0e57f83d6710\"]"}},"tagFilter":{"type":"array","description":"Filter by tag IDs, optional","example":["aab62a49-a437-4ea2-83b1-43fce670dd0a","aab62a49-a437-4ea2-83b1-43fce670dd0c"],"items":{"type":"string","description":"Filter by tag IDs, optional","example":"[\"aab62a49-a437-4ea2-83b1-43fce670dd0a\",\"aab62a49-a437-4ea2-83b1-43fce670dd0c\"]"}},"floorLevelFilter":{"type":"array","description":"Filter the output by existing floor level, optional","example":["1","2"],"items":{"type":"string","description":"Filter the output by existing floor level, optional","example":"[\"1\",\"2\"]"}},"buildingFilter":{"type":"array","description":"Filter the output by existing building ID's, optional","example":["aab62a49-a437-4ea2-83b1-43fce670dd0a","aab62a49-a437-4ea2-83b1-43fce670dd0c"],"items":{"type":"string","description":"Filter the output by existing building ID's, optional","example":"[\"aab62a49-a437-4ea2-83b1-43fce670dd0a\",\"aab62a49-a437-4ea2-83b1-43fce670dd0c\"]"}},"sortingParameters":{"type":"array","description":"List of sorting parameters, available values: name, floorNumber, building, lastModifiedDate, createDate, site (site name). Optional","example":["name","createDate"],"items":{"type":"string","description":"List of sorting parameters, available values: name, floorNumber, building, lastModifiedDate, createDate, site (site name). Optional","example":"[\"name\",\"createDate\"]"}},"searchValue":{"type":"string","description":"Search text to filter by field. Available value: name. Optional","example":"Main floor"}},"description":"Request object for filtering floor plans"},"FloorPlanInfo":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier of the floor plan","example":"123e4567-e89b-12d3-a456-426614174000"},"name":{"type":"string","description":"Name of the floor plan","example":"Main Office Floor 3"},"floorNumber":{"type":"string","description":"Floor number or designation","example":"3"},"site":{"$ref":"#/components/schemas/SimpleEntity"},"building":{"$ref":"#/components/schemas/SimpleEntity"},"description":{"type":"string","description":"Description of the floor plan","example":"Third floor of main office building"},"createDate":{"type":"string","description":"Date and time when the floor plan was created","format":"date-time","example":"2025-07-21T10:00:00Z"},"lastModifiedDate":{"type":"string","description":"Date and time when the floor plan was last modified","format":"date-time","example":"2025-07-22T15:30:00Z"},"tags":{"type":"array","description":"Tags associated with the floor plan","items":{"$ref":"#/components/schemas/TagShort"}},"imageName":{"type":"string","description":"Name of the image file associated with the floor plan","example":"floor3_map.png"},"imageSize":{"type":"number","description":"Size of the image file in kilobytes","format":"double","example":512.5},"assetsInside":{"type":"integer","description":"Number of assets inside the floor plan","format":"int32","example":42},"sensorsInside":{"type":"integer","description":"Number of sensors inside the floor plan","format":"int32","example":10}},"description":"Detailed information about a floor plan"},"FloorPlanMapResponse":{"type":"object","properties":{"floorPlanId":{"type":"string","description":"ID of the floor plan","example":"9c4d2b80-f1cd-4a95-a47c-e292cdad13c1"},"height":{"type":"number","description":"Height of the floor plan map","example":500.0},"width":{"type":"number","description":"Width of the floor plan map","example":300.0},"assets":{"type":"array","description":"List of asset points on the floor plan","items":{"$ref":"#/components/schemas/PointEntity"}},"geofences":{"type":"array","description":"List of geofence shapes with color information","items":{"$ref":"#/components/schemas/ShapeEntityWithColor"}}},"description":"Response containing map details of a floor plan including assets and geofences"},"FloorPlanMapVisiblePreferencesDto":{"type":"object","properties":{"detailsElements":{"type":"array","description":"Elements visible on floor plan details page","example":["assets","sensors"],"items":{"type":"string","description":"Elements visible on floor plan details page","example":"[\"assets\",\"sensors\"]"}},"assetsElements":{"type":"array","description":"Assets visible elements on the floor plan page","items":{"type":"string","description":"Assets visible elements on the floor plan page"}},"sensorsElements":{"type":"array","description":"Sensors visible elements on the floor plan page","items":{"type":"string","description":"Sensors visible elements on the floor plan page"}},"beaconsElements":{"type":"array","description":"Beacons visible elements on the floor plan page","items":{"type":"string","description":"Beacons visible elements on the floor plan page"}},"geofencesElements":{"type":"array","description":"Geofences visible elements on the floor plan page","items":{"type":"string","description":"Geofences visible elements on the floor plan page"}},"eventsElements":{"type":"array","description":"Event elements visible on the floor plan page","example":["assets","sensors"],"items":{"type":"string","description":"Event elements visible on the floor plan page","example":"[\"assets\",\"sensors\"]"}},"mapType":{"type":"string","description":"Type of map selected by the user (e.g., satellite, standard)","example":"satellite"}}},"FloorPlanUpdate":{"type":"object","properties":{"id":{"type":"string","description":"ID of the floor plan, mandatory for update","example":"9c4d2b80-f1cd-4a95-a47c-e292cdad13c1"},"name":{"type":"string","description":"Name of the floor plan, mandatory","example":"Main Hall Floor Plan"},"floorNumber":{"type":"string","description":"Floor number, optional","example":"2"},"site":{"$ref":"#/components/schemas/SimpleEntity"},"building":{"$ref":"#/components/schemas/SimpleEntity"},"description":{"type":"string","description":"Floor plan description, optional","example":"Updated layout after renovations"},"tags":{"type":"array","description":"List of tag IDs associated with the floor plan, additional markers for grouping, optional","example":["9c4d2b80-f1cd-4a95-a47c-e292cdad13c1","9c4d2b80-f1cd-4a95-a47c-e292cdad13c0"],"items":{"type":"string","description":"List of tag IDs associated with the floor plan, additional markers for grouping, optional","example":"[\"9c4d2b80-f1cd-4a95-a47c-e292cdad13c1\",\"9c4d2b80-f1cd-4a95-a47c-e292cdad13c0\"]"}}},"description":"Request object for updating a floor plan"},"FloorSimpleEntity":{"type":"object","properties":{"id":{"type":"string","description":"The Entity`s ID, is required","example":"aab62a49-a437-4ea2-83b1-43fce670dd0a"},"name":{"type":"string","description":"The Entity`s name, is required","example":"My Entity"},"buildingId":{"type":"string","description":"ID of the building the floor belongs to","example":"123e4567-e89b-12d3-a456-426614174000"}},"description":"Simplified floor entity with building reference"},"GeofenceAssetCount":{"type":"object","properties":{"geofenceId":{"type":"string","description":"Unique identifier of the geofence","example":"123e4567-e89b-12d3-a456-426614174000"},"assetCount":{"type":"integer","description":"Number of assets associated with the geofence","format":"int32","example":5}},"description":"Represents the asset count for a specific geofence"},"GeofenceFilterByFloorPlan":{"required":["pageNumber","pageSize"],"type":"object","properties":{"pageSize":{"type":"integer","description":"Number of results per page,mandatory","format":"int32","example":20},"pageNumber":{"type":"integer","description":"Page number to retrieve, mandatory","format":"int32","example":0},"tagFilter":{"type":"array","description":"List of tag IDs to filter geofences, optional","example":["123e4567-e89b-12d3-a456-426614174000","123e4567-e89b-12d3-a456-426614174001"],"items":{"type":"string","description":"List of tag IDs to filter geofences, optional","example":"[\"123e4567-e89b-12d3-a456-426614174000\",\"123e4567-e89b-12d3-a456-426614174001\"]"}},"searchValue":{"type":"string","description":"Search string to filter geofences by name or description, optional","example":"main entrance"}},"description":"Filter criteria for searching geofences by floor plan"},"GeofenceFilterRequest":{"required":["pageNumber","pageSize"],"type":"object","properties":{"pageSize":{"type":"integer","description":"Number of items per page, mandatory","format":"int32","example":20},"pageNumber":{"type":"integer","description":"Page number to retrieve, starts with 0, mandatory","format":"int32","example":0},"tagFilter":{"type":"array","description":"Filter by tag IDs, optional","example":["aab62a49-a437-4ea2-83b1-43fce670dd0a","aab62a49-a437-4ea2-83b1-43fce670dd0c"],"items":{"type":"string","description":"Filter by tag IDs, optional","example":"[\"aab62a49-a437-4ea2-83b1-43fce670dd0a\",\"aab62a49-a437-4ea2-83b1-43fce670dd0c\"]"}},"siteFilter":{"type":"array","description":"Filter the output by existing site ID's, optional","example":["f2d435b1-aeaf-4f02-b0f6-0e57f83d671a","f2d435b1-aeaf-4f02-b0f6-0e57f83d6710"],"items":{"type":"string","description":"Filter the output by existing site ID's, optional","example":"[\"f2d435b1-aeaf-4f02-b0f6-0e57f83d671a\",\"f2d435b1-aeaf-4f02-b0f6-0e57f83d6710\"]"}},"buildingFilter":{"type":"array","description":"Filter the output by existing building ID's, optional","example":["123e4567-e89b-12d3-a456-426614174000","123e4567-e89b-12d3-a456-426614174001"],"items":{"type":"string","description":"Filter the output by existing building ID's, optional","example":"[\"123e4567-e89b-12d3-a456-426614174000\",\"123e4567-e89b-12d3-a456-426614174001\"]"}},"floorPlanFilter":{"type":"array","description":"Filter the output by existing floor plan ID's, optional","example":["123e4567-e89b-12d3-a456-426614174000","123e4567-e89b-12d3-a456-426614174001"],"items":{"type":"string","description":"Filter the output by existing floor plan ID's, optional","example":"[\"123e4567-e89b-12d3-a456-426614174000\",\"123e4567-e89b-12d3-a456-426614174001\"]"}},"mapType":{"type":"string","description":"Type of map: indoor or outdoor, optional","example":"indoor"},"bottomLeft":{"type":"array","description":"Coordinates of bottom-left corner of bounding box for map filtering (latitude, longitude), optional","example":[40.7128,-74.006],"items":{"type":"number","description":"Coordinates of bottom-left corner of bounding box for map filtering (latitude, longitude), optional","format":"double"}},"topRight":{"type":"array","description":"Coordinates of top-right corner of bounding box for map filtering (latitude, longitude), optional","example":[40.7308,-73.9352],"items":{"type":"number","description":"Coordinates of top-right corner of bounding box for map filtering (latitude, longitude), optional","format":"double"}},"searchValue":{"type":"string","description":"Search term to filter geofences by  name, description, optional","example":"Main Entrance"}},"description":"Request object for filtering geofences with pagination, location, and search criteria"},"GeofenceFilterRequestWithItemId":{"required":["pageNumber","pageSize"],"type":"object","properties":{"pageSize":{"type":"integer","description":"Number of items per page, mandatory","format":"int32","example":20},"pageNumber":{"type":"integer","description":"Page number to retrieve, starts with 0, mandatory","format":"int32","example":0},"tagFilter":{"type":"array","description":"Filter by tag IDs, optional","example":["aab62a49-a437-4ea2-83b1-43fce670dd0a","aab62a49-a437-4ea2-83b1-43fce670dd0c"],"items":{"type":"string","description":"Filter by tag IDs, optional","example":"[\"aab62a49-a437-4ea2-83b1-43fce670dd0a\",\"aab62a49-a437-4ea2-83b1-43fce670dd0c\"]"}},"siteFilter":{"type":"array","description":"Filter the output by existing site ID's, optional","example":["f2d435b1-aeaf-4f02-b0f6-0e57f83d671a","f2d435b1-aeaf-4f02-b0f6-0e57f83d6710"],"items":{"type":"string","description":"Filter the output by existing site ID's, optional","example":"[\"f2d435b1-aeaf-4f02-b0f6-0e57f83d671a\",\"f2d435b1-aeaf-4f02-b0f6-0e57f83d6710\"]"}},"buildingFilter":{"type":"array","description":"Filter the output by existing building ID's, optional","example":["123e4567-e89b-12d3-a456-426614174000","123e4567-e89b-12d3-a456-426614174001"],"items":{"type":"string","description":"Filter the output by existing building ID's, optional","example":"[\"123e4567-e89b-12d3-a456-426614174000\",\"123e4567-e89b-12d3-a456-426614174001\"]"}},"floorPlanFilter":{"type":"array","description":"Filter the output by existing floor plan ID's, optional","example":["123e4567-e89b-12d3-a456-426614174000","123e4567-e89b-12d3-a456-426614174001"],"items":{"type":"string","description":"Filter the output by existing floor plan ID's, optional","example":"[\"123e4567-e89b-12d3-a456-426614174000\",\"123e4567-e89b-12d3-a456-426614174001\"]"}},"mapType":{"type":"string","description":"Type of map: indoor or outdoor, optional","example":"indoor"},"bottomLeft":{"type":"array","description":"Coordinates of bottom-left corner of bounding box for map filtering (latitude, longitude), optional","example":[40.7128,-74.006],"items":{"type":"number","description":"Coordinates of bottom-left corner of bounding box for map filtering (latitude, longitude), optional","format":"double"}},"topRight":{"type":"array","description":"Coordinates of top-right corner of bounding box for map filtering (latitude, longitude), optional","example":[40.7308,-73.9352],"items":{"type":"number","description":"Coordinates of top-right corner of bounding box for map filtering (latitude, longitude), optional","format":"double"}},"searchValue":{"type":"string","description":"Search term to filter geofences by  name, description, optional","example":"Main Entrance"},"searchItemId":{"type":"string","description":"Optional ID of a specific item to narrow down the search","example":"123e4567-e89b-12d3-a456-426614174000"}},"description":"Filter request for geofences with additional search by item ID"},"GeofenceInfo":{"type":"object","properties":{"id":{"type":"string","description":"Unique geofence ID","example":"123e4567-e89b-12d3-a456-426614174000"},"name":{"type":"string","description":"Name of the geofence","example":"Restricted Zone A"},"description":{"type":"string","description":"Geofence description","example":"Main entrance geofence"},"color":{"type":"string","description":"Color code for geofence display","example":"#FF5733"},"opacity":{"type":"number","description":"Opacity in percents for rendering from 0 (transparent) to 100 (opacity)","format":"double","example":50},"createDate":{"type":"string","description":"Creation timestamp","format":"date-time","example":"2025-07-21T10:15:30Z"},"lastModifiedDate":{"type":"string","description":"Last modification timestamp","format":"date-time","example":"2025-07-22T08:45:00Z"},"lastModifiedBy":{"type":"string","description":"User who last modified the geofence","example":"admin@email.com"},"tagIds":{"type":"array","description":"List of associated tag IDs","example":["123e4567-e89b-12d3-a456-426614174000","123e4567-e89b-12d3-a456-426614174001"],"items":{"type":"string","description":"List of associated tag IDs","example":"[\"123e4567-e89b-12d3-a456-426614174000\",\"123e4567-e89b-12d3-a456-426614174001\"]"}},"assetCount":{"type":"integer","description":"Number of assets associated with the geofence","format":"int32","example":4}},"description":"Detailed geofence information including metadata and tags"},"GeofenceMapResponse":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier of the geofence","example":"e9a1a5f3-15fb-44d6-a75b-2d3fba4d6d2c"},"name":{"type":"string","description":"Name of the geofence","example":"Restricted Zone A"},"coordinates":{"type":"array","description":"List of coordinates defining the geofence shape","items":{"$ref":"#/components/schemas/FloorCoordinates"}},"color":{"type":"string","description":"Hex color code used to render the geofence","example":"#FF0000"},"opacity":{"type":"number","description":"Opacity of the geofence color, from 0 (transparent) to 100 (opaque)","format":"double","example":60},"assetCount":{"type":"integer","description":"Number of assets currently within the geofence","format":"int32","example":5},"type":{"type":"string","description":"Type of the geofence, available values: polygon, rectangle","example":"polygon"}},"description":"Represents a geofence with its shape, visual settings, and asset metadata."},"GeofencePositionRequest":{"required":["coordinates"],"type":"object","properties":{"id":{"type":"string","description":"Unique identifier of the geofence, mandatory","example":"123e4567-e89b-12d3-a456-426614174000"},"coordinates":{"type":"array","description":"List of coordinates defining the geofence area, mandatory","items":{"$ref":"#/components/schemas/FloorCoordinates"}},"type":{"type":"string","description":"Type of geofence (e.g., polygon, rectangle), mandatory","example":"polygon"}},"description":"Request object for updating the position of a geofence"},"HomeMapVisiblePreferencesDto":{"type":"object","properties":{"detailsElements":{"type":"array","description":"Elements visible on home page","example":["assets","sensors"],"items":{"type":"string","description":"Elements visible on home page","example":"[\"assets\",\"sensors\"]"}},"assetsElements":{"type":"array","description":"Asset elements visible on home","example":["assets","sensors"],"items":{"type":"string","description":"Asset elements visible on home","example":"[\"assets\",\"sensors\"]"}},"sensorsElements":{"type":"array","description":"Sensor elements visible on home","example":["assets","sensors"],"items":{"type":"string","description":"Sensor elements visible on home","example":"[\"assets\",\"sensors\"]"}},"beaconsElements":{"type":"array","description":"Beacon elements visible on home","example":["assets","sensors"],"items":{"type":"string","description":"Beacon elements visible on home","example":"[\"assets\",\"sensors\"]"}},"geofencesElements":{"type":"array","description":"Geofence elements visible on home","example":["assets","sensors"],"items":{"type":"string","description":"Geofence elements visible on home","example":"[\"assets\",\"sensors\"]"}},"eventsElements":{"type":"array","description":"Event elements visible on home","example":["assets","sensors"],"items":{"type":"string","description":"Event elements visible on home","example":"[\"assets\",\"sensors\"]"}},"mapType":{"type":"string","description":"Type of map selected by the user (e.g., satellite, standard)","example":"satellite"}}},"IconDto":{"type":"object","properties":{"svg":{"type":"string","description":"SVG content of the icon, either raw base64-encoded string.","example":"PD94bWwgdmVyc..."},"opacity":{"type":"integer","description":"Opacity level of the icon (0 to 100).","format":"int32","example":85},"color":{"type":"string","description":"Hex color code of the icon, available colors: TURQUOISE, GREEN, YELLOW, ORANGE, RED, LIGHTBLUE, BLUE, PURPLE, PINK, BROWN","example":"BLUE"},"name":{"type":"string","description":"Icon name","example":"My Icon"},"size":{"type":"integer","description":"Size of the icon in bytes.","format":"int64","example":2048},"default":{"type":"boolean"}},"description":"Icon for the Asset Type"},"IndoorLocation":{"type":"object","properties":{"site":{"$ref":"#/components/schemas/SimpleEntity"},"building":{"$ref":"#/components/schemas/SimpleEntity"},"floor":{"$ref":"#/components/schemas/SimpleFloorLevel"},"coordinates":{"$ref":"#/components/schemas/FloorCoordinates"},"lastLocationUpdate":{"type":"string","format":"date-time"}},"description":"Indoor location details of the device"},"IndoorLocationConfigDto":{"type":"object","properties":{"invertedSolution":{"type":"boolean"},"invertedTimeWindowMs":{"type":"integer","format":"int32"},"invertedDefaultIsMoving":{"type":"boolean"},"minBleScans":{"type":"integer","format":"int32"},"maxBleScans":{"type":"integer","format":"int32"},"minResolvedLocations":{"type":"integer","format":"int32"},"maxResolvedLocations":{"type":"integer","format":"int32"},"locationStopProcessingAfterMax":{"type":"boolean"},"aggregationStopProcessingAfterMax":{"type":"boolean"},"sealAlwaysInMotion":{"type":"boolean"},"minRssiThreshold":{"type":"integer","format":"int32"},"bleScansHistorySize":{"type":"integer","format":"int32"},"resolvedLocationsHistorySize":{"type":"integer","format":"int32"}}},"IndoorPolygon":{"type":"object","properties":{"floorId":{"type":"string"},"coordinates":{"type":"array","items":{"type":"array","items":{"type":"number","format":"double"}}}}},"LastSensorParametersViewDto":{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"},"enabled":{"type":"boolean"}}},"Location":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string"}},"description":"Location object that defines where the geofence is located, optional","example":{"id":"aab62a49-a437-4ea2-83b1-43fce670dd0a","type":"floorPlan"}},"LocationCoordinates":{"type":"object","properties":{"lat":{"type":"number"},"lon":{"type":"number"}}},"LoraCloudConfig":{"required":["host","loraCloudToken","sendUlPath","tenantId"],"type":"object","properties":{"tenantId":{"type":"string","description":"Tenant identifier, mandatory","example":"2fd1dbea-3e54-4f55-b90b-9a23eaf7c168"},"loraCloudToken":{"type":"string","description":"Authentication token for LoRa Cloud, mandatory","example":"XXXX"},"host":{"type":"string","description":"LoRa Cloud API host, mandatory","example":"https://api.loracloud.com"},"sendUlPath":{"type":"string","description":"Path used to send uplinks, mandatory","example":"/v1/send"}},"description":"LoRa Cloud configuration per tenant."},"MapResponse":{"type":"object","properties":{"siteId":{"type":"string","description":"Unique identifier of the site","example":"123e4567-e89b-12d3-a456-426614174000"},"width":{"type":"number","description":"Width of the map in units","example":1500.5},"height":{"type":"number","description":"Height of the map in units","example":800.0},"coordinates":{"type":"array","description":"List of coordinates representing the map outline or key points","items":{"$ref":"#/components/schemas/FloorCoordinates"}},"buildingPins":{"type":"array","description":"List of building pins on the map","items":{"$ref":"#/components/schemas/PointXyEntity"}},"geofences":{"type":"array","description":"List of geofences present on the map","items":{"$ref":"#/components/schemas/GeofenceMapResponse"}},"beacons":{"type":"array","description":"List of beacons placed on the map","items":{"$ref":"#/components/schemas/BeaconMapResponse"}},"sensors":{"type":"array","description":"List of sensors placed on the map","items":{"$ref":"#/components/schemas/Sensor Map Response"}}},"description":"Response containing map details including coordinates, pins, geofences, and beacons"},"MapSettingsDto":{"type":"object","properties":{"visibility":{"$ref":"#/components/schemas/VisibleMapPreferencesDto"},"mapType":{"type":"string","description":"Selected map type (e.g., standard, satellite)","example":"standard"}},"description":"Combined map settings including visibility preferences and selected map type"},"MapTypeSettings":{"type":"object","properties":{"mapType":{"type":"string","description":"Type of map selected by the user (e.g., satellite, standard)","example":"satellite"}},"description":"User preference for selected map type"},"NavigationTreeResponse":{"type":"object","properties":{"selectedItem":{"$ref":"#/components/schemas/SelectedItem"},"sites":{"type":"array","description":"List of sites available","items":{"$ref":"#/components/schemas/SimpleEntity"}},"buildings":{"type":"array","description":"List of buildings associated with sites","items":{"$ref":"#/components/schemas/EntityWithSiteIdSimpleEntity"}},"floorPlans":{"type":"array","description":"List of floor plans associated with buildings","items":{"$ref":"#/components/schemas/FloorSimpleEntity"}}},"description":"Response containing navigation tree data with selected item and lists of sites, buildings, and floor plans"},"NotificationConfigDto":{"type":"object","properties":{"id":{"type":"string"},"url":{"type":"string"},"httpHeaders":{"type":"object","additionalProperties":{"type":"string"}}}},"OutdoorLocationConfigDto":{"type":"object","properties":{"aggregationMinLocations":{"type":"integer","format":"int32"},"aggregationMaxLocations":{"type":"integer","format":"int32"},"aggregationStopProcessingAfterMax":{"type":"boolean"},"resolveFromGw":{"type":"boolean"},"outdoorLocationsHistorySize":{"type":"integer","format":"int32"}}},"OutdoorLocationEntity":{"type":"object","properties":{"site":{"$ref":"#/components/schemas/SimpleEntity"},"coordinates":{"$ref":"#/components/schemas/FloorCoordinates"},"altitude":{"type":"number","format":"double"},"lastLocationUpdate":{"type":"string","format":"date-time"}},"description":"Outdoor location details of the device"},"ParameterThreshold":{"type":"object","properties":{"parameter":{"type":"string"},"thresholdMin":{"type":"number","format":"double"},"thresholdMax":{"type":"number","format":"double"}}},"PointEntity":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier of the point","example":"9c4d2b80-f1cd-4a95-a47c-e292cdad13c1"},"coordinates":{"$ref":"#/components/schemas/Coordinates"}},"description":"Represents a point entity with an ID and coordinates"},"PointXyEntity":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the point","example":"e9a1a5f3-15fb-44d6-a75b-2d3fba4d6d2c"},"coordinates":{"$ref":"#/components/schemas/FloorCoordinates"},"assetsInside":{"type":"integer","description":"Number of assets inside the building","format":"int32","example":42},"sensorsInside":{"type":"integer","description":"Number of sensors inside the building","format":"int32","example":10},"unacknowledgedEventsCount":{"type":"integer","description":"Number of unacknowledged events inside the building","format":"int32","example":10},"oldestUnacknowledgedEventDate":{"type":"string","description":"Date and time of the first unacknowledged event","format":"date-time","example":"2025-07-21T10:00:00Z"},"buildingId":{"type":"string","description":"Unique identifier for the building","example":"e9a1a5f3-15fb-44d6-a75b-2d3fba4d6d2c"}},"description":"Represents a point on a floor plan with XY coordinates."},"RawSensorFilter":{"type":"object","properties":{"deviceEuis":{"type":"array","description":"Device EUIs to include; omit or leave empty for all devices in the tenant","example":["FFFFFFFF00000001"],"items":{"type":"string","description":"Device EUIs to include; omit or leave empty for all devices in the tenant","example":"[\"FFFFFFFF00000001\"]"}},"parameters":{"type":"array","description":"Parameters to include; omit or leave empty for all parameters","example":["temperature","humidity"],"items":{"type":"string","description":"Parameters to include; omit or leave empty for all parameters","example":"[\"temperature\",\"humidity\"]","enum":["accelerationVector","accelerationVectorX","accelerationVectorY","accelerationVectorZ","accelerationMagnitude","activePower","apparentPower","batterySensorCapacity","batteryDisplayCapacity","batteryRemainingDays","batteryVoltage","co2","co2Raw","ammeter","hallEffectCount","hallEffectState","energyConsumed","extAnalogInputB","extDigitalInputStateA","extDigitalInputStateB","extRelativeCountA","extRelativeCountB","extTotalCountA","extTotalCountB","fanSpeed","humidity","operatingMode","impactAlarm","in2Analog","in2Changeover","in2Mode","in2State","io1Analog","io1Changeover","io1Ecm","io1Mode","io1State","lightIntensity","lightState","lineFrequency","mcuTemperature","meterStatus","meterElapsed","accelerationAlarmStatus","motionEventCount","pirInitStatus","pm1_0","pm2_5","pm10_0","powerFactorMeter","presenceEventCount","presenceEventValue","occupancyStatus","presenceTemperature","barometricPressure","extProbeTemperature","extProbeVoltage","reactivePower","extReedSwitchCount","extReedSwitchState","relayState","relay1","relay2","relay3","relay4","relay5","extOutputState","temperature","temperatureSetpoint","voltmeter"]}},"fromMillis":{"type":"integer","description":"Start of the time window (inclusive), Unix epoch milliseconds — required","format":"int64","example":1748736000000},"toMillis":{"type":"integer","description":"End of the time window (exclusive), Unix epoch milliseconds — required","format":"int64","example":1750291200000},"pageNumber":{"type":"integer","description":"Zero-based page number; defaults to 0","format":"int32","example":0},"pageSize":{"type":"integer","description":"Page size; defaults to the user's items-per-page preference, capped at 10000","format":"int32","example":50}},"description":"Filter for raw (non-aggregated) sensor data: flat readings, newest-first, paginated"},"ResourceConsumptionReport":{"type":"object","properties":{"siteName":{"type":"string","description":"Name of the site","example":"Main Office"},"existDeviceMonthReports":{"$ref":"#/components/schemas/ExistDeviceMonthDto"},"activeDeviceMonthReports":{"$ref":"#/components/schemas/ActiveDeviceMonthDto"},"loraCloudGpsCallCount":{"type":"integer","description":"Number of LoRa Cloud GPS calls","format":"int64","example":1200},"loraCloudWifiCallCount":{"type":"integer","description":"Number of LoRa Cloud WiFi calls","format":"int64","example":900},"loraConfigurationCallCount":{"type":"integer","description":"Number of LoRa configuration calls","format":"int64","example":500},"indoorPositionResolvingCount":{"type":"integer","description":"Number of indoor position resolving operations","format":"int64","example":300},"outdoorPositionResolvingCount":{"type":"integer","description":"Number of outdoor position resolving operations","format":"int64","example":450},"googleCallCount":{"type":"integer","description":"Number of Google API calls","format":"int64","example":200}},"description":"Resource consumption report for a site"},"ResourceConsumptionReportTotal":{"type":"object","properties":{"tenantName":{"type":"string","description":"Name of the tenant","example":"Tenant A"},"detailedResourceConsumptionReports":{"type":"array","description":"Detailed resource consumption reports for all sites of the tenant","items":{"$ref":"#/components/schemas/ResourceConsumptionReport"}},"totalActiveDeviceCount":{"type":"integer","description":"Total number of active devices across all sites","format":"int64","example":3200},"totalExistDeviceCount":{"type":"integer","description":"Total number of existing devices across all sites","format":"int64","example":4500},"totalLoraCloudGpsCallCount":{"type":"integer","description":"Total number of LoRa Cloud GPS calls across all sites","format":"int64","example":15000},"totalLoraCloudWifiCallCount":{"type":"integer","description":"Total number of LoRa Cloud WiFi calls across all sites","format":"int64","example":12000},"totalLoraCloudConfigurationCallCount":{"type":"integer","description":"Total number of LoRa Cloud configuration calls across all sites","format":"int64","example":8000},"totalIndoorPositionResolvingCount":{"type":"integer","description":"Total number of indoor position resolving operations across all sites","format":"int64","example":5000},"totalOutdoorPositionResolvingCount":{"type":"integer","description":"Total number of outdoor position resolving operations across all sites","format":"int64","example":6000},"totalGoogleCallCount":{"type":"integer","description":"Total number of Google API calls across all sites","format":"int64","example":2500},"timestamp":{"type":"string","description":"Timestamp representing the last day of the month at 23:59:59 for monthly period or the end of a period for current month report","format":"date-time","example":"2025-08-31T23:59:59+03:00"}},"description":"Aggregated resource consumption report for a tenant"},"SafetyStatus":{"type":"object","properties":{"emergencyButton":{"type":"boolean"},"hookAlarm":{"type":"boolean"},"fallAlarm":{"type":"boolean"}}},"SearchRequestBody":{"required":["page","rowsPerPage"],"type":"object","properties":{"page":{"type":"integer","description":"Page number (0-based)","format":"int32","example":0},"rowsPerPage":{"type":"integer","description":"Number of rows per page","format":"int32","example":10},"search":{"type":"string","description":"Search text query","example":"floor plan 1"},"searchItemId":{"type":"string","description":"Optional specific item ID to search for","example":"123e4567-e89b-12d3-a456-426614174000"}},"description":"Request body for paginated search with optional filters"},"SelectedItem":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier of the selected item","example":"123e4567-e89b-12d3-a456-426614174000"},"type":{"type":"string","description":"Type of the selected item (site, floorPlan, building","example":"site"}},"description":"Represents a selected item with its ID and type"},"Sensor Detail Response":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier of the sensor","example":"123e4567-e89b-12d3-a456-426614174000"},"deviceEui":{"type":"string","description":"Device EUI (Extended Unique Identifier)","example":"647FDA0000000000"},"name":{"type":"string","description":"Human-readable name of the sensor","example":"My Sensor"},"sensorModel":{"type":"string","description":"Model of the sensor","example":"BREEZE"},"status":{"type":"string","description":"Operational status of the sensor: Offline, Online","example":"Offline"},"battery":{"type":"integer","description":"Current battery level from payload","format":"int32","example":95},"description":{"type":"string","description":"Optional description of the sensor","example":"Mounted near entrance"},"tags":{"type":"array","description":"List of tags associated with the sensor","items":{"$ref":"#/components/schemas/TagShort"}},"sensorDetails":{"type":"object","additionalProperties":{"type":"object","description":"Current sensor parameters from payload","example":{"temperature":21,"humidity":60}},"description":"Current sensor parameters from payload","example":{"temperature":21,"humidity":60}},"lastActivity":{"type":"string","description":"Timestamp of the last activity from the sensor","format":"date-time","example":"2024-07-21T15:30:00+03:00"},"homeSite":{"$ref":"#/components/schemas/SimpleEntity"},"inactivityTimeout":{"type":"integer","description":"Inactivity timeout in minutes for the sensor","format":"int32","example":120},"createDate":{"type":"string","description":"Timestamp when the sensor was created","format":"date-time","example":"2023-12-01T10:15:30+03:00"},"building":{"$ref":"#/components/schemas/SimpleEntity"},"floorPlan":{"$ref":"#/components/schemas/SimpleFloorLevel"},"coordinateX":{"type":"number","description":"Coordinate X of the sensor on the floor plan","example":120.5},"coordinateY":{"type":"number","description":"Coordinate Y of the sensor on the floor plan","example":85.3},"latitude":{"type":"number","description":"Coordinate latitude of the sensor on the floor plan","example":120.5},"longitude":{"type":"number","description":"Coordinate longitude of the sensor on the floor plan","example":85.3},"lastModifiedDate":{"type":"string","description":"Timestamp of last modification","format":"date-time","example":"2025-07-18T14:00:00+03:00"},"lastModifiedBy":{"type":"string","description":"User who last modified the sensor","example":"admin_user@email.com"},"occupancy":{"type":"string","description":"Occupancy status of the sensor","example":"OCCUPIED","enum":["OCCUPIED","NOT_OCCUPIED"]},"rssi":{"type":"integer","description":"Received Signal Strength Indicator","format":"int32","example":-75},"snr":{"type":"number","description":"Signal-to-noise ratio","format":"double","example":12.7},"psr":{"type":"number","description":"Packet Success Rate","format":"double","example":98.0}},"description":"Details of a sensor"},"Sensor Map Response":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier of the sensor","example":"123e4567-e89b-12d3-a456-426614174000"},"name":{"type":"string","description":"Name of the sensor","example":"BREEZE A1"},"coordinates":{"$ref":"#/components/schemas/FloorCoordinates"},"occupancy":{"type":"string","description":"Occupancy status of the sensor","example":"OCCUPIED","enum":["OCCUPIED","NOT_OCCUPIED"]}},"description":"Details of a sensor mapped on a floor plan"},"SensorDto":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier of the sensor","example":"123e4567-e89b-12d3-a456-426614174000"},"deviceEui":{"type":"string","description":"Device EUI (Extended Unique Identifier)","example":"647FDA0000000000"},"name":{"type":"string","description":"Human-readable name of the sensor","example":"My Sensor"},"sensorModel":{"$ref":"#/components/schemas/SimpleModel"},"status":{"type":"string","description":"Operational status of the sensor: Offline, Online","example":"Offline"},"battery":{"type":"integer","description":"Current battery level from payload","format":"int32","example":95},"description":{"type":"string","description":"Optional description of the sensor","example":"Mounted near entrance"},"homeSite":{"$ref":"#/components/schemas/SimpleEntity"},"building":{"$ref":"#/components/schemas/SimpleEntity"},"floorPlan":{"$ref":"#/components/schemas/SimpleFloorPlan"},"coordinateX":{"type":"number","description":"X coordinate of the sensor on the floor plan","example":120.5},"coordinateY":{"type":"number","description":"Y coordinate of the sensor on the floor plan","example":85.3},"latitude":{"type":"number","description":"Latitude of the sensor on the map","example":40.7128},"longitude":{"type":"number","description":"Longitude of the sensor on the map","example":-74.006},"inactivityTimeout":{"type":"integer","description":"Timeout in minutes after which the sensor is considered inactive","format":"int32","example":360},"tags":{"type":"array","description":"List of tags associated with the sensor","items":{"$ref":"#/components/schemas/TagShort"}},"createDate":{"type":"string","description":"Timestamp when the sensor was created","format":"date-time","example":"2023-12-01T10:15:30+03:00"},"lastModifiedDate":{"type":"string","description":"Timestamp of last modification","format":"date-time","example":"2025-07-18T14:00:00+03:00"},"lastModifiedBy":{"type":"string","description":"User who last modified the sensor","example":"admin_user"},"rssi":{"type":"integer","description":"Received Signal Strength Indicator","format":"int32","example":-75},"psr":{"type":"number","description":"Packet Success Rate","format":"double","example":98}},"description":"Data Transfer Object representing a sensor"},"SensorFilterRequest":{"type":"object","properties":{"pageSize":{"type":"integer","description":"Number of items per page, optional","format":"int32","example":20},"pageNumber":{"type":"integer","description":"Page number (0-based index), optional","format":"int32","example":0},"tagFilter":{"type":"array","description":"Filter by tag IDs, optional","example":["aab62a49-a437-4ea2-83b1-43fce670dd0a","aab62a49-a437-4ea2-83b1-43fce670dd0c"],"items":{"type":"string","description":"Filter by tag IDs, optional","example":"[\"aab62a49-a437-4ea2-83b1-43fce670dd0a\",\"aab62a49-a437-4ea2-83b1-43fce670dd0c\"]"}},"homeSiteFilter":{"type":"array","description":"Filter by site IDs, optional","example":["aab62a49-a437-4ea2-83b1-43fce670dd0a","aab62a49-a437-4ea2-83b1-43fce670dd0c"],"items":{"type":"string","description":"Filter by site IDs, optional","example":"[\"aab62a49-a437-4ea2-83b1-43fce670dd0a\",\"aab62a49-a437-4ea2-83b1-43fce670dd0c\"]"}},"buildingFilter":{"type":"array","description":"Filter by building IDs, optional","example":["aab62a49-a437-4ea2-83b1-43fce670dd0a","aab62a49-a437-4ea2-83b1-43fce670dd0c"],"items":{"type":"string","description":"Filter by building IDs, optional","example":"[\"aab62a49-a437-4ea2-83b1-43fce670dd0a\",\"aab62a49-a437-4ea2-83b1-43fce670dd0c\"]"}},"floorPlanFilter":{"type":"array","description":"Filter by floor plan IDs, optional","example":["aab62a49-a437-4ea2-83b1-43fce670dd0a","aab62a49-a437-4ea2-83b1-43fce670dd0c"],"items":{"type":"string","description":"Filter by floor plan IDs, optional","example":"[\"aab62a49-a437-4ea2-83b1-43fce670dd0a\",\"aab62a49-a437-4ea2-83b1-43fce670dd0c\"]"}},"modelFilter":{"type":"array","description":"Filter by sensor model IDs, optional","example":["aab62a49-a437-4ea2-83b1-43fce670dd0a","aab62a49-a437-4ea2-83b1-43fce670dd0c"],"items":{"type":"string","description":"Filter by sensor model IDs, optional","example":"[\"aab62a49-a437-4ea2-83b1-43fce670dd0a\",\"aab62a49-a437-4ea2-83b1-43fce670dd0c\"]"}},"lastModifiedByFilter":{"type":"array","description":"Filter by users who last modified the sensor, optional","example":["example@email.com"],"items":{"type":"string","description":"Filter by users who last modified the sensor, optional","example":"[\"example@email.com\"]"}},"inactivityTimeoutFilter":{"type":"array","description":"Filter by inactivity timeout values (in minutes)","example":[30,60,90],"items":{"type":"integer","description":"Filter by inactivity timeout values (in minutes)","format":"int32"}},"sortingParameters":{"type":"array","description":"List of sorting parameters. Available values: deviceEui, homeSite (home site name), building (building name), lastModifiedDate, sensorModel (sensor model name), id,  name, createDate, floorPlan (floor plan name), lastModifiedBy. Optional","example":["name"],"items":{"type":"string","description":"List of sorting parameters. Available values: deviceEui, homeSite (home site name), building (building name), lastModifiedDate, sensorModel (sensor model name), id,  name, createDate, floorPlan (floor plan name), lastModifiedBy. Optional","example":"[\"name\"]"}},"searchValue":{"type":"string","description":"Search text keyword for filtering by matching with name, device EUI, ID, building ID, building name, floor plan ID, floor plan name, last modified by. Optional","example":"beacon123"}},"description":"Request payload to filter sensors with pagination, search, and filter options"},"SensorHistoryFilter":{"type":"object","properties":{"from":{"type":"string","description":"Start date/time for filtering (inclusive), ISO 8601 format, mandatory","format":"date-time","example":"2025-07-01T00:00:00+03:00"},"to":{"type":"string","description":"End date/time for filtering (inclusive), ISO 8601 format, mandatory","format":"date-time","example":"2025-07-19T23:59:59+03:00"},"pageSize":{"type":"integer","description":"Page size for paginated results, mandatory","format":"int32","example":20},"pageNumber":{"type":"integer","description":"Page number for paginated results (zero-based), mandatory","format":"int32","example":0},"parameters":{"type":"array","description":"List of parameter names to filter results, optional","example":["temperature","humidity"],"items":{"type":"string","description":"List of parameter names to filter results, optional","example":"[\"temperature\",\"humidity\"]","enum":["accelerationVector","accelerationVectorX","accelerationVectorY","accelerationVectorZ","accelerationMagnitude","activePower","apparentPower","batterySensorCapacity","batteryDisplayCapacity","batteryRemainingDays","batteryVoltage","co2","co2Raw","ammeter","hallEffectCount","hallEffectState","energyConsumed","extAnalogInputB","extDigitalInputStateA","extDigitalInputStateB","extRelativeCountA","extRelativeCountB","extTotalCountA","extTotalCountB","fanSpeed","humidity","operatingMode","impactAlarm","in2Analog","in2Changeover","in2Mode","in2State","io1Analog","io1Changeover","io1Ecm","io1Mode","io1State","lightIntensity","lightState","lineFrequency","mcuTemperature","meterStatus","meterElapsed","accelerationAlarmStatus","motionEventCount","pirInitStatus","pm1_0","pm2_5","pm10_0","powerFactorMeter","presenceEventCount","presenceEventValue","occupancyStatus","presenceTemperature","barometricPressure","extProbeTemperature","extProbeVoltage","reactivePower","extReedSwitchCount","extReedSwitchState","relayState","relay1","relay2","relay3","relay4","relay5","extOutputState","temperature","temperatureSetpoint","voltmeter"]}},"aggregationPeriod":{"type":"string","description":"Aggregation period for results, optional. Available values: MINUTE, FIVE_MINUTES, FIFTEEN_MINUTES, THIRTY_MINUTES, HOURLY, DAILY","example":"HOURLY","enum":["MINUTE","FIVE_MINUTES","FIFTEEN_MINUTES","THIRTY_MINUTES","HOURLY","DAILY"]},"aggregationType":{"type":"string","description":"Aggregation type for results, optional. Available values: MIN, AVG, MAX, NONE","example":"AVG","enum":["MIN","AVG","MAX","NONE"]},"timezone":{"type":"string","description":"Timezone for results, optional. Example: Europe/Kiev, mandatory","example":"Europe/Kiev"}},"description":"Filter parameters for querying sensor history records"},"SensorHistoryPreferencesDto":{"type":"object","properties":{"parameters":{"type":"array","description":"Parameters for sensor history page. Example: 'temperature', 'humidity', 'pressure'","items":{"type":"string","description":"Parameters for sensor history page. Example: 'temperature', 'humidity', 'pressure'"}},"dateFrom":{"type":"string","description":"Date from for sensor history","format":"date-time","example":"2023-01-01T00:00:00Z"},"dateTo":{"type":"string","description":"Date to for sensor history","format":"date-time","example":"2023-01-31T23:59:59Z"},"aggregationType":{"type":"string","description":"Aggregation type for sensor history. Available values: 'average', 'min', 'max'","enum":["MIN","AVG","MAX","NONE"]},"aggregationPeriod":{"type":"string","description":"Aggregation period for results. Available values: MINUTE, FIVE_MINUTES, FIFTEEN_MINUTES, THIRTY_MINUTES, HOURLY, DAILY","enum":["MINUTE","FIVE_MINUTES","FIFTEEN_MINUTES","THIRTY_MINUTES","HOURLY","DAILY"]},"viewMode":{"type":"string","description":"View mode for sensor history page. Available values: 'TABLE', 'CHART'","enum":["CHART","TABLE"]},"live":{"type":"boolean","description":"Live mode for sensor history page","example":false}}},"SensorLastActivityParameter":{"type":"object","properties":{"id":{"type":"string","description":"Parameter name (identifier)"},"title":{"type":"string","description":"Human-readable parameter title"},"value":{"type":"string","description":"Latest recorded value of the parameter"},"unit":{"type":"string","description":"Unit of measurement for the parameter value"},"thresholdMin":{"type":"number","description":"Minimum threshold value for alerting","format":"double"},"thresholdMax":{"type":"number","description":"Maximum threshold value for alerting","format":"double"},"isThresholdSupported":{"type":"boolean","description":"Whether threshold alerting is supported for this parameter"},"lastActivity":{"type":"string","description":"Timestamp of the most recent recorded value for this parameter","format":"date-time"},"description":{"type":"string","description":"Additional description of the parameter"}},"description":"Last activity data for a single sensor parameter"},"SensorLastActivityResponse":{"type":"object","properties":{"sensorId":{"type":"string","description":"ID of the sensor"},"lastActivity":{"type":"string","description":"Timestamp of the most recent activity across all parameters","format":"date-time"},"parameters":{"type":"array","description":"List of sensor parameters with their latest values and activity timestamps","items":{"$ref":"#/components/schemas/SensorLastActivityParameter"}}},"description":"Last activity data for a sensor"},"SensorMapVisiblePreferencesDto":{"type":"object","properties":{"detailsElements":{"type":"array","description":"Elements visible on sensor details page","example":["assets","sensors"],"items":{"type":"string","description":"Elements visible on sensor details page","example":"[\"assets\",\"sensors\"]"}},"eventsElements":{"type":"array","description":"Sensor event elements","example":["assets","sensors"],"items":{"type":"string","description":"Sensor event elements","example":"[\"assets\",\"sensors\"]"}},"mapType":{"type":"string","description":"Type of map selected by the user (e.g., satellite, standard)","example":"satellite"}}},"SensorModelDto":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier of the sensor model","example":"123e4567-e89b-12d3-a456-426614174000"},"name":{"type":"string","description":"Name of the sensor model","example":"My Sensor Model"},"description":{"type":"string","description":"Description of the sensor model","example":"Humidity reported sensor"},"tags":{"type":"array","description":"List of associated tags","items":{"$ref":"#/components/schemas/TagShort"}},"createDate":{"type":"string","description":"Timestamp of when the sensor model was created","format":"date-time","example":"2025-07-01T09:30:00+03:00"}},"description":"Entity representing a sensor model"},"SensorModelFilterRequest":{"type":"object","properties":{"pageSize":{"type":"integer","description":"Number of items per page, optional","format":"int32","example":20},"pageNumber":{"type":"integer","description":"Page number (0-based index), optional","format":"int32","example":0},"tagFilter":{"type":"array","description":"Filter by tag IDs, optional","example":["aab62a49-a437-4ea2-83b1-43fce670dd0a","aab62a49-a437-4ea2-83b1-43fce670dd0c"],"items":{"type":"string","description":"Filter by tag IDs, optional","example":"[\"aab62a49-a437-4ea2-83b1-43fce670dd0a\",\"aab62a49-a437-4ea2-83b1-43fce670dd0c\"]"}},"sortingParameters":{"type":"array","description":"Sorting parameters. Use field names with optional direction, available values: id, name, createDate","example":["name","createDate"],"items":{"type":"string","description":"Sorting parameters. Use field names with optional direction, available values: id, name, createDate","example":"[\"name\",\"createDate\"]"}},"searchValue":{"type":"string","description":"Text to search by model name or id","example":"My Sensor"}},"description":"Filter and pagination parameters for retrieving sensor models"},"SensorModelRequest":{"required":["name"],"type":"object","properties":{"id":{"type":"string","description":"Unique identifier of the sensor model (used for updates), mandatory for update","example":"123e4567-e89b-12d3-a456-426614174000"},"name":{"type":"string","description":"Name of the sensor model, required","example":"Sensor v2"},"description":{"type":"string","description":"Description of the sensor model, optional","example":"Humidity sensor"},"tags":{"type":"array","description":"List of tag IDs associated with this sensor model, optional","example":["aab62a49-a437-4ea2-83b1-43fce670dd0a","aab62a49-a437-4ea2-83b1-43fce670dd0c"],"items":{"type":"string","description":"List of tag IDs associated with this sensor model, optional","example":"[\"aab62a49-a437-4ea2-83b1-43fce670dd0a\",\"aab62a49-a437-4ea2-83b1-43fce670dd0c\"]"}}},"description":"Request body for creating or updating a sensor model"},"SensorParameterResponse":{"type":"object","properties":{"id":{"type":"string","description":"The unique code of the sensor parameter","example":"temperature"},"title":{"type":"string","description":"The display title of the sensor parameter","example":"Temperature"},"unit":{"type":"string","description":"The unit of measurement","example":"°C"},"valueType":{"type":"string","description":"The type of the value (text, int, double, or boolean)","example":"double"},"enums":{"type":"array","items":{"type":"string"}},"description":{"type":"string","description":"A brief description of the sensor parameter"},"available":{"type":"boolean"}},"description":"Response object for sensor parameter details"},"SensorParametersRequest":{"type":"object","properties":{"sensorModels":{"type":"array","items":{"type":"string"}},"search":{"type":"string"}}},"SensorPositionRequest":{"required":["id"],"type":"object","properties":{"id":{"type":"string","description":"Unique identifier of the entity, mandatory","example":"123e4567-e89b-12d3-a456-426614174000"},"coordinates":{"$ref":"#/components/schemas/FloorCoordinates"},"location":{"$ref":"#/components/schemas/Coordinates"}},"description":"Request containing entity ID and its new coordinates on the floor or map"},"ShapeEntityWithColor":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier of the shape","example":"9c4d2b80-f1cd-4a95-a47c-e292cdad13c1"},"coordinates":{"type":"array","description":"List of coordinates defining the shape","items":{"$ref":"#/components/schemas/Coordinates"}},"color":{"type":"string","description":"Color of the shape in hex or CSS format","example":"#FF5733"},"opacity":{"type":"number","description":"Opacity of the shape in percents, between 0 (transparent) and 100 (opaque)","format":"double","example":75}},"description":"Shape entity with color and opacity properties"},"SimpleAsset":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"type":{"type":"string"},"typeId":{"type":"string"},"homeSiteId":{"type":"string"},"tags":{"type":"array","items":{"type":"string"}}},"description":"Asset linked to this device"},"SimpleEntity":{"type":"object","properties":{"id":{"type":"string","description":"The Entity`s ID, is required","example":"aab62a49-a437-4ea2-83b1-43fce670dd0a"},"name":{"type":"string","description":"The Entity`s name, is required","example":"My Entity"}}},"SimpleFloorLevel":{"type":"object","properties":{"id":{"type":"string","description":"The Entity`s ID, is required","example":"aab62a49-a437-4ea2-83b1-43fce670dd0a"},"name":{"type":"string","description":"The Entity`s name, is required","example":"My Entity"},"level":{"type":"string"}}},"SimpleFloorPlan":{"type":"object","properties":{"id":{"type":"string","description":"The Entity`s ID, is required","example":"aab62a49-a437-4ea2-83b1-43fce670dd0a"},"name":{"type":"string","description":"The Entity`s name, is required","example":"My Entity"},"floorNumber":{"type":"string"}},"description":"A simple entity with ID and name"},"SimpleModel":{"type":"object","properties":{"id":{"type":"string","description":"The Entity`s ID, is required","example":"aab62a49-a437-4ea2-83b1-43fce670dd0a"},"name":{"type":"string","description":"The Entity`s name, is required","example":"My Entity"},"manufacturer":{"type":"string","description":"Beacon manufacturer, available values: TEKTELIC, Other","example":"Other"}},"description":"Model information of the beacon"},"SimpleSensor":{"type":"object","properties":{"id":{"type":"string","description":"The Entity`s ID, is required","example":"aab62a49-a437-4ea2-83b1-43fce670dd0a"},"name":{"type":"string","description":"The Entity`s name, is required","example":"My Entity"},"deviceEui":{"type":"string"}}},"SiteDto":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier of the site","example":"123e4567-e89b-12d3-a456-426614174000"},"name":{"type":"string","description":"Name of the site","example":"Main Warehouse"},"tenantId":{"type":"string","description":"Tenant identifier","example":"123e4567-e89b-12d3-a456-426614174000"},"coordinates":{"type":"array","description":"List of coordinates defining the site boundary","items":{"$ref":"#/components/schemas/Coordinates"}},"createDate":{"type":"string","description":"Date and time when the site was created","format":"date-time","example":"2023-07-23T10:15:30+03:00"},"description":{"type":"string","description":"Description of the site","example":"This is the primary logistics site."},"tags":{"type":"array","description":"List of associated tags","items":{"$ref":"#/components/schemas/TagShort"}},"assetsInside":{"type":"integer","description":"Number of assets located inside the site","format":"int32","example":42},"sensorsInside":{"type":"integer","description":"Number of sensors located inside the site","format":"int32","example":10}},"description":"Data transfer object representing a site"},"SiteFilterRequest":{"type":"object","properties":{"pageSize":{"type":"integer","description":"Number of results per page, optional","format":"int32","example":10},"pageNumber":{"type":"integer","description":"Page number to retrieve (0-based), optional","format":"int32","example":0},"searchValue":{"type":"string","description":"Search keyword for filtering site names or descriptions, optional","example":"warehouse"},"tagFilter":{"type":"array","description":"List of tag IDs used to filter sites, optional","example":["123e4567-e89b-12d3-a456-426614174000","123e4567-e89b-12d3-a456-426614174001"],"items":{"type":"string","description":"List of tag IDs used to filter sites, optional","example":"[\"123e4567-e89b-12d3-a456-426614174000\",\"123e4567-e89b-12d3-a456-426614174001\"]"}}},"description":"Request object for filtering and paginating site results"},"SiteMapVisiblePreferencesDto":{"type":"object","properties":{"detailsElements":{"type":"array","description":"Elements visible on site details page","example":["assets","sensors"],"items":{"type":"string","description":"Elements visible on site details page","example":"[\"assets\",\"sensors\"]"}},"mapType":{"type":"string","description":"Type of map selected by the user (e.g., satellite, standard)","example":"satellite"}}},"SiteRequest":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier of the site, mandatory for update","example":"123e4567-e89b-12d3-a456-426614174000"},"name":{"type":"string","description":"Name of the site, mandatory","example":"Main Office Site"},"coordinates":{"type":"array","description":"List of the real geographic coordinates defining the site boundary, mandatory","example":[[{"lat":40.712776,"lng":-74.005974},{"lat":40.71278,"lng":-74.006}]],"items":{"$ref":"#/components/schemas/Coordinates"}},"description":{"type":"string","description":"Description of the site, optional","example":"Primary site located downtown"},"tags":{"type":"array","description":"List of tag IDs associated with the site, additional markers for grouping. Optional","example":["123e4567-e89b-12d3-a456-426614174000","123e4567-e89b-12d3-a456-426614174001"],"items":{"type":"string","description":"List of tag IDs associated with the site, additional markers for grouping. Optional","example":"[\"123e4567-e89b-12d3-a456-426614174000\",\"123e4567-e89b-12d3-a456-426614174001\"]"}}},"description":"Request object for creating or updating a site"},"TagDto":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier of the tag, mandatory for update","example":"123e4567-e89b-12d3-a456-426614174000"},"name":{"type":"string","description":"Name of the tag, mandatory","example":"Cold Storage"},"description":{"type":"string","description":"Description of the tag, optional","example":"Indicates cold storage capabilities"},"color":{"type":"string","description":"Color code associated with the tag (e.g., hex code), mandatory","example":"#00FF00"}},"description":"Data transfer object representing a tag"},"TagLogDto":{"type":"object","properties":{"id":{"type":"string","description":"Unique geofence ID","example":"123e4567-e89b-12d3-a456-426614174000"},"timestamp":{"type":"string","description":"Timestamp of changing","format":"date-time","example":"2025-07-21T10:15:30Z"},"entity":{"type":"string","description":"Logged entity","example":"asset"},"entityId":{"type":"string","description":"ID of logged entity","example":"123e4567-e89b-12d3-a456-426614174000"},"tags":{"type":"array","description":"Information about tags that includes ID and name of tag","example":[{"id":"123e4567-e89b-12d3-a456-426614174000","name":"Tag1"}],"items":{"$ref":"#/components/schemas/SimpleEntity"}},"modifiedBy":{"type":"string","description":"The email of the person, who modified tags","example":"admin@email.com"}},"description":"Information about changing tags in the entity"},"TagLogFilter":{"type":"object","properties":{"from":{"type":"string","description":"Start date/time for filtering (inclusive), ISO 8601 format, mandatory","format":"date-time","example":"2025-07-01T00:00:00+03:00"},"to":{"type":"string","description":"End date/time for filtering (inclusive), ISO 8601 format, mandatory","format":"date-time","example":"2025-07-19T23:59:59+03:00"},"assetIdFilter":{"type":"array","description":"List of asset IDs to filter, optional","example":["9fabc3e2-1c1e-4d23-abc0-1234567890ab","9fabc3e2-1c1e-4d23-abc0-1234567890a0"],"items":{"type":"string","description":"List of asset IDs to filter, optional","example":"[\"9fabc3e2-1c1e-4d23-abc0-1234567890ab\",\"9fabc3e2-1c1e-4d23-abc0-1234567890a0\"]"}},"tagNameFilter":{"type":"array","description":"List of tag names to filter, optional","example":["Tag1","Tag2"],"items":{"type":"string","description":"List of tag names to filter, optional","example":"[\"Tag1\",\"Tag2\"]"}},"modifiedByFilter":{"type":"array","description":"List of user emails to filter, optional","example":["user@email.com","admin@email.com"],"items":{"type":"string","description":"List of user emails to filter, optional","example":"[\"user@email.com\",\"admin@email.com\"]"}}}},"TagShort":{"type":"object","properties":{"id":{"type":"string","description":"The Tag`s ID, is required","example":"aab62a49-a437-4ea2-83b1-43fce670dd0a"},"value":{"type":"string","description":"The Tag name, is required","example":"My Tag"},"color":{"type":"string","description":"The Tag`s color, is required","example":"BLUE"}}},"TekNsApiKeyDto":{"type":"object","properties":{"createdAtMs":{"type":"integer","format":"int64"},"apiKeyHmacSha256Hex":{"type":"string"}}},"TekNsCredentialsDto":{"type":"object","properties":{"tekNsDlUrl":{"type":"string","description":"Download URL for Tektelic NS integration, mandatory","example":"/api/v2/integration/http/XXXX"},"region":{"type":"string","description":"Region identifier, available values: TEK-Europe, TEK-NorthAmerica. Mandatory","example":"TEK-Europe"},"nsHost":{"type":"string","description":"NS host name or URL","example":"https://lorawan-ns-na.tektelic.com"},"username":{"type":"string","description":"Username for NS access","example":"api-user"},"password":{"type":"string","description":"Password or token for NS access","example":"********"}},"description":"Credentials for Tektelic Network Service including download URL, region and access parameters"},"TenantAuth":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier of the tenant","example":"a1b2c3d4-5678-90ef-gh12-34567890abcd"},"name":{"type":"string","description":"Name of the tenant","example":"TenantName"},"clientId":{"type":"string","description":"Client ID used for authentication","example":"client-abc-123"},"urlAuth":{"type":"string","description":"Authentication URL","example":"https://auth.example.com"},"urlAcc":{"type":"string","description":"Account service URL","example":"https://account.example.com"},"urlConsole":{"type":"string","description":"Console service URL","example":"https://console.example.com"},"realm":{"type":"string","description":"Realm used in authentication","example":"tenant-realm"}},"description":"Authentication details for a tenant"},"TenantDto":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier of the tenant, mandatory for update","example":"123e4567-e89b-12d3-a456-426614174000"},"name":{"type":"string","description":"Name of the tenant, mandatory","example":"Tech System"},"tenantId":{"type":"string","description":"Realm ID in Keycloak, mandatory","example":"tech_system"},"clientId":{"type":"string","description":"Client ID in Keycloak, mandatory","example":"tech_system_client_id"}},"description":"Data transfer object representing a tenant"},"ThermostatFullConfigurationDto":{"type":"object","properties":{"deviceEui":{"type":"string","description":"Device EUI of the thermostat","example":"647FDA0000000000"},"confirmedOperationalMode":{"type":"string","description":"Last operational mode confirmed by the device","example":"Auto","enum":["Auto","Eco"]},"confirmedFanSpeed":{"type":"string","description":"Last fan speed confirmed by the device","example":"Low","enum":["Off","Low","Medium","High"]},"confirmedComfortSetpoint":{"type":"number","description":"Last comfort setpoint confirmed by the device, °C","format":"double","example":22.5},"confirmedEconomySetpoint":{"type":"number","description":"Last economy setpoint confirmed by the device, °C","format":"double","example":18.0},"confirmedAt":{"type":"integer","description":"Epoch millis when the device last confirmed its configuration","format":"int64","example":1753100000000},"requestedOperationalMode":{"type":"string","description":"Requested operational mode still awaiting confirmation; null if not part of the pending change","example":"Eco","enum":["Auto","Eco"]},"requestedFanSpeed":{"type":"string","description":"Requested fan speed still awaiting confirmation; null if not part of the pending change","example":"Medium","enum":["Off","Low","Medium","High"]},"requestedComfortSetpoint":{"type":"number","description":"Requested comfort setpoint still awaiting confirmation, °C; null if not part of the pending change","format":"double","example":21.0},"requestedEconomySetpoint":{"type":"number","description":"Requested economy setpoint still awaiting confirmation, °C; null if not part of the pending change","format":"double","example":17.5},"requestedAt":{"type":"integer","description":"Epoch millis when the pending change was requested","format":"int64","example":1753103600000},"status":{"type":"string","description":"Status of the last configuration request: PENDING — awaiting device confirmation; APPLIED — confirmed by the device; FAILED — rejected by the device; TIMEOUT — no confirmation within twice the device reporting period","example":"PENDING","enum":["PENDING","APPLIED","FAILED","TIMEOUT"]}},"description":"Full thermostat configuration state: last device-confirmed values, last user-requested (pending) values, and the request status"},"ThermostatRequestedConfigurationDto":{"required":["deviceEui"],"type":"object","properties":{"deviceEui":{"type":"string","description":"Device EUI of the thermostat","example":"647FDA0000000000"},"operationalMode":{"type":"string","description":"Operational mode to set; null to leave unchanged","example":"Eco","enum":["Auto","Eco"]},"fanSpeed":{"type":"string","description":"Fan speed to set; null to leave unchanged","example":"Medium","enum":["Off","Low","Medium","High"]},"comfortSetpoint":{"type":"number","description":"Comfort setpoint to set, °C (0–50, 0.5 °C steps); null to leave unchanged","format":"double","example":21.0},"economySetpoint":{"type":"number","description":"Economy setpoint to set, °C (0–50, 0.5 °C steps); null to leave unchanged","format":"double","example":18.0}},"description":"Requested thermostat configuration change; only non-null fields are treated as requested changes"},"TokenRequest":{"required":["login","password","tenantName"],"type":"object","properties":{"tenantName":{"type":"string","description":"Name of the tenant","example":"tenant123"},"login":{"type":"string","description":"Login","example":"example@email.com"},"password":{"type":"string","description":"Password","example":"MySecurePass1234@"}}},"UnassignedBeaconResponse":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier of the beacon","example":"123e4567-e89b-12d3-a456-426614174000"},"name":{"type":"string","description":"Display name of the beacon","example":"Storage Room Beacon"},"macAddress":{"type":"string","description":"MAC address of the beacon","example":"00:1A:7D:DA:71:13"},"deviceEui":{"type":"string","description":"Device EUI (Extended Unique Identifier)","example":"647FDA0000000000"},"localizationMode":{"type":"string","description":"Localization mode (Regular, Nearest)","example":"Regular"}},"description":"Beacon data for unassigned beacons (not placed on any map)"},"UpdateAssetTypeRequest":{"required":["name"],"type":"object","properties":{"name":{"type":"string","description":"Icon name, mandatory","example":"My Icon"},"description":{"type":"string","description":"Optional description of the asset type, optional","example":"Used for camion monitoring"},"iconSvg":{"type":"string","description":"SVG content of the icon, either raw base64-encoded string, if value is absent the default svg is set. Optional","example":"PD94bWwgdmVyc..."},"iconColor":{"type":"string","description":"Hex color code of the icon, available colors: TURQUOISE, GREEN, YELLOW, ORANGE, RED, LIGHTBLUE, BLUE, PURPLE, PINK, BROWN. If value is absent the default color is set, optional","example":"BLUE"},"iconOpacity":{"type":"integer","description":"Opacity level of the icon (0 to 100). By default opacity is set 100. Optional","format":"int32","example":85},"iconSize":{"type":"integer","description":"Size of the icon in bytes. Required to get correct value, by default 352, optional","format":"int64","example":2048},"tags":{"type":"string","description":"List of tag`s ID for the asset type, additional markers for grouping, tags should be added earlier, optional","example":"[\"7482c99f-9093-4cb9-84ad-5f548cca432a\",\"aab62a49-a437-4ea2-83b1-43fce670dd0a\"]"},"id":{"type":"string","description":"Asset type ID, mandatory","example":"aab62a49-a437-4ea2-83b1-43fce670dd0a"}}},"UpdateConfigurationRequest":{"required":["deviceFamilyId","downlink","id","name","port"],"type":"object","properties":{"name":{"type":"string","description":"Name of the configuration, mandatory","example":"Reset to Defaults"},"description":{"type":"string","description":"Description of the configuration, optional","example":"Set default configuration for device SEAL"},"deviceFamilyId":{"type":"string","description":"ID of the device family this configuration belongs to, mandatory","example":"aab62a49-a437-4ea2-83b1-43fce670dd0a"},"downlink":{"type":"string","description":"Downlink payload as a hex string, mandatory","example":"A1B2C3D4"},"port":{"type":"integer","description":"Port number used for downlink, mandatory","format":"int32","example":10},"tags":{"type":"array","description":"List of tags associated with the configuration, additional markers for grouping, optional","example":["aab62a49-a437-4ea2-83b1-43fce670dd0a","aab62a49-a437-4ea2-83b1-43fce670dd01"],"items":{"type":"string","description":"List of tags associated with the configuration, additional markers for grouping, optional","example":"[\"aab62a49-a437-4ea2-83b1-43fce670dd0a\",\"aab62a49-a437-4ea2-83b1-43fce670dd01\"]"}},"id":{"type":"string","description":"Unique identifier of the configuration to update, mandatory","example":"aab62a49-a437-4ea2-83b1-43fce670dd0a"}},"description":"Request payload for updating an existing device configuration"},"UpdateDeviceRequest":{"required":["id"],"type":"object","properties":{"id":{"type":"string","description":"Unique identifier of the device, mandatory","example":"123e4567-e89b-12d3-a456-426614174000"},"name":{"type":"string","description":"Name of the device, mandatory","example":"Tracker A1"},"frequency":{"type":"integer","description":"Defines the time of the device reporting in minutes, since the last uplink after which\nthe device's status will change to offline. By default is set 60 min, optional\n","format":"int32","example":60},"assetId":{"type":"string","description":"ID of the asset associated with the device, optional","example":"123e4567-e89b-12d3-a456-4266141740006"},"description":{"type":"string","description":"Description of the device, optional","example":"Outdoor tracking device"},"tags":{"type":"array","description":"List of tag IDs associated with the device, additional markers for grouping, optional","example":["aab62a49-a437-4ea2-83b1-43fce670dd0a","aab62a49-a437-4ea2-83b1-43fce670dd0c"],"items":{"type":"string","description":"List of tag IDs associated with the device, additional markers for grouping, optional","example":"[\"aab62a49-a437-4ea2-83b1-43fce670dd0a\",\"aab62a49-a437-4ea2-83b1-43fce670dd0c\"]"}}},"description":"Request object for updating device details"},"UpdateFloorImageInfo":{"type":"object","properties":{"distance":{"type":"number","description":"Real-world distance between the two assigned by user dots to calculate the indoor size, in meters. Mandatory","format":"double","example":50.0},"pixels":{"type":"number","description":"Number of pixels between two dots to calculate the indoor size, mandatory","format":"double","example":10.0},"mapHeight":{"type":"integer","description":"Height of the floor plan picture uploaded by the user in pixels","format":"int64","example":1024},"mapWidth":{"type":"integer","description":"Width of the floor plan picture uploaded by the user in pixels","format":"int64","example":2048}},"description":"Information about floor image scaling"},"UpdateFloorPlanDetailsRequest":{"type":"object","properties":{"name":{"type":"string","description":"New name of the floor plan, mandatory","example":"Main Office - Floor 2"},"description":{"type":"string","description":"Optional description of the floor plan, optional","example":"Second floor of the main office building"},"buildingId":{"type":"string","description":"Building ID where floor plan is located, mandatory","example":"building-12345"},"floorNumber":{"type":"string","description":"Floor plan level, optional","example":"2"},"tagIds":{"type":"array","description":"Tag IDs associated with the floor plan, additional markers for grouping, optional","example":["f2d435b1-aeaf-4f02-b0f6-0e57f83d671a","f2d435b1-aeaf-4f02-b0f6-0e57f83d6710"],"items":{"type":"string","description":"Tag IDs associated with the floor plan, additional markers for grouping, optional","example":"[\"f2d435b1-aeaf-4f02-b0f6-0e57f83d671a\",\"f2d435b1-aeaf-4f02-b0f6-0e57f83d6710\"]"}}},"description":"Request object for updating floor plan details"},"UpdateGeofenceRequest":{"required":["id"],"type":"object","properties":{"id":{"type":"string","description":"Unique identifier of the geofence, mandatory","example":"123e4567-e89b-12d3-a456-426614174000"},"name":{"type":"string","description":"Name of the geofence, mandatory","example":"Main Entrance Zone"},"description":{"type":"string","description":"Detailed description of the geofence, optional","example":"Geofence covering the main entrance area"},"color":{"type":"string","description":"Color used to display the geofence on the map in HEX format, mandatory","example":"#FF5733"},"opacity":{"type":"number","description":"Opacity level of the geofence fill in percents, between 0 and 100, optional","format":"double","example":60},"tagIds":{"type":"array","description":"List of tag IDs associated with the geofence, additional markers for grouping, optional","example":["aab62a49-a437-4ea2-83b1-43fce670dd0a","aab62a49-a437-4ea2-83b1-43fce670dd0c"],"items":{"type":"string","description":"List of tag IDs associated with the geofence, additional markers for grouping, optional","example":"[\"aab62a49-a437-4ea2-83b1-43fce670dd0a\",\"aab62a49-a437-4ea2-83b1-43fce670dd0c\"]"}}},"description":"Request model for updating an existing geofence"},"UpdateSensorRequest":{"type":"object","properties":{"name":{"type":"string","description":"Human-readable name of the sensor, mandatory","example":"My Sensor"},"inactivityTimeout":{"type":"integer","description":"Timeout in minutes after which the sensor is considered lost, mandatory","format":"int32","example":60},"tags":{"type":"array","description":"List of tag IDs associated with the sensor, additional filter marker, optional","example":["aab62a49-a437-4ea2-83b1-43fce670dd0a","aab62a49-a437-4ea2-83b1-43fce670dd0c"],"items":{"type":"string","description":"List of tag IDs associated with the sensor, additional filter marker, optional","example":"[\"aab62a49-a437-4ea2-83b1-43fce670dd0a\",\"aab62a49-a437-4ea2-83b1-43fce670dd0c\"]"}},"description":{"type":"string","description":"Description of the sensor, optional","example":"Located at main entrance"},"buildingId":{"type":"string","description":"ID of the building where the sensor is located, optional","example":"aab62a49-a437-4ea2-83b1-43fce670dd0a"},"floorPlanId":{"type":"string","description":"ID of the floor plan where the sensor is located, optional","example":"aab62a49-a437-4ea2-83b1-43fce670dd0a"},"coordinateX":{"type":"number","description":"X coordinate of the sensor on the floor plan, optional","example":120.75},"coordinateY":{"type":"number","description":"Y coordinate of the sensor on the floor plan, optional","example":85.2},"latitude":{"type":"number","description":"Latitude of the sensor on the map, optional","example":40.7128},"longitude":{"type":"number","description":"Longitude of the sensor on the map, optional","example":-74.006},"id":{"type":"string","description":"Unique identifier of the device, mandatory","example":"123e4567-e89b-12d3-a456-426614174000"},"deviceEui":{"type":"string","description":"EUI of the device, mandatory","example":"647FDA0000000000"},"homeSiteId":{"type":"string","description":"ID of the site where the sensor is located, optional","example":"aab62a49-a437-4ea2-83b1-43fce670dd0a"},"sensorModelId":{"type":"string","description":"ID of the sensor model, mandatory for non-Tektelic sensor","example":"aab62a49-a437-4ea2-83b1-43fce670dd0a"}},"description":"Request body for updating a sensor"},"UserAssetTablePreferencesDto":{"type":"object","allOf":[{"$ref":"#/components/schemas/BaseTablePreferencesDto"},{"type":"object","properties":{"assetHistoryColumnView":{"type":"array","items":{"type":"string"}},"eventColumnView":{"type":"array","items":{"type":"string"}}}}]},"UserFloorTablePreferencesDto":{"type":"object","allOf":[{"$ref":"#/components/schemas/BaseTablePreferencesDto"},{"type":"object","properties":{"geofenceColumnView":{"type":"array","items":{"type":"string"}},"assetColumnView":{"type":"array","items":{"type":"string"}},"eventColumnView":{"type":"array","items":{"type":"string"}},"beaconColumnView":{"type":"array","items":{"type":"string"}},"sensorColumnView":{"type":"array","items":{"type":"string"}}}}]},"UserHomeTablePreferencesDto":{"type":"object","allOf":[{"$ref":"#/components/schemas/BaseTablePreferencesDto"},{"type":"object","properties":{"geofenceColumnView":{"type":"array","items":{"type":"string"}},"assetColumnView":{"type":"array","items":{"type":"string"}},"eventColumnView":{"type":"array","items":{"type":"string"}},"sensorColumnView":{"type":"array","items":{"type":"string"}}}}]},"UserPreferencesDto":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier of the user preferences","example":"123e4567-e89b-12d3-a456-426614174000"},"assetColumnView":{"type":"array","description":"Columns visible in the asset view","example":["id","name","status"],"items":{"type":"string","description":"Columns visible in the asset view","example":"[\"id\",\"name\",\"status\"]"}},"assetTypeColumnView":{"type":"array","description":"Columns visible in the asset type view","example":["typeId","typeName"],"items":{"type":"string","description":"Columns visible in the asset type view","example":"[\"typeId\",\"typeName\"]"}},"beaconColumnView":{"type":"array","description":"Columns visible in the beacon view","example":["beaconId","location"],"items":{"type":"string","description":"Columns visible in the beacon view","example":"[\"beaconId\",\"location\"]"}},"beaconModelColumnView":{"type":"array","description":"Columns visible in the beacon model view","example":["modelId","modelName"],"items":{"type":"string","description":"Columns visible in the beacon model view","example":"[\"modelId\",\"modelName\"]"}},"buildingColumnView":{"type":"array","description":"Columns visible in the building view","example":["buildingId","buildingName"],"items":{"type":"string","description":"Columns visible in the building view","example":"[\"buildingId\",\"buildingName\"]"}},"configurationColumnView":{"type":"array","description":"Columns visible in the configuration view","example":["configId","configName"],"items":{"type":"string","description":"Columns visible in the configuration view","example":"[\"configId\",\"configName\"]"}},"deviceColumnView":{"type":"array","description":"Columns visible in the device view","example":["deviceId","deviceName"],"items":{"type":"string","description":"Columns visible in the device view","example":"[\"deviceId\",\"deviceName\"]"}},"eventColumnView":{"type":"array","description":"Columns visible in the event view","example":["eventId","eventType"],"items":{"type":"string","description":"Columns visible in the event view","example":"[\"eventId\",\"eventType\"]"}},"eventRuleColumnView":{"type":"array","description":"Columns visible in the event rule view","example":["ruleId","ruleName"],"items":{"type":"string","description":"Columns visible in the event rule view","example":"[\"ruleId\",\"ruleName\"]"}},"floorPlanColumnView":{"type":"array","description":"Columns visible in the floor plan view","example":["floorPlanId","floorPlanName"],"items":{"type":"string","description":"Columns visible in the floor plan view","example":"[\"floorPlanId\",\"floorPlanName\"]"}},"geofenceColumnView":{"type":"array","description":"Columns visible in the geofence view","example":["geofenceId","geofenceName"],"items":{"type":"string","description":"Columns visible in the geofence view","example":"[\"geofenceId\",\"geofenceName\"]"}},"siteColumnView":{"type":"array","description":"Columns visible in the site view","example":["siteId","siteName"],"items":{"type":"string","description":"Columns visible in the site view","example":"[\"siteId\",\"siteName\"]"}},"itemsPerPage":{"type":"integer","description":"Number of items to display per page","format":"int32","example":20}},"description":"User preferences for column views and pagination"},"UserSensorPreferencesDto":{"type":"object","properties":{"sensorMainColumnView":{"type":"array","description":"Columns visible in the main table sensor view","example":["id","name"],"items":{"type":"string","description":"Columns visible in the main table sensor view","example":"[\"id\",\"name\"]"}},"sensorHomeOutdoorColumnView":{"type":"array","description":"Columns visible in the outdoor home table sensor view","example":["id","name"],"items":{"type":"string","description":"Columns visible in the outdoor home table sensor view","example":"[\"id\",\"name\"]"}},"sensorHomeIndoorColumnView":{"type":"array","description":"Columns visible in the indoor home table sensor view","example":["id","name"],"items":{"type":"string","description":"Columns visible in the indoor home table sensor view","example":"[\"id\",\"name\"]"}},"sensorFloorPlanColumnView":{"type":"array","description":"Columns visible in the floor plan table sensor view","example":["id","name"],"items":{"type":"string","description":"Columns visible in the floor plan table sensor view","example":"[\"id\",\"name\"]"}},"itemsPerPage":{"type":"integer","description":"Number of items per page","format":"int32","example":20}}},"UserSensorTablePreferencesDto":{"type":"object","allOf":[{"$ref":"#/components/schemas/BaseTablePreferencesDto"},{"type":"object","properties":{"eventColumnView":{"type":"array","items":{"type":"string"}}}}]},"VisibilityThresholdsDto":{"type":"object","properties":{"visibilityThreshold":{"type":"boolean"}}},"VisibleMapPreferencesDto":{"type":"object","properties":{"assets":{"type":"boolean","description":"Whether assets are visible on the map","example":true},"geofences":{"type":"boolean","description":"Whether geofences are visible on the map","example":false},"sensors":{"type":"boolean","description":"Whether sensors are visible on the map","example":false},"beacons":{"type":"boolean","description":"Whether beacons are visible on the map","example":false},"beaconCoordinates":{"type":"boolean","description":"Whether beacon coordinates are visible on the map","example":false},"historyMovementDirections":{"type":"boolean","description":"Whether movement directions (arrows) from history are shown","example":true},"historyMovementTracks":{"type":"boolean","description":"Whether movement tracks from history are shown","example":false}},"description":"Preferences for visibility of map elements in the UI"},"WebhookDataDto":{"type":"object","properties":{"url":{"type":"string","description":"The URL where the webhook should be sent","example":"https://example.com/webhook-endpoint"},"headers":{"type":"string","description":"HTTP headers for the webhook request, typically in JSON or key-value string format","example":"{\"Authorization\":\"Bearer token123\",\"Content-Type\":\"application/json\"}"},"body":{"type":"string","description":"The custom payload body that is used in the webhook","example":"{\"event\":\"lowBattery\",\"level\":15}"},"enabled":{"type":"boolean","description":"Enable or disable webhook, available values: enable, disable","example":false}},"description":"Data used to configure a webhook for the event rule"}},"securitySchemes":{"bearerAuth":{"type":"http","name":"bearerAuth","scheme":"bearer","bearerFormat":"JWT"}}}}