Rigado Edge Direct API API Reference

Edge Direct is Rigado's set of tools for provisioning gateways, orchestrating updates, and monitoring performance.

All endpoints require API Key authentication. Keys can be obtained with the Rigado CLI. Token and secret are set in these two headers:

X-Rigado-API-Token and X-Rigado-API-Secret

Requests are then made to https://api.rigado.com/v1 followed by the resource path you are requesting.

Responses are always in JSON, except for errors, which are returned as strings with an appropriate status code.

Example:

curl -H "X-Rigado-API-Token: token" -H "X-Rigado-API-Secret: secret" https://api.rigado.com/v1/apps

For a more in-depth guide on using API keys, see https://docs.rigado.com/en/legacy/edge-direct/apikey.html

API Endpoint
https://api.rigado.com/v1
Schemes: https
Version: 1.0-94bfb4e
OpenAPI v2.0 Specification: openapi_v2.json

Authentication

api_secret

type
apiKey
name
X-Rigado-API-Secret
in
header

api_token

type
apiKey
name
X-Rigado-API-Token
in
header

gateways

PUT /admin/gateways/{serial}/configurations/reapply

serial: string
in path

The gateway serial number

200 OK

Successfully reapplied configurations

400 Bad Request

Missing parameters or unsupported configuration type requested

401 Unauthorized

Unauthorized

403 Forbidden

Forbidden, organization does not support Sites feature

404 Not Found

No SiteConfigurations found

500 Internal Server Error

Error

GET /gateways

Returns a list of Gateways

includeLastMetrics: boolean
in query

if true, include the most recent GatewayMetrics object for each Gateway

siteName: string
in query

if provided, only include gateways in the named site. "unassigned" is also valid

200 OK

A list of Gateways

type
object
401 Unauthorized

Unauthorized

500 Internal Server Error

Error fetching or marshaling Gateways, or Gateway metrics

Response Example (200 OK)
{
  "gateways": [
    {
      "alive": true,
      "appsStatus": [
        {
          "channel": "edge",
          "health": {
            "code": "\"errorWaitAPIKey\"",
            "message": "\"Waiting for API key\"",
            "status": "okay",
            "timestamp": "2020-05-05T23:47:39.474454697Z"
          },
          "installState": "string",
          "name": "my-fancy-app",
          "refresh": {
            "downloadSize": 5337088,
            "revision": "133",
            "version": "3.3.1"
          },
          "revision": "130",
          "status": "enabled",
          "version": "3.2.99z"
        }
      ],
      "configurations": {
        "configurations": [
          {
            "errors": [
              {
                "message": "string",
                "occurred": "integer (int64)",
                "source": "string"
              }
            ],
            "meta": "string",
            "settings": {
              "ConfigType": "string",
              "Validate": "string"
            },
            "state": "string",
            "type": "string",
            "updated": "string",
            "version": "integer (int64)"
          }
        ]
      },
      "connections": [
        {
          "active": true,
          "interface": "eth0",
          "ip": "192.168.30.150",
          "name": "acme-wifi",
          "primary": true,
          "ssid": "ACME Node 4 5GHz"
        }
      ],
      "eapModeChannel": "string",
      "health": true,
      "interfaceHealth": true,
      "interfaces": [
        {
          "cell": {
            "apn": "vzwinternet",
            "imei": "861108034511146",
            "phoneNumber": "+19715999705",
            "sim": "89148000003237460246"
          },
          "interfaceType": "ethernet",
          "ips": [
            "192.168.30.150"
          ],
          "mac": "51:5b:c3:2f:94:43",
          "mtu": 1500,
          "name": "eth0"
        }
      ],
      "lastCheckedIn": "string",
      "lastMetrics": {
        "cpu": {
          "load15min": "1.20",
          "load1hr": "2.04",
          "load1min": "0.87",
          "percent": 32.45
        },
        "disk": {
          "available": 6640248,
          "used": 358400
        },
        "endedAt": "2018-08-09T00:15:02Z",
        "freq": "integer (int64)",
        "interfaces": [
          {
            "interface": "eth0",
            "ips": [
              "string"
            ],
            "received": 1233,
            "rssi": -51,
            "sent": 32
          }
        ],
        "memory": {}
      }
    }
  ]
}

GET /gateways/{serial}

Returns a specific Gateway

serial: string
in path

The Gateway's unit serial number

200 OK

A single Gateway

401 Unauthorized

Unauthorized

404 Not Found

Gateway not found

500 Internal Server Error

Error marshaling Gateway response

Response Example (200 OK)
{
  "alive": true,
  "appsStatus": [
    {
      "channel": "edge",
      "health": {
        "code": "\"errorWaitAPIKey\"",
        "message": "\"Waiting for API key\"",
        "status": "okay",
        "timestamp": "2020-05-05T23:47:39.474454697Z"
      },
      "installState": "string",
      "name": "my-fancy-app",
      "refresh": {
        "downloadSize": 5337088,
        "revision": "133",
        "version": "3.3.1"
      },
      "revision": "130",
      "status": "enabled",
      "version": "3.2.99z"
    }
  ],
  "configurations": {
    "configurations": [
      {
        "errors": [
          {
            "message": "string",
            "occurred": "integer (int64)",
            "source": "string"
          }
        ],
        "meta": "string",
        "settings": {
          "ConfigType": "string",
          "Validate": "string"
        },
        "state": "string",
        "type": "string",
        "updated": "string",
        "version": "integer (int64)"
      }
    ]
  },
  "connections": [
    {
      "active": true,
      "interface": "eth0",
      "ip": "192.168.30.150",
      "name": "acme-wifi",
      "primary": true,
      "ssid": "ACME Node 4 5GHz"
    }
  ],
  "eapModeChannel": "string",
  "health": true,
  "interfaceHealth": true,
  "interfaces": [
    {
      "cell": {
        "apn": "vzwinternet",
        "imei": "861108034511146",
        "phoneNumber": "+19715999705",
        "sim": "89148000003237460246"
      },
      "interfaceType": "ethernet",
      "ips": [
        "192.168.30.150"
      ],
      "mac": "51:5b:c3:2f:94:43",
      "mtu": 1500,
      "name": "eth0"
    }
  ],
  "lastCheckedIn": "string",
  "lastMetrics": {
    "cpu": {
      "load15min": "1.20",
      "load1hr": "2.04",
      "load1min": "0.87",
      "percent": 32.45
    },
    "disk": {
      "available": 6640248,
      "used": 358400
    },
    "endedAt": "2018-08-09T00:15:02Z",
    "freq": "integer (int64)",
    "interfaces": [
      {
        "interface": "eth0",
        "ips": [
          "string"
        ],
        "received": 1233,
        "rssi": -51,
        "sent": 32
      }
    ],
    "memory": {
      "available": 385584,
      "buffers": 47276032
    }
  }
}

PUT /gateways/{serial}/config

Sends configuration data to a Gateway

An object describing the configuration for a Gateway

serial: string
in path

The Gateway's unit serial number

Request Example
{
  "apps": {
    "my-favorite-app": {
      "values": {
        "extra.logging.enabled": false,
        "parameter.name": "important value",
        "password": "abc12345"
      }
    },
    "my-other-app": {
      "values": {
        "worker.count": 33
      }
    }
  },
  "network": {
    "Wireless-WPA2-PSK-DHCP": {
      "autoconnectPriority": 40,
      "ipv4": {
        "method": "auto"
      },
      "wireless": {
        "ssid": "my-network",
        "security": {
          "password": "secret-password",
          "keyManagement": "wpa-psk"
        }
      }
    }
  },
  "time": {
    "ntp": {
      "backup": "pool.ntp.org",
      "server": "ntp.ubuntu.com"
    },
    "zone": "America/Los_Angeles"
  }
}
200 OK

On successful processing of GatewayConfig

202 Accepted

GatewayConfig sent, but Gateway appears offline, so it might not have worked

400 Bad Request

Error reading request body, Gateway doesn't exist, config data invalid, or gateway is assigned to a site

401 Unauthorized

Unauthorized

404 Not Found

Gateway or Apps not found

500 Internal Server Error

Error sending Config to Gateway

GET /gateways/{serial}/configuration

Gets the Gateway's current configuration

serial: string
in path

The Gateway's unit serial number

A set of Gateway configurations

401 Unauthorized

Unauthorized

404 Not Found

Gateway not found

500 Internal Server Error

Unexpected error

Response Example (200 OK)
{
  "configurations": [
    {
      "errors": [
        {
          "message": "string",
          "occurred": "integer (int64)",
          "source": "string"
        }
      ],
      "meta": "string",
      "settings": {
        "ConfigType": "string",
        "Validate": "string"
      },
      "state": "string",
      "type": "string",
      "updated": "string",
      "version": "integer (int64)"
    }
  ]
}

PUT /gateways/{serial}/eapmode

Sends a configuration to a Gateway to enable or disable EAP Mode ("Early Access Program").

Enabling or disabling EAP Mode may cause the Gateway to reboot multiple times over the course of up to an hour. IMPORTANT: Enabling EAP Mode on a Gateway with a cellular connection is likely to cause multiple large downloads on that connection.

The Gateway must be online in order to receive this command.

In EAP mode, a gateway will automatically periodically update its system snaps (core, cascade-kernel, etc). Gateways in this mode will also switch the channel these system snaps track. The default channel they will switch to is candidate.

Whether the request enables or disables EAP mode is determined by the presence or absence of a field named enable in the request body. If a field named enable is present, and its value is true, the request will enable EAP mode. If the request body does not include a field named enable, or the value of that field is false, the request will disable EAP mode. Note that a request with an empty request body {} or a missing request body does not contain a field named enable, and will disable EAP mode.

When enabling EAP mode, an optional channel parameter in the request body can be used to specify the channel system snaps should track. Valid values are edge, beta and candidate. Note that a value of stable is disallowed. If the request body does not include the channel parameter or includes the channel parameter with the empty string as its value the channel defaults to candidate.

When disabling EAP mode, the value of the channel parameter, if provided, is ignored.

An object describing the EAP Mode settings

serial: string
in path

The Gateway's unit serial number

Request Example
{
  "channel": "beta",
  "enable": true
}
200 OK

EAP Mode configuration successfully sent to Gateway

400 Bad Request

Error reading request body, Gateway offline, EAP Mode not supported on Gateway, or EAP Mode config invalid

401 Unauthorized

Unauthorized

404 Not Found

Gateway not found

500 Internal Server Error

Error sending Config to Gateway

PUT /gateways/{serial}/location

Updates Location of a Gateway

location: string

The physical location of the gateway, as defined by the client

serial: string
in path

The Gateway's unit serial number

Request Example
{
  "location": "string"
}
200 OK

A Gateway object

400 Bad Request

Bad Request. Parameters not configured correctly

401 Unauthorized

Unauthorized

404 Not Found

Gateway not found

500 Internal Server Error

Error fetching, saving, or marshaling Gateway or Gateway metrics

Response Example (200 OK)
{
  "alive": true,
  "appsStatus": [
    {
      "channel": "edge",
      "health": {
        "code": "\"errorWaitAPIKey\"",
        "message": "\"Waiting for API key\"",
        "status": "okay",
        "timestamp": "2020-05-05T23:47:39.474454697Z"
      },
      "installState": "string",
      "name": "my-fancy-app",
      "refresh": {
        "downloadSize": 5337088,
        "revision": "133",
        "version": "3.3.1"
      },
      "revision": "130",
      "status": "enabled",
      "version": "3.2.99z"
    }
  ],
  "configurations": {
    "configurations": [
      {
        "errors": [
          {
            "message": "string",
            "occurred": "integer (int64)",
            "source": "string"
          }
        ],
        "meta": "string",
        "settings": {
          "ConfigType": "string",
          "Validate": "string"
        },
        "state": "string",
        "type": "string",
        "updated": "string",
        "version": "integer (int64)"
      }
    ]
  },
  "connections": [
    {
      "active": true,
      "interface": "eth0",
      "ip": "192.168.30.150",
      "name": "acme-wifi",
      "primary": true,
      "ssid": "ACME Node 4 5GHz"
    }
  ],
  "eapModeChannel": "string",
  "health": true,
  "interfaceHealth": true,
  "interfaces": [
    {
      "cell": {
        "apn": "vzwinternet",
        "imei": "861108034511146",
        "phoneNumber": "+19715999705",
        "sim": "89148000003237460246"
      },
      "interfaceType": "ethernet",
      "ips": [
        "192.168.30.150"
      ],
      "mac": "51:5b:c3:2f:94:43",
      "mtu": 1500,
      "name": "eth0"
    }
  ],
  "lastCheckedIn": "string",
  "lastMetrics": {
    "cpu": {
      "load15min": "1.20",
      "load1hr": "2.04",
      "load1min": "0.87",
      "percent": 32.45
    },
    "disk": {
      "available": 6640248,
      "used": 358400
    },
    "endedAt": "2018-08-09T00:15:02Z",
    "freq": "integer (int64)",
    "interfaces": [
      {
        "interface": "eth0",
        "ips": [
          "string"
        ],
        "received": 1233,
        "rssi": -51,
        "sent": 32
      }
    ],
    "memory": {
      "available": 385584,
      "buffers": 47276032
    }
  }
}

GET /gateways/{serial}/logs

Responds with the list of current gateway log requests

serial: string
in path

The Gateway's unit serial number

200 OK

A an array of GatewayLogRequest

type
object
401 Unauthorized

Unauthorized

404 Not Found

Gateway not found

500 Internal Server Error

Error writing response

Response Example (200 OK)
{
  "gatewayLogRequests": [
    {
      "created": "2018-08-09T00:15:02Z",
      "id": "1d23c456-f782-9a6c-9105-29c61eee8ab4",
      "logType": "last100",
      "logsReceived": "2018-08-09T01:16:02Z",
      "serial": "C123456789-00000",
      "status": "ready",
      "unit": "snap.rigado-deviceops.service.service",
      "updated": "2018-08-09T01:15:02Z"
    }
  ]
}

POST /gateways/{serial}/logs

Creates a request for Logs from a Gateway

logType: string

One of "all" (all available lines in the log, up to 50MB), "last100" (last 100 lines), or "lastHour" (last hour, default)

unit: string

The system unit to request logs for. Empty string returns all logs.

serial: string
in path

The serial of the Gateway to request logs from

Request Example
{
  "logType": "string",
  "unit": "string"
}
201 Created

GatewayLogRequest created successfully

401 Unauthorized

Unauthorized

404 Not Found

Gateway not found

500 Internal Server Error

Error requesting logs or saving or marshaling GatewayLogRequest

Response Content-Types: application/json
Response Example (201 Created)
{
  "created": "2018-08-09T00:15:02Z",
  "id": "1d23c456-f782-9a6c-9105-29c61eee8ab4",
  "logType": "last100",
  "logsReceived": "2018-08-09T01:16:02Z",
  "serial": "C123456789-00000",
  "status": "ready",
  "unit": "snap.rigado-deviceops.service.service",
  "updated": "2018-08-09T01:15:02Z"
}

GET /gateways/{serial}/logs/{requestId}

Responds with the file data corresponding to the gateway log request ID

serial: string
in path

The Gateway's unit serial number

requestId: string
in path

The log request ID generated when requesting logs

200 OK

The log request has been processed and logs are available. Raw log data is returned.

202 Accepted

The log request has been accepted and is still processing. Logs are not available yet.

401 Unauthorized

Unauthorized

404 Not Found

Gateway or log request ID not found

500 Internal Server Error

Error writing response

GET /gateways/{serial}/metrics

Responds with an array of GatewayMetrics each representing one minute of the last 24 hours

serial: string
in path

The Gateway's unit serial number

200 OK

A an array of GatewayMetrics

type
object
401 Unauthorized

Unauthorized

404 Not Found

Gateway not found

500 Internal Server Error

Error marshaling Gateway response

Response Example (200 OK)
{
  "metrics": [
    {
      "cpu": {
        "load15min": "1.20",
        "load1hr": "2.04",
        "load1min": "0.87",
        "percent": 32.45
      },
      "disk": {
        "available": 6640248,
        "used": 358400
      },
      "endedAt": "2018-08-09T00:15:02Z",
      "freq": "integer (int64)",
      "interfaces": [
        {
          "interface": "eth0",
          "ips": [
            "string"
          ],
          "received": 1233,
          "rssi": -51,
          "sent": 32
        }
      ],
      "memory": {
        "available": 385584,
        "buffers": 47276032,
        "cached": 179704,
        "free": 177880,
        "total": "integer (int64)"
      },
      "received": "2018-08-09T00:15:02Z",
      "serial": "C123456789-00000",
      "startedAt": "2018-08-09T00:15:02Z",
      "timestamp": "2018-08-09T00:15:02Z",
      "upSince": "2018-08-09T00:15:02Z"
    }
  ]
}

POST /gateways/{serial}/network-reset

Sends a network-reset request to a Gateway

serial: string
in path

The serial of the Gateway to reset the network of

