-
Notifications
You must be signed in to change notification settings - Fork 107
HTTP
GRIP is able to be controlled remotely through a simple HTTP API that allows remote applications to:
- Upload a pipeline for GRIP to run (headless mode only)
- Supply image sources for a loaded pipeline
- Retrieve published data
The server defaults to use the TCP port 8080. This can be changed in the settings dialog.
Note: This only works when GRIP is running in headless mode.
Send a POST request to /GRIP/upload/pipeline
with the contents of the save file to load. This will trigger the pipeline to run.
HTTP request format:
| Name| Type or Content| |---|---|---|---| | Request | POST | | Data type | text/plain | | Data | Text content of the GRIP save file | | Path | /GRIP/upload/pipeline |
When adding an HTTP Source
to a pipeline, the user is prompted with a dialog asking for the path that the image will be uploaded to. This path must start with /GRIP/upload/image/
, but may define further collections e.g. /GRIP/upload/image/stereo
to logically group inputs.
HTTP Sources act like any other image source in GRIP and will trigger the pipeline to run when a new image is uploaded . Uploading the same image repeatedly will not trigger a run.
HTTP request format:
| Name| Type or Content | |---|---|---|---| | Request | POST | | Data type | binary | | Data | Raw binary data of an image | | Path | /GRIP/upload/image/[source-name] |
Example paths:
/GRIP/upload/image/gompei
/GRIP/upload/image/myImage
/GRIP/upload/image/stereo/left
/GRIP/upload/image/stereo/right
Data is published in JSON format to /GRIP/data
. A request to the base URL /GRIP/data
will have a response for all data published with an HTTP Publish X
operation. For example, if a ContoursReport
is published with the name myContoursReport
and a LinesReport
is published with the name myLinesReport
, the response will look something like
{
"myContoursReport": {
// Data omitted for brevity
},
"myLinesReport": {
// Data omitted for brevity
}
}
If you only want specific data (such as myContoursReport
), use the URL format
/GRIP/data?[data-name-1]&[data-name-2]& ... &[data-name-n]
,
which for this example would resolve to /GRIP/data?myContoursReport
HTTP request format:
| Name| Type or Content| |---|---|---|---| | Request | GET | | Data type | None | | Data | None | | Path | /GRIP/data |
Example paths:
/GRIP/data
/GRIP/data?myContoursReport
/GRIP/data?myContoursReport&myLinesReport
/GRIP/data?foo&bar&baz
NOTE: Getting data via the HTTP API will block until the pipeline finishes running. This may take a while if the pipeline is long, uses large images, or uses computationally intensive operations