Download OpenAPI specification:Download
Nimble's REST API (Application Programming Interface) enables users to configure and query analytics workloads executing within Nimble. Behind this API is a software layer that routes data, arbitrates resources and executes Deep Learning and analytics functions to enable enriched business insights at world-class speed.
The latest online documentation can be found here.
API is short for "Application Programming Interface". An API is a set of rules that lets programs talk to each other, exposing data and functionality across the Internet in a consistent format.
REST stands for "Representational State Transfer". This is an architectural pattern that describes how distributed systems can expose a consistent interface. When people use the term "REST API", they are generally referring to an API accessed using the HTTP protocol at a predefined set of URLs.
These URLs represent various resources - any information or content accessed at that location, which can be returned as JSON, HTML, or media files.
Often resources have one or more methods that can be performed on them over HTTP, like GET
, POST
, PUT
, PATCH
, and DELETE
.
The action represented by the first and last of these is clear, but POST
, PUT
, and PATCH
have specific meanings.
How they are defined is confusing, but the general rule is: use POST
to create resources, PUT
to update resources, and PATCH
to modify resources.
Nimble and the REST API have six key categories: Activation, Catalog, Configuration, Exports, Statistics, and About.
Nimble must be activated with a valid license before a configuration can be deployed.
The catalog includes additional resources that may be useful in constructing a configuration.
A Configuration is a collection of Sources, Sinks and Pipeline Elements arranged to execute the desired analytic behavior.
A Source brings data into Nimble.
A Sink pushes data out of Nimble.
A Pipeline is made up of processing elements that perform some analytics task.
Exports are resources managed by Nimble as a output result of a configuration being deployed.
Since a Source can be shared between multiple Pipelines, a Channel is an abstraction of both a Source and a Pipeline that can be thought of as "the data brought in by this Source is operated on by this Pipeline".
A Stream is a proxied fMP4 video stream from a Source.
Activate Nimble with a valid license.
force | boolean Default: false Whether to force re-activation of Nimble even if Nimble is already activated with a valid license. |
The license JSON data.
version required | integer <int32> Version of the license. Value: 1 |
customer required | string Customer ID. |
subscription required | string License Subscription ID. |
pool required | string License Pool ID. |
{- "version": 1,
- "customer": "ABCDEFGHI",
- "subscription": "JKLMNOPQR",
- "pool": "STUVWXYZ"
}
A collection of read-only resources that are dynamically loaded and available at runtime. Includes resources such as: Pipeline Elements, Models, and Hardware Devices.
Retrieve all catalog resources that are available from Nimble.
filter | Array of strings Items Enum: "elements" "models" "devices" Specify the top-level resource types to retrieve. |
filter-models | Array of strings Default: "devices" Items Enum: "devices" "none" Specify by which method(s) to filter the models. |
{- "elements": [
- {
- "name": "infer",
- "title": "Infer",
- "params_schema": {
- "type": "object",
- "properties": {
- "model": {
- "description": "The name of the model to use for inference.",
- "type": "string"
}, - "hw": {
- "description": "The type of hardware device to use to run the model.",
- "type": "string",
- "enum": [
- "auto",
- "cpu",
- "igpu",
- "gpu"
], - "default": "auto"
}, - "score_threshold": {
- "description": "A minimum confidence score where inferred objects with a lower confidence will be filtered out.\n",
- "type": "number",
- "format": "float",
- "minimum": 0,
- "maximum": 1,
- "default": 0.3
}, - "iou_threshold": {
- "description": "An Intersection-over-Union ratio used to filter out overlapping bounding boxes of inferred objects.\n\nSee: https://learnopencv.com/non-maximum-suppression-theory-and-implementation-in-pytorch/\n",
- "type": "number",
- "format": "float",
- "minimum": 0,
- "maximum": 1,
- "default": 0.3
}
}, - "required": [
- "model"
]
}, - "params_mapping": {
- "model": {
- "name": "model",
- "hw": "hw"
}
}
}, - {
- "name": "image-resize",
- "params_schema": {
- "oneOf": [
- {
- "type": "object",
- "properties": {
- "width": {
- "description": "The target width of the resized image.",
- "type": "integer",
- "exclusiveMinimum": 0
}, - "height": {
- "description": "The target height of the resized image.",
- "type": "integer",
- "exclusiveMinimum": 0
}
}, - "required": [
- "width",
- "height"
]
}, - {
- "type": "object",
- "properties": {
- "scale": {
- "description": "The scale by which to resize the image.",
- "type": "number",
- "exclusiveMinimum": 0
}
}, - "required": [
- "scale"
]
}
]
}, - "passthrough": true
}
], - "models": [
- {
- "name": "person-detection-nano",
- "hw": "cpu",
- "args": {
- "infer": {
- "model": "person-detection-nano",
- "hw": "cpu"
}
}
}, - {
- "name": "detr",
- "hw": "gpu",
- "args": {
- "infer": {
- "model": "detr",
- "hw": "gpu"
}
}
}
], - "devices": [
- {
- "type": "cpu",
- "current_models": 1
}, - {
- "type": "gpu",
- "current_models": 2,
- "max_models": 10
}
]
}
{- "elements": [
- {
- "name": "string",
- "version": "string",
- "title": "string",
- "description": "string",
- "passthrough": true,
- "params_schema": true,
- "params_mapping": {
- "resource-type1": {
- "resource-property-name1": "string",
- "resource-property-name2": "string"
}, - "resource-type2": {
- "resource-property-name1": "string",
- "resource-property-name2": "string"
}
}, - "config_schema": true,
- "input_schema": true,
- "output_schema": true
}
]
}
Retrieve all models that are available to be used for inferencing.
By default, the list of models are pre-filtered using the hardware devices that are available at runtime.
Only models that have an available hardware device are included in the returned list.
This pre-filtering can be disabled by setting the filter
query parameter to none
.
filter | Array of strings Default: "devices" Items Enum: "devices" "none" Specify by which method(s) to filter the models. |
{- "models": [
- {
- "name": "string",
- "hw": "cpu",
- "args": {
- "element-name1": { },
- "element-name2": { }
}
}
]
}
Nimble is controlled by a Configuration. A Configuration is a collection of Sources, Sinks and Pipeline Elements arranged to execute the desired analytic behaviour.
{- "sources": [
- {
- "id": 0,
- "type": "file",
- "address": "input.mp4",
- "rate": 30
}, - {
- "id": 1,
- "type": "video",
- "address": "rtsp://localhost:554/axis-media/media.amp",
- "rate": 25
}
], - "sinks": [
- {
- "id": 0,
- "type": "video",
- "address": "output.mp4",
- "filter": [
- 1
]
}, - {
- "id": 1,
- "type": "zmq",
- "address": "tcp://*:22952",
- "filter": [ ]
}
], - "pipelines": [
- {
- "id": 0,
- "elements": [
- {
- "name": "infer",
- "args": {
- "model": "person-detection-0200",
- "score_threshold": 0.3,
- "iou_threshold": 0.3
}
}, - {
- "name": "social-distancing",
- "args": {
- "threshold": 0.2
}
}
], - "usecase": "physical-distancing",
- "sources": [
- 0,
- 1
], - "sinks": [
- 0,
- 1
]
}
]
}
Deploy a Configuration to Nimble.
The new Configuration in list-based format, see config.yaml.
required | Array of Video (object) or File (object) or Nimble (object) or ZeroMQ (object) or Infinite (object) (source_fingerprint) non-empty |
Array of objects | |
Array of objects (Pipeline Element) non-empty | |
usecase | string or null |
[- {
- "sources": [
- {
- "type": "file",
- "address": "videos/sd_london_station_sd.mp4",
- "rate": 25
}
], - "sinks": [
- {
- "type": "zmq",
- "address": "tcp://*:22952",
- "filter": [ ]
}
], - "elements": [
- {
- "name": "infer",
- "args": {
- "model": "person-detection-nano",
- "hw": "cpu",
- "score_threshold": 0.3,
- "iou_threshold": 0.3
}
}, - {
- "name": "detect-zone-intersection",
- "args": {
- "region": "bottom"
}, - "config": {
- "zones": [
- {
- "name": "zone1",
- "coords": [
- {
- "x": 0.6042,
- "y": 0.0157
}, - {
- "x": 0.5406,
- "y": 0.2259
}, - {
- "x": 0.7531,
- "y": 0.2204
}, - {
- "x": 0.7906,
- "y": 0.013
}
]
}
]
}
}
], - "usecase": "intrusion-detection"
}
]
{- "code": "syntax",
- "reason": "string"
}
A Source brings in data and pushes it to one or more Pipelines. Sources are generally URLs to video streams or other media but can also be other Nimble instances or files for offline processing.
Create a Source in the Configuration.
object Examples:
The preferred response (minimal or full) |
The new Source.
type required | string Value: "video" |
required | Short-form (string) or Long-form (object) The URL to a camera or other video streaming device. |
rate | number <float> > 0 The playback rate of the video stream. The ingestion rate is always real-time, but if the playback rate is slower than the ingestion rate then frames will be dropped. Optional, if omitted playback will occur at the video-defined speed. |
decoder | string Default: "gst_h264" Enum: "gst" "gst_h264" "ffmpeg" The name of the desired video decoder library. |
{- "type": "video",
- "address": "rtsp://localhost:554/axis-media/media.amp",
- "rate": 25
}
{- "id": 0,
- "type": "video",
- "address": "rtsp://localhost:554/axis-media/media.amp",
- "rate": 25
}
Retrieve all of the information about a Source (by ID) in the Configuration.
id required | integer <int32> (id) >= 0 The ID of the Source. |
{- "id": 0,
- "type": "video",
- "address": "rtsp://localhost:554/axis-media/media.amp",
- "rate": 25
}
Update a Source (by ID) in the Configuration.
id required | integer <int32> (id) >= 0 The ID of the Source. |
object Examples:
The preferred response (minimal or full) |
The Source's information.
type required | string Value: "video" |
required | Short-form (string) or Long-form (object) The URL to a camera or other video streaming device. |
rate | number <float> > 0 The playback rate of the video stream. The ingestion rate is always real-time, but if the playback rate is slower than the ingestion rate then frames will be dropped. Optional, if omitted playback will occur at the video-defined speed. |
decoder | string Default: "gst_h264" Enum: "gst" "gst_h264" "ffmpeg" The name of the desired video decoder library. |
{- "type": "file",
- "address": "input.mp4",
- "rate": 30
}
{- "id": 0,
- "type": "file",
- "address": "input.mp4",
- "rate": 30
}
Modify a Source (by ID) in the Configuration.
JSON merge patch (RFC7386) is used to apply the modifications to the Source's information.
id required | integer <int32> (id) >= 0 The ID of the Source. |
object Examples:
The preferred response (minimal or full) |
The Source's information
type required | string Value: "video" |
required | Short-form (string) or Long-form (object) The URL to a camera or other video streaming device. |
rate | number <float> > 0 The playback rate of the video stream. The ingestion rate is always real-time, but if the playback rate is slower than the ingestion rate then frames will be dropped. Optional, if omitted playback will occur at the video-defined speed. |
decoder | string Default: "gst_h264" Enum: "gst" "gst_h264" "ffmpeg" The name of the desired video decoder library. |
{- "type": "file",
- "address": "input.mp4"
}
{- "id": 0,
- "type": "file",
- "address": "input.mp4",
- "rate": 25
}
Delete a Source (by ID) in the Configuration.
id required | integer <int32> (id) >= 0 The ID of the Source. |
force | boolean Default: false Whether to force deletion of the Source even if it is being referenced by a Pipeline.
If |
{- "code": "reference",
- "reason": "string",
- "value": {
- "pipelines": [
- 0,
- 1
]
}
}
A Sink takes data from a Pipeline and pushes it out. Apart from the WebSocket API, which is always active and can be found here, other Sinks such has ZMQ sockets or file can be created.
Create a Sink in the Configuration.
object Examples:
The preferred response (minimal or full) |
The Sink.
type required | string (type) Enum: "file" "embedding" "zmq" "inf" |
address required | string (address) |
filter | Array of integers <int32> (filter) unique [ items <int32 > >= 0 ] A list of sources to include. An empty list indicates no filtering is enabled. |
{- "type": "video",
- "address": "output.mp4"
}
{- "id": 0,
- "type": "video",
- "address": "output.mp4",
- "filter": [ ]
}
Update a Sink (by ID) in the Configuration.
id required | integer <int32> (sink_id) >= 0 The ID of the Sink. |
object Examples:
The preferred response (minimal or full) |
The Sink's information.
type required | string (type) Enum: "file" "embedding" "zmq" "inf" |
address required | string (address) |
filter | Array of integers <int32> (filter) unique [ items <int32 > >= 0 ] A list of sources to include. An empty list indicates no filtering is enabled. |
{- "type": "video",
- "address": "output.mp4",
- "filter": [
- 1
]
}
{- "id": 0,
- "type": "video",
- "address": "output.mp4",
- "filter": [
- 1
]
}
Modify a Sink (by ID) in the Configuration.
JSON merge patch (RFC7386) is used to apply the modifications to the Sink's information.
id required | integer <int32> (sink_id) >= 0 The ID of the Sink. |
object Examples:
The preferred response (minimal or full) |
The Sink's information.
type | string (type) Enum: "file" "embedding" "zmq" "inf" |
address | string (address) |
filter | Array of integers <int32> (filter) unique [ items <int32 > >= 0 ] A list of sources to include. An empty list indicates no filtering is enabled. |
{- "type": "video",
- "address": "output.mp4"
}
{- "id": 0,
- "type": "video",
- "address": "output.mp4",
- "filter": [ ]
}
Delete a Sink (by ID) in the Configuration.
id required | integer <int32> (sink_id) >= 0 The ID of the Sink. |
force | boolean Default: false Whether to force deletion of the Sink even if it is being referenced by a Pipeline.
If |
{- "code": "reference",
- "reason": "string",
- "value": {
- "pipelines": [
- 0,
- 1
]
}
}
A Pipeline is a list elements or operations that perform the desired analytics task. Pipelines can be constructed for a number of different elements that execute Deep Learning, Machine Learning, OpenCV-based functions or custom algorithms.
[- {
- "id": 0,
- "elements": [
- {
- "name": "infer",
- "args": {
- "model": "person-detection-0200",
- "score_threshold": 0.3,
- "iou_threshold": 0.3
}
}, - {
- "name": "social-distancing",
- "args": {
- "threshold": 0.2
}
}
], - "usecase": "physical-distancing",
- "sources": [
- 0,
- 1
], - "sinks": [
- 0,
- 1
]
}
]
Retrieve all pipeline elements and models that are available from Nimble.
filter | Array of strings Items Enum: "elements" "models" Specify the top-level resource types to retrieve. |
{- "elements": [
- {
- "name": "infer",
- "title": "Infer",
- "params_schema": {
- "type": "object",
- "properties": {
- "model": {
- "description": "The name of the model to use for inference.",
- "type": "string"
}, - "hw": {
- "description": "The type of hardware device to use to run the model.",
- "type": "string",
- "enum": [
- "auto",
- "cpu",
- "igpu",
- "gpu"
], - "default": "auto"
}, - "score_threshold": {
- "description": "A minimum confidence score where inferred objects with a lower confidence will be filtered out.\n",
- "type": "number",
- "format": "float",
- "minimum": 0,
- "maximum": 1,
- "default": 0.3
}, - "iou_threshold": {
- "description": "An Intersection-over-Union ratio used to filter out overlapping bounding boxes of inferred objects.\n\nSee: https://learnopencv.com/non-maximum-suppression-theory-and-implementation-in-pytorch/\n",
- "type": "number",
- "format": "float",
- "minimum": 0,
- "maximum": 1,
- "default": 0.3
}
}, - "required": [
- "model"
]
}, - "params_mapping": {
- "model": {
- "name": "model",
- "hw": "hw"
}
}
}, - {
- "name": "image-resize",
- "params_schema": {
- "oneOf": [
- {
- "type": "object",
- "properties": {
- "width": {
- "description": "The target width of the resized image.",
- "type": "integer",
- "exclusiveMinimum": 0
}, - "height": {
- "description": "The target height of the resized image.",
- "type": "integer",
- "exclusiveMinimum": 0
}
}, - "required": [
- "width",
- "height"
]
}, - {
- "type": "object",
- "properties": {
- "scale": {
- "description": "The scale by which to resize the image.",
- "type": "number",
- "exclusiveMinimum": 0
}
}, - "required": [
- "scale"
]
}
]
}, - "passthrough": true
}
], - "models": [
- {
- "name": "person-detection-nano",
- "hw": "cpu",
- "args": {
- "infer": {
- "model": "person-detection-nano",
- "hw": "cpu"
}
}
}, - {
- "name": "detr",
- "hw": "gpu",
- "args": {
- "infer": {
- "model": "detr",
- "hw": "gpu"
}
}
}
]
}
Create a Pipeline in the Configuration.
object Examples:
The preferred response (minimal or full) |
The Pipeline.
required | Array of objects (elements) non-empty Sequence of processing elements |
usecase | string (usecase) The high-level description of the analytics performed by the pipeline. |
sources | Array of integers <int32> (sources) [ items <int32 > >= 0 ] IDs of input sources to the pipeline |
sinks | Array of integers <int32> (sinks) [ items <int32 > >= 0 ] IDs of output sinks from the pipeline |
{- "elements": [
- {
- "name": "infer",
- "args": {
- "model": "person-detection-nano",
- "score_threshold": 0.3,
- "iou_threshold": 0.3
}
}, - {
- "name": "object-tracking-OH",
- "args": {
- "max_age": 3,
- "min_hits": 3,
- "history": 50,
- "region": "bottom",
- "ratio": 0.2,
- "moving_average": 3
}
}, - {
- "name": "line-crossing",
- "args": {
- "directions": [
- -1
], - "history": 5,
- "region": "bottom",
- "ratio": 0.2
}, - "config": {
- "0": {
- "lines": [
- {
- "name": "Entrance",
- "coords": [
- {
- "x": 0.486,
- "y": 0.473
}, - {
- "x": 0.358,
- "y": 0.786
}
]
}
]
}, - "1": {
- "lines": [
- {
- "name": "Exit",
- "coords": [
- {
- "x": 0.287,
- "y": 0.569
}, - {
- "x": 0.909,
- "y": 0.14
}
]
}
]
}, - "2,3": {
- "lines": [
- {
- "name": "Tickets",
- "coords": [
- {
- "x": 0.451,
- "y": 0.471
}, - {
- "x": 0.755,
- "y": 0.467
}
]
}
]
}
}
}
], - "usecase": "line-crossing",
- "sources": [
- 0,
- 1,
- 2,
- 3
]
}
{- "id": 0,
- "elements": [
- {
- "name": "infer",
- "args": {
- "model": "person-detection-nano",
- "score_threshold": 0.3,
- "iou_threshold": 0.3
}
}, - {
- "name": "object-tracking-OH",
- "args": {
- "max_age": 3,
- "min_hits": 3,
- "history": 50,
- "region": "bottom",
- "ratio": 0.2,
- "moving_average": 3
}
}, - {
- "name": "line-crossing",
- "args": {
- "directions": [
- -1
], - "history": 5,
- "region": "bottom",
- "ratio": 0.2
}, - "config": {
- "0": {
- "lines": [
- {
- "name": "Entrance",
- "coords": [
- {
- "x": 0.486,
- "y": 0.473
}, - {
- "x": 0.358,
- "y": 0.786
}
]
}
]
}, - "1": {
- "lines": [
- {
- "name": "Exit",
- "coords": [
- {
- "x": 0.287,
- "y": 0.569
}, - {
- "x": 0.909,
- "y": 0.14
}
]
}
]
}, - "2,3": {
- "lines": [
- {
- "name": "Tickets",
- "coords": [
- {
- "x": 0.451,
- "y": 0.471
}, - {
- "x": 0.755,
- "y": 0.467
}
]
}
]
}
}
}
], - "usecase": "line-crossing",
- "sources": [
- 0,
- 1,
- 2,
- 3
], - "sinks": [ ]
}
Get information about a Pipeline (by ID) in the Configuration.
id required | integer <int32> (pipeline_id) >= 0 The ID of the Pipeline. |
{- "id": 0,
- "elements": [
- {
- "name": "infer",
- "args": {
- "model": "person-detection-0200",
- "score_threshold": 0.3,
- "iou_threshold": 0.3
}
}, - {
- "name": "social-distancing",
- "args": {
- "threshold": 0.2
}
}
], - "usecase": "physical-distancing",
- "sources": [
- 0,
- 1
], - "sinks": [
- 0,
- 1
]
}
Update a Pipeline (by ID) in the Configuration.
id required | integer <int32> (pipeline_id) >= 0 The ID of the Pipeline. |
object Examples:
The preferred response (minimal or full) |
The Pipeline information.
required | Array of objects (elements) non-empty Sequence of processing elements |
usecase | string (usecase) The high-level description of the analytics performed by the pipeline. |
sources | Array of integers <int32> (sources) [ items <int32 > >= 0 ] IDs of input sources to the pipeline |
sinks | Array of integers <int32> (sinks) [ items <int32 > >= 0 ] IDs of output sinks from the pipeline |
{- "elements": [
- {
- "name": "infer",
- "args": {
- "model": "person-detection-nano",
- "score_threshold": 0.3,
- "iou_threshold": 0.3
}
}, - {
- "name": "object-tracking-OH",
- "args": {
- "max_age": 3,
- "min_hits": 3,
- "history": 50,
- "region": "bottom",
- "ratio": 0.2,
- "moving_average": 3
}
}, - {
- "name": "line-crossing",
- "args": {
- "directions": [
- -1
], - "history": 5,
- "region": "bottom",
- "ratio": 0.2
}, - "config": {
- "0": {
- "lines": [
- {
- "name": "Entrance",
- "coords": [
- {
- "x": 0.486,
- "y": 0.473
}, - {
- "x": 0.358,
- "y": 0.786
}
]
}
]
}, - "1": {
- "lines": [
- {
- "name": "Exit",
- "coords": [
- {
- "x": 0.287,
- "y": 0.569
}, - {
- "x": 0.909,
- "y": 0.14
}
]
}
]
}, - "2,3": {
- "lines": [
- {
- "name": "Tickets",
- "coords": [
- {
- "x": 0.451,
- "y": 0.471
}, - {
- "x": 0.755,
- "y": 0.467
}
]
}
]
}
}
}
], - "usecase": "line-crossing",
- "sources": [
- 0,
- 1,
- 2,
- 3
]
}
{- "id": 0,
- "elements": [
- {
- "name": "infer",
- "args": {
- "model": "person-detection-nano",
- "score_threshold": 0.3,
- "iou_threshold": 0.3
}
}, - {
- "name": "object-tracking-OH",
- "args": {
- "max_age": 3,
- "min_hits": 3,
- "history": 50,
- "region": "bottom",
- "ratio": 0.2,
- "moving_average": 3
}
}, - {
- "name": "line-crossing",
- "args": {
- "directions": [
- -1
], - "history": 5,
- "region": "bottom",
- "ratio": 0.2
}, - "config": {
- "0": {
- "lines": [
- {
- "name": "Entrance",
- "coords": [
- {
- "x": 0.486,
- "y": 0.473
}, - {
- "x": 0.358,
- "y": 0.786
}
]
}
]
}, - "1": {
- "lines": [
- {
- "name": "Exit",
- "coords": [
- {
- "x": 0.287,
- "y": 0.569
}, - {
- "x": 0.909,
- "y": 0.14
}
]
}
]
}, - "2,3": {
- "lines": [
- {
- "name": "Tickets",
- "coords": [
- {
- "x": 0.451,
- "y": 0.471
}, - {
- "x": 0.755,
- "y": 0.467
}
]
}
]
}
}
}
], - "usecase": "line-crossing",
- "sources": [
- 0,
- 1,
- 2,
- 3
], - "sinks": [ ]
}
Modify a Pipeline (by ID) in the Configuration.
id required | integer <int32> (pipeline_id) >= 0 The ID of the Pipeline. |
object Examples:
The preferred response (minimal or full) |
The Pipeline information.
Array of objects (elements) non-empty Sequence of processing elements | |
usecase | string (usecase) The high-level description of the analytics performed by the pipeline. |
sources | Array of integers <int32> (sources) [ items <int32 > >= 0 ] IDs of input sources to the pipeline |
sinks | Array of integers <int32> (sinks) [ items <int32 > >= 0 ] IDs of output sinks from the pipeline |
{- "elements": [
- {
- "name": "infer",
- "args": {
- "model": "person-detection-0200",
- "score_threshold": 0.3,
- "iou_threshold": 0.3
}
}, - {
- "name": "object-tracking",
- "args": {
- "max_age": 5,
- "history": 50,
- "sampling_frequency": 20
}
}
], - "sinks": [
- 2,
- 3
]
}
{- "id": 0,
- "elements": [
- {
- "name": "infer",
- "args": {
- "model": "person-detection-0200",
- "score_threshold": 0.3,
- "iou_threshold": 0.3
}
}, - {
- "name": "object-tracking",
- "args": {
- "max_age": 5,
- "history": 50,
- "sampling_frequency": 20
}
}
], - "usecase": "tracing",
- "sources": [
- 0,
- 1
], - "sinks": [
- 2,
- 3
]
}
Delete a Pipeline (by ID) in the Configuration.
id required | integer <int32> (pipeline_id) >= 0 The ID of the Pipeline. |
force | boolean Default: false Whether to force deletion of the Pipeline even if it is connected to a Source or Sink.
If |
{- "code": "reference",
- "reason": "string",
- "value": {
- "sources": [
- 1,
- 3
], - "sinks": [
- 0,
- 1
]
}
}
Retrieve all the runtime statistics for a Pipeline (by ID) in the Configuration.
id required | integer <int32> (pipeline_id) >= 0 The ID of the Pipeline. |
{- "status": "starting",
- "fps": 0,
- "latency": 0
}
Connect Sources as input to a Pipeline (by ID) in the Configuration.
id required | integer <int32> (pipeline_id) >= 0 The ID of the Pipeline. |
The Sources to connect.
Source ID
[- 0,
- 1,
- 2
]
{- "code": "id",
- "reason": "string",
- "value": {
- "id": "string",
- "sources": [
- 0
]
}
}
Disconnect Sources from a Pipeline (by ID) in the Configuration.
id required | integer <int32> (pipeline_id) >= 0 The ID of the Pipeline. |
The Sources to disconnect.
Source ID
[- 1,
- 2
]
{- "code": "id",
- "reason": "string",
- "value": {
- "id": "string",
- "sources": [
- 0
]
}
}
Connect Sinks as output to a Pipeline (by ID) in the Configuration.
id required | integer <int32> (pipeline_id) >= 0 The ID of the Pipeline. |
The Sinks to connect.
Sink ID
[- 1,
- 2
]
{- "code": "id",
- "reason": "string",
- "value": {
- "id": "string",
- "sinks": [
- 0
]
}
}
Disconnect Sinks from a Pipeline (by ID) in the Configuration.
id required | integer <int32> (pipeline_id) >= 0 The ID of the Pipeline. |
The Sinks to disconnect.
Sink ID
[- 2
]
{- "code": "id",
- "reason": "string",
- "value": {
- "id": "string",
- "sinks": [
- 0
]
}
}
Exports allow you to inspect Channel properties such as its current Configuration, processing rate (FPS), and latency.
Retrieve the Channels and Streams from the Configuration.
filter | Array of strings Items Enum: "streams" "channels" Specify the top-level resource types to retrieve. |
{- "streams": [
- {
- "id": 0,
- "sources": [
- 0,
- 3
]
}, - {
- "id": 1,
- "sources": [
- 1
]
}
], - "channels": [
- {
- "id": 0,
- "source": 0,
- "pipeline": 0,
- "stream": 0
}, - {
- "id": 1,
- "source": 3,
- "pipeline": 1,
- "stream": 0
}, - {
- "id": 2,
- "source": 2,
- "pipeline": 2,
- "stream": null
}, - {
- "id": 3,
- "source": 1,
- "pipeline": 3,
- "stream": {
- "id": 0,
- "hostname": "nimble-edge",
- "port": 6345
}
}
]
}
Retrieve the Channel's static metadata.
id required | integer <int32> (channel_id) >= 0 The ID of the Channel. |
format | string (formatterWithPass) Default: "pass" Enum: "aws" "megh" "pass" The formatter to use to output the static metadata. |
{ }
Retrieve the properties of all Channels.
ids | Array of integers <int32> (channel_id) [ items <int32 > >= 0 ] The Channel IDs to query. |
props | Array of strings Items Enum: "source" "pipeline" "stream" "usecase" "static" "fps" "latency" The requested properties for each Channel. |
format | string (formatterWithPass) Default: "pass" Enum: "aws" "megh" "pass" The formatter to use to output the static metadata. |
{- "0": {
- "source": 0,
- "pipeline": 0,
- "stream": 0,
- "usecase": "physical-distancing",
- "static": { },
- "fps": 24.52,
- "latency": 89.41
}, - "1": {
- "source": 0,
- "pipeline": 1,
- "stream": 0,
- "usecase": "line-crossing",
- "static": {
- "lines": {
- "line1": {
- "Name": "Bathroom",
- "Coords": [
- [
- 0.13,
- 0.56
], - [
- 0.23,
- 0.98
]
]
}, - "line2": {
- "Name": "Exit",
- "Coords": [
- [
- 0.87,
- 0.34
], - [
- 0.19,
- 0.38
]
]
}
}
}, - "fps": 14.9,
- "latency": 56.7
}
}
Statistics allows you to inspect Nimble's system-level details such as current CPU and Memory load.
{- "uptime": 3987.291,
- "cpu": 7.92,
- "memory": {
- "virtual": 2684354560,
- "physical": 838860800,
- "total": 4294967296,
- "available": 1073741824
}, - "network": {
- "send": 524288,
- "receive": 524288,
- "congestion": false
}, - "activated": true
}