overrideMaintenanceWindow: boolean
in query

Will override a closed maintenance window

200 OK

OK

401 Unauthorized

Unauthorized

500 Internal Server Error

Error sending reboot request

POST /gateways/{serial}/reboot

Sends a reboot request to a Gateway

serial: string
in path

The serial of the Gateway to reboot

overrideMaintenanceWindow: boolean
in query

Will override a closed maintenance window

200 OK

OK

401 Unauthorized

Unauthorized

500 Internal Server Error

Error sending reboot request

POST /gateways/{serial}/tags

Assigns a Tag to a Gateway

tag: string

The key of the Tag to apply to the Gateway

value: string

The value of the Tag that the Gateway should have

serial: string
in path

The Gateway's unit serial number

Request Example
{
  "tag": "string",
  "value": "string"
}
200 OK

A Gateway object

400 Bad Request

Tag is for Sites only, missing parameter, or error reading request body

401 Unauthorized

Unauthorized

403 Forbidden

Forbidden, organization does not support Sites feature

404 Not Found

Gateway or Tag not found

500 Internal Server Error

Error saving Gateway, calculating app dependencies, fetching Gateway, or marshaling Gateway

Response Example (200 OK)
{
  "alive": true,
  "appsStatus": [
    {
      "channel": "edge",
      "health": {
        "code": "\"errorWaitAPIKey\"",
        "message": "\"Waiting for API key\"",
        "status": "okay",
        "timestamp": "2020-05-05T23:47:39.474454697Z"
      },
      "installState": "string",
      "name": "my-fancy-app",
      "refresh": {
        "downloadSize": 5337088,
        "revision": "133",
        "version": "3.3.1"
      },
      "revision": "130",
      "status": "enabled",
      "version": "3.2.99z"
    }
  ],
  "configurations": {
    "configurations": [
      {
        "errors": [
          {
            "message": "string",
            "occurred": "integer (int64)",
            "source": "string"
          }
        ],
        "meta": "string",
        "settings": {
          "ConfigType": "string",
          "Validate": "string"
        },
        "state": "string",
        "type": "string",
        "updated": "string",
        "version": "integer (int64)"
      }
    ]
  },
  "connections": [
    {
      "active": true,
      "interface": "eth0",
      "ip": "192.168.30.150",
      "name": "acme-wifi",
      "primary": true,
      "ssid": "ACME Node 4 5GHz"
    }
  ],
  "eapModeChannel": "string",
  "health": true,
  "interfaceHealth": true,
  "interfaces": [
    {
      "cell": {
        "apn": "vzwinternet",
        "imei": "861108034511146",
        "phoneNumber": "+19715999705",
        "sim": "89148000003237460246"
      },
      "interfaceType": "ethernet",
      "ips": [
        "192.168.30.150"
      ],
      "mac": "51:5b:c3:2f:94:43",
      "mtu": 1500,
      "name": "eth0"
    }
  ],
  "lastCheckedIn": "string",
  "lastMetrics": {
    "cpu": {
      "load15min": "1.20",
      "load1hr": "2.04",
      "load1min": "0.87",
      "percent": 32.45
    },
    "disk": {
      "available": 6640248,
      "used": 358400
    },
    "endedAt": "2018-08-09T00:15:02Z",
    "freq": "integer (int64)",
    "interfaces": [
      {
        "interface": "eth0",
        "ips": [
          "string"
        ],
        "received": 1233,
        "rssi": -51,
        "sent": 32
      }
    ],
    "memory": {
      "available": 385584,
      "buffers": 47276032
    }
  }
}

DELETE /gateways/{serial}/tags/{tag}

Deletes a Tag from a Gateway

serial: string
in path

The Gateway's unit serial number

tag: string
in path

The Tag to delete

200 OK

A Gateway object

401 Unauthorized

Unauthorized

403 Forbidden

Forbidden, organization does not support Sites feature

404 Not Found

Gateway not found

500 Internal Server Error

Error fetching, saving, or marshaling Gateway or Gateway metrics, or error calculating App dependencies

Response Example (200 OK)
{
  "alive": true,
  "appsStatus": [
    {
      "channel": "edge",
      "health": {
        "code": "\"errorWaitAPIKey\"",
        "message": "\"Waiting for API key\"",
        "status": "okay",
        "timestamp": "2020-05-05T23:47:39.474454697Z"
      },
      "installState": "string",
      "name": "my-fancy-app",
      "refresh": {
        "downloadSize": 5337088,
        "revision": "133",
        "version": "3.3.1"
      },
      "revision": "130",
      "status": "enabled",
      "version": "3.2.99z"
    }
  ],
  "configurations": {
    "configurations": [
      {
        "errors": [
          {
            "message": "string",
            "occurred": "integer (int64)",
            "source": "string"
          }
        ],
        "meta": "string",
        "settings": {
          "ConfigType": "string",
          "Validate": "string"
        },
        "state": "string",
        "type": "string",
        "updated": "string",
        "version": "integer (int64)"
      }
    ]
  },
  "connections": [
    {
      "active": true,
      "interface": "eth0",
      "ip": "192.168.30.150",
      "name": "acme-wifi",
      "primary": true,
      "ssid": "ACME Node 4 5GHz"
    }
  ],
  "eapModeChannel": "string",
  "health": true,
  "interfaceHealth": true,
  "interfaces": [
    {
      "cell": {
        "apn": "vzwinternet",
        "imei": "861108034511146",
        "phoneNumber": "+19715999705",
        "sim": "89148000003237460246"
      },
      "interfaceType": "ethernet",
      "ips": [
        "192.168.30.150"
      ],
      "mac": "51:5b:c3:2f:94:43",
      "mtu": 1500,
      "name": "eth0"
    }
  ],
  "lastCheckedIn": "string",
  "lastMetrics": {
    "cpu": {
      "load15min": "1.20",
      "load1hr": "2.04",
      "load1min": "0.87",
      "percent": 32.45
    },
    "disk": {
      "available": 6640248,
      "used": 358400
    },
    "endedAt": "2018-08-09T00:15:02Z",
    "freq": "integer (int64)",
    "interfaces": [
      {
        "interface": "eth0",
        "ips": [
          "string"
        ],
        "received": 1233,
        "rssi": -51,
        "sent": 32
      }
    ],
    "memory": {
      "available": 385584,
      "buffers": 47276032
    }
  }
}

apps

GET /apps

Returns a list of Apps

200 OK

A list of Apps

type
object
401 Unauthorized

Unauthorized

500 Internal Server Error

Error fetching or marshaling Apps

Response Example (200 OK)
{
  "apps": [
    {
      "description": "This app is wonderful",
      "managed": false,
      "name": "my-fancy-app",
      "releaseStatus": {
        "beta": 3,
        "candidate": 2,
        "edge": 0,
        "stable": 1
      },
      "summary": "Performs basic app functions"
    }
  ]
}

POST /apps

Creates an App

dryRun: boolean

if dryRun is true, just test for availability of the app name

name: string

unique name of the new app

Request Example
{
  "dryRun": "boolean",
  "name": "string"
}
200 OK

A successful response if the request was a dryRun

201 Created
App

App created successfully

401 Unauthorized

Unauthorized

404 Not Found

Organization not found

500 Internal Server Error

Error registering app name, or saving or marshaling AppRevision

Response Content-Types: application/json
Response Example (201 Created)
{
  "description": "This app is wonderful",
  "managed": false,
  "name": "my-fancy-app",
  "releaseStatus": {
    "beta": 3,
    "candidate": 2,
    "edge": 0,
    "stable": 1
  },
  "summary": "Performs basic app functions"
}

GET /apps/{name}

Returns an App

name: string
in path

unique name of the app

200 OK
App

App

401 Unauthorized

Unauthorized

404 Not Found

App not found

500 Internal Server Error

Error fetching or marshaling Apps

Response Example (200 OK)
{
  "description": "This app is wonderful",
  "managed": false,
  "name": "my-fancy-app",
  "releaseStatus": {
    "beta": 3,
    "candidate": 2,
    "edge": 0,
    "stable": 1
  },
  "summary": "Performs basic app functions"
}

apprevisions

GET /apps/revisions

Returns a list of AppRevisions

200 OK

A list of AppRevisions

type
object
401 Unauthorized

Unauthorized

500 Internal Server Error

Error fetching or marshaling App Revisions

Response Example (200 OK)
{
  "appRevisions": [
    {
      "architecture": "armhf",
      "binaryFileSize": 10242342,
      "channels": [
        {
          "channel": "stable",
          "released": true
        }
      ],
      "created": "2018-08-09T00:15:02Z",
      "name": "my-great-app",
      "organization": "1d23c456-f782-9a6c-9105-29c61eee8ab4",
      "revision": "33",
      "updated": "2018-08-09T01:15:02Z",
      "version": "1.0.1"
    }
  ]
}

GET /apps/snaps/revisions

Returns a list of SnapRevisions

clearCache: boolean
in query

if true, clear cache and return fresh snap revisions for organization

200 OK

A list of SnapRevisions

type
object
401 Unauthorized

Unauthorized

500 Internal Server Error

Error fetching or marshaling Snap Revisions

Response Example (200 OK)
{
  "snapRevisions": {
    "cascade-kernel": {
      "beta": 102,
      "candidate": 101,
      "edge": 103,
      "stable": 100
    },
    "core": {
      "beta": 102,
      "candidate": 101,
      "edge": 103,
      "stable": 100
    }
  }
}

GET /apps/{name}/revisions/{revision}

Returns an AppRevision

name: string
in path

The App name

revision: integer
in path

The Revision number

200 OK

An AppRevision

401 Unauthorized

Unauthorized

404 Not Found

App revision not found

500 Internal Server Error

Error fetching or marshaling App Revision

Response Example (200 OK)
{
  "architecture": "armhf",
  "binaryFileSize": 10242342,
  "channels": [
    {
      "channel": "stable",
      "released": true
    }
  ],
  "created": "2018-08-09T00:15:02Z",
  "name": "my-great-app",
  "organization": "1d23c456-f782-9a6c-9105-29c61eee8ab4",
  "revision": "33",
  "updated": "2018-08-09T01:15:02Z",
  "version": "1.0.1"
}

POST /apps/{name}/revisions/{revision}

Releases an AppRevision to Channels

channels: string[]

The channels to release the App to

string
name: string
in path

The App name

revision: string
in path

The AppRevision number

Request Example
{
  "channels": [
    "string"
  ]
}
200 OK

An AppRevision object

400 Bad Request

Invalid revision, app is managed by another organization, or missing or invalid channels parameter

401 Unauthorized

Unauthorized

404 Not Found

Organization, App, or App Revision not found

500 Internal Server Error

Error fetching App, fetching or marshaling Gateways, or saving or releasing AppRevision

Response Example (200 OK)
{
  "architecture": "armhf",
  "binaryFileSize": 10242342,
  "channels": [
    {
      "channel": "stable",
      "released": true
    }
  ],
  "created": "2018-08-09T00:15:02Z",
  "name": "my-great-app",
  "organization": "1d23c456-f782-9a6c-9105-29c61eee8ab4",
  "revision": "33",
  "updated": "2018-08-09T01:15:02Z",
  "version": "1.0.1"
}

auth

POST /auth/domain

Responds with provider name for given provider ID (domain) or with error if such provider not registered in the ED system

domain: string

provider id (also known as domain)

Request Example
{
  "domain": "string"
}
200 OK

provider name

type
string
400 Bad Request

incorrect domain name

404 Not Found

domain is not registered

500 Internal Server Error

Error marshaling result

Response Example (200 OK)
"string"

bundles

GET /bundles

Returns a list of Bundles

200 OK

A list of Bundles

type
object
401 Unauthorized

Unauthorized

500 Internal Server Error

Error fetching or marshaling Bundles

Response Example (200 OK)
{
  "bundles": [
    {
      "apps": [
        {
          "channel": "stable",
          "name": "my-fancy-app"
        }
      ],
      "description": "Midwest Region",
      "id": "9923c456-f782-9a6c-9105-29c61eee8ab4",
      "name": "Midwest",
      "organization": "3423c456-f782-9a6c-9105-29c61eee8ab4",
      "tags": [
        {
          "forSite": "boolean",
          "key": "Department",
          "value": "Accounting"
        }
      ]
    }
  ]
}

POST /bundles

Creates a Bundle

description: string

The description of the Bundle

name: string

The name of the Bundle to create

Request Example
{
  "description": "string",
  "name": "string"
}
200 OK

A Bundle object

400 Bad Request

Missing parameters, or Bundle already exists

401 Unauthorized

Unauthorized

500 Internal Server Error

Error saving, fetching, or marshaling Bundle

Response Example (200 OK)
{
  "apps": [
    {
      "channel": "stable",
      "name": "my-fancy-app"
    }
  ],
  "description": "Midwest Region",
  "id": "9923c456-f782-9a6c-9105-29c61eee8ab4",
  "name": "Midwest",
  "organization": "3423c456-f782-9a6c-9105-29c61eee8ab4",
  "tags": [
    {
      "forSite": "boolean",
      "key": "Department",
      "value": "Accounting"
    }
  ]
}

PUT /bundles/{name}

Updates the Apps for a Bundle

An object describing what to update in the Bundle

name: string
in path

The name of the Bundle to update

Request Example
{
  "apps": [
    {
      "channel": "stable",
      "name": "my-fancy-app"
    }
  ],
  "description": "Southwest Region",
  "name": "Southwest",
  "tags": [
    {
      "forSite": "boolean",
      "key": "Department",
      "value": "Accounting"
    }
  ]
}
200 OK

A Bundle object

400 Bad Request

Error reading request body, Bundle already exists, Bundle name invalid, vendor not supported, duplicate App, duplicate Tag

401 Unauthorized

Unauthorized

404 Not Found

Bundle, App, or Tag not found

500 Internal Server Error

Error saving or fetching Bundle, App or Tag

Response Example (200 OK)
{
  "apps": [
    {
      "channel": "stable",
      "name": "my-fancy-app"
    }
  ],
  "description": "Midwest Region",
  "id": "9923c456-f782-9a6c-9105-29c61eee8ab4",
  "name": "Midwest",
  "organization": "3423c456-f782-9a6c-9105-29c61eee8ab4",
  "tags": [
    {
      "forSite": "boolean",
      "key": "Department",
      "value": "Accounting"
    }
  ]
}

DELETE /bundles/{name}

Deletes a Bundle

name: string
in path

The name of the Bundle to delete

204 No Content

Bundle deleted successfully

401 Unauthorized

Unauthorized

404 Not Found

Bundle not found

500 Internal Server Error

Error deleting Bundle

POST /bundles/{name}/apps

Assigns an App to a Bundle

app: string

The name of the App to assign to the Bundle

channel: string

The channel of the App to assign to the Bundle

name: string
in path

The name of the Bundle to assign the App to

Request Example
{
  "app": "string",
  "channel": "string"
}
200 OK

A Bundle object

400 Bad Request

Missing parameters

401 Unauthorized

Unauthorized

404 Not Found

App, Channel, or Bundle not found

500 Internal Server Error

Error saving, fetching or marshaling Bundle

Response Example (200 OK)
{
  "apps": [
    {
      "channel": "stable",
      "name": "my-fancy-app"
    }
  ],
  "description": "Midwest Region",
  "id": "9923c456-f782-9a6c-9105-29c61eee8ab4",
  "name": "Midwest",
  "organization": "3423c456-f782-9a6c-9105-29c61eee8ab4",
  "tags": [
    {
      "forSite": "boolean",
      "key": "Department",
      "value": "Accounting"
    }
  ]
}

DELETE /bundles/{name}/apps/{app}

Removes an App from a Bundle

name: string
in path

The name of the Bundle

app: string
in path

The name of the App

200 OK

A Bundle object

401 Unauthorized

Unauthorized

404 Not Found

App or Bundle not found

500 Internal Server Error

Internal Server Error

Response Example (200 OK)
{
  "apps": [
    {
      "channel": "stable",
      "name": "my-fancy-app"
    }
  ],
  "description": "Midwest Region",
  "id": "9923c456-f782-9a6c-9105-29c61eee8ab4",
  "name": "Midwest",
  "organization": "3423c456-f782-9a6c-9105-29c61eee8ab4",
  "tags": [
    {
      "forSite": "boolean",
      "key": "Department",
      "value": "Accounting"
    }
  ]
}

POST /bundles/{name}/tags

Assigns a Tag key and value to a Bundle

tag: string

The key of the Tag to apply to the Bundle

value: string

The value of the Tag that the Bundle should have

name: string
in path

The name of the Bundle to tag

Request Example
{
  "tag": "string",
  "value": "string"
}
200 OK

A Bundle object

400 Bad Request

Missing parameters, or Tag name not allowed

401 Unauthorized

Unauthorized

404 Not Found

Tag or Bundle not found

500 Internal Server Error

Error saving or fetching Bundle, or in calculating dependencies

