Lighthouse REST API API documentation

# Lighthouse REST API API documentation version v1

https://{lighthousehost}/api/v1

- lighthousehost: required (string)

### Lighthouse REST API

This API allows control and inspection of an Opengear Lighthouse management instance.

### /sessions

The sessions endpoint is used to authenticate the user and create a session token for accessing all other Lighthouse endpoints.

#### /sessions post

post

Create a new authenticated session.

#### post /sessions

Create a new authenticated session.

### Body

Media type: application/json

Type: object

Properties

- username: required (string)
- password: required (string)

Example:

    {
      "username": "root",
      "password": "default"
    }

## HTTP status code 200

### Body

Media type: application/json

Type: object

Properties

- state: required (string)
- session: required (string)
- user: (string)
- last_challenge: (string)

Example:

    {
      "state": "authenticated",
      "session": "71dcba707b6c177644ede1b224f69096",
      "user": "root"
    }

## HTTP status code 303

Redirect to new authentication session

### Body

Media type: application/json

Type: object

Example:

    {
      "sid": "71dcba707b6c177644ede1b224f69096",
      "message": "Redirecting to new session at {redirect-url}"
    }

## HTTP status code 400

Failed to initiate session creation due to error in post body.

### Body

Media type: application/json

Type: object

Example:

    {
      "error": [
        {
          "type": 4,
          "code": 40,
          "text": "Required field 'username' was not provided in the request",
          "args": {
            "param": "username"
          },
          "level": 1
        },
        {
          "type": 4,
          "code": 40,
          "text": "Required field 'password' was not provided in the request",
          "args": {
            "param": "password"
          },
          "level": 1
        }
      ]
    }

## HTTP status code 401

Authentication failed due to invalid credentials or session.

### Body

Media type: application/json

Type: object

Example:

    {
      "error": [
        {
          "type": 7,
          "code": 41,
          "text": "Invalid login credentials",
          "args": {},
          "level": 1
        }
      ]
    }

#### /sessions/{sessionUid} get put delete

get

Retrieve the state of an authentication session by ID. A session ID may be valid for some period after the user logs out.

put

Apply a challenge response to a session

delete

Log out of and delete a session

#### get /sessions/{sessionUid}

Retrieve the state of an authentication session by ID. A session ID may be valid for some period after the user logs out.

Secured by token

Lighthouse base authentication scheme

### URI Parameters

- sessionUid: required (string)

### Headers

- Authorization: required (string)

  Example:

      Token {{sessionUid}}

## HTTP status code 200

Session exists

### Body

Media type: application/json

Type: object

Properties

- state: required (string)
- session: required (string)
- user: (string)
- last_challenge: (string)

Example:

    {
      "state": "authenticated",
      "session": "71dcba707b6c177644ede1b224f69096",
      "user": "root"
    }

## HTTP status code 400

Session does not exist

### Body

Media type: application/json

Type: object

Properties

- state: required (string)
- session: required (string)
- user: (string)
- last_challenge: (string)

Example:

    {
      "state": "unknown",
      "session": "4cf7ff89791062c2eddcbb7778d532a"
    }

## HTTP status code 401

Authentication failure

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

Examples:

example1:

    {
      "error": [
        {
          "type": 7,
          "code": 42,
          "text": "Invalid session ID",
          "args": {},
          "level": 1
        }
      ]
    }

example2:

    {
      "error": [
        {
          "type": 7,
          "code": 46,
          "text": "Permission denied",
          "args": {},
          "level": 1
        }
      ]
    }

## HTTP status code 404

Session does not exist

### Body

Media type: application/json

Type: object

Example:

    {
      "state": "unknown",
      "session": "4cf7ff89791062c2eddcbb7778d532a"
    }

# Secured by token

### Headers

- Authorization: required (string)

  authorization session token

  Example:

      Token 521a00e57d4a461b3e4bb0c55166f97c

#### put /sessions/{sessionUid}

Apply a challenge response to a session

Secured by token

Lighthouse base authentication scheme

### URI Parameters

- sessionUid: required (string)

### Headers

- Authorization: required (string)

  Example:

      Token {{sessionUid}}

### Body

Media type: application/json

Type: object

Properties

- session: required (string)
- state: required (object)
- challenge: required (string)

  Next challenge (if any)

## HTTP status code 200

Response applied. Next challenge in {challenge} if required.

### Body

Media type: application/json

Type: object

Properties

- session: required (string)
- state: required (object)
- challenge: required (string)

  Next challenge (if any)

## HTTP status code 400

Invalid request

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

Example:

    {
      "error": [
        {
          "type": 4,
          "code": 39,
          "text": "Invalid request body",
          "args": {},
          "level": 1
        }
      ]
    }

## HTTP status code 401

Authentication failure

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

Example:

    {
      "error": [
        {
          "type": 7,
          "code": 42,
          "text": "Invalid session ID",
          "args": {},
          "level": 1
        }
      ]
    }

## HTTP status code 403

Authentication failed. No more attempts allowed.

## HTTP status code 404

Authentication failed.

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

## HTTP status code 500

Internal error

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

# Secured by token

### Headers

- Authorization: required (string)

  authorization session token

  Example:

      Token 521a00e57d4a461b3e4bb0c55166f97c

#### delete /sessions/{sessionUid}

Log out of and delete a session

Secured by token

Lighthouse base authentication scheme

### URI Parameters

- sessionUid: required (string)

### Headers

- Authorization: required (string)

  Example:

      Token {{sessionUid}}

## HTTP status code 200

Session deleted

### Body

Media type: application/json

Type: object

Properties

- session: required (string)
- success: required (string)
- state: required (string)
- user: required (string)

## HTTP status code 400

Incomplete data

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

## HTTP status code 401

Authentication failure

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

Example:

    {
      "error": [
        {
          "type": 7,
          "code": 42,
          "text": "Invalid session ID",
          "args": {},
          "level": 1
        }
      ]
    }

## HTTP status code 404

Session did not exist

# Secured by token

### Headers

- Authorization: required (string)

  authorization session token

  Example:

      Token 521a00e57d4a461b3e4bb0c55166f97c

### /nodes

Creating/registering and viewing the state of console server nodes.

#### /nodes get post

get

Gets nodes attached to this lighthouse instance.

Any number of search query parameters can be provided to perform an ANDed search on the nodes. The parameters possible should be retrieved with GET /nodes/fields. The list provided is dynamic.

The standard ember-data pagination fields {per_page} and {page} apply to this list.

{per_page} and {page} are optional but both are to be supplied if pages are requested. A node response will also contain a list of tags, which represents the user-editable attributes assigned to this node.

post

Enqueue a new node for enrollment. This can either be a direct (Lighthouse-driven) enrollment, or a enrollment request by a new node ("call-home"). The "call-home" parameter in the enrollment request body dictates what style it should be. If true, the request is not authenticated with a sesstion token (ie. from the web UI), but an enrollment request token. The caller should also pass a hostname to be used for the node name, and can optionally pass a bundle identifier to request enrollment against a specific bundle. If the enrollment is not "call-home", but directly driven from the Lighthouse, the request should be in an authenticted session, and provide the node details (name, address, username, password and auto-approve). The address must be a valid IPv4 address.

#### get /nodes

Gets nodes attached to this lighthouse instance.

Any number of search query parameters can be provided to perform an ANDed search on the nodes. The parameters possible should be retrieved with GET /nodes/fields. The list provided is dynamic.

The standard ember-data pagination fields {per_page} and {page} apply to this list.

{per_page} and {page} are optional but both are to be supplied if pages are requested. A node response will also contain a list of tags, which represents the user-editable attributes assigned to this node.

Secured by token

Lighthouse base authentication scheme

### Headers

- Authorization: required (string)

  Example:

      Token {{sessionUid}}

### Query Parameters

- per_page: (integer - default: 100000)

  Number of nodes expected per page

- page: (integer - default: 1)

  The page to return (indexed from 1)

- searchparameters: (string)

  One or more search fields as provided by /nodes/fields

- json: (string)

  One or more json URL encoded search parameters.

  Example %7B%22type%22%3A1%2C%22items%22%3A%5B%7B%22datatype%22%3A4 %2C%22type%22%3A3%2C%22oper%22%3A1%2C%22fieldname%22%3A%22 config%3Aname%22%2C%22value%22%3A%22test%22%7D%5D%7D

  which is the URL encoded json

  {type:1,items:[{"datatype":4,type:3,"oper":1,"fieldname":"config:name","value":"test"}]}

- jb64: (string)

  one or more base64 encoded json search parameters.

  Ensure that any trailing = padding is URL encoded to %3D

- operator: (string - default: AND)

  Operator applied between all searchparameters, json and jb64 query parameters.

  AND or OR

- searchId: (string)

  Lighthouse maintains search results for a limited timespan, which allows the user to paginate through results. The searchId is returned in meta data of a normal search and can then be used as a parameter to retrieve the same results. When searchId is used, no other search parameter may be included, only page and per_page can be used to proceed through pagination.

## HTTP status code 200

The array of nodes, either a full or as requested by parameters

### Body

Media type: application/json

Type: object

Properties

- nodes: required (array of items)

  Items: items

  - status: required (one of Enrolled, Registering, Registered, Unknown, Pending)
  - name: required (string)
  - id: required (string)
  - lhvpn_address: required (string)
  - runtime_status: required (object)
    - change_time: required (integer)
    - action_status: required (one of in progress, finished, error, unknown)
    - id: required (string)
    - action_type: required (one of registration, enrollment, none)
    - connection_status: required (one of connected, pending, disconnected, unknown, never seen)
    - action_error_message: required (string)
  - ports: required (array of items)

    Items: items

    - id: required (string)
    - label: required (string)
    - mode: required (one of disabled, localConsole, consoleServer, sdtServer, bridge, terminalServer, reserved, powerman, unknown)
    - proxied_ssh_url: required (string)

      URI to ssh to a port on a Lighthouse-enrolled node

      Example:

          ssh://username:consoleserver:portnumber@lhip

  - tag_list: required (object)
    - id: required (string)
    - rights: required (object)
      - create: (boolean)
      - delete: required (boolean)
      - modify: required (boolean)
    - tags: required (array of items)

      Items: items

      - id: required (string)
      - name: required (string)
      - value: required (string)
  - rights: required (object)
    - create: (boolean)
    - delete: required (boolean)
    - modify: required (boolean)
  - model: required (string)
  - firmware_version: required (string)
  - mac_address: required (string)
  - serial_number: required (string)
  - enrollment_bundle: required (string)
  - interfaces: required (array of items)

    Items: items

    - name: required (string)
    - ipv4_addr: required (string)
    - ipv6_addr: required (string)
- meta: required (object)
  - searchId: (string)
  - total_pages: required (integer)

Example:

    {
      "nodes": [
        {
          "name": "test",
          "id": "nodes-1",
          "lhvpn_address": "192.168.128.2",
          "runtime_status": {
            "change_time": 0,
            "action_status": "unknown",
            "id": "nodes-1",
            "action_type": "none",
            "connection_status": "unknown",
            "action_error_message": ""
          },
          "tag_list": {
            "id": "nodes-1",
            "tags": [
              {
                "id": "nodes_tags-4",
                "name": "Location",
                "value": "Hong Kong"
              }
            ],
            "rights": {
              "create": true,
              "modify": true,
              "delete": true
            }
          },
          "ports": [
            {
              "id": "port1",
              "label": "User Label",
              "mode": "disabled",
              "proxied_ssh_url": ""
            }
          ],
          "status": "Enrolled",
          "rights": {
            "delete": true,
            "modify": true
          },
          "enrollment_bundle": "Global",
          "mac_address": "00:13:c6:02:47:99",
          "serial_number": "70000002451668",
          "model": "ACM7004-5-LMR",
          "interfaces": [],
          "firmware_version": "4.0.0"
        },
        {
          "name": "test3",
          "id": "nodes-2",
          "lhvpn_address": "192.168.128.3",
          "runtime_status": {
            "change_time": 1471516371,
            "action_status": "error",
            "id": "nodes-2",
            "action_error_message": "Failed to contact node.",
            "action_type": "registration",
            "connection_status": "never seen"
          },
          "ports": [
            {
              "id": "port1",
              "label": "User Label",
              "mode": "disabled",
              "proxied_ssh_url": ""
            }
          ],
          "tag_list": {
            "id": "nodes-1",
            "tags": [],
            "rights": {
              "create": true,
              "modify": true,
              "delete": true
            }
          },
          "status": "Registering",
          "rights": {
            "delete": true,
            "modify": true
          },
          "enrollment_bundle": "Global",
          "mac_address": "00:13:c6:02:5a:d5",
          "serial_number": "71480488331675",
          "model": "CM7148-2-DAC",
          "interfaces": [],
          "firmware_version": "4.0.0"
        }
      ],
      "meta": {
        "total_pages": 1
      }
    }

## HTTP status code 400

Invalid request, missing or incorrect page/per_page

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

Example:

    {
      "error": [
        {
          "type": 4,
          "code": 39,
          "text": "Invalid request body",
          "args": {},
          "level": 1
        },
        {
          "type": 4,
          "code": 48,
          "text": "Invalid parameter 'config:nam' was provided",
          "args": {
            "param": "config:nam"
          },
          "level": 1
        },
        {
          "type": 2,
          "code": 49,
          "text": "Invalid json '{\"type\":1,\"items\":{\"datatype\":4,\"type\":3,\"oper\":1,\"fieldname\":\"config:name\",\"value\":\"test\"}]}' for parameter 'json'",
          "args": {
            "line": "1",
            "position": "92",
            "value": "{\"type\":1,\"items\":{\"datatype\":4,\"type\":3,\"oper\":1,\"fieldname\":\"config:name\",\"value\":\"test\"}]}",
            "column": "92",
            "error": "'}' expected near ']'",
            "param": "json"
          },
          "level": 1
        }
      ]
    }

## HTTP status code 401

Authentication failure

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

Examples:

example1:

    {
      "error": [
        {
          "type": 7,
          "code": 42,
          "text": "Invalid session ID",
          "args": {},
          "level": 1
        }
      ]
    }

example2:

    {
      "error": [
        {
          "type": 7,
          "code": 46,
          "text": "Permission denied",
          "args": {},
          "level": 1
        }
      ]
    }

## HTTP status code 404

Invalid request, Incomplete data, Node not found, Failure during retrieval of nodes

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

## HTTP status code 500

Failed to read nodes.

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

# Secured by token

### Headers

- Authorization: required (string)

  authorization session token

  Example:

      Token 521a00e57d4a461b3e4bb0c55166f97c

#### post /nodes

Enqueue a new node for enrollment. This can either be a direct (Lighthouse-driven) enrollment, or a enrollment request by a new node ("call-home"). The "call-home" parameter in the enrollment request body dictates what style it should be. If true, the request is not authenticated with a sesstion token (ie. from the web UI), but an enrollment request token. The caller should also pass a hostname to be used for the node name, and can optionally pass a bundle identifier to request enrollment against a specific bundle. If the enrollment is not "call-home", but directly driven from the Lighthouse, the request should be in an authenticted session, and provide the node details (name, address, username, password and auto-approve). The address must be a valid IPv4 address.

Secured by token

Lighthouse base authentication scheme

### Headers

- Authorization: required (string)

  Example:

      Token {{sessionUid}}

### Body

Media type: application/json

Type: object

Properties

- enrollment: required (object)
  - product: (string)
  - call_home: (boolean)
  - hostname: (string)
  - bundle: (string)
  - token: (string)
  - name: (string)
  - address: (string)
  - username: (string)
  - password: (string)
  - auto_approve: (boolean)
  - connection_method: (string)
  - base_port: (integer)
  - port_count: (integer)
  - port_labels: (array of items)

Examples:

example1:

    {
      "enrollment": {
        "product": "opengear",
        "call_home": true,
        "token": "ABCDEFGHIJKLMNOPQRSTUVWXYZ123456",
        "bundle": "console-servers",
        "hostname": "acm7004-5"
      }
    }

example2:

    {
      "enrollment": {
        "product": "opengear",
        "call_home": false,
        "name": "bne-7004-backup",
        "address": "1.2.3.4",
        "username": "root",
        "password": "default",
        "auto_approve": true
      }
    }

example3:

    {
      "enrollment": {
        "product": "generic",
        "name": "bne-7004-backup",
        "address": "1.2.3.4",
        "connection_method": "ssh",
        "username": "root",
        "password": "default",
        "auto_approve": true,
        "base_port": 2100,
        "port_count": 2,
        "port_labels": [
          "Port 1",
          "Port 2"
        ]
      }
    }

## HTTP status code 202

Enrollment initiated, but not yet complete. Client can poll for registration package using given UUID and enrollment package password.

### Body

Media type: application/json

Type: object

Example:

    {
      "message": "Enrollment initiated: new registration package will be available soon",
      "uuid": "{uuid}",
      "package_password": "{package_password}"
    }

## HTTP status code 303

Redirect to new node session

### Body

Media type: application/json

Type: object

Example:

    {
      "message": "Redirecting to new node at {redirect-url}"
    }

## HTTP status code 400

Invalid request, or error with supplied data (eg. incorrect IP address)

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

Example:

    {
      "error": [
        {
          "type": 4,
          "code": 39,
          "text": "Invalid request body",
          "args": {},
          "level": 1
        }
      ]
    }

## HTTP status code 401

Authentication failure

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

Example:

    {
      "error": [
        {
          "type": 7,
          "code": 42,
          "text": "Invalid session ID",
          "args": {},
          "level": 1
        }
      ]
    }

## HTTP status code 500

Unexpected error, including failure to start enrollment due to internal error.

### Body

Media type: application/json

Type: object

Example:

    {
      "error": [
        {
          "type": 2,
          "code": 26,
          "text": "Duplicate 'name' fields with value 'test'",
          "args": {
            "value": "test",
            "uuid": "root-1-@nodes",
            "field": "name"
          },
          "level": 1
        },
        {
          "type": 1,
          "code": 33,
          "text": "Push command failed",
          "args": {},
          "level": 1
        }
      ]
    }

# Secured by token

### Headers

- Authorization: required (string)

  authorization session token

  Example:

      Token 521a00e57d4a461b3e4bb0c55166f97c

#### /nodes/smartgroups get post

get

Retrieve a list of node smart groups

post

Create a new node smart group

#### get /nodes/smartgroups

Retrieve a list of node smart groups

Secured by token

Lighthouse base authentication scheme

### Headers

- Authorization: required (string)

  Example:

      Token {{sessionUid}}

## HTTP status code 200

A list of nodes

### Body

Media type: application/json

Type: object

Example:

    {
      "meta": {
        "total_pages": 1
      },
      "smartgroups": [
        {
          "id": "smart_groups_node_groups-1",
          "name": "X",
          "rights": {
            "delete": true,
            "modify": true
          },
          "query": "{\"type\": 2, \"fieldname\": \"config:blah\", \"oper\": 3, \"datatype\": 2}"
        },
        {
          "id": "smart_groups_node_groups-5",
          "name": "X3",
          "rights": {
            "delete": true,
            "modify": true
          },
          "query": "{\"type\": 2, \"fieldname\": \"config:blah\", \"oper\": 3, \"datatype\": 2}"
        },
        {
          "id": "smart_groups_node_groups-6",
          "name": "X4",
          "rights": {
            "delete": true,
            "modify": true
          },
          "query": "{\"type\": 2, \"fieldname\": \"config:blah\", \"oper\": 3, \"datatype\": 2}"
        },
        {
          "id": "smart_groups_node_groups-7",
          "name": "X9",
          "rights": {
            "delete": true,
            "modify": true
          },
          "query": "{\"type\": 2, \"fieldname\": \"config:blah\", \"oper\": 3, \"datatype\": 2}"
        },
        {
          "id": "smart_groups_node_groups-8",
          "name": "X11",
          "rights": {
            "delete": true,
            "modify": true
          },
          "query": "{\"type\": 2, \"fieldname\": \"config:blah\", \"oper\": 3, \"datatype\": 2}"
        }
      ]
    }

