Create or import keypair

Overview

Generates or imports a keypair.

Classification

  • Create

API Operation Object

  • os-keypairs

Synchronous / Asynchronous

  • -

Request

HTTP Request Method

  • POST

HTTP Request Path

{api_endpoint}/v2/{tenant_id}/os-keypairs

HTTP Request Header

Format

Accept-Encoding: gzip, deflate, compress(optional)
Accept: application/json
X-Auth-Token: <token_id>
Content-Type: application/json

HTTP Request Body

Format

{
    "keypair": {
        "name": "<name>",
        "public_key": "<public_key>"
    }
}

Request Parameter

Request Parameters

name

style

format

description

required/optional

tenant_id

URI

String

The ID for the tenant or account in a multi-tenancy cloud.

required

name

plain

String

The name to associate with the keypair.

required

public_key

plain

String

The public ssh key to import. If not provided, a key is generated.

optional

Response

HTTP Response Header

Format

HTTP/1.1 <response_code> <message>       (ex. 200 OK)
  • <response_code>: see "HTTP Responses" section

  • <message>: message based on the response code

    • skip auto insert field such as "X-Compute-Request-Id" and "Content-Length", "Date"

Response Code

Response Codes

response code

condition

200

normal end

400

computeFault

-

badRequest

401

unauthorized

403

forbidden

404

itemNotFound

405

badMethod

413

overLimit

500

computeFault

503

serviceUnavailable

HTTP Response Body

Format

{
    "keypair": {
        "fingerprint": "<fingerprint>",
        "name": "<name>",
        "public_key": "<public_key>",
        "user_id": "<user_id>"
    }
}

Response Parameter

Response Parameters

item

format

description

fingerprint

String

fingerprint

name

String

The name to associate with the keypair.

public_key

String

The public ssh key to import. If not provided, a key is generated.

user_id

String

owner of instance

Sample API Request and Response

Sample API Request

Request URI

https://example.com/v2/{tenant_id}/os-keypairs

Request Header

Accept-Encoding: gzip, deflate, compress (optional)
Accept: application/json
X-Auth-Token: ajk3adjiown02

Request Body

{
    "keypair": {
        "name": "keypair-dab428fe-6186-4a14-b3de-92131f76cd39",
        "public_key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQDx8nkQv/zgGgB4rMYmIf+6A4l6Rr+o/6lHBQdW5aYd44bd8JttDCE/F/pNRr0lRE+PiqSPO8nDPHw0010JeMH9gYgnnFlyY3/OcJ02RhIPyyxYpv9FhY+2YiUkpwFOcLImyrxEsYXpD/0d3ac30bNH6Sw9JD9UZHYcpSxsIbECHw== Generated-by-Nova"
    }
}

Sample API Response

Response Header

HTTP/1.1 200 OK
  • <response_code>: see "HTTP Responses" section

  • <message>: message based on the response code

    • skip auto insert field such as "X-Compute-Request-Id" and "Content-Length", "Date"

Response Body

{
    "keypair": {
        "fingerprint": "1e:2c:9b:56:79:4b:45:77:f9:ca:7a:98:2c:b0:d5:3c",
        "name": "keypair-dab428fe-6186-4a14-b3de-92131f76cd39",
        "public_key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQDx8nkQv/zgGgB4rMYmIf+6A4l6Rr+o/6lHBQdW5aYd44bd8JttDCE/F/pNRr0lRE+PiqSPO8nDPHw0010JeMH9gYgnnFlyY3/OcJ02RhIPyyxYpv9FhY+2YiUkpwFOcLImyrxEsYXpD/0d3ac30bNH6Sw9JD9UZHYcpSxsIbECHw== Generated-by-Nova",
        "user_id": "fake"
    }
}

Execution Example

HTTP Request

POST /v2/c272d18d923d4e849f7c41df15f390c4/os-keypairs HTTP/1.1
User-Agent: curl/7.35.0
Host: 192.168.56.250:8774
X-Auth-Token: fe7ae679900d422a95c0d27e9899559d
Content-type: application/json
Accept: application/json
Content-Length: 316

{"keypair": {"name":"keypair-dab428fe-6186-4a14-b3de-92131f76cd39", "public_key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQDx8nkQv/zgGgB4rMYmIf+6A4l6Rr+o/6lHBQdW5aYd44bd8JttDCE/F/pNRr0lRE+PiqSPO8nDPHw0010JeMH9gYgnnFlyY3/OcJ02RhIPyyxYpv9FhY+2YiUkpwFOcLImyrxEsYXpD/0d3ac30bNH6Sw9JD9UZHYcpSxsIbECHw== Generated-by-Nova"}}

HTTP Response

HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 430
X-Compute-Request-Id: req-9925eafd-3d35-4789-ae40-442c4f94f0da
Date: Tue, 29 Sep 2015 07:52:08 GMT

{"keypair": {"public_key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQDx8nkQv/zgGgB4rMYmIf+6A4l6Rr+o/6lHBQdW5aYd44bd8JttDCE/F/pNRr0lRE+PiqSPO8nDPHw0010JeMH9gYgnnFlyY3/OcJ02RhIPyyxYpv9FhY+2YiUkpwFOcLImyrxEsYXpD/0d3ac30bNH6Sw9JD9UZHYcpSxsIbECHw== Generated-by-Nova", "user_id": "10a924eb03214764a678ab44faabee54", "name": "keypair-dab428fe-6186-4a14-b3de-92131f76cd39", "fingerprint": "1e:2c:9b:56:79:4b:45:77:f9:ca:7a:98:2c:b0:d5:3c"}}

Error Execution Example

HTTP Request

POST /v2/c272d18d923d4e849f7c41df15f390c4/os-keypairs HTTP/1.1
User-Agent: curl/7.35.0
Host: 192.168.56.250:8774
X-Auth-Token: fe7ae679900d422a95c0d27e9899559d
Content-type: application/json
Accept: application/json
Content-Length: 315

{"keypair": {"name":"keypair-dab428fe-6186-4a14-b3de-92131f76cd39", "public_key": "sh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQDx8nkQv/zgGgB4rMYmIf+6A4l6Rr+o/6lHBQdW5aYd44bd8JttDCE/F/pNRr0lRE+PiqSPO8nDPHw0010JeMH9gYgnnFlyY3/OcJ02RhIPyyxYpv9FhY+2YiUkpwFOcLImyrxEsYXpD/0d3ac30bNH6Sw9JD9UZHYcpSxsIbECHw== Generated-by-Nova"}}

HTTP Response

HTTP/1.1 400 Bad Request
Content-Length: 99
Content-Type: application/json; charset=UTF-8
X-Compute-Request-Id: req-b1fda8ee-57ef-4fdf-9b91-6dcb389e127c
Date: Tue, 29 Sep 2015 07:55:31 GMT

{"badRequest": {"message": "Keypair data is invalid: failed to generate fingerprint", "code": 400}}