Response Example (200 OK)
{
  "apps": [
    {
      "channel": "stable",
      "name": "my-fancy-app"
    }
  ],
  "description": "Midwest Region",
  "id": "9923c456-f782-9a6c-9105-29c61eee8ab4",
  "name": "Midwest",
  "organization": "3423c456-f782-9a6c-9105-29c61eee8ab4",
  "tags": [
    {
      "forSite": "boolean",
      "key": "Department",
      "value": "Accounting"
    }
  ]
}

DELETE /bundles/{name}/tags/{tag}

Deletes a Tag from a Bundle

name: string
in path

The name of the Bundle to delete the Tag from

tag: string
in path

The key of the Tag to remove from the Bundle

200 OK

A Bundle object

401 Unauthorized

Unauthorized

404 Not Found

Bundle not found

500 Internal Server Error

Error saving or fetching Bundle, or in calculating dependencies

Response Example (200 OK)
{
  "apps": [
    {
      "channel": "stable",
      "name": "my-fancy-app"
    }
  ],
  "description": "Midwest Region",
  "id": "9923c456-f782-9a6c-9105-29c61eee8ab4",
  "name": "Midwest",
  "organization": "3423c456-f782-9a6c-9105-29c61eee8ab4",
  "tags": [
    {
      "forSite": "boolean",
      "key": "Department",
      "value": "Accounting"
    }
  ]
}

configuration-variables

GET /configuration-variables/gateway/{serial}

Returns a list of GatewayConfigurationVariables

serial: string
in path

The Gateway's unit serial number

A list of GatewayConfigurationVariables

400 Bad Request

Missing parameters, or Gateway name not allowed

401 Unauthorized

Unauthorized

403 Forbidden

Forbidden, organization does not support Sites feature

404 Not Found

Gateway or Bundle not found

500 Internal Server Error

Error saving or fetching GatewayConfigurationVariable

Response Example (200 OK)
{
  "configurationVariables": [
    {
      "name": "string",
      "sensitive": "boolean",
      "type": "string",
      "value": "object"
    }
  ]
}

PUT /configuration-variables/gateway/{serial}

Updates a single GatewayConfigurationVariable

An object describing a GatewayConfigurationVariable being updated

serial: string
in path

The Gateway's unit serial number

overrideMaintenanceWindow: boolean
in query

Will override a closed maintenance window

Request Example
{
  "name": "string",
  "sensitive": "boolean",
  "type": "string",
  "value": "object"
}

A GatewayConfigurationVariable object

400 Bad Request

Missing parameters

401 Unauthorized

Unauthorized

403 Forbidden

Forbidden, organization does not support Sites feature

404 Not Found

Gateway not found

500 Internal Server Error

Error saving or fetching GatewayConfigurationVariable

Response Example (200 OK)
{
  "name": "string",
  "sensitive": "boolean",
  "type": "string",
  "value": "object"
}

POST /configuration-variables/gateway/{serial}

Creates a single GatewayConfigurationVariable

An object describing a GatewayConfigurationVariable being created

serial: string
in path

The Gateway's unit serial number

overrideMaintenanceWindow: boolean
in query

Will override a closed maintenance window

Request Example
{
  "name": "string",
  "sensitive": "boolean",
  "type": "string",
  "value": "object"
}

A GatewayConfigurationVariable object

400 Bad Request

Missing parameters

401 Unauthorized

Unauthorized

403 Forbidden

Forbidden, organization does not support Sites feature

500 Internal Server Error

Error saving or fetching Gateway, or in calculating dependencies

Response Example (200 OK)
{
  "name": "string",
  "sensitive": "boolean",
  "type": "string",
  "value": "object"
}

POST /configuration-variables/gateway/{serial}/batch

Creates/Updates or Deletes several GatewayConfigurationVariables

An object describing a list of GatewayConfigurationVariables for update

serial: string
in path

The Gateway's unit serial number

overrideMaintenanceWindow: boolean
in query

Will override a closed maintenance window

Request Example
{
  "create": [
    {
      "name": "string",
      "sensitive": "boolean",
      "type": "string",
      "value": "object"
    }
  ],
  "delete": [
    {
      "name": "string",
      "sensitive": "boolean",
      "type": "string",
      "value": "object"
    }
  ],
  "update": [
    {
      "name": "string",
      "sensitive": "boolean",
      "type": "string",
      "value": "object"
    }
  ]
}

A GatewayConfigurationVariablesList object

400 Bad Request

Missing parameters

401 Unauthorized

Unauthorized

403 Forbidden

Forbidden, organization does not support Sites feature

404 Not Found

Gateway not found

500 Internal Server Error

Error saving or fetching GatewayConfigurationVariable

Response Example (200 OK)
{
  "configurationVariables": [
    {
      "name": "string",
      "sensitive": "boolean",
      "type": "string",
      "value": "object"
    }
  ]
}

DELETE /configuration-variables/gateway/{serial}/{name}

Deletes a single GatewayConfigurationVariable

serial: string
in path

The Gateway's unit serial number

name: string
in path

The GatewayConfigurationVariable's name

overrideMaintenanceWindow: boolean
in query

Will override a closed maintenance window

204 No Content

GatewayConfigurationVariable deleted successfully

400 Bad Request

Missing parameters

401 Unauthorized

Unauthorized

403 Forbidden

Forbidden, organization does not support Sites feature

404 Not Found

GatewayConfigurationVariable not found

500 Internal Server Error

Error saving or fetching Gateway, or in calculating dependencies

POST /configuration-variables/organization

Creates a new OrganizationConfigurationVariable

An object describing an OrganizationConfigurationVariable being created

Request Example
{
  "name": "string",
  "sensitive": "boolean",
  "type": "string",
  "usedBy": [
    "string"
  ]
}

A OrganizationConfigurationVariable object

400 Bad Request

Missing parameters

401 Unauthorized

Unauthorized

403 Forbidden

Forbidden, organization does not support Sites feature

500 Internal Server Error

Error saving or fetching OrganizationConfigurationVariable, or in calculating dependencies

Response Example (200 OK)
{
  "name": "string",
  "sensitive": "boolean",
  "type": "string",
  "usedBy": [
    "string"
  ]
}

GET /configuration-variables/organization/

Returns a list of OrganizationConfigurationVariables

A list of OrganizationConfigurationVariables

400 Bad Request

Missing parameters

401 Unauthorized

Unauthorized

403 Forbidden

Forbidden, organization does not support Sites feature

500 Internal Server Error

Error saving or fetching OrganizationConfigurationVariables, or in calculating dependencies

Response Example (200 OK)
{
  "configurationVariables": [
    {
      "name": "string",
      "sensitive": "boolean",
      "type": "string",
      "usedBy": [
        "string"
      ]
    }
  ]
}

DELETE /configuration-variables/organization/{name}

Deletes a single OrganizationConfigurationVariable

name: string
in path

The OrganizationConfigurationVariable's name

204 No Content

OrganizationConfigurationVariable deleted successfully

400 Bad Request

Missing parameters

401 Unauthorized

Unauthorized

403 Forbidden

Forbidden, organization does not support Sites feature

409 Conflict

Conflict

500 Internal Server Error

Error saving or fetching OrganizationConfigurationVariable, or in calculating dependencies

GET /configuration-variables/site/{siteName}

Returns a list of SiteConfigurationVariables

siteName: string
in path

The name of the Site to get SiteConfigurationVariables for

A list of SiteConfigurationVariables

400 Bad Request

Missing parameters, or Site name not allowed

401 Unauthorized

Unauthorized

403 Forbidden

Forbidden, organization does not support Sites feature

404 Not Found

Site not found

500 Internal Server Error

Error saving or fetching SiteConfigurationVariable

Response Example (200 OK)
{
  "configurationVariables": [
    {
      "name": "string",
      "required": "boolean",
      "sensitive": "boolean",
      "type": "string",
      "value": "object"
    }
  ]
}

PUT /configuration-variables/site/{siteName}

Updates a single SiteConfigurationVariable

An object describing a SiteConfigurationVariable being updated

siteName: string
in path

The name of the Site to update SiteConfigurationVariable from

overrideMaintenanceWindow: boolean
in query

Will override a closed maintenance window

Request Example
{
  "name": "string",
  "required": "boolean",
  "sensitive": "boolean",
  "type": "string",
  "value": "object"
}

A SiteConfigurationVariable object

400 Bad Request

Missing parameters, or Site name not allowed

401 Unauthorized

Unauthorized

403 Forbidden

Forbidden, organization does not support Sites feature

404 Not Found

Site not found

500 Internal Server Error

Error saving or fetching SiteConfigurationVariable

Response Example (200 OK)
{
  "name": "string",
  "required": "boolean",
  "sensitive": "boolean",
  "type": "string",
  "value": "object"
}

POST /configuration-variables/site/{siteName}

Creates a new SiteConfigurationVariable

An object describing a SiteConfigurationVariable being created

siteName: string
in path

The name of the Site to assign SiteConfigurationVariable to

overrideMaintenanceWindow: boolean
in query

Will override a closed maintenance window

Request Example
{
  "name": "string",
  "required": "boolean",
  "sensitive": "boolean",
  "type": "string",
  "value": "object"
}

A SiteConfigurationVariable object

400 Bad Request

Missing parameters

401 Unauthorized

Unauthorized

403 Forbidden

Forbidden, organization does not support Sites feature

500 Internal Server Error

Error saving or fetching Site, or in calculating dependencies

Response Example (200 OK)
{
  "name": "string",
  "required": "boolean",
  "sensitive": "boolean",
  "type": "string",
  "value": "object"
}

POST /configuration-variables/site/{siteName}/batch

Creates/Updates or Deletes several GatewayConfigurationVariables

An object describing a list of SiteConfigurationVariables for update

siteName: string
in path

The name of the Site to create/update/delete SiteConfigurationVariable from

overrideMaintenanceWindow: boolean
in query

Will override a closed maintenance window

Request Example
{
  "create": [
    {
      "name": "string",
      "required": "boolean",
      "sensitive": "boolean",
      "type": "string",
      "value": "object"
    }
  ],
  "delete": [
    {
      "name": "string",
      "required": "boolean",
      "sensitive": "boolean",
      "type": "string",
      "value": "object"
    }
  ],
  "update": [
    {
      "name": "string",
      "required": "boolean",
      "sensitive": "boolean",
      "type": "string",
      "value": "object"
    }
  ]
}

A SiteConfigurationVariablesList object

400 Bad Request

Missing parameters

401 Unauthorized

Unauthorized

403 Forbidden

Forbidden, organization does not support Sites feature

404 Not Found

Site not found

500 Internal Server Error

Error saving or fetching SiteConfigurationVariable

Response Example (200 OK)
{
  "configurationVariables": [
    {
      "name": "string",
      "required": "boolean",
      "sensitive": "boolean",
      "type": "string",
      "value": "object"
    }
  ]
}

DELETE /configuration-variables/site/{siteName}/{name}

Deletes a single SiteConfigurationVariable

siteName: string
in path

The name of the Site to delete SiteConfigurationVariable from

name: string
in path

The SiteConfigurationVariable's name

overrideMaintenanceWindow: boolean
in query

Will override a closed maintenance window

204 No Content

SiteConfigurationVariable deleted successfully

400 Bad Request

Missing parameters

401 Unauthorized

Unauthorized

403 Forbidden

Forbidden, organization does not support Sites feature

404 Not Found

SiteConfigurationVariable not found

500 Internal Server Error

Error saving or fetching SiteConfigurationVariable, or in calculating dependencies

configurations

GET /configurations

Responds with an array of ConfigurationStates based on the query parameters provided

serial: string
in query

The Gateway's unit serial number

mostRecent: boolean
in query

if true, include the most recent DesiredConfiguration object for each Gateway; must be true if type is not provided

type: string APP_SET, TIME, NETWORK, EAP_MODE
in query

the type of configuration to be retrieved

A list of ConfigurationStates

401 Unauthorized

Unauthorized

404 Not Found

Gateway not found

500 Internal Server Error

Error marshaling response

Response Example (200 OK)
{
  "configurations": [
    {
      "errors": [
        {
          "message": "string",
          "occurred": "integer (int64)",
          "source": "string"
        }
      ],
      "meta": "string",
      "settings": {
        "ConfigType": "string",
        "Validate": "string"
      },
      "state": "string",
      "type": "string",
      "updated": "string",
      "version": "integer (int64)"
    }
  ]
}

POST /configurations

Sends configuration data to a Gateway

An object describing the configuration for a Gateway. A configuration for network settings cannot include configurations for the connection default-ethernet-dhcp.

serial: string
in query

The Gateway's unit serial number

dryRun: boolean
in query

If true, just performs simple validation of the form of provided settings

Request Example
{
  "errors": [
    {
      "message": "string",
      "occurred": "integer (int64)",
      "source": "string"
    }
  ],
  "meta": "string",
  "settings": {
    "ConfigType": "string",
    "Validate": "string"
  },
  "state": "string",
  "type": "string",
  "updated": "string",
  "version": "integer (int64)"
}
200 OK

Configuration successfully handled for Gateway

202 Accepted

Configuration sent to non-stateful Gateway. Gateway appears offline, so it might not have worked

400 Bad Request

Error reading request body, or config data invalid, configuration feature not supported on Gateway or for Org, or Gateway is in a Site

401 Unauthorized

Unauthorized

404 Not Found

Gateway or Apps not found

500 Internal Server Error

Error managing Config for Gateway

device

GET /devices-lookup/mac/{mac}

Returns a Device Lookup entry corresponding to a specified MAC address

mac: string
in path

The Device's MAC address

200 OK

A single Device

400 Bad Request

Parameter is bad

401 Unauthorized

Unauthorized

404 Not Found

Device not found

500 Internal Server Error

Error marshaling Device response

Response Example (200 OK)
{
  "deviceType": "string",
  "mac": "string",
  "serial": "E2O84402070,TSPR03"
}

Returns a Device Lookup entry corresponding to a specified serial number.

GET /devices-lookup/serial/{serial}
serial: string
in path

The Device's serial number

200 OK

A single Device

400 Bad Request

Parameter is bad

401 Unauthorized

Unauthorized

404 Not Found

Device not found

500 Internal Server Error

Error marshaling Device response

Response Example (200 OK)
{
  "deviceType": "string",
  "mac": "string",
  "serial": "E2O84402070,TSPR03"
}

GET /devices/{deviceID}

Returns the device associated with the requested device ID

deviceID: string
in path

The Device ID (commonly the MAC address)

GW Serial: string
in query

the specific GW that is reporting the device

200 OK

A Single Device's Context

400 Bad Request

Bad Request

401 Unauthorized

Unauthorized

404 Not Found

Device not found

Response Example (200 OK)
{
  "assigned": [
    {
      "Assigned": "boolean",
      "advInterval": "integer (int64)",
      "errors": [
        {
          "error": "string",
          "tag": "string",
          "time": "string (date-time)"
        }
      ],
      "firstSeen": "string",
      "gateway": "string",
      "groups": [
        "string"
      ],
      "health": "string",
      "id": "string",
      "lastAdv": "object",
      "lastRSSI": "integer (int64)",
      "lastSeen": "string",
      "lastUpdated": "string",
      "mac": "string",
      "org": "string",
      "presence": "string",
      "site": "string",
      "smoothedRSSI": "integer (int64)",
      "snapshotInterval": "string",
      "type": "string"
    }
  ],
  "device": {
    "Assigned": "boolean",
    "advInterval": "integer (int64)",
    "errors": [
      {
        "error": "string",
        "tag": "string",
        "time": "string (date-time)"
      }
    ],
    "firstSeen": "string",
    "gateway": "string",
    "groups": [
      "string"
    ],
    "health": "string",
    "id": "string",
    "lastAdv": "object",
    "lastRSSI": "integer (int64)",
    "lastSeen": "string",
    "lastUpdated": "string",
    "mac": "string",
    "org": "string",
    "presence": "string",
    "site": "string",
    "smoothedRSSI": "integer (int64)",
    "snapshotInterval": "string",
    "type": "string"
  },
  "props": [
    {
      "deviceID": "string",
      "gateway": "string",
      "lastUpdated": "string",
      "name": "string",
      "org": "string",
      "value": "object"
    }
  ],
  "seen": [
    {
      "Assigned": "boolean",
      "advInterval": "integer (int64)",
      "errors": [
        {
          "error": "string",
          "tag": "string",
          "time": "string (date-time)"
        }
      ],
      "firstSeen": "string",
      "gateway": "string",
      "groups": [
        "string"
      ],
      "health": "string",
      "id": "string",
      "lastAdv": "object",
      "lastRSSI": "integer (int64)",
      "lastSeen": "string",
      "lastUpdated": "string",
      "mac": "string",
      "org": "string",
      "presence": "string",
      "site": "string",
      "smoothedRSSI": "integer (int64)",
      "snapshotInterval": "string",
      "type": "string"
    }
  ],
  "stats": {
    "fail": "integer (uint64)",
    "ok": "integer (uint64)",
    "seen": "integer (uint64)",
    "warn": "integer (uint64)"
  }
}