## HTTP status code 400

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

## HTTP status code 401

Authentication failure

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

Examples:

example1:

    {
      "error": [
        {
          "type": 7,
          "code": 42,
          "text": "Invalid session ID",
          "args": {},
          "level": 1
        }
      ]
    }

example2:

    {
      "error": [
        {
          "type": 7,
          "code": 46,
          "text": "Permission denied",
          "args": {},
          "level": 1
        }
      ]
    }

## HTTP status code 500

Unexpected error

# Secured by token

### Headers

- Authorization: required (string)

  authorization session token

  Example:

      Token 521a00e57d4a461b3e4bb0c55166f97c

#### post /nodes/smartgroups

Create a new node smart group

Secured by token

Lighthouse base authentication scheme

### Headers

- Authorization: required (string)

  Example:

      Token {{sessionUid}}

### Body

Media type: application/json

Type: object

Example:

    {
      "smartgroup": {
        "name": "X9",
        "rights": {
          "delete": true,
          "modify": true
        },
        "query": "{\"type\": 2, \"fieldname\": \"config:blah\", \"oper\": 3, \"datatype\": 2}"
      }
    }

## HTTP status code 200

Smartgroup created successfully.

### Body

Media type: application/json

Type: object

Example:

    {
      "smartgroup": {
        "id": "smart_groups_nodes_groups-4",
        "rights": {
          "delete": true,
          "modify": true
        },
        "name": "X9",
        "query": "{\"type\": 2, \"fieldname\": \"config:blah\", \"oper\": 3, \"datatype\": 2}"
      }
    }

## HTTP status code 303

Redirect to newly created smartgroup.

## HTTP status code 400

Invalid request: body is not json or does not conform to required json schema.

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

## HTTP status code 401

Authentication failure

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

Example:

    {
      "error": [
        {
          "type": 7,
          "code": 42,
          "text": "Invalid session ID",
          "args": {},
          "level": 1
        }
      ]
    }

# Secured by token

### Headers

- Authorization: required (string)

  authorization session token

  Example:

      Token 521a00e57d4a461b3e4bb0c55166f97c

#### /nodes/smartgroups/{groupId} get delete put

get

Retrieve the details for a smart group.

delete

Delete a smart group.

put

Updates the details for a smart group.

#### get /nodes/smartgroups/{groupId}

Retrieve the details for a smart group.

Secured by token

Lighthouse base authentication scheme

### URI Parameters

- groupId: required (string)

### Headers

- Authorization: required (string)

  Example:

      Token {{sessionUid}}

## HTTP status code 200

Group exists

### Body

Media type: application/json

Type: object

Example:

    {
      "smartgroup": {
        "id": "smart_groups_node_groups-1",
        "name": "X",
        "query": "{\"type\": 2, \"fieldname\": \"config:blah\", \"oper\": 3, \"datatype\": 2}"
      }
    }

## HTTP status code 400

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

## HTTP status code 401

Authentication failure

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

Examples:

example1:

    {
      "error": [
        {
          "type": 7,
          "code": 42,
          "text": "Invalid session ID",
          "args": {},
          "level": 1
        }
      ]
    }

example2:

    {
      "error": [
        {
          "type": 7,
          "code": 46,
          "text": "Permission denied",
          "args": {},
          "level": 1
        }
      ]
    }

## HTTP status code 404

Smartgroup does not exist

# Secured by token

### Headers

- Authorization: required (string)

  authorization session token

  Example:

      Token 521a00e57d4a461b3e4bb0c55166f97c

#### delete /nodes/smartgroups/{groupId}

Delete a smart group.

Secured by token

Lighthouse base authentication scheme

### URI Parameters

- groupId: required (string)

### Headers

- Authorization: required (string)

  Example:

      Token {{sessionUid}}

## HTTP status code 200

The group was deleted succesfully.

## HTTP status code 400

Incomplete data

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

## HTTP status code 401

Authentication failure

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

Example:

    {
      "error": [
        {
          "type": 7,
          "code": 42,
          "text": "Invalid session ID",
          "args": {},
          "level": 1
        }
      ]
    }

## HTTP status code 404

Smartgroup does not exist

# Secured by token

### Headers

- Authorization: required (string)

  authorization session token

  Example:

      Token 521a00e57d4a461b3e4bb0c55166f97c

#### put /nodes/smartgroups/{groupId}

Updates the details for a smart group.

Secured by token

Lighthouse base authentication scheme

### URI Parameters

- groupId: required (string)

### Headers

- Authorization: required (string)

  Example:

      Token {{sessionUid}}

### Body

Media type: application/json

Type: object

Example:

    {
      "smartgroup": {
        "name": "X9",
        "query": "{\"type\": 2, \"fieldname\": \"config:blah\", \"oper\": 3, \"datatype\": 2}"
      }
    }

## HTTP status code 200

Succesfully updated

### Body

Media type: application/json

Type: object

Example:

    {
      "smartgroup": {
        "id": "smart_groups_node_groups-1",
        "name": "X",
        "query": "{\"type\": 2, \"fieldname\": \"config:blah\", \"oper\": 3, \"datatype\": 2}"
      }
    }

## HTTP status code 400

Request data was not valid or incomplete

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

## HTTP status code 401

Authentication failure

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

Example:

    {
      "error": [
        {
          "type": 7,
          "code": 42,
          "text": "Invalid session ID",
          "args": {},
          "level": 1
        }
      ]
    }

## HTTP status code 404

Smartgroup does not exist

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

## HTTP status code 500

Internal error

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

# Secured by token

### Headers

- Authorization: required (string)

  authorization session token

  Example:

      Token 521a00e57d4a461b3e4bb0c55166f97c

#### /nodes/manifest get

get

Download the system manifest file

#### get /nodes/manifest

Download the system manifest file

Secured by token

Lighthouse base authentication scheme

### Headers

- Authorization: required (string)

  Example:

      Token {{sessionUid}}

## HTTP status code 200

The manifest file

### Body

Media type: text/plain

Type: object

Example:

    address=192.168.0.1 password=enrollmentToken

## HTTP status code 400

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

## HTTP status code 401

Authentication failure

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

Examples:

example1:

    {
      "error": [
        {
          "type": 7,
          "code": 42,
          "text": "Invalid session ID",
          "args": {},
          "level": 1
        }
      ]
    }

example2:

    {
      "error": [
        {
          "type": 7,
          "code": 46,
          "text": "Permission denied",
          "args": {},
          "level": 1
        }
      ]
    }

## HTTP status code 404

No manifest file is available

# Secured by token

### Headers

- Authorization: required (string)

  authorization session token

  Example:

      Token 521a00e57d4a461b3e4bb0c55166f97c

#### /nodes/{id} get put delete

get

Find a node by unique ID

put

Update a node

delete

Delete (unenroll) a node.

#### get /nodes/{id}

Find a node by unique ID

Secured by token

Lighthouse base authentication scheme

### URI Parameters

- id: required (string)

  ID of the node.

  Example:

      nodes-1

### Headers

- Authorization: required (string)

  authorization session token

  Example:

      Token {{sessionUid}}

## HTTP status code 200

The requested node

### Body

Media type: application/json

Type: object

Properties

- node: required (object)
  - status: required (one of Enrolled, Registering, Registered, Unknown, Pending)
  - name: required (string)
  - id: required (string)
  - lhvpn_address: required (string)
  - runtime_status: required (object)
    - change_time: required (integer)
    - action_status: required (one of in progress, finished, error, unknown)
    - id: required (string)
    - action_type: required (one of registration, enrollment, none)
    - connection_status: required (one of connected, pending, disconnected, unknown, never seen)
    - action_error_message: required (string)
  - tag_list: required (object)
    - id: required (string)
    - rights: required (object)
      - create: (boolean)
      - delete: required (boolean)
      - modify: required (boolean)
    - tags: required (array of items)

      Items: items

      - id: required (string)
      - name: required (string)
      - value: required (string)
  - rights: required (object)
    - create: (boolean)
    - delete: required (boolean)
    - modify: required (boolean)
  - model: required (string)
  - firmware_version: required (string)
  - mac_address: required (string)
  - serial_number: required (string)
  - enrollment_bundle: required (string)
  - interfaces: required (array of items)

    Items: items

    - name: required (string)
    - ipv4_addr: required (string)
    - ipv6_addr: required (string)

Example:

    {
      "node": {
        "name": "test1",
        "id": "nodes-1",
        "lhvpn_address": "192.168.128.2",
        "runtime_status": {
          "change_time": 1471950616,
          "action_status": "in progress",
          "id": "nodes-1",
          "action_error_message": "",
          "action_type": "registration",
          "connection_status": "never seen"
        },
        "tag_list": {
          "id": "nodes-1",
          "tags": [
            {
              "id": "nodes_tags-4",
              "name": "Location",
              "value": "Hong Kong"
            }
          ],
          "rights": {
            "create": true,
            "modify": true,
            "delete": true
          }
        },
        "rights": {
          "delete": false,
          "modify": true
        },
        "status": "Registering",
        "enrollment_bundle": "Global",
        "mac_address": "00:13:c6:02:47:99",
        "serial_number": "70000002451668",
        "model": "ACM7004-5-LMR",
        "interfaces": [],
        "firmware_version": "4.0.0"
      }
    }

## HTTP status code 400

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

## HTTP status code 401

Authentication failure

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

Examples:

example1:

    {
      "error": [
        {
          "type": 7,
          "code": 42,
          "text": "Invalid session ID",
          "args": {},
          "level": 1
        }
      ]
    }

example2:

    {
      "error": [
        {
          "type": 7,
          "code": 46,
          "text": "Permission denied",
          "args": {},
          "level": 1
        }
      ]
    }

## HTTP status code 404

Node does not exist

## HTTP status code 500

Unexpected error

# Secured by token

### Headers

- Authorization: required (string)

  authorization session token

  Example:

      Token 521a00e57d4a461b3e4bb0c55166f97c

#### put /nodes/{id}

Update a node

Secured by token

Lighthouse base authentication scheme

### URI Parameters

- id: required (string)

  ID of the node.

  Example:

      nodes-1

### Headers

- Authorization: required (string)

  Example:

      Token {{sessionUid}}

### Body

Media type: application/json

Type: object

Properties

- node: required (object)
  - name: required (string)
  - mac_address: required (string)
  - description: required (string)
  - approved: required (integer)
  - tags: required (array of items)

    Items: items

    - id: required (string)
    - name: required (string)
    - value: required (string)

Example:

    {
      "node": {
        "name": "test1",
        "mac_address": "AA:BB:CC:DD:EE:FF",
        "description": "Test Node",
        "approved": 0,
        "tags": [
          {
            "id": "nodes_tags-4",
            "name": "Location",
            "value": "Hong Kong"
          }
        ]
      }
    }

## HTTP status code 200

The updated node

### Body

Media type: application/json

Type: object

Properties

- node: required (object)
  - status: required (one of Enrolled, Registering, Registered, Unknown, Pending)
  - name: required (string)
  - id: required (string)
  - lhvpn_address: required (string)
  - runtime_status: required (object)
    - change_time: required (integer)
    - action_status: required (one of in progress, finished, error, unknown)
    - id: required (string)
    - action_type: required (one of registration, enrollment, none)
    - connection_status: required (one of connected, pending, disconnected, unknown, never seen)
    - action_error_message: required (string)
  - tag_list: required (object)
    - id: required (string)
    - rights: required (object)
      - create: (boolean)
      - delete: required (boolean)
      - modify: required (boolean)
    - tags: required (array of items)

      Items: items

      - id: required (string)
      - name: required (string)
      - value: required (string)
  - rights: required (object)
    - create: (boolean)
    - delete: required (boolean)
    - modify: required (boolean)
  - model: required (string)
  - firmware_version: required (string)
  - mac_address: required (string)
  - serial_number: required (string)
  - enrollment_bundle: required (string)
  - interfaces: required (array of items)

    Items: items

    - name: required (string)
    - ipv4_addr: required (string)
    - ipv6_addr: required (string)

Example:

    {
      "node": {
        "name": "test1",
        "id": "nodes-1",
        "lhvpn_address": "192.168.128.2",
        "runtime_status": {
          "change_time": 1471950616,
          "action_status": "in progress",
          "id": "nodes-1",
          "action_error_message": "",
          "action_type": "registration",
          "connection_status": "never seen"
        },
        "tag_list": {
          "id": "nodes-1",
          "tags": [],
          "rights": {
            "create": true,
            "modify": true,
            "delete": true
          }
        },
        "rights": {
          "delete": false,
          "modify": true
        },
        "status": "Registering",
        "enrollment_bundle": "Global",
        "mac_address": "00:13:c6:02:47:99",
        "serial_number": "70000002451668",
        "model": "ACM7004-5-LMR",
        "interfaces": [],
        "firmware_version": "4.0.0"
      }
    }

## HTTP status code 400

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

## HTTP status code 401

Authentication failure

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

Example:

    {
      "error": [
        {
          "type": 7,
          "code": 42,
          "text": "Invalid session ID",
          "args": {},
          "level": 1
        }
      ]
    }

## HTTP status code 404

Not found

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

## HTTP status code 500

Internal error

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

# Secured by token

### Headers

- Authorization: required (string)

  authorization session token

  Example:

      Token 521a00e57d4a461b3e4bb0c55166f97c

#### delete /nodes/{id}

Delete (unenroll) a node.

Secured by token

Lighthouse base authentication scheme

### URI Parameters

- id: required (string)

  ID of the node.

  Example:

      nodes-1

### Headers

- Authorization: required (string)

  Example:

      Token {{sessionUid}}

## HTTP status code 204

The node was deleted successfully.

## HTTP status code 400

Incomplete data

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

## HTTP status code 401

Authentication failure

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

Example:

    {
      "error": [
        {
          "type": 7,
          "code": 42,
          "text": "Invalid session ID",
          "args": {},
          "level": 1
        }
      ]
    }

# Secured by token

### Headers

- Authorization: required (string)

  authorization session token

  Example:

      Token 521a00e57d4a461b3e4bb0c55166f97c

#### /nodes/{id}/registration_package get

get

Retrieve the enrollment package for a node.

#### get /nodes/{id}/registration_package

Retrieve the enrollment package for a node.

Secured by token

Lighthouse base authentication scheme

### URI Parameters

- id: required (string)

  ID of the node.

  Example:

      nodes-1

### Headers

- Authorization: required (string)

  Example:

      Token {{sessionUid}}

## HTTP status code 200

The requested enrollment package

### Body

Media type: application/json

Type: object

Properties

- cert: required (string)
- key: required (string)
- ca: required (string)
- address: required (string)
- ignore_date_header: required (boolean)

## HTTP status code 400

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

## HTTP status code 401

Authentication failure

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

Examples:

example1:

    {
      "error": [
        {
          "type": 7,
          "code": 42,
          "text": "Invalid session ID",
          "args": {},
          "level": 1
        }
      ]
    }

example2:

    {
      "error": [
        {
          "type": 7,
          "code": 46,
          "text": "Permission denied",
          "args": {},
          "level": 1
        }
      ]
    }

## HTTP status code 404

Node does not exist

## HTTP status code 500

Registration package not available for this node

### Body

Media type: application/json

Type: object

Example:

    {
      "error": [
        {
          "type": 5,
          "code": 45,
          "text": "Registration package is not currently available for this node",
          "args": {},
          "level": 1
        }
      ]
    }

# Secured by token

### Headers

- Authorization: required (string)

  authorization session token

  Example:

      Token 521a00e57d4a461b3e4bb0c55166f97c

#### /nodes/{id}/tags get post

Each node can have a list of tags associated with it. These tags are references to a global list of tags, allowing for the grouping of nodes. For example one can group nodes into geographical location by assigning multiple nodes with a tag (tag="Location", value="New York").

get

Get the list of all tags associated with this node.

post

Create and associate a new tag with the node. If the tag exists update or set the value. If no value is given, or the value is emplty, the value will be set to null.

#### get /nodes/{id}/tags

Get the list of all tags associated with this node.

Secured by token

Lighthouse base authentication scheme

### URI Parameters

- id: required (string)

  ID of the node.

  Example:

      nodes-1

### Headers

- Authorization: required (string)

  Example:

      Token {{sessionUid}}

## HTTP status code 200

The requested enrollment package

### Body

Media type: application/json

Type: object

Properties

- tags: required (array of items)

  Items: items

  - id: required (string)
  - name: required (string)
  - value: required (string)

Example:

    {
      "tags": [
        {
          "id": "nodes_tags-1",
          "name": "myTag",
          "value": "my tag value"
        },
        {
          "id": "nodes_tags-2",
          "name": "myTag2",
          "value": ""
        },
        {
          "id": "nodes_tags-3",
          "name": "myTag3",
          "value": "another value"
        }
      ]
    }

## HTTP status code 400

Incomplete data.

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

## HTTP status code 401

Authentication failure

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

Examples:

example1:

    {
      "error": [
        {
          "type": 7,
          "code": 42,
          "text": "Invalid session ID",
          "args": {},
          "level": 1
        }
      ]
    }

example2:

    {
      "error": [
        {
          "type": 7,
          "code": 46,
          "text": "Permission denied",
          "args": {},
          "level": 1
        }
      ]
    }

## HTTP status code 404

Node does not exist.

# Secured by token

### Headers

- Authorization: required (string)

  authorization session token

  Example:

      Token 521a00e57d4a461b3e4bb0c55166f97c

#### post /nodes/{id}/tags

Create and associate a new tag with the node. If the tag exists update or set the value. If no value is given, or the value is emplty, the value will be set to null.

Secured by token

Lighthouse base authentication scheme

### URI Parameters

- id: required (string)

  ID of the node.

  Example:

      nodes-1

### Headers

- Authorization: required (string)

  Example:

      Token {{sessionUid}}

### Body

Media type: application/json

Type: object

Properties

- tag: required (object)
  - name: required (string)
  - value: required (string)

Example:

    {
      "tag": {
        "name": "Location",
        "value": "New York"
      }
    }

## HTTP status code 200

### Body

Media type: application/json

Type: object

Properties

- tags: required (array of items)

  Items: items

  - id: required (string)
  - name: required (string)
  - value: required (string)

Example:

    {
      "tags": [
        {
          "id": "nodes_tags-1",
          "name": "Location",
          "value": "New York"
        }
      ]
    }

## HTTP status code 400

Invalid request: body is not json or does not conform to required json schema. Incomplete data: name item missing.

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

## HTTP status code 401

Authentication failure

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

Example:

    {
      "error": [
        {
          "type": 7,
          "code": 42,
          "text": "Invalid session ID",
          "args": {},
          "level": 1
        }
      ]
    }

## HTTP status code 404

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

# Secured by token

### Headers

- Authorization: required (string)

  authorization session token

  Example:

      Token 521a00e57d4a461b3e4bb0c55166f97c

#### /nodes/{id}/tags/{tag_value_id} get delete put

get

Get a tag's information by ID.

delete

Delete a tag value from the node.

put

Update tag information for {node_tag_id} in node {id}

#### get /nodes/{id}/tags/{tag_value_id}

Get a tag's information by ID.

Secured by token

Lighthouse base authentication scheme

### URI Parameters

- id: required (string)

  ID of the node.

  Example:

      nodes-1

- tag_value_id: required (string)

  Identifier for unique tag within given node

  Example:

      nodes_tags-1

### Headers

- Authorization: required (string)

  Example:

      Token {{sessionUid}}

## HTTP status code 200

Tag information in node with {id} and tag identification {tag_value_id} successfully retrieved.

### Body

Media type: application/json

Type: object

Example:

example1:

    {
      "tag": {
        "id": "nodes_tags-1",
        "name": "Location",
        "value": "New York"
      }
    }

## HTTP status code 400

