SSH

Description

The SSH (Secure shell) API makes it possible to retrieve and configure the SSH functions on an Axis device.

Model

The API implements ssh.cgi as its communications interface and supports the following methods:

MethodDescription
getSshInfoRetrieve the SSH configuration currently on the Axis device in the form of a status section that will indicate whether the SSH functionality is either enabled or disabled.
getSupportedVersionsRetrieve a list of all API versions supported by the product.
setSshConfigurationSet the state of the SSH functionality to enabled.

Identification

API Discovery

id=ssh

Obsoletes

This CGI renders the process of retrieving and setting SSH parameters through the param.cgi obsolete. Devices that support both param.cgi and the SSH API will yield the same result regardless of method.

Common examples

Configure the SSH functionality on the Axis device

Use this example to configure your Axis device to enable SSH functionality.

1. Retrieve the SSH configuration for your Axis device using the url below with the POST method. The configuration will then be presented to you.

http://<servername>/axis-cgi/ssh.cgi
JSON input parameters
{
  "apiVersion": "1.0",
  "context": "123",
  "method": "getSshInfo",
  "params": {}
}

2. Parse the JSON response.

Successful response
{
  "apiVersion": "1.0",
  "context": "123",
  "method": "getSshInfo",
  "data": {
    "enabled": true
  }
}
Failed response
{
  "apiVersion": "1.0",
  "context": "abc",
  "error": {
    "code": 1000,
    "message": "Internal error"
  }
}

This error will occur if the CGI encounters an internal error that makes it abort the operation.

3. Check the retrieved information and apply the new configurations.

http://<servername>/axis-cgi/ssh.cgi
JSON input parameters
{
  "apiVersion": "1.0",
  "context": "abc",
  "method": "setSshConfiguration",
  "params": {
    "enabled": true
  }
}

4. The VMS will receive the a response and inform you of the result.

Successful response
{
  "apiVersion": "1.0",
  "context": "abc",
  "method": "setSshConfiguration",
  "data": {}
}
Failed response
{
  "apiVersion": "1.0",
  "context": "abc",
  "error": {
    "code": 4003,
    "message": "Missing parameter(s)"
  }
}

This error will occur if the VMS has sent an incomplete request that was missing one or more of the required parameters.

API references

See getSshInfo for further instructions.

See setSshConfiguration for further instructions.

Retrieve the supported API versions

Use this example to check which API version you should use when you want to communicate with the Axis device.

1. Request a list containing the supported API versions.

http://<servername>/axis-cgi/ssh.cgi
JSON input parameters
{
  "context": "abc",
  "method": "getSupportedVersions"
}

2. Parse the JSON response.

Successful response
{
  "apiVersion": "1.0",
  "context": "abc",
  "method": "getSupportedVersions",
  "data": {
    "apiVersions": ["1.0", "2.1"]
  }
}
Failed response
{
  "apiVersion": "1.0",
  "context": "abc",
  "method": "getSupportedVersions",
  "error": {
    "code": 8000,
    "message": "Internal error"
  }
}

This error will occur if the CGI encounters an internal error that causes it to abort the operation.

See getSupportedVersions for further instructions.

API specifications

getSshInfo

This API method is used to retrieve information about the SSH configuration from an Axis device.

Request

Security level

Administrator

Method

POST

Content-type

application/json

http://<servername>/axis-cgi/ssh.cgi
Request body syntax
{
  "apiVersion": <major>.<minor>,
  "context": <string>,
  "method": "getSshInfo"
}
ParameterDescription
apiVersion=<major>.<minor>The API version that should be used.
context=<string>The user sets this value and the application echoes it back in the response (optional).
method="getSshInfo"The performed method.

Return value - Success

HTTP code

200 OK

Content-type

application/json

Response body syntax
{
  "apiVersion": <major>.<minor>,
  "context": <string>,
  "method": "getSshInfo",
  "data": {
    "enabled": <boolean>
  }
}
ParameterDescription
apiVersion=<major>.<minor>The API version that was used.
context=<string>A text string echoed back if it was provided in the corresponding request (optional).
method="getSshInfo"The method that was performed.
data.enabled=<boolean>A boolean returning one of the following responses:
true: SSH functionality is enabled and running
false: SSH functionality is disabled and not running

Return value - Error

HTTP code

200 OK

Content-type

application/json

Response body syntax
{
  "apiVersion": <major>.<minor>,
  "context": <string>,
  "method": "getSshInfo",
  "error": {
    "code": <error code>,
    "message": <string>
  }
}
ParameterDescription
apiVersion=<major>.<minor>The API version that was used.
context=<string>A text string echoed back if it was provided in the corresponding request (optional).
method="getSshInfo"The method that was performed.
error.code=<error code>The error code describing the kind of error that occurred.
error.message=<string>The error message describing the error to the user.