devices

GET /devices/gateway/{serial}

Returns all devices seen by the specified gateway

serial: string
in path

The Gateway Serial

A Gateway's view of the devices it can see

400 Bad Request

Bad request

401 Unauthorized

Unauthorized

404 Not Found

Gateway not found

Response Example (200 OK)
{
  "assigned": [
    {
      "Assigned": "boolean",
      "advInterval": "integer (int64)",
      "errors": [
        {
          "error": "string",
          "tag": "string",
          "time": "string (date-time)"
        }
      ],
      "firstSeen": "string",
      "gateway": "string",
      "groups": [
        "string"
      ],
      "health": "string",
      "id": "string",
      "lastAdv": "object",
      "lastRSSI": "integer (int64)",
      "lastSeen": "string",
      "lastUpdated": "string",
      "mac": "string",
      "org": "string",
      "presence": "string",
      "site": "string",
      "smoothedRSSI": "integer (int64)",
      "snapshotInterval": "string",
      "type": "string"
    }
  ],
  "gateway": "string",
  "orgID": "string",
  "seen": [
    {
      "Assigned": "boolean",
      "advInterval": "integer (int64)",
      "errors": [
        {
          "error": "string",
          "tag": "string",
          "time": "string (date-time)"
        }
      ],
      "firstSeen": "string",
      "gateway": "string",
      "groups": [
        "string"
      ],
      "health": "string",
      "id": "string",
      "lastAdv": "object",
      "lastRSSI": "integer (int64)",
      "lastSeen": "string",
      "lastUpdated": "string",
      "mac": "string",
      "org": "string",
      "presence": "string",
      "site": "string",
      "smoothedRSSI": "integer (int64)",
      "snapshotInterval": "string",
      "type": "string"
    }
  ],
  "stats": {
    "fail": "integer (uint64)",
    "ok": "integer (uint64)",
    "seen": "integer (uint64)",
    "warn": "integer (uint64)"
  }
}

GET /devices/organization

Returns all devices seen by the org

An Organization's view of the devices it can see

401 Unauthorized

Unauthorized

404 Not Found

Org not found

Response Example (200 OK)
{
  "assigned": [
    {
      "Assigned": "boolean",
      "advInterval": "integer (int64)",
      "errors": [
        {
          "error": "string",
          "tag": "string",
          "time": "string (date-time)"
        }
      ],
      "firstSeen": "string",
      "gateway": "string",
      "groups": [
        "string"
      ],
      "health": "string",
      "id": "string",
      "lastAdv": "object",
      "lastRSSI": "integer (int64)",
      "lastSeen": "string",
      "lastUpdated": "string",
      "mac": "string",
      "org": "string",
      "presence": "string",
      "site": "string",
      "smoothedRSSI": "integer (int64)",
      "snapshotInterval": "string",
      "type": "string"
    }
  ],
  "org": "string",
  "orgID": "string",
  "seen": [
    {
      "Assigned": "boolean",
      "advInterval": "integer (int64)",
      "errors": [
        {
          "error": "string",
          "tag": "string",
          "time": "string (date-time)"
        }
      ],
      "firstSeen": "string",
      "gateway": "string",
      "groups": [
        "string"
      ],
      "health": "string",
      "id": "string",
      "lastAdv": "object",
      "lastRSSI": "integer (int64)",
      "lastSeen": "string",
      "lastUpdated": "string",
      "mac": "string",
      "org": "string",
      "presence": "string",
      "site": "string",
      "smoothedRSSI": "integer (int64)",
      "snapshotInterval": "string",
      "type": "string"
    }
  ],
  "stats": {
    "fail": "integer (uint64)",
    "ok": "integer (uint64)",
    "seen": "integer (uint64)",
    "warn": "integer (uint64)"
  }
}

GET /devices/site/{site}

Returns all devices seen at the specified Site

site: string
in path

The Site

A Site's view of the devices it can see

400 Bad Request

Bad request

401 Unauthorized

Unauthorized

404 Not Found

Site not found

Response Example (200 OK)
{
  "assigned": [
    {
      "Assigned": "boolean",
      "advInterval": "integer (int64)",
      "errors": [
        {
          "error": "string",
          "tag": "string",
          "time": "string (date-time)"
        }
      ],
      "firstSeen": "string",
      "gateway": "string",
      "groups": [
        "string"
      ],
      "health": "string",
      "id": "string",
      "lastAdv": "object",
      "lastRSSI": "integer (int64)",
      "lastSeen": "string",
      "lastUpdated": "string",
      "mac": "string",
      "org": "string",
      "presence": "string",
      "site": "string",
      "smoothedRSSI": "integer (int64)",
      "snapshotInterval": "string",
      "type": "string"
    }
  ],
  "orgID": "string",
  "seen": [
    {
      "Assigned": "boolean",
      "advInterval": "integer (int64)",
      "errors": [
        {
          "error": "string",
          "tag": "string",
          "time": "string (date-time)"
        }
      ],
      "firstSeen": "string",
      "gateway": "string",
      "groups": [
        "string"
      ],
      "health": "string",
      "id": "string",
      "lastAdv": "object",
      "lastRSSI": "integer (int64)",
      "lastSeen": "string",
      "lastUpdated": "string",
      "mac": "string",
      "org": "string",
      "presence": "string",
      "site": "string",
      "smoothedRSSI": "integer (int64)",
      "snapshotInterval": "string",
      "type": "string"
    }
  ],
  "site": "string",
  "stats": {
    "fail": "integer (uint64)",
    "ok": "integer (uint64)",
    "seen": "integer (uint64)",
    "warn": "integer (uint64)"
  }
}

download

GET /download

Returns an expiring URL to download a file

filename: string
in query

The file to download

200 OK

A downloadable url

401 Unauthorized

Unauthorized

404 Not Found

file not found

500 Internal Server Error

Error generating download link

sites

GET /sites

Returns a list of Sites

configs: boolean
in query

if true, include all the current and scheduled configurations for this site

200 OK

A list of Sites

type
object
401 Unauthorized

Unauthorized

403 Forbidden

Forbidden, organization does not support Sites feature

500 Internal Server Error

Error

Response Example (200 OK)
{
  "sites": [
    {
      "Variables": [
        {
          "name": "string",
          "required": "boolean",
          "sensitive": "boolean",
          "type": "string",
          "value": "object"
        }
      ],
      "configurations": [
        {
          "current": "boolean",
          "scheduled": "boolean",
          "settings": "object",
          "siteName": "20th Floor",
          "status": {
            "applied": "integer (int64)",
            "errored": "integer (int64)",
            "pending": "integer (int64)"
          },
          "type": "string",
          "version": "integer (int64)"
        }
      ],
      "created": "string",
      "description": "string",
      "gatewayBehavior": {
        "configureAfterMaintenanceWindow": "boolean"
      },
      "gateways": [
        "string"
      ],
      "gatewaysSummary": {
        "applied": "integer (int64)",
        "errored": "integer (int64)",
        "health": "boolean",
        "offline": "integer (int64)",
        "online": "integer (int64)",
        "pending": "integer (int64)",
        "unhealthy": [
          "string"
        ]
      },
      "location": "\"Portland, OR, USA\"",
      "maintenanceWindow": {
        "cadence": {
          "dayOfMonth": "integer (int64)",
          "dayOfWeek": "integer (int64)",
          "description": "string",
          "hourOfDay": "integer (int64)",
          "label": "string",
          "monthOfQuarter": "integer (int64)",
          "weekOfMonth": "integer (int64)"
        },
        "durationMinutes": "integer (int64)",
        "nextOpening": "string",
        "openNow": "boolean"
      },
      "name": "20th Floor",
      "tags": [
        {
          "forSite": "boolean",
          "key": "Department",
          "value": "Accounting"
        }
      ],
      "timezone": "\"America/Los_Angeles\"",
      "updated": "string",
      "updatedBy": "string"
    }
  ]
}

POST /sites

Creates a new Site

The Site to create

copyFrom: string
in query

the name of the site to copy the Maintenance Window from

Request Example
{
  "Variables": [
    {
      "name": "string",
      "required": "boolean",
      "sensitive": "boolean",
      "type": "string",
      "value": "object"
    }
  ],
  "configurations": [
    {
      "current": "boolean",
      "scheduled": "boolean",
      "settings": "object",
      "siteName": "20th Floor",
      "status": {
        "applied": "integer (int64)",
        "errored": "integer (int64)",
        "pending": "integer (int64)"
      },
      "type": "string",
      "version": "integer (int64)"
    }
  ],
  "created": "string",
  "description": "string",
  "gatewayBehavior": {
    "configureAfterMaintenanceWindow": "boolean"
  },
  "gateways": [
    "string"
  ],
  "gatewaysSummary": {
    "applied": "integer (int64)",
    "errored": "integer (int64)",
    "health": "boolean",
    "offline": "integer (int64)",
    "online": "integer (int64)",
    "pending": "integer (int64)",
    "unhealthy": [
      "string"
    ]
  },
  "location": "\"Portland, OR, USA\"",
  "maintenanceWindow": {
    "cadence": {
      "dayOfMonth": "integer (int64)",
      "dayOfWeek": "integer (int64)",
      "description": "string",
      "hourOfDay": "integer (int64)",
      "label": "string",
      "monthOfQuarter": "integer (int64)",
      "weekOfMonth": "integer (int64)"
    },
    "durationMinutes": "integer (int64)",
    "nextOpening": "string",
    "openNow": "boolean"
  },
  "name": "20th Floor",
  "tags": [
    {
      "forSite": "boolean",
      "key": "Department",
      "value": "Accounting"
    }
  ],
  "timezone": "\"America/Los_Angeles\"",
  "updated": "string",
  "updatedBy": "string"
}
200 OK

A single Site

400 Bad Request

Error reading request body, Site details invalid, or Site already exists

401 Unauthorized

Unauthorized

403 Forbidden

Forbidden, organization does not support Sites feature

404 Not Found

Site not found

500 Internal Server Error

Error

Response Example (200 OK)
{
  "Variables": [
    {
      "name": "string",
      "required": "boolean",
      "sensitive": "boolean",
      "type": "string",
      "value": "object"
    }
  ],
  "configurations": [
    {
      "current": "boolean",
      "scheduled": "boolean",
      "settings": "object",
      "siteName": "20th Floor",
      "status": {
        "applied": "integer (int64)",
        "errored": "integer (int64)",
        "pending": "integer (int64)"
      },
      "type": "string",
      "version": "integer (int64)"
    }
  ],
  "created": "string",
  "description": "string",
  "gatewayBehavior": {
    "configureAfterMaintenanceWindow": "boolean"
  },
  "gateways": [
    "string"
  ],
  "gatewaysSummary": {
    "applied": "integer (int64)",
    "errored": "integer (int64)",
    "health": "boolean",
    "offline": "integer (int64)",
    "online": "integer (int64)",
    "pending": "integer (int64)",
    "unhealthy": [
      "string"
    ]
  },
  "location": "\"Portland, OR, USA\"",
  "maintenanceWindow": {
    "cadence": {
      "dayOfMonth": "integer (int64)",
      "dayOfWeek": "integer (int64)",
      "description": "string",
      "hourOfDay": "integer (int64)",
      "label": "string",
      "monthOfQuarter": "integer (int64)",
      "weekOfMonth": "integer (int64)"
    },
    "durationMinutes": "integer (int64)",
    "nextOpening": "string",
    "openNow": "boolean"
  },
  "name": "20th Floor",
  "tags": [
    {
      "forSite": "boolean",
      "key": "Department",
      "value": "Accounting"
    }
  ],
  "timezone": "\"America/Los_Angeles\"",
  "updated": "string",
  "updatedBy": "string"
}

GET /sites/{name}

Returns a single Site

name: string
in path

The Site's name

200 OK

A single Site

401 Unauthorized

Unauthorized

403 Forbidden

Forbidden, organization does not support Sites feature

404 Not Found

Site not found

500 Internal Server Error

Error

Response Example (200 OK)
{
  "Variables": [
    {
      "name": "string",
      "required": "boolean",
      "sensitive": "boolean",
      "type": "string",
      "value": "object"
    }
  ],
  "configurations": [
    {
      "current": "boolean",
      "scheduled": "boolean",
      "settings": "object",
      "siteName": "20th Floor",
      "status": {
        "applied": "integer (int64)",
        "errored": "integer (int64)",
        "pending": "integer (int64)"
      },
      "type": "string",
      "version": "integer (int64)"
    }
  ],
  "created": "string",
  "description": "string",
  "gatewayBehavior": {
    "configureAfterMaintenanceWindow": "boolean"
  },
  "gateways": [
    "string"
  ],
  "gatewaysSummary": {
    "applied": "integer (int64)",
    "errored": "integer (int64)",
    "health": "boolean",
    "offline": "integer (int64)",
    "online": "integer (int64)",
    "pending": "integer (int64)",
    "unhealthy": [
      "string"
    ]
  },
  "location": "\"Portland, OR, USA\"",
  "maintenanceWindow": {
    "cadence": {
      "dayOfMonth": "integer (int64)",
      "dayOfWeek": "integer (int64)",
      "description": "string",
      "hourOfDay": "integer (int64)",
      "label": "string",
      "monthOfQuarter": "integer (int64)",
      "weekOfMonth": "integer (int64)"
    },
    "durationMinutes": "integer (int64)",
    "nextOpening": "string",
    "openNow": "boolean"
  },
  "name": "20th Floor",
  "tags": [
    {
      "forSite": "boolean",
      "key": "Department",
      "value": "Accounting"
    }
  ],
  "timezone": "\"America/Los_Angeles\"",
  "updated": "string",
  "updatedBy": "string"
}

Updates a single Site. Use this endpoint to update a Site's description,

PUT /sites/{name}

gateway behavior, location, or timezone-location.

An object describing the update to perform on the Site

name: string
in path

The Site's name

Request Example
{
  "description": "string",
  "gatewayBehavior": {
    "configureAfterMaintenanceWindow": "boolean"
  },
  "location": "\"Portland, OR, USA\"",
  "timezone": "string"
}
200 OK

A single Site

400 Bad Request

Error reading request body, Site details invalid

401 Unauthorized

Unauthorized

403 Forbidden

Forbidden, organization does not support Sites feature

404 Not Found

Site not found

500 Internal Server Error

Error

Response Example (200 OK)
{
  "Variables": [
    {
      "name": "string",
      "required": "boolean",
      "sensitive": "boolean",
      "type": "string",
      "value": "object"
    }
  ],
  "configurations": [
    {
      "current": "boolean",
      "scheduled": "boolean",
      "settings": "object",
      "siteName": "20th Floor",
      "status": {
        "applied": "integer (int64)",
        "errored": "integer (int64)",
        "pending": "integer (int64)"
      },
      "type": "string",
      "version": "integer (int64)"
    }
  ],
  "created": "string",
  "description": "string",
  "gatewayBehavior": {
    "configureAfterMaintenanceWindow": "boolean"
  },
  "gateways": [
    "string"
  ],
  "gatewaysSummary": {
    "applied": "integer (int64)",
    "errored": "integer (int64)",
    "health": "boolean",
    "offline": "integer (int64)",
    "online": "integer (int64)",
    "pending": "integer (int64)",
    "unhealthy": [
      "string"
    ]
  },
  "location": "\"Portland, OR, USA\"",
  "maintenanceWindow": {
    "cadence": {
      "dayOfMonth": "integer (int64)",
      "dayOfWeek": "integer (int64)",
      "description": "string",
      "hourOfDay": "integer (int64)",
      "label": "string",
      "monthOfQuarter": "integer (int64)",
      "weekOfMonth": "integer (int64)"
    },
    "durationMinutes": "integer (int64)",
    "nextOpening": "string",
    "openNow": "boolean"
  },
  "name": "20th Floor",
  "tags": [
    {
      "forSite": "boolean",
      "key": "Department",
      "value": "Accounting"
    }
  ],
  "timezone": "\"America/Los_Angeles\"",
  "updated": "string",
  "updatedBy": "string"
}

DELETE /sites/{name}

Deletes a single Site

name: string
in path

The Site's name

unassign: boolean
in query

Verify marking all Gateways currently in the Site to be unassigned from it before deletion

reassign: string
in query

Verify assigning all Gateways to a new Site before deletion

204 No Content

Site deleted successfully

401 Unauthorized

Unauthorized

403 Forbidden

Forbidden, organization does not support Sites feature

404 Not Found

Site not found

500 Internal Server Error

Error

GET /sites/{name}/configurations

Returns a list of SiteConfigurations

name: string
in path

The Site's name

current: boolean
in query

if true, include only the configurations currently applicable to gateways in the site

scheduled: boolean
in query

if true, include only the configurations that will be applied to gateways in the site at the next maintenance window

type: string APP_SET, TIME, NETWORK, EAP_MODE
in query

the type of configuration to be retrieved

A list of SiteConfigurations that are currently applied or scheduled to be applied in the next maintenance window

400 Bad Request