Invalid request: body is not json or does not conform to required json schema. Incomplete data: node id, or tag_value_id parameter missing.

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

## HTTP status code 401

Authentication failure

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

Examples:

example1:

    {
      "error": [
        {
          "type": 7,
          "code": 42,
          "text": "Invalid session ID",
          "args": {},
          "level": 1
        }
      ]
    }

example2:

    {
      "error": [
        {
          "type": 7,
          "code": 46,
          "text": "Permission denied",
          "args": {},
          "level": 1
        }
      ]
    }

## HTTP status code 404

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

# Secured by token

### Headers

- Authorization: required (string)

  authorization session token

  Example:

      Token 521a00e57d4a461b3e4bb0c55166f97c

#### delete /nodes/{id}/tags/{tag_value_id}

Delete a tag value from the node.

Secured by token

Lighthouse base authentication scheme

### URI Parameters

- id: required (string)

  ID of the node.

  Example:

      nodes-1

- tag_value_id: required (string)

  Identifier for unique tag within given node

  Example:

      nodes_tags-1

### Headers

- Authorization: required (string)

  Example:

      Token {{sessionUid}}

## HTTP status code 200

The {tag_value_id} tag information was deleted.

## HTTP status code 400

Invalid request: body is not json or does not conform to required json schema. Incomplete data: node id, or tag_value_id parameter missing.

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

## HTTP status code 401

Authentication failure

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

Example:

    {
      "error": [
        {
          "type": 7,
          "code": 42,
          "text": "Invalid session ID",
          "args": {},
          "level": 1
        }
      ]
    }

## HTTP status code 404

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

Example:

    {
      "error": [
        {
          "type": 5,
          "code": 29,
          "text": "Could not find element with UUID 'nodes_tags-0'",
          "args": {
            "uuid": "nodes_tags-0"
          },
          "level": 1
        }
      ]
    }

# Secured by token

### Headers

- Authorization: required (string)

  authorization session token

  Example:

      Token 521a00e57d4a461b3e4bb0c55166f97c

#### put /nodes/{id}/tags/{tag_value_id}

Update tag information for {node_tag_id} in node {id}

Secured by token

Lighthouse base authentication scheme

### URI Parameters

- id: required (string)

  ID of the node.

  Example:

      nodes-1

- tag_value_id: required (string)

  Identifier for unique tag within given node

  Example:

      nodes_tags-1

### Headers

- Authorization: required (string)

  Example:

      Token {{sessionUid}}

### Body

Media type: application/json

Type: object

Properties

- tag: required (object)
  - name: required (string)
  - value: required (string)

Example:

    {
      "tag": {
        "name": "Location",
        "value": "USA.NewYork"
      }
    }

## HTTP status code 200

The {tag_value_id} tag information was updated.

## HTTP status code 400

Invalid request: body is not json or does not conform to required json schema. Incomplete data: node id, or tag_value_id parameter missing.

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

## HTTP status code 401

Authentication failure

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

Example:

    {
      "error": [
        {
          "type": 7,
          "code": 42,
          "text": "Invalid session ID",
          "args": {},
          "level": 1
        }
      ]
    }

## HTTP status code 404

Not found

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

Example:

    {
      "error": [
        {
          "type": 5,
          "code": 29,
          "text": "Could not find element with UUID 'nodes_tags-0'",
          "args": {
            "uuid": "nodes_tags-0"
          },
          "level": 1
        }
      ]
    }

## HTTP status code 500

Internal error

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

# Secured by token

### Headers

- Authorization: required (string)

  authorization session token

  Example:

      Token 521a00e57d4a461b3e4bb0c55166f97c

#### /nodes/ids get

get

Obtain a list of node ids, for example /nodes/ids?config:name=test.

Any number of search query parameters can be provided to perform an ANDed search on the nodes. The parameters possible should be retrieved with GET /nodes/fields. The list provided is dynamic.

The standard ember-data pagination fields {per_page} and {page} apply to this list.

{per_page} and {page} are optional but both are to be supplied if pages are requested.

#### get /nodes/ids

Obtain a list of node ids, for example /nodes/ids?config:name=test.

Any number of search query parameters can be provided to perform an ANDed search on the nodes. The parameters possible should be retrieved with GET /nodes/fields. The list provided is dynamic.

The standard ember-data pagination fields {per_page} and {page} apply to this list.

{per_page} and {page} are optional but both are to be supplied if pages are requested.

Secured by token

Lighthouse base authentication scheme

### Headers

- Authorization: required (string)

  authorization session token

  Example:

      Token {{sessionUid}}

### Query Parameters

- per_page: (integer - default: 100000)

  Number of nodes expected per page

- page: (integer - default: 1)

  The page to return (indexed from 1)

- searchparameters: (string)

  One or more search fields as provided by /nodes/fields

- json: (string)

  One or more json URL encoded search parameters.

  Example %7B%22type%22%3A1%2C%22items%22%3A%5B%7B%22datatype%22%3A4 %2C%22type%22%3A3%2C%22oper%22%3A1%2C%22fieldname%22%3A%22 config%3Aname%22%2C%22value%22%3A%22test%22%7D%5D%7D

  which is the URL encoded json

  {type:1,items:[{"datatype":4,type:3,"oper":1,"fieldname":"config:name","value":"test"}]}

- jb64: (string)

  one or more base64 encoded json search parameters.

  Ensure that any trailing = padding is URL encoded to %3D

- operator: (string - default: AND)

  Operator applied between all searchparameters, json and jb64 query parameters.

  AND or OR

- searchId: (string)

  Lighthouse maintains search results for a limited timespan, which allows the user to paginate through results. The searchId is returned in meta data of a normal search and can then be used as a parameter to retrieve the same results. When searchId is used, no other search parameter may be included, only page and per_page can be used to proceed through pagination.

## HTTP status code 200

The list of search fields

### Body

Media type: application/json

Type: object

Properties

- nodes: required (array of items)
- meta: required (object)
  - searchId: (string)
  - total_pages: required (integer)

Example:

    {
      "nodes": [
        "nodes-1",
        "nodes-2",
        "nodes-3",
        "nodes-4",
        "nodes-5"
      ],
      "meta": {
        "searchId": "{150f460-743e-11e6-baab-080027032960",
        "total_pages": 1
      }
    }

## HTTP status code 400

Invalid request: Missing or incorrect page/per_page. Invalid Condition value. Invalid search parameter. Invalid json/jb64 parameter.

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

Example:

    {
      "error": [
        {
          "type": 4,
          "code": 48,
          "text": "Invalid parameter 'config:nam' was provided",
          "args": {
            "param": "config:nam"
          },
          "level": 1
        },
        {
          "type": 2,
          "code": 49,
          "text": "Invalid json '{\"type\":1,\"items\":{\"datatype\":4,\"type\":3,\"oper\":1,\"fieldname\":\"config:name\",\"value\":\"test\"}]}' for parameter 'json'",
          "args": {
            "line": "1",
            "position": "92",
            "value": "{\"type\":1,\"items\":{\"datatype\":4,\"type\":3,\"oper\":1,\"fieldname\":\"config:name\",\"value\":\"test\"}]}",
            "column": "92",
            "error": "'}' expected near ']'",
            "param": "json"
          },
          "level": 1
        },
        {
          "type": 4,
          "code": 39,
          "text": "Invalid request body",
          "args": {},
          "level": 1
        }
      ]
    }

## HTTP status code 401

Authentication failure

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

Examples:

example1:

    {
      "error": [
        {
          "type": 7,
          "code": 42,
          "text": "Invalid session ID",
          "args": {},
          "level": 1
        }
      ]
    }

example2:

    {
      "error": [
        {
          "type": 7,
          "code": 46,
          "text": "Permission denied",
          "args": {},
          "level": 1
        }
      ]
    }

## HTTP status code 500

Unexpected error

# Secured by token

### Headers

- Authorization: required (string)

  authorization session token

  Example:

      Token 521a00e57d4a461b3e4bb0c55166f97c

#### /nodes/fields get

get

Obtain a list of fields which can be used to perform queries against nodes.

#### get /nodes/fields

Obtain a list of fields which can be used to perform queries against nodes.

Secured by token

Lighthouse base authentication scheme

### Headers

- Authorization: required (string)

  authorization session token

  Example:

      Token {{sessionUid}}

## HTTP status code 200

The list of search fields

### Body

Media type: application/json

Type: object

Properties

- fields: required (array of items)

Example:

    {
      "fields": [
        "config:common_name",
        "config:description",
        "config:lhvpn_address",
        "config:mac_address",
        "config:name",
        "config:status",
        "config:ssh_port",
        "port:attachedDeviceType",
        "port:hardwareSettings_pinout",
        "port:hardwareSettings_protocol",
        "port:hardwareSettings_uart_baud",
        "port:hardwareSettings_uart_dataBits",
        "port:hardwareSettings_uart_flowControl",
        "port:hardwareSettings_uart_parity",
        "port:hardwareSettings_uart_stopBits",
        "port:hardwareType",
        "port:id",
        "port:label",
        "port:logging_facility",
        "port:logging_level",
        "port:logging_priority",
        "port:mode",
        "port:modeSettings_bridge_rfc2217",
        "port:modeSettings_bridge_server_address",
        "port:modeSettings_bridge_server_port",
        "port:modeSettings_bridge_sshTunnel",
        "port:modeSettings_consoleServer_general_accumulateMS",
        "port:modeSettings_consoleServer_general_escapeChar",
        "port:modeSettings_consoleServer_general_powerMenuEnabled",
        "port:modeSettings_consoleServer_general_replaceBackspace",
        "port:modeSettings_consoleServer_portShare_authentication",
        "port:modeSettings_consoleServer_portShare_enabled",
        "port:modeSettings_consoleServer_portShare_encryption",
        "port:modeSettings_consoleServer_portShare_password",
        "port:modeSettings_consoleServer_rfc2217_enabled",
        "port:modeSettings_consoleServer_ssh_enabled",
        "port:modeSettings_consoleServer_tcp_enabled",
        "port:modeSettings_consoleServer_telnet_enabled",
        "port:modeSettings_consoleServer_telnet_unauthenticated",
        "port:modeSettings_consoleServer_webShell_enabled",
        "port:modeSettings_sdtServer_password",
        "port:modeSettings_sdtServer_username",
        "port:modeSettings_terminalServer_terminalType",
        "port:nagios_enabled",
        "port:nagios_name",
        "port:nagios_portLogging",
        "port:nagios_serialStatus"
      ]
    }

## HTTP status code 400

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

## HTTP status code 401

Authentication failure

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

Examples:

example1:

    {
      "error": [
        {
          "type": 7,
          "code": 42,
          "text": "Invalid session ID",
          "args": {},
          "level": 1
        }
      ]
    }

example2:

    {
      "error": [
        {
          "type": 7,
          "code": 46,
          "text": "Permission denied",
          "args": {},
          "level": 1
        }
      ]
    }

## HTTP status code 500

Unexpected error

# Secured by token

### Headers

- Authorization: required (string)

  authorization session token

  Example:

      Token 521a00e57d4a461b3e4bb0c55166f97c

#### /nodes/{id}/ports get

get

Retrieve a list of all ports belonging to a node.

#### get /nodes/{id}/ports

Retrieve a list of all ports belonging to a node.

Secured by token

Lighthouse base authentication scheme

### URI Parameters

- id: required (string)

### Headers

- Authorization: required (string)

  Example:

      Token {{sessionUid}}

## HTTP status code 200

The list of ports belonging to the node

### Body

Media type: application/json

Type: object

Properties

- ports: required (array of getPortByIdResponse)

  Items: getPortByIdResponse

  - webshell_enabled: required (boolean)
  - port_csid: required (string)
  - mode: required (one of disabled, localConsole, consoleServer, sdtServer, bridge, terminalServer, reserved, powerman, unknown)
  - proxied_ssh_url: required (string)

    URI to ssh to a port on a Lighthouse-enrolled node

    Example:

        ssh://username:consoleserver:portnumber@lhip

  - runtime_status: required (object)
    - change_time: required (integer)
    - change_delta: required (integer)
    - action_status: required (one of in progress, finished, error, unknown)
    - id: required (string)
    - action_type: required (one of registration, enrollment, none)
    - connection_status: required (one of connected, pending, disconnected, unknown, never seen)
    - action_error_message: (string)
  - ssh_enabled: required (boolean)
  - label: required (string)
  - id: required (string)
  - web_terminal_url: required (string)
  - node_name: required (string)
- meta: required (object)
  - searchId: (string)
  - total_pages: required (integer)

## HTTP status code 400

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

## HTTP status code 401

Authentication failure

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

Examples:

example1:

    {
      "error": [
        {
          "type": 7,
          "code": 42,
          "text": "Invalid session ID",
          "args": {},
          "level": 1
        }
      ]
    }

example2:

    {
      "error": [
        {
          "type": 7,
          "code": 46,
          "text": "Permission denied",
          "args": {},
          "level": 1
        }
      ]
    }

# Secured by token

### Headers

- Authorization: required (string)

  authorization session token

  Example:

      Token 521a00e57d4a461b3e4bb0c55166f97c

### /ports

Used for working with port information.

#### /ports get

get

Gets ports attached to this lighthouse instance.

Any number of search query parameters can be provided to perform an ANDed search on the ports.

The standard ember-data pagination fields {per_page} and {page} apply to this list.

{per_page} and {page} are optional but both are to be supplied if pages are requested.

#### get /ports

Gets ports attached to this lighthouse instance.

Any number of search query parameters can be provided to perform an ANDed search on the ports.

The standard ember-data pagination fields {per_page} and {page} apply to this list.

{per_page} and {page} are optional but both are to be supplied if pages are requested.

Secured by token

Lighthouse base authentication scheme

### Headers

- Authorization: required (string)

  Example:

      Token {{sessionUid}}

### Query Parameters

- per_page: (integer - default: 100000)

  Number of ports expected per page

- page: (integer - default: 1)

  The page to return (indexed from 1)

- searchparameters: (string)

  One or more search fields

- json: (string)

  One or more json URL encoded search parameters.

  Example %7B%22type%22%3A1%2C%22items%22%3A%5B%7B%22datatype%22%3A4 %2C%22type%22%3A3%2C%22oper%22%3A1%2C%22fieldname%22%3A%22 config%3Aname%22%2C%22value%22%3A%22test%22%7D%5D%7D

  which is the URL encoded json

  {type:1,items:[{"datatype":4,type:3,"oper":1,"fieldname":"config:name","value":"test"}]}

- jb64: (string)

  one or more base64 encoded json search parameters.

  Ensure that any trailing = padding is URL encoded to %3D

- operator: (string - default: AND)

  Operator applied between all searchparameters, json and jb64 query parameters.

  AND or OR

- searchId: (string)

  Lighthouse maintains search results for a limited timespan, which allows the user to paginate through results. The searchId is returned in meta data of a normal search and can then be used as a parameter to retrieve the same results. When searchId is used, no other search parameter may be included, only page and per_page can be used to proceed through pagination.

## HTTP status code 200

The array of ports, either a full array or as requested by parameters

### Body

Media type: application/json

Type: object

Properties

- ports: required (array of getPortByIdResponse)

  Items: getPortByIdResponse

  - webshell_enabled: required (boolean)
  - port_csid: required (string)
  - mode: required (one of disabled, localConsole, consoleServer, sdtServer, bridge, terminalServer, reserved, powerman, unknown)
  - proxied_ssh_url: required (string)

    URI to ssh to a port on a Lighthouse-enrolled node

    Example:

        ssh://username:consoleserver:portnumber@lhip

  - runtime_status: required (object)
    - change_time: required (integer)
    - change_delta: required (integer)
    - action_status: required (one of in progress, finished, error, unknown)
    - id: required (string)
    - action_type: required (one of registration, enrollment, none)
    - connection_status: required (one of connected, pending, disconnected, unknown, never seen)
    - action_error_message: (string)
  - ssh_enabled: required (boolean)
  - label: required (string)
  - id: required (string)
  - web_terminal_url: required (string)
  - node_name: required (string)
- meta: required (object)
  - searchId: (string)
  - total_pages: required (integer)

Example:

    {
      "ports": [
        {
          "proxied_ssh_url": "ssh://user:node1:port1@192.168.0.1",
          "label": "Port 01",
          "id": "nodes_ports-1",
          "node_name": "node1",
          "webshell_enabled": false,
          "web_terminal_url": "manage/nodes/ports/terminal/node1/port1?name=Port_01",
          "port_csid": "port1",
          "mode": "consoleServer",
          "runtime_status": {
            "change_delta": 14,
            "change_time": 1498603761,
            "action_status": "in progress",
            "id": "nodes-12",
            "action_type": "none",
            "connection_status": "connected"
          },
          "ssh_enabled": true
        }
      ],
      "meta": {
        "searchId": "{4648d82-5b8a-11e7-a476-773c6172a34}",
        "total_pages": 5
      }
    }

## HTTP status code 400

Invalid request, missing or incorrect page/per_page

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

Example:

    {
      "error": [
        {
          "type": 4,
          "code": 39,
          "text": "Invalid request body",
          "args": {},
          "level": 1
        },
        {
          "type": 4,
          "code": 48,
          "text": "Invalid parameter 'config:nam' was provided",
          "args": {
            "param": "config:nam"
          },
          "level": 1
        },
        {
          "type": 2,
          "code": 49,
          "text": "Invalid json '{\"type\":1,\"items\":{\"datatype\":4,\"type\":3,\"oper\":1,\"fieldname\":\"config:name\",\"value\":\"test\"}]}' for parameter 'json'",
          "args": {
            "line": "1",
            "position": "92",
            "value": "{\"type\":1,\"items\":{\"datatype\":4,\"type\":3,\"oper\":1,\"fieldname\":\"config:name\",\"value\":\"test\"}]}",
            "column": "92",
            "error": "'}' expected near ']'",
            "param": "json"
          },
          "level": 1
        }
      ]
    }

## HTTP status code 401

Authentication failure

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

Examples:

example1:

    {
      "error": [
        {
          "type": 7,
          "code": 42,
          "text": "Invalid session ID",
          "args": {},
          "level": 1
        }
      ]
    }

example2:

    {
      "error": [
        {
          "type": 7,
          "code": 46,
          "text": "Permission denied",
          "args": {},
          "level": 1
        }
      ]
    }

## HTTP status code 404

Invalid request, Incomplete data, Port not found, Failure during retrieval of ports

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

## HTTP status code 500

Failed to read ports.

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

# Secured by token

### Headers

- Authorization: required (string)

  authorization session token

  Example:

      Token 521a00e57d4a461b3e4bb0c55166f97c

#### /ports/{id} get

get

Retrieve a single port by ID.

#### get /ports/{id}

Retrieve a single port by ID.

Secured by token

Lighthouse base authentication scheme

### URI Parameters

- id: required (string)

### Headers

- Authorization: required (string)

  Example:

      Token {{sessionUid}}

## HTTP status code 200

Returns properties for a single port.

### Body

Media type: application/json

Type: object

Properties

- webshell_enabled: required (boolean)
- port_csid: required (string)
- mode: required (one of disabled, localConsole, consoleServer, sdtServer, bridge, terminalServer, reserved, powerman, unknown)
- proxied_ssh_url: required (string)

  URI to ssh to a port on a Lighthouse-enrolled node

  Example:

      ssh://username:consoleserver:portnumber@lhip

- runtime_status: required (object)
  - change_time: required (integer)
  - change_delta: required (integer)
  - action_status: required (one of in progress, finished, error, unknown)
  - id: required (string)
  - action_type: required (one of registration, enrollment, none)
  - connection_status: required (one of connected, pending, disconnected, unknown, never seen)
  - action_error_message: (string)
- ssh_enabled: required (boolean)
- label: required (string)
- id: required (string)
- web_terminal_url: required (string)
- node_name: required (string)

## HTTP status code 400

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

## HTTP status code 401