Error code

There are no specific error codes for this method. General errors are listed in General error codes.

getSupportedVersions

This API method will show you a list of supported API versions.

Request

Security level

Administrator

Method

POST

Content-type

application/json

http://<servername>/axis-cgi/ssh.cgi
Request body syntax
{
  "context": <string>,
  "method": "getSupportedVersions",
  "params": {}
}
ParameterDescription
context=<string>The user sets this value and the application echoes it back in the response (optional).
method="getSupportedVersions"The performed method.

Return value - Success

HTTP code

200 OK

Content-type

application/json

Response body syntax
{
  "apiVersion": <major>.<minor>,
  "context": <string>,
  "method": "getSupportedVersions",
  "data": {
    "apiVersions": [<string>]
  }
}
ParameterDescription
apiVersion=<major>.<minor>The API version that was used.
context=<string>A text string echoed back if it was provided in the corresponding request (optional).
method="getSupportedVersions"The method that was performed.
data.apiVersions=[<string>]A list containing the supported API versions.

Return value - Error

HTTP code

200 OK

Content-type

application/json

Response body syntax
{
  "apiVersion": <major>.<minor>,
  "context": <string>,
  "method": "getSupportedVersions",
  "error": {
    "code": <integer>,
    "message": <string>
  }
}
ParameterDescription
apiVersion=<major>.<minor>The API version that was used.
context=<string>A text string echoed back if it was provided in the corresponding request (optional).
method="getSupportedVersions"The method that was performed.
error.code=<integer>The error code describing the kind of error that occurred.
error.message=<string>The error message describing the error to the user.

Error codes

There are no specific error codes for this method. General errors are listed in General error codes.

setSshConfiguration

This API method is used to apply SSH functionality to an Axis device.

Request

Security level

Administrator

Method

POST

http://<servername>/axis-cgi/ssh.cgi
Request body syntax
{
  "apiVersion": <major>.<minor>,
  "context": <string>,
  "method": "setSshConfiguration",
  "params": {
    "enabled": <boolean>
  }
}
ParameterDescription
apiVersion=<major>.<minor>The API version that should be used.
context=<string>The user sets this value and the application echoes it back in the response (optional).
method="setSshConfiguration"The performed method.
params.enabled=<boolean>Specifies the desired enabled state of the SSH functionality.
true: The functionality is enabled and running.
false: The functionality is disabled and not running.

Return value - Success

HTTP code

200 OK

Content-type

application/json

Response body syntax
{
  "apiVersion": <major>.<minor>,
  "context": <string>,
  "method": "setSshConfiguration",
  "data": {}
}
ParameterDescription
apiVersion=<major>.<minor>The API version that was used.
context=<string>A text string echoed back if it was provided in the corresponding request (optional).
method="setSshConfiguration"The method that was performed.
dataThis field is empty, since this particular request, when successfully executed, doesn’t return any data.

Return value - Error

HTTP code

200 OK

Content-type

application/json

Response body syntax
{
  "apiVersion": <major>.<minor>,
  "context": <string>,
  "method": "setSshConfiguration",
  "error": {
    "code": <error code>,
    "message": <string>
  }
}
ParameterDescription
apiVersion=<major>.<minor>The API version that was used.
context=<string>A text string echoed back if it was provided in the corresponding request (optional).
method="setSshConfiguration"The method that was performed.
error.code=<error code>The error code describing the kind of error that occurred.
error.message=<string>The error message describing the error to the user.

Error codes

There are no specific error codes for this method. General errors are listed in General error codes.

General error codes

These error codes are used by all API methods.

Please note that for internal CGI errors (1000) the HTTP response code is set to 500, whereas for any other CGI error the HTTP response code will be 200.

User authentication and authorization to use the CGIs are performed on the HTTP level and, if unsuccessful, will return the HTTP error code 401. The authorization of the internal services used by the CGIs are performed after both the HTTP authentication and authorization has passed, meaning it will always return the HTTP code 200 regardless of the outcome. Should it fail during the latter stage, the response will consist of an HTTP code 200 as well as JSON data containing the error 4002 (Authorization failed), which means that the CGI couldn't be authorized and thus unable to complete its task. This does not mean that you weren’t able to access the CGI itself.

Error codeDescription
1000Internal error
2000Invalid request
2001Request body too large
3000Invalid JSON data
4000Method does not exist
4001The specified version is not supported
4002Authorization failed
4003Missing parameter(s)
4004Invalid parameter(s)