Missing parameters or unsupported configuration type requested

401 Unauthorized

Unauthorized

403 Forbidden

Forbidden, organization does not support Sites feature

404 Not Found

No SiteConfigurations found

500 Internal Server Error

Error

Response Example (200 OK)
{
  "configurations": [
    {
      "current": "boolean",
      "scheduled": "boolean",
      "settings": "object",
      "siteName": "20th Floor",
      "status": {
        "applied": "integer (int64)",
        "errored": "integer (int64)",
        "pending": "integer (int64)"
      },
      "type": "string",
      "version": "integer (int64)"
    }
  ]
}

PUT /sites/{name}/configurations

Creates a new SiteConfiguration

name: string
in path

The Site's name

type: string APP_SET, TIME, NETWORK, EAP_MODE
in query

the type of configuration to be copied

copyFrom: string
in query

the name of the site to copy the configuration of

overrideMaintenanceWindow: boolean
in query

Will override a closed maintenance window

A single SiteConfiguration

400 Bad Request

Missing parameters, requested or copy from site doesn't exist

401 Unauthorized

Unauthorized

403 Forbidden

Forbidden, organization does not support Sites feature

500 Internal Server Error

Error

Response Example (200 OK)
{
  "current": "boolean",
  "scheduled": "boolean",
  "settings": "object",
  "siteName": "20th Floor",
  "status": {
    "applied": "integer (int64)",
    "errored": "integer (int64)",
    "pending": "integer (int64)"
  },
  "type": "string",
  "version": "integer (int64)"
}

POST /sites/{name}/configurations

Creates a new SiteConfiguration

The SiteConfiguration to create

name: string
in path

The Site's name

overrideMaintenanceWindow: boolean
in query

Will override a closed maintenance window

Request Example
{
  "current": "boolean",
  "scheduled": "boolean",
  "settings": "object",
  "siteName": "20th Floor",
  "status": {
    "applied": "integer (int64)",
    "errored": "integer (int64)",
    "pending": "integer (int64)"
  },
  "type": "string",
  "version": "integer (int64)"
}

A single SiteConfiguration

400 Bad Request

Error reading request body, SiteConfiguration details invalid, Site doesn't exist

401 Unauthorized

Unauthorized

403 Forbidden

Forbidden, organization does not support Sites feature

500 Internal Server Error

Error

Response Example (200 OK)
{
  "current": "boolean",
  "scheduled": "boolean",
  "settings": "object",
  "siteName": "20th Floor",
  "status": {
    "applied": "integer (int64)",
    "errored": "integer (int64)",
    "pending": "integer (int64)"
  },
  "type": "string",
  "version": "integer (int64)"
}

PUT /sites/{name}/configurations/reapply

Reapplies current configurations

name: string
in path

The Site's name

200 OK

Success

400 Bad Request

Missing parameters, requested or copy from site doesn't exist

401 Unauthorized

Unauthorized

403 Forbidden

Forbidden, organization does not support Sites feature

500 Internal Server Error

Error

PUT /sites/{name}/gateways/{serial}

Assigns a Gateway to a Site

name: string
in path

The Site name

serial: string
in path

The Gateway serial

reassign: boolean
in query

Verify reassignment

action: string
in query

Whether to 'add' or 'remove' the GW from the site

204 No Content

Gateway successfully added to Site

400 Bad Request

Gateway is already in the Site, Gateway's version of rigado-deviceops is too old to support Sites

401 Unauthorized

Unauthorized

403 Forbidden

Forbidden, organization does not support Sites feature

404 Not Found

Site or Gateway not found

500 Internal Server Error

Error saving Gateway

PUT /sites/{name}/maintenance-window

Updates a single Site's Maintenance Window. Use this endpoint to update a Site Maintenance Window's duration or cadence

The updated Maintenance Window to save

name: string
in path

The Site's name

Request Example
{
  "cadence": {
    "dayOfMonth": "integer (int64)",
    "dayOfWeek": "integer (int64)",
    "description": "string",
    "hourOfDay": "integer (int64)",
    "label": "string",
    "monthOfQuarter": "integer (int64)",
    "weekOfMonth": "integer (int64)"
  },
  "durationMinutes": "integer (int64)",
  "nextOpening": "string",
  "openNow": "boolean"
}
200 OK

A single Site

400 Bad Request

Error reading request body, Maintenance Window details invalid

401 Unauthorized

Unauthorized

403 Forbidden

Forbidden, organization does not support Sites feature

404 Not Found

Site not found

500 Internal Server Error

Error

Response Example (200 OK)
{
  "Variables": [
    {
      "name": "string",
      "required": "boolean",
      "sensitive": "boolean",
      "type": "string",
      "value": "object"
    }
  ],
  "configurations": [
    {
      "current": "boolean",
      "scheduled": "boolean",
      "settings": "object",
      "siteName": "20th Floor",
      "status": {
        "applied": "integer (int64)",
        "errored": "integer (int64)",
        "pending": "integer (int64)"
      },
      "type": "string",
      "version": "integer (int64)"
    }
  ],
  "created": "string",
  "description": "string",
  "gatewayBehavior": {
    "configureAfterMaintenanceWindow": "boolean"
  },
  "gateways": [
    "string"
  ],
  "gatewaysSummary": {
    "applied": "integer (int64)",
    "errored": "integer (int64)",
    "health": "boolean",
    "offline": "integer (int64)",
    "online": "integer (int64)",
    "pending": "integer (int64)",
    "unhealthy": [
      "string"
    ]
  },
  "location": "\"Portland, OR, USA\"",
  "maintenanceWindow": {
    "cadence": {
      "dayOfMonth": "integer (int64)",
      "dayOfWeek": "integer (int64)",
      "description": "string",
      "hourOfDay": "integer (int64)",
      "label": "string",
      "monthOfQuarter": "integer (int64)",
      "weekOfMonth": "integer (int64)"
    },
    "durationMinutes": "integer (int64)",
    "nextOpening": "string",
    "openNow": "boolean"
  },
  "name": "20th Floor",
  "tags": [
    {
      "forSite": "boolean",
      "key": "Department",
      "value": "Accounting"
    }
  ],
  "timezone": "\"America/Los_Angeles\"",
  "updated": "string",
  "updatedBy": "string"
}

POST /sites/{name}/tags

Assigns a Tag to a Site

tag: string

The key of the Tag to assign to the Site

value: string

The value of the Tag that the Site should have

name: string
in path

The Site name

Request Example
{
  "tag": "string",
  "value": "string"
}
200 OK

A single Site

400 Bad Request

Tag is for Gateways only, missing parameter, or error reading request body

401 Unauthorized

Unauthorized

403 Forbidden

Forbidden, organization does not support Sites feature

404 Not Found

Site or Tag not found

500 Internal Server Error

Error saving Site

Response Example (200 OK)
{
  "Variables": [
    {
      "name": "string",
      "required": "boolean",
      "sensitive": "boolean",
      "type": "string",
      "value": "object"
    }
  ],
  "configurations": [
    {
      "current": "boolean",
      "scheduled": "boolean",
      "settings": "object",
      "siteName": "20th Floor",
      "status": {
        "applied": "integer (int64)",
        "errored": "integer (int64)",
        "pending": "integer (int64)"
      },
      "type": "string",
      "version": "integer (int64)"
    }
  ],
  "created": "string",
  "description": "string",
  "gatewayBehavior": {
    "configureAfterMaintenanceWindow": "boolean"
  },
  "gateways": [
    "string"
  ],
  "gatewaysSummary": {
    "applied": "integer (int64)",
    "errored": "integer (int64)",
    "health": "boolean",
    "offline": "integer (int64)",
    "online": "integer (int64)",
    "pending": "integer (int64)",
    "unhealthy": [
      "string"
    ]
  },
  "location": "\"Portland, OR, USA\"",
  "maintenanceWindow": {
    "cadence": {
      "dayOfMonth": "integer (int64)",
      "dayOfWeek": "integer (int64)",
      "description": "string",
      "hourOfDay": "integer (int64)",
      "label": "string",
      "monthOfQuarter": "integer (int64)",
      "weekOfMonth": "integer (int64)"
    },
    "durationMinutes": "integer (int64)",
    "nextOpening": "string",
    "openNow": "boolean"
  },
  "name": "20th Floor",
  "tags": [
    {
      "forSite": "boolean",
      "key": "Department",
      "value": "Accounting"
    }
  ],
  "timezone": "\"America/Los_Angeles\"",
  "updated": "string",
  "updatedBy": "string"
}

DELETE /sites/{name}/tags/{tag}

Removes a Tag from a Site

name: string
in path

The Site name

tag: string
in path

The Tag to delete

200 OK

A single Site

401 Unauthorized

Unauthorized

403 Forbidden

Forbidden, organization does not support Sites feature

404 Not Found

Site or Tag not found

500 Internal Server Error

Error saving Site

Response Example (200 OK)
{
  "Variables": [
    {
      "name": "string",
      "required": "boolean",
      "sensitive": "boolean",
      "type": "string",
      "value": "object"
    }
  ],
  "configurations": [
    {
      "current": "boolean",
      "scheduled": "boolean",
      "settings": "object",
      "siteName": "20th Floor",
      "status": {
        "applied": "integer (int64)",
        "errored": "integer (int64)",
        "pending": "integer (int64)"
      },
      "type": "string",
      "version": "integer (int64)"
    }
  ],
  "created": "string",
  "description": "string",
  "gatewayBehavior": {
    "configureAfterMaintenanceWindow": "boolean"
  },
  "gateways": [
    "string"
  ],
  "gatewaysSummary": {
    "applied": "integer (int64)",
    "errored": "integer (int64)",
    "health": "boolean",
    "offline": "integer (int64)",
    "online": "integer (int64)",
    "pending": "integer (int64)",
    "unhealthy": [
      "string"
    ]
  },
  "location": "\"Portland, OR, USA\"",
  "maintenanceWindow": {
    "cadence": {
      "dayOfMonth": "integer (int64)",
      "dayOfWeek": "integer (int64)",
      "description": "string",
      "hourOfDay": "integer (int64)",
      "label": "string",
      "monthOfQuarter": "integer (int64)",
      "weekOfMonth": "integer (int64)"
    },
    "durationMinutes": "integer (int64)",
    "nextOpening": "string",
    "openNow": "boolean"
  },
  "name": "20th Floor",
  "tags": [
    {
      "forSite": "boolean",
      "key": "Department",
      "value": "Accounting"
    }
  ],
  "timezone": "\"America/Los_Angeles\"",
  "updated": "string",
  "updatedBy": "string"
}

tags

GET /tags

Returns a list of Tags

200 OK

A list of Tags

type
object
401 Unauthorized

Unauthorized

500 Internal Server Error

Error fetching or marshaling Tags

Response Example (200 OK)
{
  "tags": [
    {
      "forSite": "boolean",
      "key": "Department",
      "value": "Accounting"
    }
  ]
}

POST /tags

Creates a Tag

forSite: boolean

If this key is meant for Sites

key: string

The key of the Tag to create

Request Example
{
  "forSite": "boolean",
  "key": "string"
}
200 OK
Tag

A Tag object

400 Bad Request

Missing parameters, or Tag already exists

401 Unauthorized

Unauthorized

403 Forbidden

Forbidden, organization does not support Sites feature

500 Internal Server Error

Error saving Tag, fetching Tag, or marshaling Tag

Response Example (200 OK)
{
  "forSite": "boolean",
  "key": "Department",
  "value": "Accounting"
}

DELETE /tags/{key}

Deletes a tag

key: string
in path

The key of the Tag to delete

204 No Content

The resource was successfully deleted

401 Unauthorized

Unauthorized

404 Not Found

Tag not found

500 Internal Server Error

Error deleting Tag

version

GET /version

Returns the version information for the server

200 OK

VersionInfo

500 Internal Server Error

Error marshalling version info

Response Example (200 OK)
{
  "buildTime": "string",
  "environment": "string",
  "gitHash": "string",
  "versionNumber": "string"
}

whoami

GET /whoami

Responds with information about the authenticated API key or User

200 OK

A WhoAmI object

401 Unauthorized

Unauthorized

404 Not Found

Organization Not Found

500 Internal Server Error

Error marshaling response

Response Example (200 OK)
{
  "authenticatedBy": "[email protected]",
  "organization": "example: 1d23c456-f782-9a6c-9105-29c61eee8ab4",
  "organizationName": "Happy Corp."
}

Schema Definitions

App: object

Describes a unique Application, which can have many AppRevisions.

description: string

Publisher provided description of the App, automatically pulled from the latest AppRevision

managed: boolean

Indicates that this App is managed by an external publisher, and is unavailable for user provided updates

name: string

Unique name of the App

releaseStatus: AppReleaseStatus
summary: string

Publisher provided summary of the App, automatically pulled from the latest AppRevision

Example
{
  "description": "This app is wonderful",
  "managed": false,
  "name": "my-fancy-app",
  "releaseStatus": {
    "beta": 3,
    "candidate": 2,
    "edge": 0,
    "stable": 1
  },
  "summary": "Performs basic app functions"
}

AppHealth: object

AppHealth describes the heath of a particular App on a Gateway

code: string

Code - Machine readable string related to the error

message: string

Message - String describing the state as set by the application

status: string

Status - One of 'okay', 'waiting', 'blocked' or 'error'

timestamp: string

Timestamp in UTC when the status was reported

Example
{
  "code": "\"errorWaitAPIKey\"",
  "message": "\"Waiting for API key\"",
  "status": "okay",
  "timestamp": "2020-05-05T23:47:39.474454697Z"
}

AppReleaseStatus: object

Describes which (if any) revisions are released on each of the four channels for this App.

beta: integer (int64)

The revision released on the Beta channel for this app. 0 if no released revision

candidate: integer (int64)

The revision released on the Candidate channel for this app. 0 if no released revision

edge: integer (int64)

The revision released on the Edge channel for this app. 0 if no released revision

stable: integer (int64)

The revision released on the Stable channel for this app. 0 if no released revision

Example
{
  "beta": 3,
  "candidate": 2,
  "edge": 0,
  "stable": 1
}

AppRevision: object

Represents a particular revision/version of an App; a distinct binary upload. The revision ID is system generated, while the version is publisher provided.

architecture: string

Architecture of the binary associated with this AppRevision

binaryFileSize: integer (int64)

Binary file size in bytes

channels: ChannelReleaseStatus

Channels that this AppRevision was released to

ChannelReleaseStatus
created: string

Time the AppRevision was created

name: string

The unique name of the App

organization: string

Deprecated: UUID of the organization that this AppRevision belongs to

revision: string

A system generated (auto-incremented) ID

updated: string

Time the AppRevision was last updated

version: string

Version of this AppRevision (provided by the App publisher)

Example
{
  "architecture": "armhf",
  "binaryFileSize": 10242342,
  "channels": [
    {
      "channel": "stable",
      "released": true
    }
  ],
  "created": "2018-08-09T00:15:02Z",
  "name": "my-great-app",
  "organization": "1d23c456-f782-9a6c-9105-29c61eee8ab4",
  "revision": "33",
  "updated": "2018-08-09T01:15:02Z",
  "version": "1.0.1"
}

AppToInstall: object

Describes an App and Channel combination that a Gateway installs.

channel: string

Channel of the App to install

name: string

Name of the App to install

Example
{
  "channel": "stable",
  "name": "my-fancy-app"
}

ApplyError: object

ApplyError represents the timestamp and error message from an error resulting from an attempt to apply a config

message: string
occurred: integer (int64)
source: string
Example
{
  "message": "string",
  "occurred": "integer (int64)",
  "source": "string"
}

AuditTrail: object

action: string
actor: string

The user/client/impersonator or service that initiated the action

category: string
errorDetails: string
maintenanceWindowOverride: boolean
metadata: object

Represent audit trail defails for example version and type of a new configuration, serials of affected gateways, site name, change requested for a maintenance window or tag, app name, etc.

organization: string
subCategory: string
targetID: string
triggeredAt: string

time.RFC3339

Example
{
  "action": "string",
  "actor": "string",
  "category": "string",
  "errorDetails": "string",
  "maintenanceWindowOverride": "boolean",
  "metadata": "object",
  "organization": "3423c456-f782-9a6c-9105-29c61eee8ab4",
  "subCategory": "string",
  "targetID": "string",
  "triggeredAt": "string"
}

AuditTrailList: object

SiteConfigurationsList represents a list of Site Configurations

auditTrail: AuditTrail
AuditTrail
Example
{
  "auditTrail": [
    {
      "action": "string",
      "actor": "string",
      "category": "string",
      "errorDetails": "string",
      "maintenanceWindowOverride": "boolean",
      "metadata": "object",
      "organization": "3423c456-f782-9a6c-9105-29c61eee8ab4",
      "subCategory": "string",
      "targetID": "string",
      "triggeredAt": "string"
    }
  ]
}

Bundle: object

Represents a bundle of Apps to apply to Gateways that have specific Tags.

apps: AppToInstall