Authentication failure

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

Examples:

example1:

    {
      "error": [
        {
          "type": 7,
          "code": 42,
          "text": "Invalid session ID",
          "args": {},
          "level": 1
        }
      ]
    }

example2:

    {
      "error": [
        {
          "type": 7,
          "code": 46,
          "text": "Permission denied",
          "args": {},
          "level": 1
        }
      ]
    }

# Secured by token

### Headers

- Authorization: required (string)

  authorization session token

  Example:

      Token 521a00e57d4a461b3e4bb0c55166f97c

### /search

Used to perform searches on nodes and ports on the system.

#### /search/nodes get

Creating a search ID for nodes from the given query parameters.

get

Gets a search ID for searching nodes attached to this lighthouse instance. Any number of search query parameters can be provided to perform an ANDed search on the nodes. The parameters possible should be retrieved with GET /nodes/fields. The list provided is dynamic.

#### get /search/nodes

Gets a search ID for searching nodes attached to this lighthouse instance. Any number of search query parameters can be provided to perform an ANDed search on the nodes. The parameters possible should be retrieved with GET /nodes/fields. The list provided is dynamic.

Secured by token

Lighthouse base authentication scheme

### Headers

- Authorization: required (string)

  Example:

      Token {{sessionUid}}

### Query Parameters

- json: (string)

  One or more json URL encoded search parameters. Example %7B%22type%22%3A1%2C%22items%22%3A%5B%7B%22datatype%22%3A4 %2C%22type%22%3A3%2C%22oper%22%3A1%2C%22fieldname%22%3A%22 config%3Aname%22%2C%22value%22%3A%22test%22%7D%5D%7D which is the URL encoded json {type:1,items:[{"datatype":4,type:3,"oper":1,"fieldname":"config:name","value":"test"}]}

- jb64: (string)

  one or more base64 encoded json search parameters. Ensure that any trailing = padding is URL encoded to %3D

- searchparameters: (string)

  One or more search fields as provided by /nodes/fields. For example, config:name=*test*, will search for nodes with names containing test, or config:status=!Enrolled will search for nodes which are not enrolled. Allowed operators are: =value, >value, >=value, <value, <=value, !value (not), *value (ends in), value* (starts with), *value* (contains). Reserved characters to be URl encoded, e.g. = as %3D

- operator: (string - default: AND)

  Operator applied between all searchparameters, json and jb64 query parameters. AND or OR

## HTTP status code 200

The search ID, as defined by given parameters

### Body

Media type: application/json

Type: object

Properties

- search: required (object)
  - id: required (string)

Example:

    {
      "search": {
        "id": "{268daae-5555-11e7-8af6-b7116753aa5}"
      }
    }

## HTTP status code 400

Invalid request, missing or incorrect search parameters.

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

Example:

    {
      "error": [
        {
          "type": 4,
          "code": 39,
          "text": "Invalid request body",
          "args": {},
          "level": 1
        }
      ]
    }

## HTTP status code 401

Authentication failure

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

Examples:

example1:

    {
      "error": [
        {
          "type": 7,
          "code": 42,
          "text": "Invalid session ID",
          "args": {},
          "level": 1
        }
      ]
    }

example2:

    {
      "error": [
        {
          "type": 7,
          "code": 46,
          "text": "Permission denied",
          "args": {},
          "level": 1
        }
      ]
    }

## HTTP status code 404

Invalid request, Incomplete data.

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

## HTTP status code 500

Failed to retrieve a search ID.

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

# Secured by token

### Headers

- Authorization: required (string)

  authorization session token

  Example:

      Token 521a00e57d4a461b3e4bb0c55166f97c

#### /search/ports get

Creating a search ID for ports from the given query parameters.

get

Gets a search ID for searching ports attached to this lighthouse instance. Any number of search query parameters can be provided to perform an ANDed search on the ports. The list provided is dynamic.

#### get /search/ports

Gets a search ID for searching ports attached to this lighthouse instance. Any number of search query parameters can be provided to perform an ANDed search on the ports. The list provided is dynamic.

Secured by token

Lighthouse base authentication scheme

### Headers

- Authorization: required (string)

  Example:

      Token {{sessionUid}}

### Query Parameters

- json: (string)

  One or more json URL encoded search parameters. Example %7B%22type%22%3A1%2C%22items%22%3A%5B%7B%22datatype%22%3A4 %2C%22type%22%3A3%2C%22oper%22%3A1%2C%22fieldname%22%3A%22 config%3Aname%22%2C%22value%22%3A%22test%22%7D%5D%7D which is the URL encoded json {type:1,items:[{"datatype":4,type:3,"oper":1,"fieldname":"config:label","value":"test"}]}

- jb64: (string)

  one or more base64 encoded json search parameters. Ensure that any trailing = padding is URL encoded to %3D

- searchparameters: (string)

  One or more search fields. For example, config:label=*test*, will search for ports with labels containing test. Allowed operators are: =value, >value, >=value, <value, <=value, !value (not), *value (ends in), value* (starts with), *value* (contains). Reserved characters to be URl encoded, e.g. = as %3D

- operator: (string - default: AND)

  Operator applied between all searchparameters, json and jb64 query parameters. AND or OR

## HTTP status code 200

The search ID, as defined by given parameters

### Body

Media type: application/json

Type: object

Properties

- search: required (object)
  - id: required (string)

Example:

    {
      "search": {
        "id": "{268daae-5555-11e7-8af6-b7116753aa5}"
      }
    }

## HTTP status code 400

Invalid request, missing or incorrect search parameters.

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

Example:

    {
      "error": [
        {
          "type": 4,
          "code": 39,
          "text": "Invalid request body",
          "args": {},
          "level": 1
        }
      ]
    }

## HTTP status code 401

Authentication failure

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

Examples:

example1:

    {
      "error": [
        {
          "type": 7,
          "code": 42,
          "text": "Invalid session ID",
          "args": {},
          "level": 1
        }
      ]
    }

example2:

    {
      "error": [
        {
          "type": 7,
          "code": 46,
          "text": "Permission denied",
          "args": {},
          "level": 1
        }
      ]
    }

## HTTP status code 404

Invalid request, Incomplete data.

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

## HTTP status code 500

Failed to retrieve a search ID.

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

# Secured by token

### Headers

- Authorization: required (string)

  authorization session token

  Example:

      Token 521a00e57d4a461b3e4bb0c55166f97c

### /services

Used for working with the properties of the various services running on the system.

#### /services/https get put

Provides access to the SSL certificate used by web services on the device.

get

Fetch HTTPS certificate details, or a CSR file if the zip flag is set.

put

Update HTTPS details. A certificate matching the CSR can be uploaded by setting the https.cert field, a CSR can be cancelled by sending through no https.csr body, and a new csr can be created by sending through a https.csr body with a csr value of "new".

#### get /services/https

Fetch HTTPS certificate details, or a CSR file if the zip flag is set.

Secured by token

Lighthouse base authentication scheme

### Headers

- Authorization: required (string)

  Example:

      Token {{sessionUid}}

### Query Parameters

- zip: (boolean - default: false)

  A flag to download the CSR instead of view the details

## HTTP status code 200

Returns the certificate currently in use by the server, as well as details about any current CSR.

### Body

Media type: application/json

Type: object

Example:

    {
      "https": {
        "valid_from": "Sep 21 00:39:03 2016 GMT",
        "valid_to": "Sep 21 00:39:03 2016 GMT",
        "common_name": "CName",
        "country": "AU",
        "locality": "Toowong",
        "org_unit": "OU",
        "email": "bob@bob.com",
        "organization": "Internet Widgits Pty Ltd",
        "key_length": 2048,
        "cert": "-----BEGIN CERTIFICATE-----...-----END CERTIFICATE-----",
        "csr": {
          "country": "AU",
          "challenge_password": "aaa",
          "common_name": "aa",
          "state": "ee",
          "locality": "dd",
          "email": "bob@bob.com",
          "key_length": 512
        },
        "key": "-----BEGIN PRIVATE KEY-----..."
      }
    }

## HTTP status code 400

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

## HTTP status code 401

Authentication failure

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

Examples:

example1:

    {
      "error": [
        {
          "type": 7,
          "code": 42,
          "text": "Invalid session ID",
          "args": {},
          "level": 1
        }
      ]
    }

example2:

    {
      "error": [
        {
          "type": 7,
          "code": 46,
          "text": "Permission denied",
          "args": {},
          "level": 1
        }
      ]
    }

# Secured by token

### Headers

- Authorization: required (string)

  authorization session token

  Example:

      Token 521a00e57d4a461b3e4bb0c55166f97c

#### put /services/https

Update HTTPS details. A certificate matching the CSR can be uploaded by setting the https.cert field, a CSR can be cancelled by sending through no https.csr body, and a new csr can be created by sending through a https.csr body with a csr value of "new".

Secured by token

Lighthouse base authentication scheme

### Headers

- Authorization: required (string)

  Example:

      Token {{sessionUid}}

### Body

Media type: application/json

Type: object

Example:

    {
      "https": {
        "key_length": 2048,
        "cert": "-----BEGIN CERTIFICATE-----...-----END CERTIFICATE-----",
        "csr": {
          "country": "AU",
          "challenge_password": "aaa",
          "common_name": "aa",
          "state": "ee",
          "locality": "dd",
          "key_length": 2048,
          "email": "bob@bob.com"
        },
        "key": "-----BEGIN PRIVATE KEY-----..."
      }
    }

## HTTP status code 200

Returns the updated HTTPS server details

### Body

Media type: application/json

Type: object

Example:

    {
      "https": {
        "valid_from": "Sep 21 00:39:03 2016 GMT",
        "valid_to": "Sep 21 00:39:03 2016 GMT",
        "common_name": "CName",
        "country": "AU",
        "locality": "Toowong",
        "org_unit": "OU",
        "email": "bob@bob.com",
        "organization": "Internet Widgits Pty Ltd",
        "key_length": 2048,
        "cert": "-----BEGIN CERTIFICATE-----...-----END CERTIFICATE-----",
        "csr": {
          "country": "AU",
          "challenge_password": "aaa",
          "common_name": "aa",
          "state": "ee",
          "locality": "dd",
          "email": "bob@bob.com",
          "key_length": 512
        },
        "key": "-----BEGIN PRIVATE KEY-----..."
      }
    }

## HTTP status code 400

Returns an error after the operation failed due to invalid user input.

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

Example:

    {
      "error": [
        {
          "type": 2,
          "code": 14,
          "text": " String did not conform to the expected format.",
          "args": {
            "uuid": "root-1-services_https_csr_email"
          },
          "level": 1
        },
        {
          "type": 1,
          "code": 33,
          "text": "Push command failed",
          "args": {},
          "level": 1
        }
      ]
    }

## HTTP status code 401

Authentication failure

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

Example:

    {
      "error": [
        {
          "type": 7,
          "code": 42,
          "text": "Invalid session ID",
          "args": {},
          "level": 1
        }
      ]
    }

## HTTP status code 404

Not found

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

## HTTP status code 500

Returns an error after the operation failed.

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

Example:

    {
      "error": [
        {
          "type": 2,
          "code": 14,
          "text": " String did not conform to the expected format.",
          "args": {
            "uuid": "root-1-services_https_csr_email"
          },
          "level": 1
        },
        {
          "type": 1,
          "code": 33,
          "text": "Push command failed",
          "args": {},
          "level": 1
        }
      ]
    }

# Secured by token

### Headers

- Authorization: required (string)

  authorization session token

  Example:

      Token 521a00e57d4a461b3e4bb0c55166f97c

#### /services/ntp get put

Provides access to the NTP client configuration on the system.

get

Fetch NTP client configuration.

put

Update NTP client configuration, including enabling/disabling the NTP service.

#### get /services/ntp

Fetch NTP client configuration.

Secured by token

Lighthouse base authentication scheme

### Headers

- Authorization: required (string)

  Example:

      Token {{sessionUid}}

## HTTP status code 200

Returns the current NTP configuration.

### Body

Media type: application/json

Type: object

Example:

    {
      "ntp": {
        "enabled": true,
        "servers": [
          {
            "id": "services_ntp_servers-0",
            "value": "0.au.pool.ntp.org"
          },
          {
            "id": "services_ntp_servers-1",
            "value": "1.au.pool.ntp.org"
          }
        ],
        "id": "services_ntp"
      }
    }

## HTTP status code 400

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

## HTTP status code 401

Authentication failure

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

Examples:

example1:

    {
      "error": [
        {
          "type": 7,
          "code": 42,
          "text": "Invalid session ID",
          "args": {},
          "level": 1
        }
      ]
    }

example2:

    {
      "error": [
        {
          "type": 7,
          "code": 46,
          "text": "Permission denied",
          "args": {},
          "level": 1
        }
      ]
    }

# Secured by token

### Headers

- Authorization: required (string)

  authorization session token

  Example:

      Token 521a00e57d4a461b3e4bb0c55166f97c

#### put /services/ntp

Update NTP client configuration, including enabling/disabling the NTP service.

Secured by token

Lighthouse base authentication scheme

### Headers

- Authorization: required (string)

  Example:

      Token {{sessionUid}}

### Body

Media type: application/json

Type: object

Example:

    {
      "ntp": {
        "enabled": true,
        "servers": [
          {
            "id": "services_ntp_servers-0",
            "value": "0.au.pool.ntp.org"
          },
          {
            "id": "services_ntp_servers-1",
            "value": "2.au.pool.ntp.org"
          },
          {
            "id": null,
            "value": "3.au.pool.ntp.org"
          }
        ],
        "id": "services_ntp"
      }
    }

## HTTP status code 200

Returns the updated NTP configuration.

### Body

Media type: application/json

Type: object

Example:

    {
      "ntp": {
        "enabled": true,
        "servers": [
          {
            "id": "services_ntp_servers-0",
            "value": "0.au.pool.ntp.org"
          },
          {
            "id": "services_ntp_servers-1",
            "value": "2.au.pool.ntp.org"
          },
          {
            "id": null,
            "value": "3.au.pool.ntp.org"
          }
        ],
        "id": "services_ntp"
      }
    }

## HTTP status code 400

Returns an error after the operation failed due to invalid request.

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

Example:

    {
      "error": [
        {
          "type": 4,
          "code": 40,
          "text": "Required field 'server-1' was not provided in the request",
          "args": {
            "param": "server-1"
          },
          "level": 1
        }
      ]
    }

## HTTP status code 401

Authentication failure

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

Example:

    {
      "error": [
        {
          "type": 7,
          "code": 42,
          "text": "Invalid session ID",
          "args": {},
          "level": 1
        }
      ]
    }

## HTTP status code 404

Not found

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

## HTTP status code 500

Error saving NTP configuration.

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

Example:

    {
      "error": [
        {
          "type": 2,
          "code": 25,
          "text": "'' is not a valid hostname",
          "args": {
            "address": "",
            "uuid": "services_ntp_servers-0"
          },
          "level": 1
        },
        {
          "type": 1,
          "code": 33,
          "text": "Push command failed",
          "args": {},
          "level": 1
        }
      ]
    }

# Secured by token

### Headers

- Authorization: required (string)

  authorization session token

  Example:

      Token 521a00e57d4a461b3e4bb0c55166f97c

#### /services/console_gateway get put

get

Requests config parameters related to the Console Gateway service.

put

Update config parameters related to the Console Gateway service.

#### get /services/console_gateway

Requests config parameters related to the Console Gateway service.

Secured by token

Lighthouse base authentication scheme

### Headers

- Authorization: required (string)

  Example:

      Token {{sessionUid}}

## HTTP status code 200

### Body

Media type: application/json

Type: object

Properties

- console_gateway: required (object)
  - ssh_url_delimiter: required (string)

Example:

    {
      "console_gateway": {
        "ssh_url_delimiter": ":"
      }
    }

## HTTP status code 400

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

## HTTP status code 401

Authentication failure

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

Examples:

example1:

    {
      "error": [
        {
          "type": 7,
          "code": 42,
          "text": "Invalid session ID",
          "args": {},
          "level": 1
        }
      ]
    }

example2:

    {
      "error": [
        {
          "type": 7,
          "code": 46,
          "text": "Permission denied",
          "args": {},
          "level": 1
        }
      ]
    }

# Secured by token

### Headers

- Authorization: required (string)

  authorization session token

  Example:

      Token 521a00e57d4a461b3e4bb0c55166f97c

#### put /services/console_gateway

Update config parameters related to the Console Gateway service.

Secured by token

Lighthouse base authentication scheme

### Headers

- Authorization: required (string)

  Example:

      Token {{sessionUid}}

### Body

Media type: application/json

Type: object

Example:

    {
      "console_gateway": {
        "ssh_url_delimiter": ":"
      }
    }

## HTTP status code 200

### Body

Media type: application/json

Type: object

Properties

- console_gateway: required (object)
  - ssh_url_delimiter: required (string)

Example:

    {
      "console_gateway": {
        "ssh_url_delimiter": ":"
      }
    }

## HTTP status code 400

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

## HTTP status code 401

Authentication failure

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

Example:

    {
      "error": [
        {
          "type": 7,
          "code": 42,
          "text": "Invalid session ID",
          "args": {},
          "level": 1
        }
      ]
    }

## HTTP status code 404

Not found

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

## HTTP status code 500

Internal error

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

# Secured by token

### Headers

- Authorization: required (string)

  authorization session token

  Example:

      Token 521a00e57d4a461b3e4bb0c55166f97c

### /tags

Tags are a user definable set of name/value pairs which can be assigned to Lighthouse system objects like nodes.

#### /tags/node_tags get post

Provides the ability to retrieve and manipulate all tags associated with Lighthouse nodes.

get

Returns the global tag list and associated values. Each associated name/value pair can be referenced from any node by using nodes/:id/tags/:tag_value_id.

post

Create a global node tag

#### get /tags/node_tags

Returns the global tag list and associated values. Each associated name/value pair can be referenced from any node by using nodes/:id/tags/:tag_value_id.

Secured by token

Lighthouse base authentication scheme

### Headers

- Authorization: required (string)

  Example:

      Token {{sessionUid}}

### Query Parameters

- per_page: (integer - default: 100000)

  Number of tags expected per page

- page: (integer - default: 1)

  The page to return (indexed from 1)

## HTTP status code 200

### Body

Media type: application/json

Type: object

Properties

- meta: required (object)
  - searchId: (string)
  - total_pages: required (integer)
- nodeTags: required (array of items)

  Items: items

  - id: required (string)
  - name: required (string)
  - values: required (array of items)

    A list of values associated with this tag

    Items: items

    - id: required (string)
    - value: required (string)
  - rights: required (object)
    - create: (boolean)
    - delete: required (boolean)
    - modify: required (boolean)

Example:

    {
      "nodeTags": [
        {
          "id": "tags_node_tags-1",
          "name": "myTag",
          "values": [
            {
              "id": "tags_node_tags_values-1",
              "value": "my tag value"
            },
            {
              "id": "tags_node_tags_values-2",
              "value": "new value"
            }
          ],
          "rights": {
            "delete": true,
            "modify": true
          }
        },
        {
          "id": "tags_node_tags-2",
          "name": "myTag2",
          "values": [
            {
              "id": "tags_node_tags_values-3",
              "value": "something else"
            }
          ],
          "rights": {
            "delete": true,
            "modify": true
          }
        },
        {
          "id": "tags_node_tags-3",
          "name": "myTag3",
          "values": [
            {
              "id": "tags_node_tags_values-4",
              "value": "one item"
            }
          ],
          "rights": {
            "delete": true,
            "modify": true
          }
        }
      ],
      "meta": {
        "total_pages": 1
      }
    }

## HTTP status code 400

Invalid request: body is not json or does not conform to required json schema. Incomplete data: ??.

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

## HTTP status code 401

Authentication failure

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

Examples:

