openapi: "3.0.0" info: version: 1.0.0 title: SensLog Telemetry servers: - url: http://127.0.0.1:8080 - url: https://theros.wirelessinfo.cz paths: /info: get: # done operationId: infoGET summary: Information about running instance responses: 200: description: Instance information content: application/json: schema: $ref: "#/components/schemas/Info" default: description: unexpected error content: application/json: schema: $ref: "#/components/schemas/Error" /campaigns: get: # done operationId: campaignsGET summary: Publish info about all campaigns parameters: - in: query name: zone schema: type: string default: UTC required: false examples: UTC: value: UTC GMT: value: GMT - in: query name: navigationLinks schema: type: boolean default: true description: Option to disable @NavigationLinks in a response responses: 200: description: JSON array of basic info of each campaign content: application/json: schema: type: array items: $ref: '#/components/schemas/CampaignBasicInfo' default: description: unexpected error content: application/json: schema: $ref: '#/components/schemas/Error' /campaigns/{campaignId}: get: # done operationId: campaignIdGET summary: Publish info about a campaign parameters: - in: path name: campaignId schema: type: integer format: int64 required: true description: Numeric ID of the campaign to get - in: query name: zone schema: type: string default: UTC required: false examples: UTC: value: UTC GMT: value: GMT - in: query name: navigationLinks schema: type: boolean default: true description: Option to disable @NavigationLinks in a response responses: 200: description: JSON object containing info about a campaign content: application/json: schema: $ref: '#/components/schemas/CampaignDetailInfo' default: description: unexpected error content: application/json: schema: $ref: '#/components/schemas/Error' /campaigns/{campaignId}/units: get: # done operationId: campaignIdUnitsGET summary: Publish info about the campaign's units parameters: - in: path name: campaignId schema: type: integer format: int64 required: true description: Numeric ID of the campaign to get - in: query name: zone schema: type: string default: UTC required: false examples: UTC: value: UTC GMT: value: GMT - in: query name: navigationLinks schema: type: boolean default: true description: Option to disable @NavigationLinks in a response responses: 200: description: JSON Array containing info about campaign's units content: application/json: schema: type: array items: $ref: '#/components/schemas/CampaignUnitBasicInfo' default: description: unexpected error content: application/json: schema: $ref: '#/components/schemas/Error' /campaigns/{campaignId}/units/observations: get: # done operationId: campaignIdUnitsObservationsGET summary: Publish info about all data of units merged together within the campaign parameters: - in: path name: campaignId schema: type: integer format: int64 required: true description: Numeric ID of the campaign to get - in: query name: from schema: type: string format: date-time required: false - in: query name: to schema: type: string format: date-time required: false - in: query name: zone schema: type: string required: false - in: query name: offset schema: type: integer format: int64 - in: query name: limit schema: type: integer format: int64 required: false - in: query name: navigationLinks schema: type: boolean default: true description: Option to disable @NavigationLinks in a response responses: 200: description: JSON containing stream of telemetry data content: application/json: schema: $ref: '#/components/schemas/CampaignObservation' default: description: unexpected error content: application/json: schema: $ref: '#/components/schemas/Error' /campaigns/{campaignId}/units/observations/locations: get: # done operationId: campaignIdUnitsObservationsLocationsGET summary: Publish info about all data of units merged together within the campaign parameters: - in: path name: campaignId schema: type: integer format: int64 required: true description: Numeric ID of the campaign to get - in: query name: limitPerUnit required: true schema: type: integer default: 1 examples: Last locations: value: 1 summary: Last Locations of each unit - in: query name: from schema: type: string format: date-time required: false example: 2017-07-21T17:32:28Z - in: query name: to schema: type: string format: date-time required: false example: 2017-07-21T17:32:28Z - in: query name: zone schema: type: string default: UTC required: false - in: query name: sort schema: type: string enum: [asc, desc] default: asc examples: Descending Order: value: desc Ascending Order: value: asc - in: query name: navigationLinks schema: type: boolean default: true description: Option to disable @NavigationLinks in a response responses: 200: description: JSON containing stream of telemetry data content: application/json: schema: $ref: '#/components/schemas/CampaignUnitsLocations' default: description: unexpected error content: application/json: schema: $ref: '#/components/schemas/Error' /campaigns/{campaignId}/units/{unitId}: get: operationId: campaignIdUnitIdGET summary: Publish info about the unit within its campaign's scope parameters: - in: path name: campaignId schema: type: integer required: true description: Numeric ID of the campaign to get - in: path name: unitId schema: type: integer required: true description: Numeric ID of the unit to get responses: 200: description: JSON Object containing info about the unit within its campaign' scope content: application/json: schema: $ref: '#/components/schemas/CampaignUnitDetailInfo' default: description: unexpected error content: application/json: schema: $ref: '#/components/schemas/Error' /campaigns/{campaignId}/units/{unitId}/observations: get: # done operationId: campaignIdUnitIdObservationsGET summary: Publish info about all data of the unit within the campaign parameters: - in: path name: campaignId schema: type: integer format: int64 required: true description: Numeric ID of the campaign to get - in: path name: unitId schema: type: integer format: int64 required: true description: Numeric ID of the unit to get - in: query name: from schema: type: string format: date-time required: false - in: query name: to schema: type: string format: date-time required: false - in: query name: zone schema: type: string required: false - in: query name: offset schema: type: integer format: int64 required: false - in: query name: limit schema: type: integer format: int64 required: false - in: query name: navigationLinks schema: type: boolean default: true description: Option to disable @NavigationLinks in a response responses: 200: description: JSON containing stream of telemetry data content: application/json: schema: $ref: '#/components/schemas/CampaignUnitObservation' default: description: unexpected error content: application/json: schema: $ref: '#/components/schemas/Error' /campaigns/{campaignId}/units/{unitId}/observations/location: get: # done operationId: campaignIdUnitIdLocationsGET summary: Publish locations of the unit within the campaign parameters: - in: path name: campaignId schema: type: integer format: int64 required: true example: 1 description: Numeric ID of the campaign to get - in: path name: unitId schema: type: integer format: int64 required: true example: 25 description: Numeric ID of the unit to get - in: query name: from schema: type: string format: date-time required: false example: 2017-07-21T17:32:28Z - in: query name: to schema: type: string format: date-time required: false example: 2017-07-21T17:32:28Z - in: query name: zone schema: type: string required: false examples: UTC: value: UTC GMT: value: GMT - in: query name: offset schema: type: integer format: int64 required: false example: 50 - in: query name: limit schema: type: integer format: int64 required: false example: 100 - in: query name: filter schema: type: string required: false examples: Value of Sensor ID 105 > 10: value: sensorId(105)gt10 summary: Filter locations of units having value of sensor id 105 > 10 Value : value: driverId(34245)eq3 summary: Filter locations of units driven by Driver ID 34245 == Activity 3 - in: query name: navigationLinks schema: type: boolean default: true description: Option to disable @NavigationLinks in a response responses: 200: description: JSON containing stream of locations content: application/json: schema: $ref: '#/components/schemas/CampaignUnitLocation' default: description: unexpected error content: application/json: schema: $ref: '#/components/schemas/Error' /campaigns/{campaignId}/units/{unitId}/sensors: get: operationId: campaignIdUnitIdSensorsGET summary: Publish info about all sensors of the unit within the campaign parameters: - in: path name: campaignId schema: type: integer format: int64 required: true description: Numeric ID of the campaign to get - in: path name: unitId schema: type: integer format: int64 required: true description: Numeric ID of the unit to get responses: 200: description: JSON containing information of sensors assigned to the unit within its campaign content: application/json: schema: type: array items: $ref: '#/components/schemas/CampaignUnitBasicSensor' default: description: unexpected error content: application/json: schema: $ref: '#/components/schemas/Error' /campaigns/{campaignId}/units/{unitId}/sensors/{sensorId}/observations: get: operationId: campaignIdUnitIdSensorIdObservationsGET summary: Publish info about all data of the unit within the campaign parameters: - in: path name: campaignId schema: type: integer format: int64 required: true description: Numeric ID of the campaign to get - in: path name: unitId schema: type: integer format: int64 required: true description: Numeric ID of the unit to get - in: path name: sensorId schema: type: integer required: true description: Numeric ID of the sensor to get - in: query name: offset schema: type: integer format: int64 description: Offset for the data - in: query name: navigationLinks schema: type: boolean default: true description: Option to disable @NavigationLinks in a response responses: 200: description: JSON containing stream of telemetry data content: application/json: schema: $ref: '#/components/schemas/CampaignUnitSensorObservation' default: description: unexpected error content: application/json: schema: $ref: '#/components/schemas/Error' /units: get: # done operationId: unitsGET summary: Publish info about all units parameters: - in: query name: navigationLinks schema: type: boolean default: true description: Option to disable @NavigationLinks in a response responses: 200: description: JSON array of basic info of each unit content: application/json: schema: type: array items: $ref: '#/components/schemas/UnitBasicInfo' default: description: unexpected error content: application/json: schema: $ref: '#/components/schemas/Error' /units/{unitId}: get: # done operationId: unitIdGET summary: Publish info about the unit parameters: - in: path name: unitId schema: type: integer format: int64 required: true description: Numeric ID of the unit to get responses: 200: description: JSON Object of info of the unit content: application/json: schema: $ref: '#/components/schemas/UnitDetailInfo' default: description: unexpected error content: application/json: schema: $ref: '#/components/schemas/Error' /units/{unitId}/sensors: get: # done operationId: unitIdSensorsGET summary: Publish info about sensors assigned to the unit parameters: - in: path name: unitId schema: type: integer format: int64 required: true description: Numeric ID of the unit to get - in: query name: navigationLinks schema: type: boolean default: true description: Option to disable @NavigationLinks in a response responses: 200: description: JSON Array of info of the sensors content: application/json: schema: type: array items: $ref: '#/components/schemas/UnitSensorBasicInfo' default: description: unexpected error content: application/json: schema: $ref: '#/components/schemas/Error' /units/{unitId}/campaigns: get: # done operationId: unitIdCampaignsGET summary: Publish info about campaigns where the unit was/is assigned parameters: - in: path name: unitId schema: type: integer format: int64 required: true description: Numeric ID of the unit to get - in: query name: zone schema: type: string default: UTC required: false - in: query name: navigationLinks schema: type: boolean default: true description: Option to disable @NavigationLinks in a response responses: 200: description: JSON Array of info about campaigns content: application/json: schema: type: array items: $ref: '#/components/schemas/UnitCampaignBasicInfo' default: description: unexpected error content: application/json: schema: $ref: '#/components/schemas/Error' /sensors: get: # done operationId: sensorsGET summary: Publish info about all sensors parameters: - in: query name: navigationLinks schema: type: boolean default: true description: Option to disable @NavigationLinks in a response responses: 200: description: JSON Array of info about sensors content: application/json: schema: type: array items: $ref: '#/components/schemas/SensorBasicInfo' default: description: unexpected error content: application/json: schema: $ref: '#/components/schemas/Error' /sensors/{sensorId}: get: # done operationId: sensorIdGET summary: Publish info about the sensor parameters: - in: path name: sensorId schema: type: integer format: int64 required: true description: Numeric ID of the sensor to get - in: query name: navigationLinks schema: type: boolean default: true description: Option to disable @NavigationLinks in a response responses: 200: description: JSON Object of info about the sensor content: application/json: schema: $ref: '#/components/schemas/SensorDetailInfo' default: description: unexpected error content: application/json: schema: $ref: '#/components/schemas/Error' /sensors/{sensorId}/units: get: operationId: sensorIdUnitsGET summary: Publish info about units to whom the sensor is assigned parameters: - in: path name: sensorId schema: type: integer format: int64 required: true description: Numeric ID of the sensor to get - in: query name: navigationLinks schema: type: boolean default: true description: Option to disable @NavigationLinks in a response responses: 200: description: JSON Array of info about the units content: application/json: schema: type: array items: $ref: '#/components/schemas/SensorUnitBasicInfo' default: description: unexpected error content: application/json: schema: $ref: '#/components/schemas/Error' /phenomenons: get: # done operationId: phenomenonsGET summary: Publish info about all phenomenons parameters: - in: query name: navigationLinks schema: type: boolean default: true description: Option to disable @NavigationLinks in a response responses: 200: description: JSON Array of info about phenomenons content: application/json: schema: type: array items: $ref: '#/components/schemas/PhenomenonBasicInfo' default: description: unexpected error content: application/json: schema: $ref: '#/components/schemas/Error' /phenomenons/{phenomenonId}: get: # done operationId: phenomenonIdGET summary: Publish info about the phenomenon parameters: - in: path name: phenomenonId schema: type: integer format: int64 required: true description: Numeric ID of the phenomenon to get - in: query name: navigationLinks schema: type: boolean default: true description: Option to disable @NavigationLinks in a response responses: 200: description: JSON Object of info about the phenomenon content: application/json: schema: $ref: '#/components/schemas/PhenomenonDetailInfo' default: description: unexpected error content: application/json: schema: $ref: '#/components/schemas/Error' /phenomenons/{phenomenonId}/sensors: get: # done operationId: phenomenonIdSensorsGET summary: Publish info about sensors of the phenomenon parameters: - in: path name: phenomenonId schema: type: integer format: int64 required: true description: Numeric ID of the phenomenon to get - in: query name: navigationLinks schema: type: boolean default: true description: Option to disable @NavigationLinks in a response responses: 200: description: JSON Array of info about sensors content: application/json: schema: type: array items: $ref: '#/components/schemas/PhenomenonSensorBasicInfo' default: description: unexpected error content: application/json: schema: $ref: '#/components/schemas/Error' components: schemas: CampaignBasicInfo: type: object required: - id - fromTime - toTime properties: Campaign@NavigationLink: type: string format: uri id: type: integer format: int64 description: type: string fromTime: type: string format: date-time toTime: type: string format: date-time example: Campaign@NavigationLink: "/campaigns/1" id: 1 description: "Campaign 1" fromTime: "2023-01-25 15:35:32Z" toTime: "2023-03-20 10:35:32Z" CampaignDetailInfo: type: object required: - id - fromTime - toTime properties: self@NavigationLink: type: string format: uri Observations@NavigationLink: description: Navigation link to all campaign's data across all units type: string format: uri Locations@NavigationLink: description: Navigation link to all campaigns' locations across all units type: string format: uni Units@NavigationLink: description: Navigation link to campaign's assigned units type: string format: uri id: description: Identifier of the campaign type: integer format: int64 description: description: Text description of the campaign type: string fromTime: description: Time when the campaign starts type: string format: date-time toTime: description: Time when the campaign ends type: string format: date-time example: self@NavigationLink: "/campaigns/1" Observations@NavigationLink: "/campaigns/1/units/observations" Locations@NavigationLink: "/campaigns/1/units/observations/locations" Units@NavigationLink: "/campaigns/1/units" id: 1 description: "Campaign example" fromTime: "2023-01-25 15:35:32Z" toTime: "2023-03-20 10:35:32Z" CampaignUnitBasicInfo: type: object required: - unitId - name - fromTime - toTime properties: Unit@NavigationLink: type: string format: uri unitId: description: Identifier of the unit type: integer format: int64 name: type: string description: type: string fromTime: description: Time when the validity of the unit starts within the campaign type: string format: date-time toTime: description: Time when the validity of the unit ends within the campaign type: string format: date-time example: Unit@NavigationLink: "/units/25" unitId: 25 name: "Unit name" description: "Purpose of the Unit 25" fromTime: "2023-01-25 15:35:32Z" toTime: "2023-03-20 10:35:32Z" CampaignUnitDetailInfo: type: object required: - self@NavigationLink - Campaign@NavigationLink - Unit@NavigationLink - Sensors@NavigationLink - Observations@NavigationLink - id - fromTime - toTime properties: self@NavigationLink: type: string format: uri Campaign@NavigationLink: type: string format: uri Unit@NavigationLink: type: string format: uri Sensors@NavigationLink: type: string format: uri Observations@NavigationLink: description: Navigation link to all campaign's data across all units type: string format: uri id: description: Identifier of the unit type: integer format: int64 description: type: string fromTime: description: Time when the validity of the unit starts within the campaign type: string format: date-time toTime: description: Time when the validity of the unit ends within the campaign type: string format: date-time example: self@NavigationLink: "/campaigns/1/units/25" Campaign@NavigationLink: "/campaigns/1" Observations@NavigationLink: "/campaigns/1/units/25/observations" Sensors@NavigationLink: "/campaigns/1/units/25/sensors" Unit@NavigationLink: "/units/25" id: 25 description: "Purpose of the Unit 25" fromTime: "2023-01-25 15:35:32Z" toTime: "2023-03-20 10:35:32Z" CampaignUnitBasicSensor: type: object required: - Campaign@NavigationLink - Unit@NavigationLink - Observations@NavigationLink - Sensor@NavigationLink - id - name properties: Campaign@NavigationLink: type: string format: uri Unit@NavigationLink: description: Navigation link to the unit type: string format: uri Observations@NavigationLink: description: Navigation link to all campaign's data of the sensor assigned to unit type: string format: uri Sensor@NavigationLink: description: Navigation link to detail info of the sensor type: string format: uri id: description: Identifier of the unit type: integer format: int64 name: type: string description: type: string example: Campaign@NavigationLink: "/campaigns/1" Observations@NavigationLink: "/campaigns/1/units/25/sensors/105/observations" Unit@NavigationLink: "/units/25" Sensor@NavigationLink: "/sensors/105" id: 105 name: "Sensor 105" description: "Description of the sensor 105" CampaignObservation: type: object required: - params - hasNext - size - offset - data properties: Campaign@NavigationLink: type: string format: uri next@NavigationLink: type: string format: uri params: type: object description: Used params in URL hasNext: type: boolean size: type: integer offset: type: integer data: type: array items: $ref: '#/components/schemas/CampaignDataObservation' example: Campaign@NavigationLink: "/campaigns/1" next@NavigationLink: "/campaigns/1/observations?offset=500" size: 500 offset: 0 data: - size: 500 TODO CampaignUnitObservation: type: object required: - params - hasNext - size - offset - data properties: Campaign@NavigationLink: type: string format: uri Unit@NavigationLink: type: string format: uri next@NavigationLink: type: string format: uri params: type: object description: Used params in URL hasNext: type: boolean size: type: integer offset: type: integer data: type: array items: $ref: '#/components/schemas/UnitDataObservation' example: Campaign@NavigationLink: "/campaigns/1" Unit@NavigationLink: "/campaigns/1/units/25" next@NavigationLink: "/campaigns/1/units/25/observations?offset=500" params: [] size: 500 hasNext: true offset: 0 data: [] CampaignUnitSensorObservation: type: object properties: Campaign@NavigationLink: type: string format: uri Unit@NavigationLink: type: string format: uri Sensor@NavigationLink: type: string format: uri next@NavigationLink: type: string format: uri size: type: integer offset: type: integer data: type: array items: $ref: '#/components/schemas/SensorDataObservation' example: Campaign@NavigationLink: "/campaigns/1" Unit@NavigationLink: "/campaigns/1/units/25" Sensor@NavigationLink: "/sensors/105" next@NavigationLink: "/campaigns/1/units/25/sensors/105/observations?offset=500" size: 500 offset: 0 data: [] CampaignDataObservation: type: object required: - unitId - timestamp - speed - location - observedValues properties: unitId: type: integer format: int64 timestamp: type: string format: date-time speed: type: integer format: int64 location: $ref: '#/components/schemas/Location' observedValues: type: object example: unitId: 25 timestamp: "2023-01-25 15:35:32Z" location: longitude: 49.7384 latitude: 13.3736 altitude: 350.3 observedValues: 105: 1434 UnitDataObservation: type: object required: - timestamp - speed - location - observedValues properties: timestamp: type: string format: date-time speed: type: integer format: int64 location: $ref: '#/components/schemas/Location' observedValues: type: object example: timestamp: "2023-01-25 15:35:32Z" speed: 34 location: longitude: 49.7384 latitude: 13.3736 altitude: 350.3 observedValues: 105: 1434 SensorDataObservation: type: object required: - timestamp - value properties: timestamp: type: string format: date-time value: type: integer format: int64 example: timestamp: "2023-01-25 15:35:32Z" value: 1435 CampaignUnitLocation: type: object properties: Campaign@NavigationLink: type: string format: uri Unit@NavigationLink: type: string format: uri next@NavigationLink: type: string format: uri params: type: object description: Used params in URL hasNext: type: boolean size: type: integer offset: type: integer data: type: array items: type: object properties: timestamp: type: string format: date-time location: description: Array in a format [longitude, latitude, altitude] type: array items: type: integer example: Campaign@NavigationLink: "/campaigns/1" Unit@NavigationLink: "/campaigns/1/units/25" next@NavigationLink: "/campaigns/1/units/25/observations/location?offset=500" params: offset: 0 limit: 500 navigationLinks: true size: 500 hasNext: true offset: 0 data: - timestamp: "2023-01-25 15:35:32Z" location: [49.7384, 13.3736, 350.3] CampaignUnitsLocations: type: object required: - size - data properties: Campaign@NavigationLink: type: string format: uri params: type: object description: Used params in URL size: type: integer data: type: array items: type: object required: - unitId - timestamp - location properties: unitId: type: integer format: int64 timestamp: type: string format: date-time location: description: Array in a format [longitude, latitude, altitude] type: array items: type: integer example: Campaign@NavigationLink: "/campaigns/1" params: from: "2023-01-25 15:35:32Z" to: "2023-01-25 15:35:32Z" navigationLinks: true size: 8 data: - unitId: 25 timestamp: "2023-01-25 15:35:32Z" location: [ 49.7384, 13.3736, 350.3 ] Location: type: object properties: longitude: type: number format: float latitude: type: number format: float altitude: type: number format: float example: longitude: 49.7384 latitude: 13.3736 altitude: 350.3 UnitBasicInfo: type: object required: - id - name properties: Unit@NavigationLink: type: string format: uri id: description: Identifier of the unit type: integer format: int64 name: type: string description: type: string example: Unit@NavigationLink: "/units/25" id: 25 name: "Mobile Unit" description: "Mobile Unit 25" UnitDetailInfo: type: object required: - id - name - imei properties: self@NavigationLink: type: string format: uri Sensors@NavigationLink: type: string format: uri Campaigns@NavigationLink: type: string format: uri id: description: Identifier of the unit type: integer format: int64 name: type: string imei: type: string description: type: string example: self@NavigationLink: "/units/25" Sensors@NavigationLink: "/units/25/sensors" Campaigns@NavigationLink: "/units/25/campaigns" id: 25 name: "Mobile Unit" description: "Mobile Unit 25" imei: "3434535323345" UnitSensorBasicInfo: type: object required: - sensorId - name properties: Sensor@NavigationLink: description: Navigation link to detail info of the sensor type: string format: uri sensorId: description: Identifier of the unit type: integer format: int64 name: type: string type: type: string example: Sensor@NavigationLink: "/sensors/105" sensorId: 105 name: "Sensor 105" type: "temperature" UnitCampaignBasicInfo: type: object required: - id - fromTime - toTime properties: Campaign@NavigationLink: type: string format: uri description: Navigation link to the campaign info id: type: integer format: int64 description: Identifier of the campaign description: type: string description: Description of the campaign fromTime: type: string format: date-time description: Time from the unit was active in the campaign toTime: type: string format: date-time description: Time until the unit was active in the campaign example: Campaign@NavigationLink: "/campaigns/1" id: 1 description: "Campaign 1" fromTime: "2023-01-25 15:35:32Z" toTime: "2023-03-20 10:35:32Z" SensorBasicInfo: type: object required: - id - name properties: Sensor@NavigationLink: description: Navigation link to detail info of the sensor type: string format: uri id: type: integer format: int64 name: type: string description: type: string example: Sensor@NavigationLink: "/sensors/105" id: 105 name: "Sensor 105" description: "Description of the sensor 105" SensorDetailInfo: type: object required: - sensorId - name - phenomenon properties: self@NavigationLink: type: string format: uri Units@NavigationLink: type: string format: uri Phenomenon@NavigationLink: type: string format: uri sensorId: type: integer format: int64 name: type: string phenomenon: type: string type: type: string description: type: string example: self@NavigationLink: "/sensors/105" Phenomenon@NavigationLink: "/phenomenons/15" Units@NavigationLink: "/sensors/105/units" sensorId: 105 name: "Sensor 105" description: "Description of the sensor 105" type: "type of sensor" phenomenon: "Temperature" SensorUnitBasicInfo: type: object required: - unitId - name properties: Unit@NavigationLink: type: string format: uri unitId: description: Identifier of the unit type: integer format: int64 name: type: string description: type: string example: Unit@NavigationLink: "/units/25" unitId: 25 name: "Mobile Unit" description: "Mobile Unit 25" PhenomenonBasicInfo: type: object required: - id - name properties: Phenomenon@NavigationLink: type: string format: uri id: type: integer format: int64 name: type: string example: Phenomenon@NavigationLink: "/phenomenons/15" id: 15 name: "Temperature" PhenomenonDetailInfo: type: object required: - id - name - uom properties: self@NavigationLink: type: string format: uri Sensors@NavigationLink: type: string format: uri id: type: integer format: int64 name: type: string uom: type: string maxLength: 30 uomLink: type: string format: uri example: self@NavigationLink: "/phenomenons/15" Sensors@NavigationLink: "/phenomenons/15/sensors" id: 15 name: "Temperature" uom: "uom" uomLink: "uom link" PhenomenonSensorBasicInfo: type: object required: - Phenomenon@NavigationLink - Sensor@NavigationLink - sensorId - name properties: Phenomenon@NavigationLink: type: string format: uri Sensor@NavigationLink: type: string format: uri sensorId: type: integer format: int64 name: type: string description: type: string example: Phenomenon@NavigationLink: "/phenomenons/15" Sensor@NavigationLink: "/sensors/105" sensorId: 105 name: "Sensor 105" description: "Description of Sensor 105" Info: required: - name - version - build - uptime - uptimeMillis properties: name: type: string version: type: string build: type: string uptimeMillis: type: integer format: int64 uptime: type: string example: name: "senslog-telemetry" version: "1.1.0" build: "123456789" uptimeMillis: 1684862333 uptime: "1:20:00" Error: required: - code - message properties: code: type: integer format: int32 message: type: string example: code: 404 message: "Not Found"