Discovery

Most resources in the api will be discoverable by URI.

The base url for the api will describe the available resources:

Example request:

Example response:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
{
    "clusters": {
        "list_endpoint": "/api/v1/clusters/",
        "schema": "/api/v1/clusters/schema/"
    },
    "devices": {
        "list_endpoint": "/api/v1/devices/",
        "schema": "/api/v1/devices/schema/"
    },
    "gateway_deployments": {
        "list_endpoint": "/api/v1/gateway_deployments/",
        "schema": "/api/v1/gateway_deployments/schema/"
    },
    "gateway_shares": {
        "list_endpoint": "/api/v1/gateway_shares/",
        "schema": "/api/v1/gateway_shares/schema/"
    },
    "node_interfaces": {
        "list_endpoint": "/api/v1/node_interfaces/",
        "schema": "/api/v1/node_interfaces/schema/"
    },
    "node_roles": {
        "list_endpoint": "/api/v1/node_roles/",
        "schema": "/api/v1/node_roles/schema/"
    },
    "nodes": {
        "list_endpoint": "/api/v1/nodes/",
        "schema": "/api/v1/nodes/schema/"
    },
    "user_db_deployments": {
        "list_endpoint": "/api/v1/user_db_deployments/",
        "schema": "/api/v1/user_db_deployments/schema/"
    },
    "users": {
        "list_endpoint": "/api/v1/users/",
        "schema": "/api/v1/users/schema/"
    }
}

Additional information about resources can be introspected from their schema:

Example request:

curl -1 https://platform.swiftstack.com/api/v1/users/schema/ -H 'Authorization: apikey <user>:<api_key>'

Example response:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
{
  "allowed_detail_http_methods": [
    "get",
    "patch",
    "delete"
  ],
  "allowed_list_http_methods": [
    "get",
    "post"
  ],
  "default_format": "application/json",
  "default_limit": 20,
  "fields": {
    "cluster": {
      "blank": false,
      "default": "No default provided.",
      "help_text": "A single related resource. Can be either a URI or set of nested resource data.",
      "nullable": false,
      "readonly": false,
      "related_type": "to_one",
      "type": "related",
      "unique": false
    },
    "id": {
      "blank": true,
      "default": "",
      "help_text": "Integer data. Ex: 2673",
      "nullable": false,
      "readonly": false,
      "type": "integer",
      "unique": true
    },
    "resource_uri": {
      "blank": false,
      "default": "No default provided.",
      "help_text": "Unicode string data. Ex: \"Hello World\"",
      "nullable": false,
      "readonly": true,
      "type": "string",
      "unique": false
    },
    "user": {
      "blank": false,
      "default": "No default provided.",
      "help_text": "The storage account to which this user should be\n        associated.",
      "nullable": false,
      "readonly": false,
      "type": "string",
      "unique": false
    }
  },
  "filtering": {
    "cluster": 2
  }
}