example1:

    {
      "error": [
        {
          "type": 7,
          "code": 42,
          "text": "Invalid session ID",
          "args": {},
          "level": 1
        }
      ]
    }

example2:

    {
      "error": [
        {
          "type": 7,
          "code": 46,
          "text": "Permission denied",
          "args": {},
          "level": 1
        }
      ]
    }

## HTTP status code 404

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

# Secured by token

### Headers

- Authorization: required (string)

  authorization session token

  Example:

      Token 521a00e57d4a461b3e4bb0c55166f97c

#### post /tags/node_tags

Create a global node tag

Secured by token

Lighthouse base authentication scheme

### Headers

- Authorization: required (string)

  Example:

      Token {{sessionUid}}

### Body

Media type: application/json

Type: object

Properties

- nodeTag: required (object)
  - name: required (string)
  - values: required (array of )

Example:

    {
      "nodeTag": {
        "name": "Location",
        "values": [
          {
            "value": "USA.NewYork"
          },
          {
            "value": "UK.London"
          }
        ]
      }
    }

## HTTP status code 200

The newly created global tag.

### Body

Media type: application/json

Type: object

Example:

    {
      "nodeTag": {
        "id": "tags_node_tags-50",
        "name": "Location",
        "values": [
          {
            "id": "tags_node_tags_values_90",
            "value": "USA.NewYork"
          },
          {
            "id": "tags_node_tags_values_91",
            "value": "UK.London"
          }
        ]
      }
    }

## HTTP status code 400

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

## HTTP status code 401

Authentication failure

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

Example:

    {
      "error": [
        {
          "type": 7,
          "code": 42,
          "text": "Invalid session ID",
          "args": {},
          "level": 1
        }
      ]
    }

# Secured by token

### Headers

- Authorization: required (string)

  authorization session token

  Example:

      Token 521a00e57d4a461b3e4bb0c55166f97c

#### /tags/node_tags/{tag_value_id} put delete

put

Update tag values for the given id.

delete

Delete a tag by id.

#### put /tags/node_tags/{tag_value_id}

Update tag values for the given id.

Secured by token

Lighthouse base authentication scheme

### URI Parameters

- tag_value_id: required (string)

  Identifier for unique tag

  Example:

      nodes_tags-1

### Headers

- Authorization: required (string)

  Example:

      Token {{sessionUid}}

### Body

Media type: application/json

Type: object

Properties

- nodeTag: required (object)
  - name: required (string)
  - values: required (array of )

Example:

    {
      "nodeTag": {
        "name": "Location",
        "values": [
          {
            "id": "tags_node_tags_values_90",
            "value": "USA.NewYork"
          },
          {
            "id": "tags_node_tags_values_91",
            "value": "UK.London"
          },
          {
            "value": "France.Paris"
          }
        ]
      }
    }

## HTTP status code 200

The tag information was updated.

## HTTP status code 400

Invalid request: body is not json or does not conform to required json schema. Incomplete data: node id, or tag_value_id parameter missing.

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

## HTTP status code 401

Authentication failure

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

Example:

    {
      "error": [
        {
          "type": 7,
          "code": 42,
          "text": "Invalid session ID",
          "args": {},
          "level": 1
        }
      ]
    }

## HTTP status code 404

Not found

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

## HTTP status code 500

Internal error

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

# Secured by token

### Headers

- Authorization: required (string)

  authorization session token

  Example:

      Token 521a00e57d4a461b3e4bb0c55166f97c

#### delete /tags/node_tags/{tag_value_id}

Delete a tag by id.

Secured by token

Lighthouse base authentication scheme

### URI Parameters

- tag_value_id: required (string)

  Identifier for unique tag

  Example:

      nodes_tags-1

### Headers

- Authorization: required (string)

  Example:

      Token {{sessionUid}}

## HTTP status code 200

The {tag_value_id} tag information was deleted.

## HTTP status code 400

Invalid request: body is not json or does not conform to required json schema. Incomplete data: tag_value_id parameter missing.

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

## HTTP status code 401

Authentication failure

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

Example:

    {
      "error": [
        {
          "type": 7,
          "code": 42,
          "text": "Invalid session ID",
          "args": {},
          "level": 1
        }
      ]
    }

## HTTP status code 404

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

Example:

    {
      "error": [
        {
          "type": 5,
          "code": 29,
          "text": "Could not find element with UUID 'nodes_tags-0'",
          "args": {
            "uuid": "nodes_tags-0"
          },
          "level": 1
        }
      ]
    }

# Secured by token

### Headers

- Authorization: required (string)

  authorization session token

  Example:

      Token 521a00e57d4a461b3e4bb0c55166f97c

### /interfaces

Read and manipulate the network interfaces on the Lighthouse server.

#### /interfaces get

get

Get a list of the network interfaces on the Lighthouse server.

#### get /interfaces

Get a list of the network interfaces on the Lighthouse server.

Secured by token

Lighthouse base authentication scheme

### Headers

- Authorization: required (string)

  Example:

      Token {{sessionUid}}

### Query Parameters

- per_page: (integer - default: 100000)

  Number of interfaces expected per page

- page: (integer - default: 1)

  The page to return (indexed from 1)

## HTTP status code 200

### Body

Media type: application/json

Type: object

Properties

- meta: required (object)
  - searchId: (string)
  - total_pages: required (integer)
- interfaces: required (array of items)

  Items: items

  - enabled: required (boolean)
  - description: required (string)
  - media: required (string)
  - netmask: (string)
  - physif: required (string)
  - role: required (string)
  - name: required (string)
  - address: (string)
  - gateway: (string)
  - mode: required (string)
  - runtime_status: required (object)
    - status: required (string)
    - last_status_change: required (number)
    - id: required (string)
    - dhcp_netmask: (string)
    - dhcp_gateway: (string)
    - dhcp_dns: (string)
    - dhcp_address: (string)
  - dhcp_vendor_class: (string)
  - id: required (string)

Example:

    {
      "interfaces": [
        {
          "enabled": true,
          "description": "Default static network connection",
          "media": "auto",
          "netmask": "255.255.255.0",
          "physif": "net1",
          "role": "lan",
          "name": "default-conn-1",
          "address": "192.168.87.156",
          "gateway": "192.168.87.100",
          "mode": "static",
          "runtime_status": {
            "status": "running",
            "last_status_change": 1471506633,
            "id": "system_net_conns-1"
          },
          "id": "system_net_conns-1"
        },
        {
          "enabled": true,
          "description": "Default DHCP network connection",
          "media": "auto",
          "id": "system_net_conns-2",
          "dhcp_vendor_class": "Opengear/Lighthouse",
          "role": "lan",
          "name": "default-conn-2",
          "mode": "dhcp",
          "runtime_status": {
            "status": "running",
            "dhcp_netmask": "255.255.255.0",
            "dhcp_gateway": "192.168.87.1",
            "id": "system_net_conns-2",
            "dhcp_dns": "192.168.87.1",
            "dhcp_address": "192.168.87.200",
            "last_status_change": 1471506160
          },
          "physif": "net1"
        }
      ],
      "meta": {
        "total_pages": 1
      }
    }

## HTTP status code 400

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

## HTTP status code 401

Authentication failure

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

Examples:

example1:

    {
      "error": [
        {
          "type": 7,
          "code": 42,
          "text": "Invalid session ID",
          "args": {},
          "level": 1
        }
      ]
    }

example2:

    {
      "error": [
        {
          "type": 7,
          "code": 46,
          "text": "Permission denied",
          "args": {},
          "level": 1
        }
      ]
    }

# Secured by token

### Headers

- Authorization: required (string)

  authorization session token

  Example:

      Token 521a00e57d4a461b3e4bb0c55166f97c

#### /interfaces/{id} get put

get

Get interface information by id.

put

Update settings for interface {id}

#### get /interfaces/{id}

Get interface information by id.

Secured by token

Lighthouse base authentication scheme

### URI Parameters

- id: required (string)

  ID of the interface to fetch

  Example:

      system_net_conns-2

### Headers

- Authorization: required (string)

  Example:

      Token {{sessionUid}}

## HTTP status code 200

### Body

Media type: application/json

Type: object

Properties

- interface: required (object)
  - role: required (string)
  - description: required (string)
  - address: (string)
  - physif: required (string)
  - name: required (string)
  - mode: required (string)
  - gateway: (string)
  - runtime_status: (object)
    - status: required (string)
    - last_status_change: required (number)
    - id: required (string)
  - id: (string)
  - netmask: (string)
  - enabled: required (boolean)
  - media: required (string)

Example:

    {
      "interface": {
        "enabled": true,
        "description": "Default static network connection",
        "media": "auto",
        "netmask": "255.255.255.0",
        "physif": "net1",
        "role": "lan",
        "name": "default-conn-1",
        "address": "192.168.87.156",
        "gateway": "192.168.87.100",
        "mode": "static",
        "runtime_status": {
          "status": "running",
          "last_status_change": 1471506633,
          "id": "system_net_conns-1"
        },
        "id": "system_net_conns-1"
      }
    }

## HTTP status code 400

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

## HTTP status code 401

Authentication failure

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

Examples:

example1:

    {
      "error": [
        {
          "type": 7,
          "code": 42,
          "text": "Invalid session ID",
          "args": {},
          "level": 1
        }
      ]
    }

example2:

    {
      "error": [
        {
          "type": 7,
          "code": 46,
          "text": "Permission denied",
          "args": {},
          "level": 1
        }
      ]
    }

# Secured by token

### Headers

- Authorization: required (string)

  authorization session token

  Example:

      Token 521a00e57d4a461b3e4bb0c55166f97c

#### put /interfaces/{id}

Update settings for interface {id}

Secured by token

Lighthouse base authentication scheme

### URI Parameters

- id: required (string)

  ID of the interface to fetch

  Example:

      system_net_conns-2

### Headers

- Authorization: required (string)

  Example:

      Token {{sessionUid}}

### Body

Media type: application/json

Type: object

Properties

- interface: required (object)
  - role: required (string)
  - description: required (string)
  - address: (string)
  - physif: required (string)
  - name: required (string)
  - mode: required (string)
  - gateway: (string)
  - runtime_status: (object)
    - status: required (string)
    - last_status_change: required (number)
    - id: required (string)
  - id: (string)
  - netmask: (string)
  - enabled: required (boolean)
  - media: required (string)

Example:

    {
      "interface": {
        "enabled": true,
        "description": "Default static network connection",
        "media": "auto",
        "netmask": "255.255.255.0",
        "physif": "net1",
        "role": "lan",
        "name": "default-conn-1",
        "address": "192.168.87.156",
        "gateway": "192.168.87.100",
        "mode": "static"
      }
    }

## HTTP status code 200

The interface {id} settings was updated.

## HTTP status code 400

Invalid request: body is not json or does not conform to required json schema. Incomplete data: interface id parameter missing.

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

## HTTP status code 401

Authentication failure

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

Example:

    {
      "error": [
        {
          "type": 7,
          "code": 42,
          "text": "Invalid session ID",
          "args": {},
          "level": 1
        }
      ]
    }

## HTTP status code 404

Interface {id} does not exist. Attempted to change read only fields. Attempted to change unknown fields.

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

## HTTP status code 500

Internal error

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

# Secured by token

### Headers

- Authorization: required (string)

  authorization session token

  Example:

      Token 521a00e57d4a461b3e4bb0c55166f97c

### /system

System endpoints are related to configuring and accessing information about the Lighthouse system itself.

#### /system/hostname get put

Retrieve or change the Lighthouse system's hostname.

get

Get the Lighthouse hostname.

put

Update the Lighthouse hostname.

#### get /system/hostname

Get the Lighthouse hostname.

Secured by token

Lighthouse base authentication scheme

### Headers

- Authorization: required (string)

  Example:

      Token {{sessionUid}}

## HTTP status code 200

### Body

Media type: application/json

Type: object

Properties

- system_hostname: required (object)
  - hostname: required (string)

Example:

    {
      "system_hostname": {
        "hostname": "Lighthouse"
      }
    }

## HTTP status code 400

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

## HTTP status code 401

Authentication failure

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

Examples:

example1:

    {
      "error": [
        {
          "type": 7,
          "code": 42,
          "text": "Invalid session ID",
          "args": {},
          "level": 1
        }
      ]
    }

example2:

    {
      "error": [
        {
          "type": 7,
          "code": 46,
          "text": "Permission denied",
          "args": {},
          "level": 1
        }
      ]
    }

# Secured by token

### Headers

- Authorization: required (string)

  authorization session token

  Example:

      Token 521a00e57d4a461b3e4bb0c55166f97c

#### put /system/hostname

Update the Lighthouse hostname.

Secured by token

Lighthouse base authentication scheme

### Headers

- Authorization: required (string)

  Example:

      Token {{sessionUid}}

### Body

Media type: application/json

Type: object

Properties

- system_hostname: required (object)
  - hostname: required (string)

Example:

    {
      "system_hostname": {
        "hostname": "Lighthouse"
      }
    }

## HTTP status code 200

### Body

Media type: application/json

Type: object

Properties

- system_hostname: required (object)
  - hostname: required (string)

Example:

    {
      "system_hostname": {
        "hostname": "Lighthouse"
      }
    }

## HTTP status code 400

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

## HTTP status code 401

Authentication failure

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

Example:

    {
      "error": [
        {
          "type": 7,
          "code": 42,
          "text": "Invalid session ID",
          "args": {},
          "level": 1
        }
      ]
    }

## HTTP status code 404

Not found

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

## HTTP status code 500

Internal error

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

# Secured by token

### Headers

- Authorization: required (string)

  authorization session token

  Example:

      Token 521a00e57d4a461b3e4bb0c55166f97c

#### /system/webui_session_timeout get put

Retrieve or change the Lighthouse session timeout.

get

Retrieve the session timeout (in minutes).

put

Update the session timeout (in minutes).

#### get /system/webui_session_timeout

Retrieve the session timeout (in minutes).

Secured by token

Lighthouse base authentication scheme

### Headers

- Authorization: required (string)

  Example:

      Token {{sessionUid}}

## HTTP status code 200

### Body

Media type: application/json

Type: object

Properties

- system_webui_session_timeout: required (object)
  - timeout: required (integer)

Example:

    {
      "system_webui_session_timeout": {
        "timeout": 20
      }
    }

## HTTP status code 400

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

## HTTP status code 401

Authentication failure

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

Examples:

example1:

    {
      "error": [
        {
          "type": 7,
          "code": 42,
          "text": "Invalid session ID",
          "args": {},
          "level": 1
        }
      ]
    }

example2:

    {
      "error": [
        {
          "type": 7,
          "code": 46,
          "text": "Permission denied",
          "args": {},
          "level": 1
        }
      ]
    }

# Secured by token

### Headers

- Authorization: required (string)

  authorization session token

  Example:

      Token 521a00e57d4a461b3e4bb0c55166f97c

#### put /system/webui_session_timeout

Update the session timeout (in minutes).

Secured by token

Lighthouse base authentication scheme

### Headers

- Authorization: required (string)

  Example:

      Token {{sessionUid}}

### Body

Media type: application/json

Type: object

Properties

- system_webui_session_timeout: required (object)
  - timeout: required (integer)

Example:

    {
      "system_webui_session_timeout": {
        "timeout": 20
      }
    }

## HTTP status code 200

### Body

Media type: application/json

Type: object

Properties

- system_webui_session_timeout: required (object)
  - timeout: required (integer)

Example:

    {
      "system_webui_session_timeout": {
        "timeout": 20
      }
    }

## HTTP status code 400

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

## HTTP status code 401

Authentication failure

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

Example:

    {
      "error": [
        {
          "type": 7,
          "code": 42,
          "text": "Invalid session ID",
          "args": {},
          "level": 1
        }
      ]
    }

## HTTP status code 404

Not found

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

## HTTP status code 500

Internal error

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

# Secured by token

### Headers

- Authorization: required (string)

  authorization session token

  Example:

      Token 521a00e57d4a461b3e4bb0c55166f97c

#### /system/global_enrollment_token get put

Retrieve or update the Lighthouse server's global enrollment token.

get

Retrieve the Lighthouse's global enrollment token.

put

Update the Lighthouse's global enrollment token.

#### get /system/global_enrollment_token

Retrieve the Lighthouse's global enrollment token.

Secured by token

Lighthouse base authentication scheme

### Headers

- Authorization: required (string)

  Example:

      Token {{sessionUid}}

## HTTP status code 200

### Body

Media type: application/json

Type: object

Properties

- system_global_enrollment_token: required (object)
  - token: required (string)

Example:

    {
      "system_global_enrollment_token": {
        "token": "mySomewhatSecret"
      }
    }

## HTTP status code 400

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

## HTTP status code 401

Authentication failure

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

Examples:

example1:

    {
      "error": [
        {
          "type": 7,
          "code": 42,
          "text": "Invalid session ID",
          "args": {},
          "level": 1
        }
      ]
    }

example2:

    {
      "error": [
        {
          "type": 7,
          "code": 46,
          "text": "Permission denied",
          "args": {},
          "level": 1
        }
      ]
    }

# Secured by token

### Headers

- Authorization: required (string)

  authorization session token

  Example:

      Token 521a00e57d4a461b3e4bb0c55166f97c

#### put /system/global_enrollment_token

Update the Lighthouse's global enrollment token.

Secured by token

Lighthouse base authentication scheme

### Headers

- Authorization: required (string)

  Example:

      Token {{sessionUid}}

### Body

Media type: application/json

Type: object

Properties

- system_global_enrollment_token: required (object)
  - token: required (string)

Example:

    {
      "system_global_enrollment_token": {
        "token": "mySomewhatSecret"
      }
    }

## HTTP status code 200

### Body

Media type: application/json

Type: object

Properties

- system_global_enrollment_token: required (object)
  - token: required (string)

Example:

    {
      "system_global_enrollment_token": {
        "token": "mySomewhatSecret"
      }
    }

## HTTP status code 400

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

## HTTP status code 401

Authentication failure

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

Example:

    {
      "error": [
        {
          "type": 7,
          "code": 42,
          "text": "Invalid session ID",
          "args": {},
          "level": 1
        }
      ]
    }

## HTTP status code 404

Not found

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

## HTTP status code 500

Internal error

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

# Secured by token

### Headers

- Authorization: required (string)

  authorization session token

  Example:

      Token 521a00e57d4a461b3e4bb0c55166f97c

#### /system/manifest_link get

Retrieve a link to the global enrollment manifest file.

get

Returns the url for downloading the manifest file in plaintext.

#### get /system/manifest_link

Returns the url for downloading the manifest file in plaintext.

Secured by token

Lighthouse base authentication scheme

### Headers

- Authorization: required (string)

  Example:

      Token {{sessionUid}}

## HTTP status code 200

### Body

Media type: application/json

Type: object

Properties

- system_global_manifest_link: required (object)
  - url: required (string)

Example:

    {
      "system_global_manifest_link": {
        "url": "http://192.168.1.1/manifest.txt"
      }
    }

## HTTP status code 400

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

## HTTP status code 401

Authentication failure

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

Examples:

example1:

    {
      "error": [
        {
          "type": 7,
          "code": 42,
          "text": "Invalid session ID",
          "args": {},
          "level": 1
        }
      ]
    }

example2:

    {
      "error": [
        {
          "type": 7,
          "code": 46,
          "text": "Permission denied",
          "args": {},
          "level": 1
        }
      ]
    }

# Secured by token

### Headers

- Authorization: required (string)

  authorization session token

  Example:

      Token 521a00e57d4a461b3e4bb0c55166f97c

#### /system/timezone get put

Retrieve and update the system's timezone.

get

Retrieves the system timezone.

put

Update the system timezone.

#### get /system/timezone

Retrieves the system timezone.

Secured by token

Lighthouse base authentication scheme

### Headers

- Authorization: required (string)

  Example:

      Token {{sessionUid}}

## HTTP status code 200

### Body

Media type: application/json

Type: object

Properties