List of Apps to install on the Gateways that match this Bundle's Tags

AppToInstall
description: string

User provided description of this Bundle

id: string

The unique ID (UUID) of the Bundle

name: string

Friendly name of the Bundle. Names must have fewer than 32 characters, and must not have any special characters.

organization: string

Deprecated: Unique ID (UUID) of the Organization that this Bundle belongs to

tags: Tag

List of Tags to use to match Gateways to this Bundle

Tag
Example
{
  "apps": [
    {
      "channel": "stable",
      "name": "my-fancy-app"
    }
  ],
  "description": "Midwest Region",
  "id": "9923c456-f782-9a6c-9105-29c61eee8ab4",
  "name": "Midwest",
  "organization": "3423c456-f782-9a6c-9105-29c61eee8ab4",
  "tags": [
    {
      "forSite": "boolean",
      "key": "Department",
      "value": "Accounting"
    }
  ]
}

BundleUpdate: object

Describes an update to a Bundle.

apps: AppToInstall

Apps is the list of Apps to install on the Gateways that match this Bundle's Tags

AppToInstall
description: string

New description for this Bundle

name: string

New friendly name for this Bundle

tags: Tag

Tags is the list of Tags to use to match Gateways to this Bundle

Tag
Example
{
  "apps": [
    {
      "channel": "stable",
      "name": "my-fancy-app"
    }
  ],
  "description": "Southwest Region",
  "name": "Southwest",
  "tags": [
    {
      "forSite": "boolean",
      "key": "Department",
      "value": "Accounting"
    }
  ]
}

CPUMetrics: object

A 1 minute sample of CPU metrics for a Gateway.

load15min: string

The 15 minute load average

load1hr: string

The 1 hour load average

load1min: string

The 1 minute load average

percent: number (double)

CPU usage as percentage

Example
{
  "load15min": "1.20",
  "load1hr": "2.04",
  "load1min": "0.87",
  "percent": 32.45
}

Cadence: object

Cadence represents the parameters of a regularly-occurring event

dayOfMonth: integer (int64) 1 ≤ x ≤ 28

Day of the month, just for Quarterly and Monthly cadences, when WeekOfMonth and DayOfWeek are NOT used.

dayOfWeek: integer (int64) 1 ≤ x ≤ 7

Day of the week, for all cadence types except Ongoing. If used for Monthly or Quarterly, requires the use of WeekOfMonth and is mutually exclusive of DayOfMonth. A 1 denotes Sunday.

description: string

A short description of the cadence, computed from its other values

hourOfDay: integer (int64) 0 ≤ x ≤ 23

Hour of the day, in UTC time.

label: string

The type of cadence

monthOfQuarter: integer (int64) 1 ≤ x ≤ 3

Month of quarter, 1 = Jan/April/July/Oct, 2 = Feb/May/Aug/Nov, etc.

weekOfMonth: integer (int64) 1 ≤ x ≤ 4

Week of the month, just for Quarterly and Monthly cadences. Requires the use of DayOfWeek, and mutually exclusive of DayOfMonth.

Example
{
  "dayOfMonth": "integer (int64)",
  "dayOfWeek": "integer (int64)",
  "description": "string",
  "hourOfDay": "integer (int64)",
  "label": "string",
  "monthOfQuarter": "integer (int64)",
  "weekOfMonth": "integer (int64)"
}

ChannelReleaseStatus: object

Describes release of a revision to a particular Channel.

channel: string

Channel that the AppRevision was released to

released: boolean

True if the corresponding AppRevision is currently the release at the head of the channel, and therefore would be installed on Gateways subscribing to that channel

Example
{
  "channel": "stable",
  "released": true
}

ConfigRequest: string

ConfigurationState: object

Describes a configuration request to a gateway. There are different configuration types, such as NETWORK and TIME.

errors: ApplyError

Errors, if any, resulting from attempts to apply the configurations on the gateway. Reported for the most recent configuration request made of a given type for a gateway.

ApplyError
meta: string

Meta detail relevant to the most recent desired configuration request Only applicable to NETWORK type configurations Valid values are "MANUALLY_RESET", which means a manual reset triggered on the hardware reset all previous network configs, and "APPLY_AFTER_RESET", which indicates that a new complete NETWORK configuration is being requested after a manual reset. This allows for the resubmission of the last requested config without change

settings: Settings
state: State
type: ConfigRequest
updated: string

The time this configuration request was last modified. Reported for the most recent configuration request made of a given type for a gateway. Reported in UTC in RFC3339 format.

version: integer (int64)

Desired Config Version Number of the configuration

Example
{
  "errors": [
    {
      "message": "string",
      "occurred": "integer (int64)",
      "source": "string"
    }
  ],
  "meta": "string",
  "settings": {
    "ConfigType": "string",
    "Validate": "string"
  },
  "state": "string",
  "type": "string",
  "updated": "string",
  "version": "integer (int64)"
}

ConfigurationStatesList: object

Example
{
  "configurations": [
    {
      "errors": [
        {
          "message": "string",
          "occurred": "integer (int64)",
          "source": "string"
        }
      ],
      "meta": "string",
      "settings": {
        "ConfigType": "string",
        "Validate": "string"
      },
      "state": "string",
      "type": "string",
      "updated": "string",
      "version": "integer (int64)"
    }
  ]
}

ConfigurationStatusTally: object

This only applies to SiteConfigurations where Current is true.

applied: integer (int64)
errored: integer (int64)
pending: integer (int64)
Example
{
  "applied": "integer (int64)",
  "errored": "integer (int64)",
  "pending": "integer (int64)"
}

Device: object

Device represents an instance of a Bluetooth device as reported by a gateway

Assigned: boolean
advInterval: integer (int64)
errors: ErrorWithTime
ErrorWithTime
firstSeen: string
gateway: string
groups: string[]
string
health: string
id: string
lastAdv: object
lastRSSI: integer (int64)
lastSeen: string
lastUpdated: string
mac: string
org: string
presence: string
site: string
smoothedRSSI: integer (int64)
snapshotInterval: string
type: string
Example
{
  "Assigned": "boolean",
  "advInterval": "integer (int64)",
  "errors": [
    {
      "error": "string",
      "tag": "string",
      "time": "string (date-time)"
    }
  ],
  "firstSeen": "string",
  "gateway": "string",
  "groups": [
    "string"
  ],
  "health": "string",
  "id": "string",
  "lastAdv": "object",
  "lastRSSI": "integer (int64)",
  "lastSeen": "string",
  "lastUpdated": "string",
  "mac": "string",
  "org": "string",
  "presence": "string",
  "site": "string",
  "smoothedRSSI": "integer (int64)",
  "snapshotInterval": "string",
  "type": "string"
}

DeviceContext: object

DeviceContext represents the context of a single device, with a single instance as well as other places the GW is assigned or seen

assigned: Device
Device
device: Device
props: DeviceProp
DeviceProp
seen: Device
Device
stats: DevicesStats
Example
{
  "assigned": [
    {
      "Assigned": "boolean",
      "advInterval": "integer (int64)",
      "errors": [
        {
          "error": "string",
          "tag": "string",
          "time": "string (date-time)"
        }
      ],
      "firstSeen": "string",
      "gateway": "string",
      "groups": [
        "string"
      ],
      "health": "string",
      "id": "string",
      "lastAdv": "object",
      "lastRSSI": "integer (int64)",
      "lastSeen": "string",
      "lastUpdated": "string",
      "mac": "string",
      "org": "string",
      "presence": "string",
      "site": "string",
      "smoothedRSSI": "integer (int64)",
      "snapshotInterval": "string",
      "type": "string"
    }
  ],
  "device": {
    "Assigned": "boolean",
    "advInterval": "integer (int64)",
    "errors": [
      {
        "error": "string",
        "tag": "string",
        "time": "string (date-time)"
      }
    ],
    "firstSeen": "string",
    "gateway": "string",
    "groups": [
      "string"
    ],
    "health": "string",
    "id": "string",
    "lastAdv": "object",
    "lastRSSI": "integer (int64)",
    "lastSeen": "string",
    "lastUpdated": "string",
    "mac": "string",
    "org": "string",
    "presence": "string",
    "site": "string",
    "smoothedRSSI": "integer (int64)",
    "snapshotInterval": "string",
    "type": "string"
  },
  "props": [
    {
      "deviceID": "string",
      "gateway": "string",
      "lastUpdated": "string",
      "name": "string",
      "org": "string",
      "value": "object"
    }
  ],
  "seen": [
    {
      "Assigned": "boolean",
      "advInterval": "integer (int64)",
      "errors": [
        {
          "error": "string",
          "tag": "string",
          "time": "string (date-time)"
        }
      ],
      "firstSeen": "string",
      "gateway": "string",
      "groups": [
        "string"
      ],
      "health": "string",
      "id": "string",
      "lastAdv": "object",
      "lastRSSI": "integer (int64)",
      "lastSeen": "string",
      "lastUpdated": "string",
      "mac": "string",
      "org": "string",
      "presence": "string",
      "site": "string",
      "smoothedRSSI": "integer (int64)",
      "snapshotInterval": "string",
      "type": "string"
    }
  ],
  "stats": {
    "fail": "integer (uint64)",
    "ok": "integer (uint64)",
    "seen": "integer (uint64)",
    "warn": "integer (uint64)"
  }
}

DeviceLookup: object

DeviceLookup represents a DeviceLookup Lookup entry - a mapping of MAC address to serial number and vice-versa.

deviceType: string

The type of the device (sensor) such as RS40 or similar

mac: string

MAC address of the device. Follows standard MAC address formatting and furthermore is lowercase and without colons.

serial: string

Serial number of the device (sensor). The following schema applies: is 18 characters in total starts with E2O or SCAS which is followed by numbers ends with ,TSPR03

Example
{
  "deviceType": "string",
  "mac": "string",
  "serial": "E2O84402070,TSPR03"
}

DeviceProp: object

deviceID: string
gateway: string
lastUpdated: string
name: string
org: string
value: object
Example
{
  "deviceID": "string",
  "gateway": "string",
  "lastUpdated": "string",
  "name": "string",
  "org": "string",
  "value": "object"
}

DevicesContext: object

assigned: Device
Device
seen: Device
Device
stats: DevicesStats
Example
{
  "assigned": [
    {
      "Assigned": "boolean",
      "advInterval": "integer (int64)",
      "errors": [
        {
          "error": "string",
          "tag": "string",
          "time": "string (date-time)"
        }
      ],
      "firstSeen": "string",
      "gateway": "string",
      "groups": [
        "string"
      ],
      "health": "string",
      "id": "string",
      "lastAdv": "object",
      "lastRSSI": "integer (int64)",
      "lastSeen": "string",
      "lastUpdated": "string",
      "mac": "string",
      "org": "string",
      "presence": "string",
      "site": "string",
      "smoothedRSSI": "integer (int64)",
      "snapshotInterval": "string",
      "type": "string"
    }
  ],
  "seen": [
    {
      "Assigned": "boolean",
      "advInterval": "integer (int64)",
      "errors": [
        {
          "error": "string",
          "tag": "string",
          "time": "string (date-time)"
        }
      ],
      "firstSeen": "string",
      "gateway": "string",
      "groups": [
        "string"
      ],
      "health": "string",
      "id": "string",
      "lastAdv": "object",
      "lastRSSI": "integer (int64)",
      "lastSeen": "string",
      "lastUpdated": "string",
      "mac": "string",
      "org": "string",
      "presence": "string",
      "site": "string",
      "smoothedRSSI": "integer (int64)",
      "snapshotInterval": "string",
      "type": "string"
    }
  ],
  "stats": {
    "fail": "integer (uint64)",
    "ok": "integer (uint64)",
    "seen": "integer (uint64)",
    "warn": "integer (uint64)"
  }
}

DevicesStats: object

fail: integer (uint64)
ok: integer (uint64)
seen: integer (uint64)
warn: integer (uint64)
Example
{
  "fail": "integer (uint64)",
  "ok": "integer (uint64)",
  "seen": "integer (uint64)",
  "warn": "integer (uint64)"
}

DiskMetrics: object

A 1 minute sample of Disk metrics for a Gateway.

available: integer (int64)

Available disk space in KB

used: integer (int64)

Used disk space in KB

Example
{
  "available": 6640248,
  "used": 358400
}

ErrorWithTime: object

error: string
tag: string
time: string (date-time)
Example
{
  "error": "string",
  "tag": "string",
  "time": "string (date-time)"
}

GWDevicesContext: object

GWDevicesContext represents the device context for a single gateway. It includes all devices that are assigned and seen

assigned: Device
Device
gateway: string
orgID: string
seen: Device
Device
stats: DevicesStats
Example
{
  "assigned": [
    {
      "Assigned": "boolean",
      "advInterval": "integer (int64)",
      "errors": [
        {
          "error": "string",
          "tag": "string",
          "time": "string (date-time)"
        }
      ],
      "firstSeen": "string",
      "gateway": "string",
      "groups": [
        "string"
      ],
      "health": "string",
      "id": "string",
      "lastAdv": "object",
      "lastRSSI": "integer (int64)",
      "lastSeen": "string",
      "lastUpdated": "string",
      "mac": "string",
      "org": "string",
      "presence": "string",
      "site": "string",
      "smoothedRSSI": "integer (int64)",
      "snapshotInterval": "string",
      "type": "string"
    }
  ],
  "gateway": "string",
  "orgID": "string",
  "seen": [
    {
      "Assigned": "boolean",
      "advInterval": "integer (int64)",
      "errors": [
        {
          "error": "string",
          "tag": "string",
          "time": "string (date-time)"
        }
      ],
      "firstSeen": "string",
      "gateway": "string",
      "groups": [
        "string"
      ],
      "health": "string",
      "id": "string",
      "lastAdv": "object",
      "lastRSSI": "integer (int64)",
      "lastSeen": "string",
      "lastUpdated": "string",
      "mac": "string",
      "org": "string",
      "presence": "string",
      "site": "string",
      "smoothedRSSI": "integer (int64)",
      "snapshotInterval": "string",
      "type": "string"
    }
  ],
  "stats": {
    "fail": "integer (uint64)",
    "ok": "integer (uint64)",
    "seen": "integer (uint64)",
    "warn": "integer (uint64)"
  }
}

GWModel: string

Gateway: object

Represents a physical Gateway device.

alive: boolean

Describes whether this Gateway has checked in recently and is considered to be alive

appsStatus: GatewayAppStatus

List of Apps installed on this Gateway

GatewayAppStatus
configurations: ConfigurationStatesList
connections: GatewayNetworkConnection

List of network connections this Gateway has

GatewayNetworkConnection
eapModeChannel: string

The channel a Gateway is tracking during EAP Mode (Early Access Program). If this field is not present in the Gateway object, the Gateway is not in EAP Mode.

health: boolean

Describes whether this Gateway is healthy according to health of all it's parts

interfaceHealth: boolean

Describes whether this Gateway has hci1 interface and it is up

interfaces: GatewayNetworkInterface

List of network interfaces this Gateway has

GatewayNetworkInterface
lastCheckedIn: string

When a gateway last sent a checkin message

lastMetrics: GatewayMetrics
location: string

Physical location of the Gateway as described by a user

metadata: object

Metadata about the Gateway, in key/value pair form

orgName: string

The name of the Organization that this gateway belongs to

organization: string

Deprecated: Unique ID (UUID) of the Organization that this Gateway belongs to

pipelineHealth: GatewayPipelineHealth
serial: string

Serial number of the Gateway

site: string

The name of the site this gateway is in, if any

siteTags: Tag

The tags on the site this gateway is in

Tag
statefulConfigTypes: Type

A list of which specific config types are supported by the GW

Type
storeAccess: boolean

Whether this Gateway is able to connect to the store identified by storeId to access Apps

storeId: string

The StoreID that this Gateway will install Apps from

supportsStatefulConfig: boolean

Whether or not this gateway supports stateful configuration types

tags: Tag

List of Tags attached to this Gateway

Tag
type: GWModel
users: string[]

The users available for SSH access to the Gateway

