Proposed Decapod Camera Control Server Architecture

Resources

Request Type

Response / Action

Status Code

GET

Redirects to the start page for the Decapod user interface.

Success: 301

DELETE, POST, PUT

N/A

Error: 405

The set of all cameras connected to the server.

Request Type

Response / Action

Status Code

GET

Returns info about all connected cameras, in JSON format.

{
    cameras: [
        {
            model: "Model Name",
            port: "connection port",
            resolution: 14.6,
            captureFormats: "formats"
            capabilities: "camera capabilities"
        }
    ]
}

Success: 200

DELETE, POST, PUT

N/A

Error: 405

Request Type

Response / Action

Status Code

GET

Information about number of captures in JSON format

{
    index: #, // unique index for captures
    firstCaptureIndex: #, // index of first existing capture
    lastCaptureIndex: #, // index of last existing capture
    totalCaptures: # // total number of existing captures
}

Success: 200

DELETE, POST, PUT

N/A

Error: 405

Request Type

Response / Action

Status Code

GET

The conventional capture page.

Success: 200

DELETE, POST, PUT

N/A

Error: 405

Request Type

Response / Action

Status Code

GET

Information about whether the cameras meet all criteria for captures

{
    "statusCode": "",
    "message": ""
}

Success: 200

DELETE, POST, PUT

N/A

Error: 405

Request Type

Response / Action

Status Code

GET

URLS to the zip in JSON format

{
    url: "http://localhost:8081/data/conventional/export/capture.zip"
}

success: 200

POST

trigger a capture

{
    index: #,
    totalCaptures: #,
    captures: [url, url]
}

success: 202

DELETE

remove all capture data

success: 204

PUT

N/A

Error: 405

Request Type

Response / Action

Status Code

DELETE

remove all captured images

success: 204

GET, POST, PUT

N/A

Error: 405

Request Type

Response / Action

Status Code

GET

URLS to the capture(s) in JSON format

{
    images: [url, url]
}

success: 200

DELETE

Remove given capture, updates totalCaptures

success: 204

POST, PUT

N/A

Error: 405

Request Type

Response / Action

Status Code

GET

Information about number of captures in JSON format

{
    index: #, // unique index for captures
    firstCaptureIndex: #, // index of first existing capture
    lastCaptureIndex: #, // index of last existing capture
    totalCaptures: # // total number of existing captures
}

Success: 200

DELETE, POST, PUT

N/A

Error: 405

Request Type

Response / Action

Status Code

GET

The stereo capture page.

Success: 200

DELETE, POST, PUT

N/A

Error: 405

Request Type

Response / Action

Status Code

GET

Information about whether the cameras meet all criteria for captures

{
    "statusCode": "",
    "message": ""
}

Success: 200

DELETE, POST, PUT

N/A

Error: 405

Request Type

Response / Action

Status Code

GET

URLS to the capture(s) in JSON format

{
    url: "http://localhost:8081/data/conventional/export/capture.zip"
}

success: 200

POST

trigger a capture

{
    index: #,
    totalCaptures: #,
    captures: [url, url]
}

success: 202

DELETE

remove all capture data

success: 204

PUT

N/A

Error: 405

Request Type

Response / Action

Status Code

DELETE

remove all captured images

success: 204

GET, POST, PUT

N/A

Error: 405

Request Type

Response / Action

Status Code

GET

URLS to the capture(s) in JSON format

{
    images: [url, url]
}

success: 200

DELETE

Remove given capture, updates totalCaptures

success: 204

POST, PUT

N/A

Error: 405

Request Type

Response / Action

Status Code

GET

calibration xml file

success: 200

POST

trigger a capture for calibration

{
    index: #,
    totalCaptures: #,
    captures: [url, url]
}

success: 202

PUT

trigger the generation of the calibration info

success: 202

DELETE

N/A

Error: 405

Request Type

Response / Action

Status Code

GET

Information about number of captures in JSON format

{
    index: #, // unique index for captures
    firstCaptureIndex: #, // index of first existing capture
    lastCaptureIndex: #, // index of last existing capture
    totalCaptures: # // total number of existing captures
}

Success: 200

DELETE, POST, PUT

N/A

Error: 405

Request Type

Response / Action

Status Code

GET

The structured capture page.

Success: 200

DELETE, POST, PUT

N/A

Error: 405

Request Type

Response / Action

Status Code

GET

Information about whether the cameras meet all criteria for captures

{
    "statusCode": "",
    "message": ""
}

Success: 200

DELETE, POST, PUT

N/A

Error: 405

Request Type

Response / Action

Status Code

GET

URLS to the capture(s) in JSON format

{
    url: "http://localhost:8081/data/conventional/export/capture.zip"
}

success: 200

POST

trigger a capture

{
    index: #,
    totalCaptures: #,
    captures: [url, url]
}

success: 202

DELETE

remove all capture data

success: 204

PUT

N/A

Error: 405

Request Type

Response / Action

Status Code

DELETE

remove all captured images

success: 204

GET, POST, PUT

N/A

Error: 405

Request Type

Response / Action

Status Code

GET

URLS to the capture(s) in JSON format

{
    images: [url, url]
}

success: 200

DELETE

Remove given capture, updates totalCaptures

success: 204

POST, PUT

N/A

Error: 405

Request Type

Response / Action

Status Code

GET

calibration xml file

success: 200

POST

trigger a capture for calibration

{
    index: #,
    totalCaptures: #,
    captures: [url, url]
}

success: 202

PUT

trigger the generation of the calibration info

202

DELETE

N/A

Error: 405

Camera Status

Note: The camera status are checked in the listed order.

Stauts Code

Message

Server returned JSON

NO_CAMERAS

No cameras detected

{
    "statusCode": "NO_CAMERAS",
    "message": "No cameras detected"
}

CAMERA_DISCONNECTED

A Camera has been disconnected

{
    "statusCode": "CAMERA_DISCONNECTED",
    "message": "A Camera has been disconnected",
    "numCamerasDisconnected": #
}

NO_CAPTURE

Could not capture an image

{
    "statusCode": "NO_CAPTURE",
    "message": "Could not capture an image"
}

TOO_MANY_CAMERAS

Too many cameras detected

{
    "statusCode": "TOO_MANY_CAMERAS",
    "message": "Too many cameras detected",
    "cameras": [{}, {}]   // Summaries of all the cameras
}

READY

Ready

{
    "statusCode": "READY",
    "message": "Ready"
}