- system_timezone: required (object)
  - timezone: required (string)

Example:

    {
      "system_timezone": {
        "timezone": "Australia/Brisbane"
      }
    }

## HTTP status code 400

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

## HTTP status code 401

Authentication failure

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

Examples:

example1:

    {
      "error": [
        {
          "type": 7,
          "code": 42,
          "text": "Invalid session ID",
          "args": {},
          "level": 1
        }
      ]
    }

example2:

    {
      "error": [
        {
          "type": 7,
          "code": 46,
          "text": "Permission denied",
          "args": {},
          "level": 1
        }
      ]
    }

# Secured by token

### Headers

- Authorization: required (string)

  authorization session token

  Example:

      Token 521a00e57d4a461b3e4bb0c55166f97c

#### put /system/timezone

Update the system timezone.

Secured by token

Lighthouse base authentication scheme

### Headers

- Authorization: required (string)

  Example:

      Token {{sessionUid}}

### Body

Media type: application/json

Type: object

Properties

- system_timezone: required (object)
  - timezone: required (string)

Example:

    {
      "system_timezone": {
        "timezone": "Australia/Brisbane"
      }
    }

## HTTP status code 200

### Body

Media type: application/json

Type: object

Properties

- system_timezone: required (object)
  - timezone: required (string)

Example:

    {
      "system_timezone": {
        "timezone": "Australia/Brisbane"
      }
    }

## HTTP status code 400

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

## HTTP status code 401

Authentication failure

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

Example:

    {
      "error": [
        {
          "type": 7,
          "code": 42,
          "text": "Invalid session ID",
          "args": {},
          "level": 1
        }
      ]
    }

## HTTP status code 404

Not found

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

## HTTP status code 500

Internal error

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

# Secured by token

### Headers

- Authorization: required (string)

  authorization session token

  Example:

      Token 521a00e57d4a461b3e4bb0c55166f97c

#### /system/external_address get put

Retrieve and update the Lighthouse system's externally reachable network address.

get

Retrieve the Lighthouse external address.

put

Update the Lighthouse external address.

#### get /system/external_address

Retrieve the Lighthouse external address.

Secured by token

Lighthouse base authentication scheme

### Headers

- Authorization: required (string)

  Example:

      Token {{sessionUid}}

## HTTP status code 200

### Body

Media type: application/json

Type: object

Properties

- system_external_address: required (object)
  - external_address: required (string)
  - os_default_external_address: required (string)

Example:

    {
      "system_external_address": {
        "external_address": " ",
        "os_default_external_address": " "
      }
    }

## HTTP status code 400

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

## HTTP status code 401

Authentication failure

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

Examples:

example1:

    {
      "error": [
        {
          "type": 7,
          "code": 42,
          "text": "Invalid session ID",
          "args": {},
          "level": 1
        }
      ]
    }

example2:

    {
      "error": [
        {
          "type": 7,
          "code": 46,
          "text": "Permission denied",
          "args": {},
          "level": 1
        }
      ]
    }

# Secured by token

### Headers

- Authorization: required (string)

  authorization session token

  Example:

      Token 521a00e57d4a461b3e4bb0c55166f97c

#### put /system/external_address

Update the Lighthouse external address.

Secured by token

Lighthouse base authentication scheme

### Headers

- Authorization: required (string)

  Example:

      Token {{sessionUid}}

### Body

Media type: application/json

Type: object

Properties

- system_external_address: required (object)
  - external_address: required (string)
  - os_default_external_address: required (string)

Example:

    {
      "system_external_address": {
        "external_address": " ",
        "os_default_external_address": " "
      }
    }

## HTTP status code 200

### Body

Media type: application/json

Type: object

Properties

- system_external_address: required (object)
  - external_address: required (string)
  - os_default_external_address: required (string)

Example:

    {
      "system_external_address": {
        "external_address": " ",
        "os_default_external_address": " "
      }
    }

## HTTP status code 400

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

## HTTP status code 401

Authentication failure

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

Example:

    {
      "error": [
        {
          "type": 7,
          "code": 42,
          "text": "Invalid session ID",
          "args": {},
          "level": 1
        }
      ]
    }

## HTTP status code 404

Not found

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

## HTTP status code 500

Internal error

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

# Secured by token

### Headers

- Authorization: required (string)

  authorization session token

  Example:

      Token 521a00e57d4a461b3e4bb0c55166f97c

#### /system/time get put

Retrieve and update the Lighthouse server's time.

get

Retrieve the Lighthouse current time.

put

Update the Lighthouse current time.

#### get /system/time

Retrieve the Lighthouse current time.

Secured by token

Lighthouse base authentication scheme

### Headers

- Authorization: required (string)

  Example:

      Token {{sessionUid}}

## HTTP status code 200

### Body

Media type: application/json

Type: object

Properties

- time: required (object)
  - time: required (string)

Example:

    {
      "time": {
        "time": "16:22 Sep 23, 2016"
      }
    }

## HTTP status code 400

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

## HTTP status code 401

Authentication failure

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

Examples:

example1:

    {
      "error": [
        {
          "type": 7,
          "code": 42,
          "text": "Invalid session ID",
          "args": {},
          "level": 1
        }
      ]
    }

example2:

    {
      "error": [
        {
          "type": 7,
          "code": 46,
          "text": "Permission denied",
          "args": {},
          "level": 1
        }
      ]
    }

# Secured by token

### Headers

- Authorization: required (string)

  authorization session token

  Example:

      Token 521a00e57d4a461b3e4bb0c55166f97c

#### put /system/time

Update the Lighthouse current time.

Secured by token

Lighthouse base authentication scheme

### Headers

- Authorization: required (string)

  Example:

      Token {{sessionUid}}

### Body

Media type: application/json

Type: object

Properties

- time: required (object)
  - time: required (string)

Example:

    {
      "time": {
        "time": "16:22 Sep 23, 2016"
      }
    }

## HTTP status code 200

### Body

Media type: application/json

Type: object

Properties

- time: required (object)
  - time: required (string)

Example:

    {
      "time": {
        "time": "16:22 Sep 23, 2016"
      }
    }

## HTTP status code 400

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

## HTTP status code 401

Authentication failure

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

Example:

    {
      "error": [
        {
          "type": 7,
          "code": 42,
          "text": "Invalid session ID",
          "args": {},
          "level": 1
        }
      ]
    }

## HTTP status code 404

Not found

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

## HTTP status code 500

Internal error

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

# Secured by token

### Headers

- Authorization: required (string)

  authorization session token

  Example:

      Token 521a00e57d4a461b3e4bb0c55166f97c

#### /system/config delete

delete

Delete the configuration effectively performing a system reset. The Lighthouse host will reset to factory settings and reboot. The user will need to access the device via the console to set the root password before the network will be available.

#### delete /system/config

Delete the configuration effectively performing a system reset. The Lighthouse host will reset to factory settings and reboot. The user will need to access the device via the console to set the root password before the network will be available.

Secured by token

Lighthouse base authentication scheme

### Headers

- Authorization: required (string)

  Example:

      Token {{sessionUid}}

## HTTP status code 200

The factory reset process was started successfuly.

## HTTP status code 400

Incomplete data

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

## HTTP status code 401

Authentication failure

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

Example:

    {
      "error": [
        {
          "type": 7,
          "code": 42,
          "text": "Invalid session ID",
          "args": {},
          "level": 1
        }
      ]
    }

# Secured by token

### Headers

- Authorization: required (string)

  authorization session token

  Example:

      Token 521a00e57d4a461b3e4bb0c55166f97c

#### /system/firmware_upgrade post

post

Upgrade the system firmware either by uploading a file or providing a url to download the file from. This endpoint will always return success if the firmware upgrade job was started - it occurs in the background and the state of which should be retrieved from the GET /system/firmware_upgrade_status endpoint. At least 'file' or 'firmware_url' are required.

#### post /system/firmware_upgrade

Upgrade the system firmware either by uploading a file or providing a url to download the file from. This endpoint will always return success if the firmware upgrade job was started - it occurs in the background and the state of which should be retrieved from the GET /system/firmware_upgrade_status endpoint. At least 'file' or 'firmware_url' are required.

Secured by token

Lighthouse base authentication scheme

### Headers

- Authorization: required (string)

  Example:

      Token {{sessionUid}}

### Body

Media type: multipart/form-data

Type: object

Properties

- file: (file)

  The file to be uploaded.

- firmware_url: (string)

  A url for the file to download.

- firmware_options: (string)

  Options for the firmware upgrade tool.

## HTTP status code 200

The firmware upgrade process was started.

### Body

Media type: application/json

Type: object

Properties

- system_firmware_upgrade_status: required (object)
  - state: required (one of pending, running, error, finished)
  - error_message: (one of format_error, download_error, version_error, runtime_error)

Example:

    {
      "system_firmware_upgrade_status":
        {
          "state": "running"
        }
    }

## HTTP status code 400

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

## HTTP status code 401

Authentication failure

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

Example:

    {
      "error": [
        {
          "type": 7,
          "code": 42,
          "text": "Invalid session ID",
          "args": {},
          "level": 1
        }
      ]
    }

# Secured by token

### Headers

- Authorization: required (string)

  authorization session token

  Example:

      Token 521a00e57d4a461b3e4bb0c55166f97c

#### /system/firmware_upgrade_status get

get

Retrieve the status of the most recent firmware upgrade job.

#### get /system/firmware_upgrade_status

Retrieve the status of the most recent firmware upgrade job.

Secured by token

Lighthouse base authentication scheme

### Headers

- Authorization: required (string)

  Example:

      Token {{sessionUid}}

## HTTP status code 200

The factory reset process was started successfuly.

### Body

Media type: application/json

Type: object

Properties

- system_firmware_upgrade_status: required (object)
  - state: required (one of pending, running, error, finished)
  - error_message: (one of format_error, download_error, version_error, runtime_error)

Example:

    {
      "system_firmware_upgrade_status":
        {
          "state": "error",
          "error_message": "download_error"
        }
    }

## HTTP status code 400

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

## HTTP status code 401

Authentication failure

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

Examples:

example1:

    {
      "error": [
        {
          "type": 7,
          "code": 42,
          "text": "Invalid session ID",
          "args": {},
          "level": 1
        }
      ]
    }

example2:

    {
      "error": [
        {
          "type": 7,
          "code": 46,
          "text": "Permission denied",
          "args": {},
          "level": 1
        }
      ]
    }

# Secured by token

### Headers

- Authorization: required (string)

  authorization session token

  Example:

      Token 521a00e57d4a461b3e4bb0c55166f97c

#### /system/entitlements get

Retrieve entitlement information for the Lighthouse based on the licenses applied.

get

Retrieve a list of entitlements.

#### get /system/entitlements

Retrieve a list of entitlements.

Secured by token

Lighthouse base authentication scheme

### Headers

- Authorization: required (string)

  Example:

      Token {{sessionUid}}

## HTTP status code 200

A JSON object containing entitlements information.

### Body

Media type: application/json

Type: object

Properties

- entitlements: required (array of items)

  A list of entitlements.

Example:

    {
      "entitlements": [
        {
          "id": "SKU1",
          "contact": {
            "name": "Jenny Bloggs",
            "email": "jennyb@bloggs.com"
          },
          "features": {
            "maintenance": 1546214400,
            "nodes": 20
          }
        },
        {
          "id": "SKU2",
          "contact": {
            "name": "Joe Bloggs",
            "email": "joeb@bloggs.com"
          },
          "features": {
            "maintenance": 1546214400,
            "nodes": 1578
          }
        }
      ]
    }

## HTTP status code 400

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

## HTTP status code 401

Authentication failure

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

Examples:

example1:

    {
      "error": [
        {
          "type": 7,
          "code": 42,
          "text": "Invalid session ID",
          "args": {},
          "level": 1
        }
      ]
    }

example2:

    {
      "error": [
        {
          "type": 7,
          "code": 46,
          "text": "Permission denied",
          "args": {},
          "level": 1
        }
      ]
    }

# Secured by token

### Headers

- Authorization: required (string)

  authorization session token

  Example:

      Token 521a00e57d4a461b3e4bb0c55166f97c

#### /system/licenses get post

Create and view licenses applied to the Lighthouse system.

get

Retrieve a list of license strings.

post

Apply a list of licenses.

#### get /system/licenses

Retrieve a list of license strings.

Secured by token

Lighthouse base authentication scheme

### Headers

- Authorization: required (string)

  Example:

      Token {{sessionUid}}

## HTTP status code 200

A JSON object containing raw license strings information.

### Body

Media type: application/json

Type: object

Properties

- licenses: required (array of items)

Example:

    {
      "licenses": [
        {
          "id": 1,
          "raw": "eyJhbGciOiJSUzUxMiIsInR5cCI6IkpXVCJ9.eyJlbWFpbCI6Im1pY2hhZWxmQGZpdHp5c2l0ZS5jb20iLCJzdWIiOiJ..."
        },
        {
          "id": 2,
          "raw": "eyJhbGciOiJSUzUxMiIsInR5cCI6IkpXVCJ9.eyJlbWFpbCI6Im1pY2hhZWxmQGZpdHp5c2l0ZS5jb20iLCJzdWIiOiJ..."
        }
      ]
    }

## HTTP status code 400

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

## HTTP status code 401

Authentication failure

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

Examples:

example1:

    {
      "error": [
        {
          "type": 7,
          "code": 42,
          "text": "Invalid session ID",
          "args": {},
          "level": 1
        }
      ]
    }

example2:

    {
      "error": [
        {
          "type": 7,
          "code": 46,
          "text": "Permission denied",
          "args": {},
          "level": 1
        }
      ]
    }

# Secured by token

### Headers

- Authorization: required (string)

  authorization session token

  Example:

      Token 521a00e57d4a461b3e4bb0c55166f97c

#### post /system/licenses

Apply a list of licenses.

Secured by token

Lighthouse base authentication scheme

### Headers

- Authorization: required (string)

  Example:

      Token {{sessionUid}}

### Body

Media type: application/json

Type: object

Properties

- licenses: required (array of items)

Example:

    {
      "licenses": [
        {
          "raw": "eyJhbGciOiJSUzUxMiIsInR5cCI6IkpXVCJ9.eyJlbWFpbCI6Im1pY2hhZWxmQGZpdHp5c2l0ZS5jb20iLCJzdWIiOiJ..."
        },
        {
          "raw": "eyJhbGciOiJSUzUxMiIsInR5cCI6IkpXVCJ9.eyJlbWFpbCI6Im1pY2hhZWxmQGZpdHp5c2l0ZS5jb20iLCJzdWIiOiJ..."
        }
      ]
    }

## HTTP status code 201

A JSON object containing the raw licenses that were just applied.

### Body

Media type: application/json

Type: object

Properties

- licenses: required (array of items)

Example:

    {
      "licenses": [
        {
          "id": 1,
          "raw": "eyJhbGciOiJSUzUxMiIsInR5cCI6IkpXVCJ9.eyJlbWFpbCI6Im1pY2hhZWxmQGZpdHp5c2l0ZS5jb20iLCJzdWIiOiJ..."
        },
        {
          "id": 2,
          "raw": "eyJhbGciOiJSUzUxMiIsInR5cCI6IkpXVCJ9.eyJlbWFpbCI6Im1pY2hhZWxmQGZpdHp5c2l0ZS5jb20iLCJzdWIiOiJ..."
        }
      ]
    }

## HTTP status code 400

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

## HTTP status code 401

Authentication failure

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

Example:

    {
      "error": [
        {
          "type": 7,
          "code": 42,
          "text": "Invalid session ID",
          "args": {},
          "level": 1
        }
      ]
    }

# Secured by token

### Headers

- Authorization: required (string)

  authorization session token

  Example:

      Token 521a00e57d4a461b3e4bb0c55166f97c

### /stats

Retrieve statistical information about the Lighthouse deployment.

#### /stats/nodes/connection_summary get

get

A summary of connected, pending and disconnected nodes

#### get /stats/nodes/connection_summary

A summary of connected, pending and disconnected nodes

Secured by token

Lighthouse base authentication scheme

### Headers

- Authorization: required (string)

  Example:

      Token {{sessionUid}}

## HTTP status code 200

### Body

Media type: application/json

Type: object

Properties

- connectionSummary: required (array of items)

  Items: items

  - status: required (one of connected, pending, disconnected)
  - count: required (integer)

Example:

    {
      "connectionSummary": [
        {
          "status": "connected",
          "count": 11
        },
        {
          "status": "pending",
          "count": 1
        },
        {
          "status": "disconnected",
          "count": 1
        }
      ]
    }

## HTTP status code 400

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

## HTTP status code 401

Authentication failure

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

Examples:

example1:

    {
      "error": [
        {
          "type": 7,
          "code": 42,
          "text": "Invalid session ID",
          "args": {},
          "level": 1
        }
      ]
    }

example2:

    {
      "error": [
        {
          "type": 7,
          "code": 46,
          "text": "Permission denied",
          "args": {},
          "level": 1
        }
      ]
    }

# Secured by token

### Headers

- Authorization: required (string)

  authorization session token

  Example:

      Token 521a00e57d4a461b3e4bb0c55166f97c

### /support_report

Obtain a report which will provide information about the state of the Lighthouse server. This information can be used to help analyse and understand the state of the system. The report is large and may take in the order of a minute to obtain.

#### /support_report get

get

Retrieve the support report data.

#### get /support_report

Retrieve the support report data.

Secured by token

Lighthouse base authentication scheme

### Headers

- Authorization: required (string)

  Example:

      Token {{sessionUid}}

## HTTP status code 200

System report was successfully generated and returned including a url to a corresponding zip file.

### Body

Media type: application/json

Type: object

Properties

- support_report: required (object)
  - contents: required (string)

    A new line delimited dump of the current state of the system.

  - zip_file: required (string)

    url to a zip file which contains the system report.

Example:

    {
      "support_report": {
        "contents": "*** System time ***\nMon Aug 22 11:27:29 2016\n\n\n*** Firmware Version ***\n$ sysflash_info\nsysflash info\ncurrent copy name: 'root1'\ncurrent config dev: '/dev/sda6'\ncurrent root dev: '/dev/sda5'\ncurrent boot dev: '/dev/sda2'\nother (upgradable) copy name: 'root2'\nother (upgradable) config dev: '/dev/sda8'\nother (upgradable) root dev: '/dev/sda7'\nother (upgradable) boot dev: '/dev/sda3'\nboard name: 'lighthouse-vm'\nboard rev: '1.0'\ncurrent software vendor: 'opengear'\ncurrent software product: 'ironman'\ncurrent software version: '5.0.0'\ncurrent software variant: 'release'\n\n*** Uptime ***\n359140.57 715606.84\n\n*** IP Configuration ***\n$ ifconfig\nnet1      Link encap:Ethernet  HWaddr 08:00:27:d7:1c:38  \n   ",
        "zip_file": "/api/v1/support_report?zip=1"
      }
    }

## HTTP status code 400

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

## HTTP status code 401

Authentication failure

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

Examples:

example1:

    {
      "error": [
        {
          "type": 7,
          "code": 42,
          "text": "Invalid session ID",
          "args": {},
          "level": 1
        }
      ]
    }

example2:

    {
      "error": [
        {
          "type": 7,
          "code": 46,
          "text": "Permission denied",
          "args": {},
          "level": 1
        }
      ]
    }

# Secured by token

### Headers

- Authorization: required (string)

  authorization session token

  Example:

      Token 521a00e57d4a461b3e4bb0c55166f97c

### /auth

Configure remote authentication, authorization, accounting (AAA) servers.

#### /auth get put

get

Retrieve information on AAA servers.

put

Update the AAA config.

#### get /auth

Retrieve information on AAA servers.

Secured by token

Lighthouse base authentication scheme

### Headers

- Authorization: required (string)

  Example:

      Token {{sessionUid}}

## HTTP status code 200

A JSON object containing the AAA config is returned.

### Body