string
Example
{
  "alive": true,
  "appsStatus": [
    {
      "channel": "edge",
      "health": {
        "code": "\"errorWaitAPIKey\"",
        "message": "\"Waiting for API key\"",
        "status": "okay",
        "timestamp": "2020-05-05T23:47:39.474454697Z"
      },
      "installState": "string",
      "name": "my-fancy-app",
      "refresh": {
        "downloadSize": 5337088,
        "revision": "133",
        "version": "3.3.1"
      },
      "revision": "130",
      "status": "enabled",
      "version": "3.2.99z"
    }
  ],
  "configurations": {
    "configurations": [
      {
        "errors": [
          {
            "message": "string",
            "occurred": "integer (int64)",
            "source": "string"
          }
        ],
        "meta": "string",
        "settings": {
          "ConfigType": "string",
          "Validate": "string"
        },
        "state": "string",
        "type": "string",
        "updated": "string",
        "version": "integer (int64)"
      }
    ]
  },
  "connections": [
    {
      "active": true,
      "interface": "eth0",
      "ip": "192.168.30.150",
      "name": "acme-wifi",
      "primary": true,
      "ssid": "ACME Node 4 5GHz"
    }
  ],
  "eapModeChannel": "string",
  "health": true,
  "interfaceHealth": true,
  "interfaces": [
    {
      "cell": {
        "apn": "vzwinternet",
        "imei": "861108034511146",
        "phoneNumber": "+19715999705",
        "sim": "89148000003237460246"
      },
      "interfaceType": "ethernet",
      "ips": [
        "192.168.30.150"
      ],
      "mac": "51:5b:c3:2f:94:43",
      "mtu": 1500,
      "name": "eth0"
    }
  ],
  "lastCheckedIn": "string",
  "lastMetrics": {
    "cpu": {
      "load15min": "1.20",
      "load1hr": "2.04",
      "load1min": "0.87",
      "percent": 32.45
    },
    "disk": {
      "available": 6640248,
      "used": 358400
    },
    "endedAt": "2018-08-09T00:15:02Z",
    "freq": "integer (int64)",
    "interfaces": [
      {
        "interface": "eth0",
        "ips": [
          "string"
        ],
        "received": 1233,
        "rssi": -51,
        "sent": 32
      }
    ],
    "memory": {
      "available": 385584,
      "buffers": 47276032,
      "cached": 179704
    }
  }
}

GatewayAppRefresh: object

Describes information about the available update to an app.

downloadSize: integer (int64)

The download size of the update, in bytes

revision: string

The revision of the update

version: string

The Version of the update

Example
{
  "downloadSize": 5337088,
  "revision": "133",
  "version": "3.3.1"
}

GatewayAppStatus: object

Describes the status of a particular App on a Gateway.

channel: string

Channel of the App that the Gateway is subscribed to for updates

health: AppHealth
installState: string

Deprecated: Install status of the app. Use Gateway Events endpoint instead.

name: string

Name of the App

refresh: GatewayAppRefresh
revision: string

Revision of the App

status: string

Information about whether the App is currently enabled or not. A value of "enabled" means the App is installed and active on the Gateway. A value of "disabled" means the App is installed on the Gateway but disabled.

version: string

Version of the App

Example
{
  "channel": "edge",
  "health": {
    "code": "\"errorWaitAPIKey\"",
    "message": "\"Waiting for API key\"",
    "status": "okay",
    "timestamp": "2020-05-05T23:47:39.474454697Z"
  },
  "installState": "string",
  "name": "my-fancy-app",
  "refresh": {
    "downloadSize": 5337088,
    "revision": "133",
    "version": "3.3.1"
  },
  "revision": "130",
  "status": "enabled",
  "version": "3.2.99z"
}

GatewayCellMetadata: object

GatewayCellMetadata represents the metadata for the cellular network connection on a Gateway Represents the cellular network interface on a Gateway

apn: string

The APN (access point network) setting determines the connection between the gateway and the carrier's network and internet

imei: string

The IMEI (international mobile equipment identity) identifies a mobile phone

phoneNumber: string

The phone number of the mobile phone

sim: string

The SIM as identified by a ICCID (integrated circuit card identifier)

Example
{
  "apn": "vzwinternet",
  "imei": "861108034511146",
  "phoneNumber": "+19715999705",
  "sim": "89148000003237460246"
}

GatewayConfig: object

Describes configuration for a gateway. Configuration of App settings, Networking, and Time is supported.

Each app has a set of key/value pairs that is sent to the configuration hook of the app on the Gateway. Note that these are not ordered lists, and could be processed in any order. If order is required, send multiple configuration requests.

Network configuration is provided in the pattern of Ubuntu Network Manager, but nested values are nested in JSON objects rather than with dot notation.

apps: GatewayConfigApps
network: GatewayConfigNetwork
time: GatewayConfigTime
Example
{
  "apps": {
    "my-favorite-app": {
      "values": {
        "extra.logging.enabled": false,
        "parameter.name": "important value",
        "password": "abc12345"
      }
    },
    "my-other-app": {
      "values": {
        "worker.count": 33
      }
    }
  },
  "network": {
    "Wireless-WPA2-PSK-DHCP": {
      "autoconnectPriority": 40,
      "ipv4": {
        "method": "auto"
      },
      "wireless": {
        "ssid": "my-network",
        "security": {
          "password": "secret-password",
          "keyManagement": "wpa-psk"
        }
      }
    }
  },
  "time": {
    "ntp": {
      "backup": "pool.ntp.org",
      "server": "ntp.ubuntu.com"
    },
    "zone": "America/Los_Angeles"
  }
}

GatewayConfigApp: object

Contains a set of key-value pairs for configuring a single app. These key value pairs are sent to the Gateway, which sends these key value pairs to the application's configure hook.

values: object

A map of of key value pairs that configure an app

Example
{
  "values": {
    "extra.logging.enabled": false,
    "parameter.name": "important value",
    "password": "abc12345"
  }
}

GatewayConfigApps: object

Maps application names to their configuration, which is represented by a AppConfig object. See AppConfig for more information.

GatewayConfigApp
Example
{
  "my-favorite-app": {
    "values": {
      "extra.logging.enabled": false,
      "parameter.name": "important value",
      "password": "abc12345"
    }
  },
  "my-other-app": {
    "values": {
      "worker.count": 33
    }
  }
}

GatewayConfigNetwork: object

Maps a user provided unique ID for a connection to its configuration. Based on configuration of the Linux NetworkManager. Used for adding or modifying connections. The structure of the map is string keys mapped to NetworkConnection value objects. Each entry represents a uniquely named connection.

GatewayConfigNetworkConnection
Example
{
  "Wireless-WPA2-PSK-DHCP": {
    "autoconnectPriority": 40,
    "ipv4": {
      "method": "auto"
    },
    "wireless": {
      "ssid": "my-network",
      "security": {
        "password": "secret-password",
        "keyManagement": "wpa-psk"
      }
    }
  }
}

GatewayConfigNetworkCellular: object

Describes the configuration for cellular connections.

apn: string

The access point name for cellular connection required: tru

password: string

Password used for cellular authentication

username: string

Username used for cellular authentication

Example
{
  "apn": "apn1",
  "password": "password",
  "username": "username"
}

GatewayConfigNetworkConnection: object

Describes configuration for adding or modifying one network connection on a Gateway.

autoconnectPriority: integer (int32)

The autoconnect priority. Connections with higher priority will be preferred. Defaults to 0. The higher number means higher priority.

cellular: GatewayConfigNetworkCellular
eap: GatewayConfigNetworkEAP
ipv4: GatewayConfigNetworkIPv4
wireless: GatewayConfigNetworkWireless
Example
{
  "autoconnectPriority": 40,
  "cellular": {
    "apn": "apn1",
    "password": "password",
    "username": "username"
  },
  "eap": {
    "identity": "username",
    "method": [
      "string"
    ],
    "password": "password",
    "phase1-fast-provisioning": "3 (string)",
    "phase2auth": "mschapv2"
  },
  "ipv4": {
    "dns": [
      "8.8.8.8"
    ],
    "mayFail": true,
    "method": "manual",
    "routeMetric": 1,
    "staticAddress": {
      "gateway": "192.168.1.1",
      "ip": "192.168.1.118",
      "subnetMask": "8"
    }
  },
  "wireless": {
    "band": "string",
    "channel": "integer (uint32)",
    "security": {
      "keyManagement": "wpa-psk",
      "password": "super-secret-123"
    },
    "ssid": "office-wifi-5GHz"
  }
}

GatewayConfigNetworkEAP: object

Describes the configuration for Wi-Fi EAP connections.

identity: string

Identity string for EAP authentication methods. Often the user's user or login name

method: string[]

BETA - The allowed EAP methods to be used when authenticating to the network with 802.1x. Valid methods are: "leap", "md5", "tls", "peap", "ttls", "pwd", and "fast". This field is required if EAP config is provided.

string
password: string

Password used for EAP authentication methods

phase1-fast-provisioning: string

Phase1FastProvisioning enables in-line provisioning of EAP-FAST credentials when FAST is specified as the EAP method. "0" (disabled), "1" (allow unauthenticated provisioning), "2" (allow authenticated provisioning), and "3" (allow both authenticated and unauthenticated provisioning).

phase2auth: string

Specifies the allowed "phase 2" inner non-EAP authentication methods when an EAP method that uses an inner TLS tunnel is specified in the "eap" property. Recognized non-EAP "phase 2" methods are "pap", "chap", "mschap", "mschapv2", "gtc", "otp", "md5", and "tls". Each "phase 2" inner method requires specific parameters for successful authentication

Example
{
  "identity": "username",
  "method": [
    "string"
  ],
  "password": "password",
  "phase1-fast-provisioning": "3 (string)",
  "phase2auth": "mschapv2"
}

GatewayConfigNetworkIPv4: object

Describes the configuration for an IPv4 address

dns: string[]

List of DNS servers. Optional.

string
mayFail: boolean

When true, allows overall network configuration to proceed even if the configuration specified by this property times out. Defaults to true.

method: string

One of "auto", "manual", and "link-local".

routeMetric: integer (int64)

The default metric for routes that don't explicitly specify a metric. The default value -1 means that the metric is chosen automatically based on the device type. The metric applies to dynamic routes, manual (static) routes that don't have an explicit metric setting, address prefix routes, and the default route. Supports values of -1 and 1-1024.

staticAddress: GatewayConfigNetworkIPv4StaticAddress
Example
{
  "dns": [
    "8.8.8.8"
  ],
  "mayFail": true,
  "method": "manual",
  "routeMetric": 1,
  "staticAddress": {
    "gateway": "192.168.1.1",
    "ip": "192.168.1.118",
    "subnetMask": "8"
  }
}

GatewayConfigNetworkIPv4StaticAddress: object

Describes the configuration for an IPv4 Static IP address

gateway: string

The Gateway IP address.

ip: string

The IP address.

subnetMask: string

The subnet mask in integer form.

Example
{
  "gateway": "192.168.1.1",
  "ip": "192.168.1.118",
  "subnetMask": "8"
}

GatewayConfigNetworkWireless: object

Describes the configuration for the Wi-Fi interface.

band: string

802.11 frequency band of the network. One of "a" for 5GHz 802.11a or "bg" for 2.4GHz 802.11. This will lock associations to the Wi-Fi network to the specific band, i.e. if "a" is specified, the device will not associate with the same network in the 2.4GHz band even if the network's settings are compatible.

channel: integer (uint32)

Wireless channel to use for the Wi-Fi connection. The device will only join a Wi-Fi network on the specified channel. Because channel numbers overlap between bands, this property also requires the "band" property to be set.

security: GatewayConfigNetworkWirelessSecurity
ssid: string

SSID of the Wi-Fi network.

Example
{
  "band": "string",
  "channel": "integer (uint32)",
  "security": {
    "keyManagement": "wpa-psk",
    "password": "super-secret-123"
  },
  "ssid": "office-wifi-5GHz"
}

GatewayConfigNetworkWirelessSecurity: object

Describes the configuration for Wi-Fi connection security.

keyManagement: string

Key management used for the connection. One of "none" (WEP), "ieee8021x" (Dynamic WEP), "wpa-none" (Ad-Hoc WPA-PSK), "wpa-psk" (infrastructure WPA-PSK), or "wpa-eap" (WPA-Enterprise). This property must be set for any Wi-Fi connection that uses security. Defaults to "wpa-psk".

password: string

Pre-Shared-Key for WPA networks. If the key is 64-characters long, it must contain only hexadecimal characters and is interpreted as a hexadecimal WPA key. Otherwise, the key must be between 8 and 63 ASCII characters (as specified in the 802.11i standard) and is interpreted as a WPA passphrase, and is hashed to derive the actual WPA-PSK used when connecting to the Wi-Fi network.

Example
{
  "keyManagement": "wpa-psk",
  "password": "super-secret-123"
}

GatewayConfigTime: object

Describes time configuration for a gateway. Enables setting NTP servers, as well as specifying the timezone of the gateway.

ntp: GatewayConfigTimeNTP
zone: string

