In our platform, we use several objects in the application tree.
We currently have the following objects:
folder - Folder used to group and structure other nodes. Example:
user - Guest user account with defined access rights.
camera - AXIS camera, central item of the NetRex system. Example: download rec and play live
box - Fast local storage and surveillance station in one.
cameraAudioDevice - AXIS audio device, used to transmit audio messages to and from a camera.
cashdesk - User cashdesk
dataView - Data view. Used to display the gathered data (like visitor count or transactions) in a plot.
dashboard -
report - Data view. Used to display the gathered data (like visitor count or transactions) in a plot.
device input - Device electric input. Example: Electric input events
removedNode - A shell containing a removed node. Sometimes needed to preserve access to some of the nodes data.
videoChannel - VAPIX video channel of a multichannel or panoramic camera. Example: Live view and recordings
panel -
location - in case you have many localities is good can define
\uD83D\uDCD8 Tree items
The objects user, camera, electrical input, dashboard, folder and more are nodes in the tree structure. You can find all available types in the generated documentation in API Explorer.
This structure allows:
Get aggregated metrics from multiple objects.
Manage user permissions for a group of objects.
Organizing objects into groups for better clarity in the user interface.
The folder object allows for endless immersion. Some objects, such as the electrical input, are always immersed under the camera object.
Example - nodeList:
List of all elements(nodes) that the user has the user right to see. Keep in mind that with OAuth2 authorization, a TOKEN may be issued to a guest user who does not see all the elements.
Query:
query { nodeList { parent_node_id node_id type name } }
Response:
{ "data": { "nodeList": [ { "parent_node_id": null, "node_id": 138170, "type": "folder", "name": "rootfolder" }, { "parent_node_id": 138170, "node_id": 138170, "type": "folder", "name": "San Diego" }, ... ] } }
Example - camera type in nodeList:
If we want to get only objects of type "camera", we use the optional parameter type.
Query:
query { nodeList(type:camera) { parent_node_id type name node_id } }
Response:
{ "data": { "nodeList": [ { "parent_node_id": 138170, "type": "camera", "name": "ACCC8EE8A9CA", "node_id": 140094 } ] } }