Media type: application/json

Type: object

Example:

    {
      "auth": {
        "mode": "tacacs",
        "radiusPassword": "hunter2",
        "radiusAuthenticationServers": [
          {
            "id": "auth_radius_authenticationServers-2",
            "hostname": "192.168.250.1.2"
          }
        ],
        "radiusAccountingServers": [
          {
            "id": "auth_radius_accountingServers-1",
            "hostname": "192.168.250.1.2"
          }
        ],
        "tacacsService": "raccess",
        "tacacsMethod": "pap",
        "tacacsPassword": "hunter2",
        "tacacsAuthenticationServers": [
          {
            "hostname": "192.168.1.2",
            "id": "auth_tacacs_authenticationServers-2"
          }
        ],
        "ldapAuthenticationServers": [
          {
            "id": "auth_ldap_authenticationServers-1",
            "hostname": "192.168.1.2"
          }
        ],
        "ldapBaseDN": "cn=Users,dc=example,dc=com",
        "ldapBindDN": "cn=Administrator,cn=Users,dc=example,dc=com",
        "ldapUsernameAttribute": "sAMAccountName",
        "ldapBindPassword": "hunter2"
      }
    }

## HTTP status code 400

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

## HTTP status code 401

Authentication failure

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

Examples:

example1:

    {
      "error": [
        {
          "type": 7,
          "code": 42,
          "text": "Invalid session ID",
          "args": {},
          "level": 1
        }
      ]
    }

example2:

    {
      "error": [
        {
          "type": 7,
          "code": 46,
          "text": "Permission denied",
          "args": {},
          "level": 1
        }
      ]
    }

# Secured by token

### Headers

- Authorization: required (string)

  authorization session token

  Example:

      Token 521a00e57d4a461b3e4bb0c55166f97c

#### put /auth

Update the AAA config.

Secured by token

Lighthouse base authentication scheme

### Headers

- Authorization: required (string)

  Example:

      Token {{sessionUid}}

### Body

Media type: application/json

Type: object

Example:

    {
      "auth": {
        "mode": "radius",
        "radiusPassword": "hunter2",
        "radiusAuthenticationServers": [
          {
            "id": "auth_radius_authenticationServers-1",
            "hostname": "192.168.250.2"
          }
        ],
        "radiusAccountingServers": [
          {
            "id": "auth_radius_accountingServers-1",
            "hostname": "192.168.250.2"
          }
        ],
        "tacacsAuthenticationServers": [],
        "ldapAuthenticationServers": []
      }
    }

## HTTP status code 200

A JSON object containing the AAA config is returned.

### Body

Media type: application/json

Type: object

Example:

    {
      "auth": {
        "mode": "radius",
        "radiusPassword": "hunter2",
        "radiusAuthenticationServers": [
          {
            "id": "auth_radius_authenticationServers-1",
            "hostname": "192.168.250.2"
          }
        ],
        "radiusAccountingServers": [
          {
            "id": "auth_radius_accountingServers-1",
            "hostname": "192.168.250.2"
          }
        ],
        "tacacsService": "raccess",
        "tacacsMethod": "pap",
        "tacacsPassword": "hunter2",
        "tacacsAuthenticationServers": [
          {
            "hostname": "192.168.1.2",
            "id": "auth_tacacs_authenticationServers-2"
          }
        ],
        "ldapAuthenticationServers": [
          {
            "id": "auth_ldap_authenticationServers-1",
            "hostname": "192.168.1.2"
          }
        ],
        "ldapBaseDN": "cn=Users,dc=example,dc=com",
        "ldapBindDN": "cn=Administrator,cn=Users,dc=example,dc=com",
        "ldapUsernameAttribute": "sAMAccountName",
        "ldapBindPassword": "hunter2"
      }
    }

## HTTP status code 400

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

## HTTP status code 401

Authentication failure

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

Example:

    {
      "error": [
        {
          "type": 7,
          "code": 42,
          "text": "Invalid session ID",
          "args": {},
          "level": 1
        }
      ]
    }

## HTTP status code 404

Not found

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

## HTTP status code 500

Internal error

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

# Secured by token

### Headers

- Authorization: required (string)

  authorization session token

  Example:

      Token 521a00e57d4a461b3e4bb0c55166f97c

### /bundles

Creating/registering and viewing the state of console server bundles.

#### /bundles get post

get

Gets bundles attached to this lighthouse instance.

The standard ember-data pagination fields {per_page} and {page} apply to this list.

{per_page} and {page} are optional but both are to be supplied if pages are requested. A bundle response will also contain a list of tags, which represents the user-editable attributes assigned to this bundle.

post

Add a new Bundle. The automatic_tags values must be valid as obtained using by a GET on endpoint /tags/node_tags.

#### get /bundles

Gets bundles attached to this lighthouse instance.

The standard ember-data pagination fields {per_page} and {page} apply to this list.

{per_page} and {page} are optional but both are to be supplied if pages are requested. A bundle response will also contain a list of tags, which represents the user-editable attributes assigned to this bundle.

Secured by token

Lighthouse base authentication scheme

### Headers

- Authorization: required (string)

  Example:

      Token {{sessionUid}}

### Query Parameters

- per_page: (integer - default: 100000)

  Number of bundles expected per page

- page: (integer - default: 1)

  The page to return (indexed from 1)

## HTTP status code 200

The array of bundles, either a full or as requested by parameters

### Body

Media type: application/json

Type: object

Example:

    {
      "bundles": [
        {
          "name": "Test Bundle 1",
          "auto_approve": 0,
          "id": "enrollment_bundles-1",
          "automatic_tags": [
            {
              "id": "enrollment_bundles_automatic_tags-1",
              "name": "Test Tag Key 1",
              "value": "Test Tag Value 1"
            },
            {
              "id": "enrollment_bundles_automatic_tags-2",
              "name": "Test Tag Key 2",
              "value": "Test Tag Value 2"
            }
          ],
          "nodes": [],
          "token": "abcdefghijklmnop",
          "manifest_link": "/api/v1/bundles/enrollment_bundles-1/manifest"
        },
        {
          "name": "Test Bundle 2",
          "auto_approve": 0,
          "id": "enrollment_bundles-2",
          "automatic_tags": [
            {
              "id": "enrollment_bundles_automatic_tags-3",
              "name": "Test Tag Key A",
              "value": "Test Tag Value B"
            }
          ],
          "nodes": [],
          "token": "1234567890",
          "manifest_link": "/api/v1/bundles/enrollment_bundles-2/manifest"
        }
      ],
      "meta": {
        "total_pages": 1
      }
    }

## HTTP status code 400

Invalid request, missing or incorrect page/per_page

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

Example:

    {
      "error": [
        {
          "type": 4,
          "code": 39,
          "text": "Invalid request body",
          "args": {},
          "level": 1
        }
      ]
    }

## HTTP status code 401

Authentication failure

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

Examples:

example1:

    {
      "error": [
        {
          "type": 7,
          "code": 42,
          "text": "Invalid session ID",
          "args": {},
          "level": 1
        }
      ]
    }

example2:

    {
      "error": [
        {
          "type": 7,
          "code": 46,
          "text": "Permission denied",
          "args": {},
          "level": 1
        }
      ]
    }

## HTTP status code 404

Invalid request, Incomplete data, Bundle not found, Failure during retrieval of bundles

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

## HTTP status code 500

Failed to read bundles.

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

# Secured by token

### Headers

- Authorization: required (string)

  authorization session token

  Example:

      Token 521a00e57d4a461b3e4bb0c55166f97c

#### post /bundles

Add a new Bundle. The automatic_tags values must be valid as obtained using by a GET on endpoint /tags/node_tags.

Secured by token

Lighthouse base authentication scheme

### Headers

- Authorization: required (string)

  Example:

      Token {{sessionUid}}

### Body

Media type: application/json

Type: object

Example:

    {
      "bundle": {
        "name": "PrimaryBundle",
        "auto_approve": true,
        "token": "ABCD1234567",
        "automatic_tags": [
          {
            "name": "Location",
            "value": "Brisbane"
          }
        ]
      }
    }

## HTTP status code 200

Bundle added successfully.

### Body

Media type: application/json

Type: object

Example:

    {
      "bundle": {
        "name": "Test Bundle 1",
        "auto_approve": 0,
        "id": "enrollment_bundles-1",
        "automatic_tags": [
          {
            "id": "enrollment_bundles_automatic_tags-1",
            "name": "Test Tag Key 1",
            "value": "Test Tag Value 1"
          },
          {
            "id": "enrollment_bundles_automatic_tags-2",
            "name": "Test Tag Key 2",
            "value": "Test Tag Value 2"
          }
        ],
        "nodes": [],
        "token": "abcdefghijklmnop"
      }
    }

## HTTP status code 400

Invalid request, or error with supplied data

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

Example:

    {
      "error": [
        {
          "type": 4,
          "code": 39,
          "text": "Invalid request body",
          "args": {},
          "level": 1
        }
      ]
    }

## HTTP status code 401

Authentication failure

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

Example:

    {
      "error": [
        {
          "type": 7,
          "code": 42,
          "text": "Invalid session ID",
          "args": {},
          "level": 1
        }
      ]
    }

## HTTP status code 404

Redirect to new bundle session

### Body

Media type: application/json

Type: object

Example:

    {
      "message": "Redirecting to new bundle at {redirect-url}"
    }

## HTTP status code 500

Unexpected error.

### Body

Media type: application/json

Type: object

Example:

    {
      "error": [
        {
          "type": 2,
          "code": 26,
          "text": "Duplicate 'name' fields with value 'test'",
          "args": {
            "value": "test",
            "uuid": "root-1-@bundles",
            "field": "name"
          },
          "level": 1
        },
        {
          "type": 1,
          "code": 33,
          "text": "Push command failed",
          "args": {},
          "level": 1
        }
      ]
    }

# Secured by token

### Headers

- Authorization: required (string)

  authorization session token

  Example:

      Token 521a00e57d4a461b3e4bb0c55166f97c

#### /bundles/{id} get put

get

Find a bundle by unique ID

put

Update a bundle

#### get /bundles/{id}

Find a bundle by unique ID

Secured by token

Lighthouse base authentication scheme

### URI Parameters

- id: required (string)

  ID of bundle to fetch

  Example:

      enrollment_bundles-1

### Headers

- Authorization: required (string)

  authorization session token

  Example:

      Token {{sessionUid}}

## HTTP status code 200

The requested bundle

### Body

Media type: application/json

Type: object

Properties

- bundle: required (object)
  - id: required (string)
  - name: required (string)
  - auto_approve: required (boolean)
  - token: required (string)
  - automatic_tags: required (array of items)

    Items: items

    - id: required (string)
    - name: required (string)
    - value: required (string)
  - nodes: required (array of items)
  - manifest_link: required (string)

Example:

    {
      "bundle": {
        "name": "Test Bundle 1",
        "auto_approve": false,
        "id": "enrollment_bundles-1",
        "automatic_tags": [
          {
            "id": "enrollment_bundles_automatic_tags-1",
            "name": "Test Tag Key 1",
            "value": "Test Tag Value 1"
          },
          {
            "id": "enrollment_bundles_automatic_tags-2",
            "name": "Test Tag Key 2",
            "value": "Test Tag Value 2"
          }
        ],
        "nodes": [],
        "token": "abcdefghijklmnop",
        "manifest_link": "/api/v1/bundles/enrollment_bundles-1/manifest"
      }
    }

## HTTP status code 400

Invalid request, or error with supplied data

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

Example:

    {
      "error": [
        {
          "type": 4,
          "code": 39,
          "text": "Invalid request body",
          "args": {},
          "level": 1
        }
      ]
    }

## HTTP status code 401

Authentication failure

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

Examples:

example1:

    {
      "error": [
        {
          "type": 7,
          "code": 42,
          "text": "Invalid session ID",
          "args": {},
          "level": 1
        }
      ]
    }

example2:

    {
      "error": [
        {
          "type": 7,
          "code": 46,
          "text": "Permission denied",
          "args": {},
          "level": 1
        }
      ]
    }

## HTTP status code 404

Bundle does not exist

# Secured by token

### Headers

- Authorization: required (string)

  authorization session token

  Example:

      Token 521a00e57d4a461b3e4bb0c55166f97c

#### put /bundles/{id}

Update a bundle

Secured by token

Lighthouse base authentication scheme

### URI Parameters

- id: required (string)

  ID of bundle to fetch

  Example:

      enrollment_bundles-1

### Headers

- Authorization: required (string)

  Example:

      Token {{sessionUid}}

### Body

Media type: application/json

Type: object

Example:

    {
      "bundle": {
        "name": "PrimaryBundle",
        "auto_approve": true,
        "token": "BCDEFGHIJKLMNOPQRSTUVWXYZ123456",
        "automatic_tags": [
          {
            "name": "Location",
            "value": "Brisbane"
          }
        ]
      }
    }

## HTTP status code 200

The updated bundle

### Body

Media type: application/json

Type: object

Properties

- bundle: required (object)
  - id: required (string)
  - name: required (string)
  - auto_approve: required (boolean)
  - token: required (string)
  - automatic_tags: required (array of items)

    Items: items

    - id: required (string)
    - name: required (string)
    - value: required (string)
  - nodes: required (array of items)
  - manifest_link: required (string)

Example:

    {
      "bundle": {
        "name": "PrimaryBundle",
        "auto_approve": true,
        "id": "enrollment_bundles-3",
        "automatic_tags": [
          {
            "id": "enrollment_bundles_automatic_tags-4",
            "name": "Location",
            "value": "Brisbane"
          }
        ],
        "nodes": [],
        "token": "BCDEFGHIJKLMNOPQRSTUVWXYZ123456",
        "manifest_link": ""
      }
    }

## HTTP status code 400

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

## HTTP status code 401

Authentication failure

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

Example:

    {
      "error": [
        {
          "type": 7,
          "code": 42,
          "text": "Invalid session ID",
          "args": {},
          "level": 1
        }
      ]
    }

## HTTP status code 404

Not found

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

## HTTP status code 500

Internal error

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

# Secured by token

### Headers

- Authorization: required (string)

  authorization session token

  Example:

      Token 521a00e57d4a461b3e4bb0c55166f97c

#### /bundles/{id}/automatic_tags get post

Each bundle can have a list of tags associated with it. These tags are references to a global list of tags. Any node that enrolls against a specific bundle will automatically be assigned these tags and specified values at time of enrollment.

get

Get the list of all automatic tags for this bundle.

post

Create and associate a new tag with the bundle. If the tag exists update or set the value. If no value is given, or the value is empty, the value will be set to null.

#### get /bundles/{id}/automatic_tags

Get the list of all automatic tags for this bundle.

Secured by token

Lighthouse base authentication scheme

### URI Parameters

- id: required (string)

  ID of bundle to fetch

  Example:

      enrollment_bundles-1

### Headers

- Authorization: required (string)

  Example:

      Token {{sessionUid}}

## HTTP status code 200

The list of automatic tags for the bundle

### Body

Media type: application/json

Type: object

Example:

    {
      "tags": [
        {
          "id": "bundle_tags-1",
          "name": "myTag",
          "value": "my tag value"
        },
        {
          "id": "bundle_tags-2",
          "name": "myTag2",
          "value": ""
        },
        {
          "id": "bundle_tags-3",
          "name": "myTag3",
          "value": "another value"
        }
      ]
    }

## HTTP status code 400

Incomplete data.

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

## HTTP status code 401

Authentication failure

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

Examples:

example1:

    {
      "error": [
        {
          "type": 7,
          "code": 42,
          "text": "Invalid session ID",
          "args": {},
          "level": 1
        }
      ]
    }

example2:

    {
      "error": [
        {
          "type": 7,
          "code": 46,
          "text": "Permission denied",
          "args": {},
          "level": 1
        }
      ]
    }

## HTTP status code 404

Bundle does not exist.

# Secured by token

### Headers

- Authorization: required (string)

  authorization session token

  Example:

      Token 521a00e57d4a461b3e4bb0c55166f97c

#### post /bundles/{id}/automatic_tags

Create and associate a new tag with the bundle. If the tag exists update or set the value. If no value is given, or the value is empty, the value will be set to null.

Secured by token

Lighthouse base authentication scheme

### URI Parameters

- id: required (string)

  ID of bundle to fetch

  Example:

      enrollment_bundles-1

### Headers

- Authorization: required (string)

  Example:

      Token {{sessionUid}}

### Body

Media type: application/json

Type: object

Example:

    {
      "tag": {
        "name:\"Location\"": null,
        "value": "New York"
      }
    }

## HTTP status code 200

### Body

Media type: application/json

Type: object

Example:

    {
      "automatic_tag": {
        "id": "bundle_tags-1",
        "name": "Location",
        "value": "New York"
      }
    }

## HTTP status code 400

Invalid request: body is not json or does not conform to required json schema. Incomplete data: name item missing.

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

## HTTP status code 401

Authentication failure

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

Example:

    {
      "error": [
        {
          "type": 7,
          "code": 42,
          "text": "Invalid session ID",
          "args": {},
          "level": 1
        }
      ]
    }

## HTTP status code 404

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

# Secured by token

### Headers

- Authorization: required (string)

  authorization session token

  Example:

      Token 521a00e57d4a461b3e4bb0c55166f97c

#### /bundles/{id}/automatic_tags/{tag_value_id} get delete put

get

Retrieves a bundle's tag by id.

delete

Delete a bundle's tag by id.

put

Update tag information for {bundle_tag_id} in bundle {id}

#### get /bundles/{id}/automatic_tags/{tag_value_id}

Retrieves a bundle's tag by id.

Secured by token

Lighthouse base authentication scheme

### URI Parameters

- id: required (string)

  ID of bundle to fetch

  Example:

      enrollment_bundles-1

- tag_value_id: required (string)

  Identifier for unique tag within given bundle

  Example:

      bundles_tags-1

### Headers

- Authorization: required (string)

  Example:

      Token {{sessionUid}}

## HTTP status code 200

Tag information in bundle with {id} and tag identification {tag_value_id} successfully retrieved.

### Body

Media type: application/json

Type: object

Example:

    {
      "automatic_tag": {
        "id": "bundle_tags-1",
        "name": "Location",
        "value": "New York"
      }
    }

## HTTP status code 400

Invalid request: body is not json or does not conform to required json schema. Incomplete data: bundle id, or tag_value_id parameter missing.

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

## HTTP status code 401

Authentication failure

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

Examples:

example1:

    {
      "error": [
        {
          "type": 7,
          "code": 42,
          "text": "Invalid session ID",
          "args": {},
          "level": 1
        }
      ]
    }

example2:

    {
      "error": [
        {
          "type": 7,
          "code": 46,
          "text": "Permission denied",
          "args": {},
          "level": 1
        }
      ]
    }

## HTTP status code 404

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

# Secured by token

### Headers

- Authorization: required (string)

  authorization session token

  Example:

      Token 521a00e57d4a461b3e4bb0c55166f97c

#### delete /bundles/{id}/automatic_tags/{tag_value_id}

Delete a bundle's tag by id.

Secured by token

Lighthouse base authentication scheme

### URI Parameters

- id: required (string)

  ID of bundle to fetch

  Example:

      enrollment_bundles-1

- tag_value_id: required (string)

  Identifier for unique tag within given bundle

  Example:

      bundles_tags-1

### Headers

- Authorization: required (string)

  Example:

      Token {{sessionUid}}

## HTTP status code 200

The {tag_value_id} tag information was deleted.

## HTTP status code 400

Invalid request: body is not json or does not conform to required json schema. Incomplete data: bundle id, or tag_value_id parameter missing.

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

## HTTP status code 401

Authentication failure

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

Example:

    {
      "error": [
        {
          "type": 7,
          "code": 42,
          "text": "Invalid session ID",
          "args": {},
          "level": 1
        }
      ]
    }

## HTTP status code 404

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

