openapi: 3.0.0 info: title: RES LEVIS API description: API for RES LEVIS project contact: email: info@reslevis.com license: name: Apache 2.0 url: http://www.apache.org/licenses/LICENSE-2.0.html version: 1.0.4 servers: - url: http://192.168.1.3/reslevis description: Res Levis - url: https://webhook.site/014887a9-bfa4-48a8-a349-935d8f8f8096 description: Res Levis Webhook tags: - name: Admins description: Secured Admin-only calls - name: Developers description: Operations available to regular developers paths: /getBuildings: get: tags: - Developers summary: Get the buildings description: | Get the buildings operationId: getBuildings parameters: - name: id in: query description: id of the item to get required: false schema: type: string - name: searchString in: query description: pass an optional search string for looking up inventory required: false schema: type: string - name: skip in: query description: number of records to skip for pagination required: false schema: minimum: 0 type: integer format: int32 - name: limit in: query description: maximum number of records to return required: false schema: maximum: 1000 minimum: 0 type: integer format: int32 responses: "200": description: search results matching criteria content: application/json: schema: type: array items: $ref: "#/components/schemas/BuildingItem" "400": description: bad input parameter servers: - url: "" description: "" /postBuilding: post: tags: - Developers summary: Post a building item description: Post a building operationId: postBuilding requestBody: description: plan item content: application/json: schema: $ref: "#/components/schemas/BuildingItem" responses: "201": description: item created "400": description: "invalid input, object invalid" "409": description: an existing item already exists servers: - url: "" description: "" /removeBuilding: post: tags: - Developers summary: Remove a building item description: Remove a building operationId: removeBuilding requestBody: description: plan item content: application/json: schema: $ref: "#/components/schemas/removeItem" responses: "201": description: item removed "400": description: "invalid input, object invalid" "409": description: the item can't be removed servers: - url: "" description: "" /getPlans: get: tags: - Developers summary: Get the plans description: | Get the plans operationId: getPlans parameters: - name: id in: query description: id of the item to get required: false schema: type: string - name: searchString in: query description: pass an optional search string for looking up inventory required: false schema: type: string - name: skip in: query description: number of records to skip for pagination required: false schema: minimum: 0 type: integer format: int32 - name: limit in: query description: maximum number of records to return required: false schema: maximum: 1000 minimum: 0 type: integer format: int32 responses: "200": description: search results matching criteria content: application/json: schema: type: array items: $ref: "#/components/schemas/PlanItem" "400": description: bad input parameter servers: - url: "" description: "" /postPlan: post: tags: - Developers summary: Post a plan item description: Post a plan operationId: postPlan requestBody: description: plan item content: application/json: schema: $ref: "#/components/schemas/PlanItem" responses: "201": description: item created "400": description: "invalid input, object invalid" "409": description: an existing item already exists servers: - url: "" description: "" /removePlan: post: tags: - Developers summary: Remove a plan item description: Remove a plan operationId: removePlan requestBody: description: plan item content: application/json: schema: $ref: "#/components/schemas/removeItem" responses: "201": description: item removed "400": description: "invalid input, object invalid" "409": description: the item can't be removed servers: - url: "" description: "" /getZones: get: tags: - Developers summary: Get the zones description: | Get the zones operationId: getZones parameters: - name: id in: query description: id of the item to get required: false schema: type: string - name: searchString in: query description: pass an optional search string for looking up inventory required: false schema: type: string - name: skip in: query description: number of records to skip for pagination required: false schema: minimum: 0 type: integer format: int32 - name: limit in: query description: maximum number of records to return required: false schema: maximum: 1000 minimum: 0 type: integer format: int32 responses: "200": description: search results matching criteria content: application/json: schema: type: array items: $ref: "#/components/schemas/ZoneItem" "400": description: bad input parameter servers: - url: "" description: "" /postZone: post: tags: - Developers summary: Post a zone item description: Post a zone item operationId: postZone requestBody: description: zone item content: application/json: schema: $ref: "#/components/schemas/ZoneItem" responses: "201": description: item created "400": description: "invalid input, object invalid" "409": description: an existing item already exists servers: - url: "" description: "" /removeZone: post: tags: - Developers summary: Remove a plan item description: Remove a plan operationId: removeZone requestBody: description: zone item to be removed content: application/json: schema: $ref: "#/components/schemas/removeItem" responses: "201": description: item removed "400": description: "invalid input, object invalid" "409": description: the item can't be removed servers: - url: "" description: "" /getGateways: get: tags: - Developers summary: Get the gateways description: | Get the gateways operationId: getGateways parameters: - name: id in: query description: id of the item to get required: false schema: type: string - name: searchString in: query description: pass an optional search string for looking up inventory required: false schema: type: string - name: skip in: query description: number of records to skip for pagination required: false schema: minimum: 0 type: integer format: int32 - name: limit in: query description: maximum number of records to return required: false schema: maximum: 1000 minimum: 0 type: integer format: int32 responses: "200": description: search results matching criteria content: application/json: schema: type: array items: $ref: "#/components/schemas/GatewayItem" "400": description: bad input parameter servers: - url: "" description: "" /postGateway: post: tags: - Developers summary: Post a gateway item description: Post a gateway item operationId: postGateway requestBody: description: gateway item content: application/json: schema: $ref: "#/components/schemas/GatewayItem" responses: "201": description: item created "400": description: "invalid input, object invalid" "409": description: an existing item already exists servers: - url: "" description: "" /removeGateway: post: tags: - Developers summary: Remove a gateway item description: Remove a gateway operationId: removeGateway requestBody: description: gateway item to be removed content: application/json: schema: $ref: "#/components/schemas/removeItem" responses: "201": description: item removed "400": description: "invalid input, object invalid" "409": description: the item can't be removed servers: - url: "" description: "" /getTrackers: get: tags: - Developers summary: Get the trackers description: | Get the trackers operationId: getTrackers parameters: - name: id in: query description: id of the item to get required: false schema: type: string - name: searchString in: query description: pass an optional search string for looking up inventory required: false schema: type: string - name: skip in: query description: number of records to skip for pagination required: false schema: minimum: 0 type: integer format: int32 - name: limit in: query description: maximum number of records to return required: false schema: maximum: 1000 minimum: 0 type: integer format: int32 responses: "200": description: search results matching criteria content: application/json: schema: type: array items: $ref: "#/components/schemas/TrackerItem" "400": description: bad input parameter servers: - url: "" description: "" /postTracker: post: tags: - Developers summary: Post a tracker item description: Post a tracker item operationId: postTracker requestBody: description: tracker item content: application/json: schema: $ref: "#/components/schemas/TrackerItem" responses: "201": description: item created "400": description: "invalid input, object invalid" "409": description: an existing item already exists servers: - url: "" description: "" /removeTracker: post: tags: - Developers summary: Remove a tracker item description: Remove a tracker operationId: removeTracker requestBody: description: tracker item to be removed content: application/json: schema: $ref: "#/components/schemas/removeItem" responses: "201": description: item removed "400": description: "invalid input, object invalid" "409": description: the item can't be removed servers: - url: "" description: "" /getOperators: get: tags: - Developers summary: Get the operators description: | Get the operators operationId: getOperators parameters: - name: id in: query description: id of the item to get required: false schema: type: string - name: searchString in: query description: pass an optional search string for looking up inventory required: false schema: type: string - name: skip in: query description: number of records to skip for pagination required: false schema: minimum: 0 type: integer format: int32 - name: limit in: query description: maximum number of records to return required: false schema: maximum: 1000 minimum: 0 type: integer format: int32 responses: "200": description: search results matching criteria content: application/json: schema: type: array items: $ref: "#/components/schemas/OperatorItem" "400": description: bad input parameter servers: - url: "" description: "" /postOperator: post: tags: - Developers summary: Post an operator item description: Post an operator item operationId: postOperator requestBody: description: operator item content: application/json: schema: $ref: "#/components/schemas/OperatorItem" responses: "201": description: item created "400": description: "invalid input, object invalid" "409": description: an existing item already exists servers: - url: "" description: "" /removeOperator: post: tags: - Developers summary: Remove an operator item description: Remove an operator operationId: removeOperator requestBody: description: operator item to be removed content: application/json: schema: $ref: "#/components/schemas/removeItem" responses: "201": description: item removed "400": description: "invalid input, object invalid" "409": description: the item can't be removed servers: - url: "" description: "" /getSubjects: get: tags: - Developers summary: Get the subjects description: | Get the subjects operationId: getSubjects parameters: - name: id in: query description: id of the item to get required: false schema: type: string - name: searchString in: query description: pass an optional search string for looking up inventory required: false schema: type: string - name: skip in: query description: number of records to skip for pagination required: false schema: minimum: 0 type: integer format: int32 - name: limit in: query description: maximum number of records to return required: false schema: maximum: 1000 minimum: 0 type: integer format: int32 responses: "200": description: search results matching criteria content: application/json: schema: type: array items: $ref: "#/components/schemas/SubjectItem" "400": description: bad input parameter servers: - url: "" description: "" /postSubject: post: tags: - Developers summary: Post a subject item description: Post a subject operationId: postSubject requestBody: description: subject item content: application/json: schema: $ref: "#/components/schemas/SubjectItem" responses: "201": description: item created "400": description: "invalid input, object invalid" "409": description: an existing item already exists servers: - url: "" description: "" /removeSubject: post: tags: - Developers summary: Remove a subject item description: Remove a subject operationId: removeSubject requestBody: description: subject item to be removed content: application/json: schema: $ref: "#/components/schemas/removeItem" responses: "201": description: item removed "400": description: "invalid input, object invalid" "409": description: the item can't be removed servers: - url: "" description: "" /getAlarms: get: tags: - Developers summary: Get the alarms description: | Get the alarms operationId: getAlarms parameters: - name: id in: query description: id of the item to get required: false schema: type: string - name: searchString in: query description: pass an optional search string for looking up inventory required: false schema: type: string - name: skip in: query description: number of records to skip for pagination required: false schema: minimum: 0 type: integer format: int32 - name: limit in: query description: maximum number of records to return required: false schema: maximum: 1000 minimum: 0 type: integer format: int32 responses: "200": description: search results matching criteria content: application/json: schema: type: array items: $ref: "#/components/schemas/AlarmItem" "400": description: bad input parameter servers: - url: "" description: "" /postAlarm: post: tags: - Developers summary: Post an alarm description: Post an alarm operationId: postAlarm requestBody: description: alarm item content: application/json: schema: $ref: "#/components/schemas/AlarmItem" responses: "201": description: item created "400": description: "invalid input, object invalid" "409": description: an existing item already exists servers: - url: "" description: "" /removeAlarm: post: tags: - Developers summary: Remove an alarm item description: Remove an alarm operationId: removeAlarm requestBody: description: alarm item to be removed content: application/json: schema: $ref: "#/components/schemas/removeItem" responses: "201": description: item removed "400": description: "invalid input, object invalid" "409": description: the item can't be removed servers: - url: "" description: "" /getTracks: get: tags: - Developers summary: Get the tracks description: | Get the tracks operationId: getTracks parameters: - name: id in: query description: id of the item to get required: false schema: type: string - name: searchString in: query description: pass an optional search string for looking up inventory required: false schema: type: string - name: skip in: query description: number of records to skip for pagination required: false schema: minimum: 0 type: integer format: int32 - name: limit in: query description: maximum number of records to return required: false schema: maximum: 1000 minimum: 0 type: integer format: int32 responses: "200": description: search results matching criteria content: application/json: schema: type: array items: $ref: "#/components/schemas/TrackItem" "400": description: bad input parameter servers: - url: "" description: "" /postTrack: post: tags: - Developers summary: Post a track description: Post a track operationId: postTrack requestBody: description: track item content: application/json: schema: $ref: "#/components/schemas/TrackItem" responses: "201": description: item created "400": description: "invalid input, object invalid" "409": description: an existing item already exists servers: - url: "" description: "" /removeTrack: post: tags: - Developers summary: Remove a track item description: Remove a track operationId: removeTrack requestBody: description: track item to be removed content: application/json: schema: $ref: "#/components/schemas/removeItem" responses: "201": description: item removed "400": description: "invalid input, object invalid" "409": description: the item can't be removed servers: - url: "" description: "" /getSettings: get: tags: - Developers summary: Get the groups of settings description: | Get the settings operationId: getSettings parameters: - name: id in: query description: id of the item to get required: false schema: type: string - name: searchString in: query description: pass an optional search string for looking up inventory required: false schema: type: string - name: skip in: query description: number of records to skip for pagination required: false schema: minimum: 0 type: integer format: int32 - name: limit in: query description: maximum number of records to return required: false schema: maximum: 1000 minimum: 0 type: integer format: int32 responses: "200": description: search results matching criteria content: application/json: schema: type: array items: $ref: "#/components/schemas/TrackItem" "400": description: bad input parameter servers: - url: "" description: "" /postSetting: post: tags: - Developers summary: Post a group of settings description: Post a group settings operationId: postSetting requestBody: description: group of settings item content: application/json: schema: $ref: "#/components/schemas/SettingItem" responses: "201": description: item created "400": description: "invalid input, object invalid" "409": description: an existing item already exists servers: - url: "" description: "" /removeSetting: post: tags: - Developers summary: Remove a group of settings item description: Remove a group of settings operationId: removeSetting requestBody: description: group of setting item to be removed content: application/json: schema: $ref: "#/components/schemas/removeItem" responses: "201": description: item removed "400": description: "invalid input, object invalid" "409": description: the item can't be removed servers: - url: "" description: "" components: schemas: removeItem: required: - id type: object properties: id: type: string format: uuid description: Item to be removed BuildingItem: required: - id - name type: object properties: id: type: string description: ID format: uuid name: type: string description: Name example: Hospital city: type: string description: City address: type: string description: Address latitude: type: number description: Latitude longitude: type: number description: Longitude description: A building or an area that groups together several plan PlanItem: required: - id - name type: object properties: id: type: string description: ID format: uuid name: type: string description: Name example: Building 1 - Floor 1 image: type: string description: Image format: uri example: The URL of the image scale: type: number description: Scale example: 1 Building: type: string description: Building format: dbid description: A plan is floor or a space of a building ZoneItem: required: - id - name type: object properties: id: type: string description: ID format: uuid name: type: string description: Name example: Floor 1 - Room 1 groups: type: string description: Groups Plan: type: string description: Plan format: dbid Building: type: string description: Building format: dbid description: A zone is a room or a sub-area of a plan GatewayItem: required: - id - name type: object properties: id: type: string description: ID format: uuid name: type: string description: Name mac: type: string description: MAC status: type: boolean description: Status model: type: string description: Model ip: type: string description: IP position: type: string description: Position x: type: number description: X "y": type: number description: "Y" Plan: type: string description: Plan format: dbid Zone: type: string description: Zone format: dbid Building: type: string description: Building format: dbid notes: type: string description: Notes description: A gateway of the system TrackerItem: required: - id - name type: object properties: id: type: string description: ID format: uuid name: type: string description: Name mac: type: string description: MAC status: type: string description: Status model: type: string description: Model position: type: string description: Position x: type: number description: X "y": type: number description: "Y" Zone: type: string description: Zone format: dbid Building: type: string description: Building format: dbid notes: type: string description: Notes description: A tracker of the system OperatorItem: required: - id - name type: object properties: id: type: string description: ID name: type: string description: Name phone: type: string description: Phone zones: type: string description: Zones groups: type: string description: Groups notes: type: string description: Notes Building: type: string description: Building format: dbid description: An operator who monitors the subjects SubjectItem: required: - id - name type: object properties: id: type: string description: ID name: type: string description: Name role: type: string description: Role phone: type: string description: Phone zones: type: string description: Zones groups: type: string description: Groups Building: type: string description: Building format: dbid notes: type: string description: Notes description: Person or object monitored by the operators AlarmItem: required: - id type: object properties: id: type: string description: ID time: type: string description: Time format: time type: type: string description: Type status: type: string description: Status gateway: type: string description: Gateway format: uuid gatewayMac: type: string description: Gateway MAC gatewayName: type: string description: Gateway name Tracker: type: string description: Tracker format: dbid trackerMac: type: string description: Tracker MAC trackerName: type: string description: Tracker name Subject: type: string description: Subject format: dbid subjectName: type: string description: Subject name Operator: type: string description: Operator format: dbid operatorName: type: string description: Operator name Zone: type: string description: Zone format: dbid zoneName: type: string description: Zone name Building: type: string description: Building format: dbid buildingName: type: string description: Building name description: Alarm triggered if a monitored subject is lost or out of their zone TrackItem: required: - id type: object properties: id: type: string time: type: string description: Time format: date-time type: type: string description: Type status: type: string description: Status enum: - lost - detected - away - help Gateway: type: string description: Gateway format: dbid gatewayMac: type: string description: Gateway MAC gatewayName: type: string description: Gateway name Tracker: type: string description: Tracker format: dbid trackerMac: type: string description: Tracker MAC trackerName: type: string description: Tracker name Subject: type: string description: Subject format: dbid subjectName: type: string description: Subject name Zone: type: string description: Zone format: dbid zoneName: type: string description: Zone name signal: type: number Building: type: string description: Building format: dbid buildingName: type: string description: Building name description: Log of a state change of a tracker with respect to a gateway SettingItem: required: - id type: object properties: id: type: string name: type: string description: Setting name role: type: string description: Role enum: - developer - administrator - user debug: type: boolean description: Debug mode format: boolean description: General setting of the app