A timezone string. Must be available in the tz database ( https://www.iana.org/time-zones)

Example
{
  "ntp": {
    "backup": "pool.ntp.org",
    "server": "ntp.ubuntu.com"
  },
  "zone": "America/Los_Angeles"
}

GatewayConfigTimeNTP: object

Describes NTP server configuration for a gateway. Enables setting a preferred and a backup server.

backup: string

The backup server to use

server: string

The preferred server to use

Example
{
  "backup": "pool.ntp.org",
  "server": "ntp.ubuntu.com"
}

GatewayConfigurationVariable: object

name: string

Name (key) of configuration variable

sensitive: boolean

Whether the variable values are sensitive and therefore redacted

type: string

Type of configuration variable (not modifiable)

value: object

The value of the configuration variable. Should be a valid JSON object.

Example
{
  "name": "string",
  "sensitive": "boolean",
  "type": "string",
  "value": "object"
}

GatewayConfigurationVariableBatchUpdate: object

create: GatewayConfigurationVariable

Array of items that have to be added to the gateway

GatewayConfigurationVariable
delete: GatewayConfigurationVariable

Array of items that have to be deleted from the gateway

GatewayConfigurationVariable
update: GatewayConfigurationVariable

Array of items that have to be updated for the gateway

GatewayConfigurationVariable
Example
{
  "create": [
    {
      "name": "string",
      "sensitive": "boolean",
      "type": "string",
      "value": "object"
    }
  ],
  "delete": [
    {
      "name": "string",
      "sensitive": "boolean",
      "type": "string",
      "value": "object"
    }
  ],
  "update": [
    {
      "name": "string",
      "sensitive": "boolean",
      "type": "string",
      "value": "object"
    }
  ]
}

GatewayConfigurationVariablesList: object

Example
{
  "configurationVariables": [
    {
      "name": "string",
      "sensitive": "boolean",
      "type": "string",
      "value": "object"
    }
  ]
}

GatewayEAPModeConfig: object

Describes configuration for enabling EAP Mode for a Gateway.

channel: string

The channel that system snaps should follow. Optional (default value "candidate")

enable: boolean

Whether to enable or disable EAP Mode on the Gateway

Example
{
  "channel": "beta",
  "enable": true
}

GatewayError: object

Represents an error event a Gateway experienced.

action: string
error: string
Example
{
  "action": "string",
  "error": "string"
}

GatewayEvent: object

Represents an event that occurred on a Gateway, described by the Type & Subtype.

data: object

The extra data associated with the event (specific to the event type)

serial: string

The serial number of the Gateway

subType: string

The subtype of event that occurred

timestamp: string

The time the event occurred

type: string

The type of event that occurred

Example
{
  "data": "object",
  "serial": "C123456789-00000",
  "subType": "INSTALLED",
  "timestamp": "2018-08-09T00:15:02Z",
  "type": "APP_INSTALL_STATE"
}

GatewayLogRequest: object

Represents a request to fetch logs from a Gateway. After a log request is created, it needs to be monitored until logs are ready to download.

created: string

Time the Log Request was created

id: string

The Unique ID (UUID) of the Log Request

logType: string

The type of log request; One of "all" (all available lines in the log, up to 50MB), "last100" (last 100 lines), or "lastHour" (last hour, default)

logsReceived: string

Time that logs were received from the Gateway

serial: string

Serial is the serial number of the Gateway

status: string

Current status of the log request, one of "requested", "ready", or "error"

unit: string

The software unit the Log Request is requesting logs for

updated: string

Time the Log Request was last updated

Example
{
  "created": "2018-08-09T00:15:02Z",
  "id": "1d23c456-f782-9a6c-9105-29c61eee8ab4",
  "logType": "last100",
  "logsReceived": "2018-08-09T01:16:02Z",
  "serial": "C123456789-00000",
  "status": "ready",
  "unit": "snap.rigado-deviceops.service.service",
  "updated": "2018-08-09T01:15:02Z"
}

GatewayMetrics: object

A 1 minute sample of system metrics for a Gateway.

cpu: CPUMetrics
disk: DiskMetrics
endedAt: string

Deprecated: the time metrics collection ended on the gateway

freq: integer (int64)

Frequency represents the interval in seconds on which metrics are reported by the gateway

interfaces: NetworkMetrics

Network Metrics for each network interface

NetworkMetrics
memory: MemoryMetrics
received: string

Deprecated: The time metrics were received by the server

serial: string

Serial number of the Gateway

startedAt: string

Deprecated: the time metrics collection began on the gateway

timestamp: string

Time that the metrics were captured on the Gateway

upSince: string

Time representing the last boot time of the Gateway

Example
{
  "cpu": {
    "load15min": "1.20",
    "load1hr": "2.04",
    "load1min": "0.87",
    "percent": 32.45
  },
  "disk": {
    "available": 6640248,
    "used": 358400
  },
  "endedAt": "2018-08-09T00:15:02Z",
  "freq": "integer (int64)",
  "interfaces": [
    {
      "interface": "eth0",
      "ips": [
        "string"
      ],
      "received": 1233,
      "rssi": -51,
      "sent": 32
    }
  ],
  "memory": {
    "available": 385584,
    "buffers": 47276032,
    "cached": 179704,
    "free": 177880,
    "total": "integer (int64)"
  },
  "received": "2018-08-09T00:15:02Z",
  "serial": "C123456789-00000",
  "startedAt": "2018-08-09T00:15:02Z",
  "timestamp": "2018-08-09T00:15:02Z",
  "upSince": "2018-08-09T00:15:02Z"
}

GatewayNetworkConnection: object

Represents a Gateway's network connection.

active: boolean

Whether or not this connection is active on the Gateway

interface: string

The interface this connection uses

ip: string

The IP address last assigned to the Gateway using this connection

name: string

The name of the connection

primary: boolean

Whether or not this connection is primary on the Gateway

ssid: string

The SSID of the Wi-Fi network (if applicable)

Example
{
  "active": true,
  "interface": "eth0",
  "ip": "192.168.30.150",
  "name": "acme-wifi",
  "primary": true,
  "ssid": "ACME Node 4 5GHz"
}

GatewayNetworkInterface: object

GatewayNetworkInterface represents a single network interface on a Gateway Represents a single network interface on a Gateway.

cell: GatewayCellMetadata
interfaceType: string

The friendly name of the type of interface

ips: string[]

The IP addresses associated with the interface

string
mac: string

The MAC address of the interface

mtu: integer (int64)

The MTU (maximum transmission unit) of the interface, in bytes

name: string

The name of the interface

Example
{
  "cell": {
    "apn": "vzwinternet",
    "imei": "861108034511146",
    "phoneNumber": "+19715999705",
    "sim": "89148000003237460246"
  },
  "interfaceType": "ethernet",
  "ips": [
    "192.168.30.150"
  ],
  "mac": "51:5b:c3:2f:94:43",
  "mtu": 1500,
  "name": "eth0"
}

GatewayPipelineHealth: object

cloudConnectors: object

Contains unhealthy cloud connectors if any

health: string
pipelines: object

Contains unhealthy pipelines if any

Example
{
  "cloudConnectors": "object",
  "health": "string",
  "pipelines": "object"
}

MaintenanceWindow: object

MaintenanceWindow represents a MaintenanceWindow object

cadence: Cadence
durationMinutes: integer (int64)

Duration of MW in minutes

nextOpening: string

The next opening of the maintenance window, as computed from its Cadence (in RFC3339 format)

openNow: boolean

if the MW is open at the time the info is requested

Example
{
  "cadence": {
    "dayOfMonth": "integer (int64)",
    "dayOfWeek": "integer (int64)",
    "description": "string",
    "hourOfDay": "integer (int64)",
    "label": "string",
    "monthOfQuarter": "integer (int64)",
    "weekOfMonth": "integer (int64)"
  },
  "durationMinutes": "integer (int64)",
  "nextOpening": "string",
  "openNow": "boolean"
}

MemoryMetrics: object

A 1 minute sample of Memory metrics for a Gateway.

available: integer (int64)

Available memory in KB

buffers: integer (int64)

Memory used for buffers in KB

cached: integer (int64)

Memory used for caches in KB

free: integer (int64)

Free amount of memory in KB

total: integer (int64)

Total amount of memory in KB

Example
{
  "available": 385584,
  "buffers": 47276032,
  "cached": 179704,
  "free": 177880,
  "total": "integer (int64)"
}

NetworkMetrics: object

A 1 minute sample of metrics for a particular network interface on a Gateway.

interface: string

Interface name

ips: string[]

List of the IP addresses bound to this address

string
received: integer (int64)

KB received since boot or network reset

rssi: integer (int64)

Received Signal Strength Indicator is the measure of the power present in the received radio signal

sent: integer (int64)

KB sent since boot or network reset

Example
{
  "interface": "eth0",
  "ips": [
    "string"
  ],
  "received": 1233,
  "rssi": -51,
  "sent": 32
}

OrgDevicesContext: object

OrgDevicesContext represents the device context for an org. It includes all devices that are assigned and seen

assigned: Device
Device
org: string
orgID: string
seen: Device
Device
stats: DevicesStats
Example
{
  "assigned": [
    {
      "Assigned": "boolean",
      "advInterval": "integer (int64)",
      "errors": [
        {
          "error": "string",
          "tag": "string",
          "time": "string (date-time)"
        }
      ],
      "firstSeen": "string",
      "gateway": "string",
      "groups": [
        "string"
      ],
      "health": "string",
      "id": "string",
      "lastAdv": "object",
      "lastRSSI": "integer (int64)",
      "lastSeen": "string",
      "lastUpdated": "string",
      "mac": "string",
      "org": "string",
      "presence": "string",
      "site": "string",
      "smoothedRSSI": "integer (int64)",
      "snapshotInterval": "string",
      "type": "string"
    }
  ],
  "org": "string",
  "orgID": "string",
  "seen": [
    {
      "Assigned": "boolean",
      "advInterval": "integer (int64)",
      "errors": [
        {
          "error": "string",
          "tag": "string",
          "time": "string (date-time)"
        }
      ],
      "firstSeen": "string",
      "gateway": "string",
      "groups": [
        "string"
      ],
      "health": "string",
      "id": "string",
      "lastAdv": "object",
      "lastRSSI": "integer (int64)",
      "lastSeen": "string",
      "lastUpdated": "string",
      "mac": "string",
      "org": "string",
      "presence": "string",
      "site": "string",
      "smoothedRSSI": "integer (int64)",
      "snapshotInterval": "string",
      "type": "string"
    }
  ],
  "stats": {
    "fail": "integer (uint64)",
    "ok": "integer (uint64)",
    "seen": "integer (uint64)",
    "warn": "integer (uint64)"
  }
}

OrganizationConfigurationVariable: object

name: string

Name (key) of configuration variable

sensitive: boolean

Whether the variable values are sensitive and therefore redacted

type: string

Type of configuration variable should be either boolean, number, string, array, or object

usedBy: string[]

A list of the names of the users of this configuration variable

string
Example
{
  "name": "string",
  "sensitive": "boolean",
  "type": "string",
  "usedBy": [
    "string"
  ]
}

OrganizationConfigurationVariablesList: object

Example
{
  "configurationVariables": [
    {
      "name": "string",
      "sensitive": "boolean",
      "type": "string",
      "usedBy": [
        "string"
      ]
    }
  ]
}

Redacting: object

Example
"object"

Settings: object

Settings is the interface that each config of each type implements

ConfigType: Type
Validate: string

Settings is the interface that each config of each type implements

ConfigType: Type
Validate: string
Example
{
  "ConfigType": "string",
  "Validate": "string"
}

Site: object

Site represents a physical site where Gateways are installed. Sites are useful for managing the configurations and app deployments of many Gateways at once. A Site may be tagged with Site-level Tags, and all Gateways will inherit those tag values as if those Gateways were tagged.

Variables: SiteConfigurationVariable

The configuration variables applied to the Site

SiteConfigurationVariable
configurations: SiteConfiguration

The current and scheduled configurations for the Site

SiteConfiguration
created: string

The creation time of this Site, formatted with RFC3339

description: string

Description of the Site

gatewayBehavior: SiteGatewayBehavior
gateways: string[]

The Gateways in the Site

string
gatewaysSummary: SiteGatewaysSummary
location: string

Informal description of the site's physical location

maintenanceWindow: MaintenanceWindow
name: string

The name of the Site. Site names must have fewer than 32 characters, and must not have any special characters.

tags: Tag

The tags on the Site

Tag
timezone: string

The name of the timezone location of the site. Acceptable values are "UTC" or any string recognized by the IANA database.

updated: string

The last time this Site was updated, formatted with RFC3339

updatedBy: string

The last person to update this Site or its settings

Example
{
  "Variables": [
    {
      "name": "string",
      "required": "boolean",
      "sensitive": "boolean",
      "type": "string",
      "value": "object"
    }
  ],
  "configurations": [
    {
      "current": "boolean",
      "scheduled": "boolean",
      "settings": "object",
      "siteName": "20th Floor",
      "status": {
        "applied": "integer (int64)",
        "errored": "integer (int64)",
        "pending": "integer (int64)"
      },
      "type": "string",
      "version": "integer (int64)"
    }
  ],
  "created": "string",
  "description": "string",
  "gatewayBehavior": {
    "configureAfterMaintenanceWindow": "boolean"
  },
  "gateways": [
    "string"
  ],
  "gatewaysSummary": {
    "applied": "integer (int64)",
    "errored": "integer (int64)",
    "health": "boolean",
    "offline": "integer (int64)",
    "online": "integer (int64)",
    "pending": "integer (int64)",
    "unhealthy": [
      "string"
    ]
  },
  "location": "\"Portland, OR, USA\"",
  "maintenanceWindow": {
    "cadence": {
      "dayOfMonth": "integer (int64)",
      "dayOfWeek": "integer (int64)",
      "description": "string",
      "hourOfDay": "integer (int64)",
      "label": "string",
      "monthOfQuarter": "integer (int64)",
      "weekOfMonth": "integer (int64)"
    },
    "durationMinutes": "integer (int64)",
    "nextOpening": "string",
    "openNow": "boolean"
  },
  "name": "20th Floor",
  "tags": [
    {
      "forSite": "boolean",
      "key": "Department",
      "value": "Accounting"
    }
  ],
  "timezone": "\"America/Los_Angeles\"",
  "updated": "string",
  "updatedBy": "string"
}

SiteConfiguration: object

Configuration of App Settings, Networking, and Time is supported.

current: boolean

Whether the configuration is the one currently applicable to gateways in the site

scheduled: boolean

Whether the configuration is the one that will be applied to gateways in the site during the next maintenance window

settings: object

The actual configuration settings for the site. Communicated over the wire as standard JSON. May contain references to configuration variables.

siteName: string

The name of the Site. Site names must have fewer than 32 characters, and must not have any special characters.

status: ConfigurationStatusTally
type: ConfigRequest
version: integer (int64)

Version number of the configuration

Example
{
  "current": "boolean",
  "scheduled": "boolean",
  "settings": "object",
  "siteName": "20th Floor",
  "status": {
    "applied": "integer (int64)",
    "errored": "integer (int64)",
    "pending": "integer (int64)"
  },
  "type": "string",
  "version": "integer (int64)"
}

SiteConfigurationVariable: object

name: string

Name (key) of configuration variable

required: boolean

Is that variable required to be overridden on gateway level

sensitive: boolean

Whether the variable values are sensitive and therefore redacted

type: string

Type of configuration variable (not modifiable)

value: object

Is a value required for each gateway in this site, defined either through a default value defined on the site or values defined on each gateway individually. Should be a valid JSON object.

Example
{
  "name": "string",
  "required": "boolean",
  "sensitive": "boolean",
  "type": "string",
  "value": "object"
}

SiteConfigurationVariableBatchUpdate: object

create: SiteConfigurationVariable

Array of items that have to be added to the site

SiteConfigurationVariable
delete: SiteConfigurationVariable

Array of items that have to be deleted from the site

SiteConfigurationVariable
update: SiteConfigurationVariable

Array of items that have to be updated for the site

SiteConfigurationVariable
Example
{
  "create": [
    {
      "name": "string",
      "required": "boolean",
      "sensitive": "boolean",
      "type": "string",
      "value": "object"
    }
  ],
  "delete": [
    {
      "name": "string",
      "required": "boolean",
      "sensitive": "boolean",
      "type": "string",
      "value": "object"
    }
  ],
  "update": [
    {
      "name": "string",
      "required": "boolean",
      "sensitive": "boolean",
      "type": "string",
      "value": "object"
    }
  ]
}

SiteConfigurationVariablesList: object

Example
{
  "configurationVariables": [
    {
      "name": "string",
      "required": "boolean",
      "sensitive": "boolean",
      "type": "string",
      "value": "object"
    }
  ]
}

SiteConfigurationsList: object

SiteConfigurationsList represents a list of Site Configurations

configurations: SiteConfiguration
SiteConfiguration
Example
{
  "configurations": [
    {
      "current": "boolean",
      "scheduled": "boolean",
      "settings": "object",
      "siteName": "20th Floor",
      "status": {
        "applied": "integer (int64)",
        "errored": "integer (int64)",
        "pending": "integer (int64)"
      },
      "type": "string",
      "version": "integer (int64)"
    }
  ]
}

SiteDevicesContext: object

SiteDevicesContext represents the device context for a site. It includes all devices that are assigned and seen

assigned: Device
Device
orgID: string
seen: Device
Device
site: string
stats: DevicesStats
Example
{
  "assigned": [
    {
      "Assigned": "boolean",
      "advInterval": "integer (int64)",
      "errors": [
        {
          "error": "string",
          "tag": "string",
          "time": "string (date-time)"
        }
      ],
      "firstSeen": "string",
      "gateway": "string",
      "groups": [
        "string"
      ],
      "health": "string",
      "id": "string",
      "lastAdv": "object",
      "lastRSSI": "integer (int64)",
      "lastSeen": "string",
      "lastUpdated": "string",
      "mac": "string",
      "org": "string",
      "presence": "string",
      "site": "string",
      "smoothedRSSI": "integer (int64)",
      "snapshotInterval": "string",
      "type": "string"
    }
  ],
  "orgID": "string",
  "seen": [
    {
      "Assigned": "boolean",
      "advInterval": "integer (int64)",
      "errors": [
        {
          "error": "string",
          "tag": "string",
          "time": "string (date-time)"
        }
      ],
      "firstSeen": "string",
      "gateway": "string",
      "groups": [
        "string"
      ],
      "health": "string",
      "id": "string",
      "lastAdv": "object",
      "lastRSSI": "integer (int64)",
      "lastSeen": "string",
      "lastUpdated": "string",
      "mac": "string",
      "org": "string",
      "presence": "string",
      "site": "string",
      "smoothedRSSI": "integer (int64)",
      "snapshotInterval": "string",
      "type": "string"
    }
  ],
  "site": "string",
  "stats": {
    "fail": "integer (uint64)",
    "ok": "integer (uint64)",
    "seen": "integer (uint64)",
    "warn": "integer (uint64)"
  }
}

SiteGatewayBehavior: object

configureAfterMaintenanceWindow: boolean
Example
{
  "configureAfterMaintenanceWindow": "boolean"
}

SiteGatewaysSummary: object

applied: integer (int64)

The number of Gateways that have applied configs (excluding errors & pending)

errored: integer (int64)

The number of Gateways that have errored configs (takes precedence over pending and applied configs)

health: boolean

The resulting health status of all Gateways

offline: integer (int64)

The number of Gateways that are currently offline

online: integer (int64)

The number of Gateways that are currently online

pending: integer (int64)

The number of Gateways that have pending configs (excluding errors)

unhealthy: string[]

The list with serials of unhealthy Gateways

string
Example
{
  "applied": "integer (int64)",
  "errored": "integer (int64)",
  "health": "boolean",
  "offline": "integer (int64)",
  "online": "integer (int64)",
  "pending": "integer (int64)",
  "unhealthy": [
    "string"
  ]
}

SiteUpdate: object

description: string

Description of the Site

gatewayBehavior: SiteGatewayBehavior
location: string

Site location

timezone: string

The name of the timezone location of the site

Example
{
  "description": "string",
  "gatewayBehavior": {
    "configureAfterMaintenanceWindow": "boolean"
  },
  "location": "\"Portland, OR, USA\"",
  "timezone": "string"
}

SnapRevisions: object

Maps application names to channels and their revision numbers.

object
integer (int64)
Example
{
  "cascade-kernel": {
    "beta": 102,
    "candidate": 101,
    "edge": 103,
    "stable": 100
  },
  "core": {
    "beta": 102,
    "candidate": 101,
    "edge": 103,
    "stable": 100
  }
}

State: string

State represents the the current state of application of a given config

Tag: object

Represents a key/value pair, to associate with a Bundle or Gateway.

forSite: boolean

Whether the tag is for a Site

key: string

The key of the Tag. Tag keys must have fewer than 32 characters, and must not have any special characters.

value: string

The value of the Tag

Example
{
  "forSite": "boolean",
  "key": "Department",
  "value": "Accounting"
}

Type: string

Type identifies the type of configuration a config object is

VersionInfo: object

Information about the software that the API server is running.

buildTime: string
environment: string
gitHash: string
versionNumber: string
Example
{
  "buildTime": "string",
  "environment": "string",
  "gitHash": "string",
  "versionNumber": "string"
}

WhoAmI: object

Describes the currently authenticated session.

authenticatedBy: string

Contains either the user email address or API token that has authenticated the current session

organization: string

Deprecated: ID (UUID) of the Organization for the current session

organizationName: string

The name of the Organization for the current session

Example
{
  "authenticatedBy": "[email protected]",
  "organization": "example: 1d23c456-f782-9a6c-9105-29c61eee8ab4",
  "organizationName": "Happy Corp."
}