Example:

    {
      "error": [
        {
          "type": 5,
          "code": 29,
          "text": "Could not find element with UUID 'bundles_tags-0'",
          "args": {
            "uuid": "bundles_tags-0"
          },
          "level": 1
        }
      ]
    }

# Secured by token

### Headers

- Authorization: required (string)

  authorization session token

  Example:

      Token 521a00e57d4a461b3e4bb0c55166f97c

#### put /bundles/{id}/automatic_tags/{tag_value_id}

Update tag information for {bundle_tag_id} in bundle {id}

Secured by token

Lighthouse base authentication scheme

### URI Parameters

- id: required (string)

  ID of bundle to fetch

  Example:

      enrollment_bundles-1

- tag_value_id: required (string)

  Identifier for unique tag within given bundle

  Example:

      bundles_tags-1

### Headers

- Authorization: required (string)

  Example:

      Token {{sessionUid}}

### Body

Media type: application/json

Type: object

Example:

    {
      "automatic_tag": {
        "name": "Location",
        "value": "USA.NewYork"
      }
    }

## HTTP status code 200

The {tag_value_id} tag information was updated.

## HTTP status code 400

Invalid request: body is not json or does not conform to required json schema. Incomplete data: bundle id, or tag_value_id parameter missing.

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

## HTTP status code 401

Authentication failure

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

Example:

    {
      "error": [
        {
          "type": 7,
          "code": 42,
          "text": "Invalid session ID",
          "args": {},
          "level": 1
        }
      ]
    }

## HTTP status code 404

Not found

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

Example:

    {
      "error": [
        {
          "type": 5,
          "code": 29,
          "text": "Could not find element with UUID 'bundles_tags-0'",
          "args": {
            "uuid": "bundles_tags-0"
          },
          "level": 1
        }
      ]
    }

## HTTP status code 500

Internal error

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

# Secured by token

### Headers

- Authorization: required (string)

  authorization session token

  Example:

      Token 521a00e57d4a461b3e4bb0c55166f97c

#### /bundles/{id}/manifest get

get

Download the bundle specific manifest file

#### get /bundles/{id}/manifest

Download the bundle specific manifest file

Secured by token

Lighthouse base authentication scheme

### URI Parameters

- id: required (string)

  ID of bundle to fetch

  Example:

      enrollment_bundles-1

### Headers

- Authorization: required (string)

  Example:

      Token {{sessionUid}}

## HTTP status code 200

The manifest file

### Body

Media type: text/plain

Type: object

Example:

    address=192.168.0.1 bundle=bundle1 password=bundle1Token

## HTTP status code 400

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

## HTTP status code 401

Authentication failure

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

Examples:

example1:

    {
      "error": [
        {
          "type": 7,
          "code": 42,
          "text": "Invalid session ID",
          "args": {},
          "level": 1
        }
      ]
    }

example2:

    {
      "error": [
        {
          "type": 7,
          "code": 46,
          "text": "Permission denied",
          "args": {},
          "level": 1
        }
      ]
    }

## HTTP status code 404

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

Example:

    {
      "error": [
        {
          "type": 5,
          "code": 29,
          "text": "Could not find element with UUID 'enrollment_bundles-1'",
          "args": {
            "uuid": "enrollment_bundles-1"
          },
          "level": 1
        }
      ]
    }

# Secured by token

### Headers

- Authorization: required (string)

  authorization session token

  Example:

      Token 521a00e57d4a461b3e4bb0c55166f97c

### /users

Retrieve and update user information.

#### /users get post

get

Retrieve a list of users.

post

Create a new User data in the config.

#### get /users

Retrieve a list of users.

Secured by token

Lighthouse base authentication scheme

### Headers

- Authorization: required (string)

  Example:

      Token {{sessionUid}}

## HTTP status code 200

A JSON object containing Users Config is returned.

### Body

Media type: application/json

Type: object

Example:

    {
      "users": [
        {
          "username": "root",
          "enabled": true,
          "id": "users-1",
          "groups": [
            "groups-1",
            "groups-2"
          ],
          "rights": {
            "delete": true,
            "modify": true
          }
        },
        {
          "username": "username-1",
          "enabled": false,
          "description": "Description- 1",
          "id": "users-2",
          "groups": [
            "groups-1",
            "groups-2"
          ],
          "rights": {
            "delete": true,
            "modify": true
          }
        }
      ],
      "meta": {
        "total_pages": 1
      }
    }

## HTTP status code 400

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

## HTTP status code 401

Authentication failure

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

Examples:

example1:

    {
      "error": [
        {
          "type": 7,
          "code": 42,
          "text": "Invalid session ID",
          "args": {},
          "level": 1
        }
      ]
    }

example2:

    {
      "error": [
        {
          "type": 7,
          "code": 46,
          "text": "Permission denied",
          "args": {},
          "level": 1
        }
      ]
    }

# Secured by token

### Headers

- Authorization: required (string)

  authorization session token

  Example:

      Token 521a00e57d4a461b3e4bb0c55166f97c

#### post /users

Create a new User data in the config.

Secured by token

Lighthouse base authentication scheme

### Headers

- Authorization: required (string)

  Example:

      Token {{sessionUid}}

### Body

Media type: application/json

Type: object

Example:

    {
      "user": {
        "username": "usernamenew",
        "password": "testPassword",
        "description": "desc",
        "enabled": true,
        "groups": [
          "groups-1"
        ]
      }
    }

## HTTP status code 200

### Body

Media type: application/json

Type: object

Properties

- user: required (object)
  - id: required (string)
  - username: required (string)
  - description: required (string)
  - enabled: required (boolean)
  - rights: required (object)
    - create: (boolean)
    - delete: required (boolean)
    - modify: required (boolean)
  - groups: required (array of )

Example:

    {
      "user": {
        "username": "usernamenew",
        "enabled": true,
        "description": "desc",
        "groups": [
          "groups-1",
          "groups-2"
        ],
        "id": "users-2",
        "rights": {
          "delete": true,
          "modify": true
        }
      }
    }

## HTTP status code 400

Failed to initiate user creation due to error in post body.

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

Example:

    {
      "error": [
        {
          "type": 2,
          "code": 12,
          "text": "Element is below the minimum allowed length of 1 character(s)",
          "args": {
            "min": "1",
            "uuid": "{60e2b0a-aafa-11e6-aca7-cb7fd0646002"
          },
          "level": 1
        },
        {
          "type": 1,
          "code": 33,
          "text": "Push command failed",
          "args": {},
          "level": 1
        }
      ]
    }

## HTTP status code 401

Authentication failed due to invalid session.

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

Example:

    {
      "error": [
        {
          "type": 7,
          "code": 42,
          "text": "Invalid session ID",
          "args": {},
          "level": 1
        }
      ]
    }

# Secured by token

### Headers

- Authorization: required (string)

  authorization session token

  Example:

      Token 521a00e57d4a461b3e4bb0c55166f97c

#### /users/{id} get put delete

get

Retrieve the User information by ID.

put

Update a User data in the config.

delete

Delete a User

#### get /users/{id}

Retrieve the User information by ID.

Secured by token

Lighthouse base authentication scheme

### URI Parameters

- id: required (string)

### Headers

- Authorization: required (string)

  Example:

      Token {{sessionUid}}

## HTTP status code 200

User exists

### Body

Media type: application/json

Type: object

Properties

- user: required (object)
  - id: required (string)
  - username: required (string)
  - description: required (string)
  - enabled: required (boolean)
  - rights: required (object)
    - create: (boolean)
    - delete: required (boolean)
    - modify: required (boolean)
  - groups: required (array of )

Example:

    {
      "user": {
        "username": "usernamenew",
        "enabled": true,
        "description": "desc",
        "id": "users-2",
        "groups": [
          "groups-1",
          "groups-2"
        ],
        "rights": {
          "delete": true,
          "modify": true
        }
      }
    }

## HTTP status code 400

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

## HTTP status code 401

Authentication failed due to invalid session.

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

Examples:

example1:

    {
      "error": [
        {
          "type": 7,
          "code": 42,
          "text": "Invalid session ID",
          "args": {},
          "level": 1
        }
      ]
    }

example2:

    {
      "error": [
        {
          "type": 7,
          "code": 46,
          "text": "Permission denied",
          "args": {},
          "level": 1
        }
      ]
    }

    {
      "error": [
        {
          "type": 7,
          "code": 42,
          "text": "Invalid session ID",
          "args": {},
          "level": 1
        }
      ]
    }

## HTTP status code 404

User does not exist. User Not Found.

### Body

Media type: application/json

Type: object

Example:

    {
      "error": [
        {
          "type": 5,
          "code": 29,
          "text": "Could not find element with UUID 'users-2'",
          "args": {
            "uuid": "users-2"
          },
          "level": 1
        }
      ]
    }

# Secured by token

### Headers

- Authorization: required (string)

  authorization session token

  Example:

      Token 521a00e57d4a461b3e4bb0c55166f97c

#### put /users/{id}

Update a User data in the config.

Secured by token

Lighthouse base authentication scheme

### URI Parameters

- id: required (string)

### Headers

- Authorization: required (string)

  Example:

      Token {{sessionUid}}

### Body

Media type: application/json

Type: object

Properties

- user: required (object)

Example:

    {
      "user": {
        "username": "usernamenew",
        "password": "UpdatedPassword",
        "description": "Updated description",
        "groups": [
          "groups-1",
          "groups-2"
        ],
        "enabled": true
      }
    }

## HTTP status code 200

User has been Updated.

### Body

Media type: application/json

Type: object

Properties

- user: required (object)
  - id: required (string)
  - username: required (string)
  - description: required (string)
  - enabled: required (boolean)
  - rights: required (object)
    - create: (boolean)
    - delete: required (boolean)
    - modify: required (boolean)
  - groups: required (array of )

Example:

    {
      "user": {
        "username": "usernamenew",
        "enabled": true,
        "description": "Updated description",
        "groups": [
          "groups-1",
          "groups-2"
        ],
        "id": "users-2",
        "rights": {
          "delete": true,
          "modify": true
        }
      }
    }

## HTTP status code 400

Invalid request

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

Example:

    {
      "error": [
        {
          "type": 4,
          "code": 39,
          "text": "Invalid request body",
          "args": {},
          "level": 1
        }
      ]
    }

## HTTP status code 401

Authentication failure

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

Example:

    {
      "error": [
        {
          "type": 7,
          "code": 42,
          "text": "Invalid session ID",
          "args": {},
          "level": 1
        }
      ]
    }

## HTTP status code 404

Not found

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

## HTTP status code 500

Internal error

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

# Secured by token

### Headers

- Authorization: required (string)

  authorization session token

  Example:

      Token 521a00e57d4a461b3e4bb0c55166f97c

#### delete /users/{id}

Delete a User

Secured by token

Lighthouse base authentication scheme

### URI Parameters

- id: required (string)

### Headers

- Authorization: required (string)

  Example:

      Token {{sessionUid}}

## HTTP status code 200

User deleted

### Body

Media type: application/json

Type: object

Properties

- user: required (object)
  - id: required (string)
  - username: required (string)
  - description: required (string)
  - enabled: required (boolean)
  - rights: required (object)
    - create: (boolean)
    - delete: required (boolean)
    - modify: required (boolean)
  - groups: required (array of )

Example:

    {
      "user": {
        "username": "Updatedusername",
        "enabled": true,
        "description": "desc",
        "groups": [
          "groups-1",
          "groups-2"
        ],
        "id": "users-2",
        "rights": {
          "delete": true,
          "modify": true
        }
      }
    }

## HTTP status code 400

Incomplete data

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

## HTTP status code 401

Authentication failure

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

Example:

    {
      "error": [
        {
          "type": 7,
          "code": 42,
          "text": "Invalid session ID",
          "args": {},
          "level": 1
        }
      ]
    }

## HTTP status code 404

User did not exist

### Body

Media type: application/json

Type: object

Example:

    {
      "error": [
        {
          "type": 5,
          "code": 29,
          "text": "Could not find element with UUID 'users-2'",
          "args": {
            "uuid": "users-2"
          },
          "level": 1
        }
      ]
    }

# Secured by token

### Headers

- Authorization: required (string)

  authorization session token

  Example:

      Token 521a00e57d4a461b3e4bb0c55166f97c

### /groups

Retrieve or update group information.

#### /groups get post

get

Retrieve a list of groups.

post

Create a new Group in the config.

#### get /groups

Retrieve a list of groups.

Secured by token

Lighthouse base authentication scheme

### Headers

- Authorization: required (string)

  Example:

      Token {{sessionUid}}

## HTTP status code 200

A JSON object containing Groups config is returned.

### Body

Media type: application/json

Type: object

Example:

    {
      "groups": [
        {
          "id": "groups-1",
          "groupname": "admin",
          "description": "The admin group",
          "mode": "global",
          "global_roles": "LighthouseAdmin",
          "members": {},
          "rights": {
            "delete": false,
            "modify": true
          }
        },
        {
          "id": "groups-2",
          "groupname": "smartgroup-admin",
          "description": null,
          "mode": "smart_group",
          "smart_group_roles": "NodeAdmin",
          "smart_group": "my_smart_group",
          "members": {},
          "rights": {
            "delete": false,
            "modify": true
          }
        }
      ],
      "meta": {
        "total_pages": 1
      }
    }

## HTTP status code 400

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

## HTTP status code 401

Authentication failure

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

Examples:

example1:

    {
      "error": [
        {
          "type": 7,
          "code": 42,
          "text": "Invalid session ID",
          "args": {},
          "level": 1
        }
      ]
    }

example2:

    {
      "error": [
        {
          "type": 7,
          "code": 46,
          "text": "Permission denied",
          "args": {},
          "level": 1
        }
      ]
    }

# Secured by token

### Headers

- Authorization: required (string)

  authorization session token

  Example:

      Token 521a00e57d4a461b3e4bb0c55166f97c

#### post /groups

Create a new Group in the config.

Secured by token

Lighthouse base authentication scheme

### Headers

- Authorization: required (string)

  Example:

      Token {{sessionUid}}

### Body

Media type: application/json

Example:

    {
      "group": {
        "groupname": "my_node_group",
        "description": "to hold the node admin users",
        "mode": "smart_group",
        "smart_group_roles": "NodeAdmin",
        "smart_group": "nodes_groups_1"
      }
    }

## HTTP status code 201

### Body

Media type: application/json

Example:

    {
      "group": {
        "id": "groups-4",
        "groupname": "netgrp",
        "mode": "smart_group",
        "members": [],
        "smart_group_roles": "NodeAdmin",
        "smart_group": "my_smartgroup",
        "rights": {
          "modify": true,
          "delete": true
        }
      }
    }

## HTTP status code 400

Failed to initiate group creation due to error in post body.

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

Example:

    {
      "error": [
        {
          "type": 2,
          "code": 26,
          "text": "Duplicate 'groupname' fields with value 'netgrp'",
          "args": {
            "value": "netgrp",
            "uuid": "root-1-@groups",
            "field": "groupname"
          },
          "level": 1
        },
        {
          "type": 1,
          "code": 33,
          "text": "Push command failed",
          "args": {},
          "level": 1
        }
      ]
    }

## HTTP status code 401

Authentication failed due to invalid session.

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

Example:

    {
      "error": [
        {
          "type": 7,
          "code": 42,
          "text": "Invalid session ID",
          "args": {},
          "level": 1
        }
      ]
    }

# Secured by token

### Headers

- Authorization: required (string)

  authorization session token

  Example:

      Token 521a00e57d4a461b3e4bb0c55166f97c

#### /groups/{id} get put delete

get

Retrieve the Group information by ID.

put

Update a Group data in the config.

delete

Delete a Group

#### get /groups/{id}

Retrieve the Group information by ID.

Secured by token

Lighthouse base authentication scheme

### URI Parameters

- id: required (string)

### Headers

- Authorization: required (string)

  Example:

      Token {{sessionUid}}

## HTTP status code 200

Group exists

### Body

Media type: application/json

Example:

    {
      "group": {
        "groupname": "netgrp2",
        "id": "groups-6",
        "mode": "global",
        "members": [],
        "global_roles": "NodeUser",
        "rights": {
          "delete": false,
          "modify": true
        }
      }
    }

## HTTP status code 400

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

## HTTP status code 401

Authentication failed due to invalid session.

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

Examples:

example1:

    {
      "error": [
        {
          "type": 7,
          "code": 42,
          "text": "Invalid session ID",
          "args": {},
          "level": 1
        }
      ]
    }

example2:

    {
      "error": [
        {
          "type": 7,
          "code": 46,
          "text": "Permission denied",
          "args": {},
          "level": 1
        }
      ]
    }

    {
      "error": [
        {
          "type": 7,
          "code": 42,
          "text": "Invalid session ID",
          "args": {},
          "level": 1
        }
      ]
    }

## HTTP status code 404

Group does not exist. Group Not Found.

### Body

Media type: application/json

Type: object

Example:

    {
      "error": [
        {
          "type": 5,
          "code": 29,
          "text": "Could not find element with UUID 'groups-59'",
          "args": {
            "uuid": "groups-59"
          },
          "level": 1
        }
      ]
    }

# Secured by token

### Headers

- Authorization: required (string)

  authorization session token

  Example:

      Token 521a00e57d4a461b3e4bb0c55166f97c

#### put /groups/{id}

Update a Group data in the config.

Secured by token

Lighthouse base authentication scheme

### URI Parameters

- id: required (string)

### Headers

- Authorization: required (string)

  Example:

      Token {{sessionUid}}

### Body

Media type: application/json

Example:

    {
      "group": {
        "groupname": "netgrp2",
        "description": "my new description",
        "mode": "global",
        "global_roles": "NodeUser"
      }
    }

## HTTP status code 200

Group has been updated.

### Body

Media type: application/json

Example:

    {
      "group": {
        "groupname": "netgrp2",
        "description": "my new description",
        "id": "groups-6",
        "mode": "global",
        "members": [],
        "global_roles": "NodeUser",
        "rights": {
          "delete": false,
          "modify": true
        }
      }
    }

## HTTP status code 400

Invalid request

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

Example:

    {
      "error": [
        {
          "type": 4,
          "code": 39,
          "text": "Invalid request body",
          "args": {},
          "level": 1
        }
      ]
    }

## HTTP status code 401

Authentication failure

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

Example:

    {
      "error": [
        {
          "type": 7,
          "code": 42,
          "text": "Invalid session ID",
          "args": {},
          "level": 1
        }
      ]
    }

## HTTP status code 404

Not found

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

## HTTP status code 500

Internal error

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

# Secured by token

### Headers

- Authorization: required (string)

  authorization session token

  Example:

      Token 521a00e57d4a461b3e4bb0c55166f97c

#### delete /groups/{id}

Delete a Group

Secured by token

Lighthouse base authentication scheme

### URI Parameters

- id: required (string)

### Headers

- Authorization: required (string)

  Example:

      Token {{sessionUid}}

## HTTP status code 204

Group deleted

## HTTP status code 400

Incomplete data

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

## HTTP status code 401

Authentication failure

### Body

Media type: application/json

Type: object

Properties

- error: required (array of items)

  A list of errors

  Items: items

  - type: required (integer)
  - code: required (integer)
  - level: required (integer)
  - text: required (string)
  - args: required (object)

Example:

    {
      "error": [
        {
          "type": 7,
          "code": 42,
          "text": "Invalid session ID",
          "args": {},
          "level": 1
        }
      ]
    }

## HTTP status code 404

Group did not exist

### Body

Media type: application/json

Type: object

Example:

    {
      "error": [
        {
          "type": 5,
          "code": 29,
          "text": "Could not find element with UUID 'groups-6'",
          "args": {
            "uuid": "groups-6"
          },
          "level": 1
        }
      ]
    }

# Secured by token

### Headers

- Authorization: required (string)

  authorization session token

  Example:

      Token 521a00e57d4a461b3e4bb0c55166f97c