- 
                Notifications
    You must be signed in to change notification settings 
- Fork 0
API v0.2
Note: Prepend all endpoints with /api/v0.2
All endpoints listed in v0.1 are supported in addition to the following:
Contents:
##Beacons API ###Exposed endpoints
These endpoints offer support for connecting to and updating running beacon instances
POST /beacons/create HTTP/1.1
Content-Type: application/json
{
    "Address": "<Beacon address>",
    "Token": "<Beacon token>"
}PUT /beacons/token/{Instance} HTTP/1.1
Content-Type: application/json
"<Beacon Token>"GET /beacons/list HTTP/1.1GET /beacons/list/{Address} HTTP/1.1Connect to a new beacon:
- The beacon is located at example.com/mybeacon
- Only the [email protected]can access the beacon's token
Request:
POST /beacons/create HTTP/1.1
Content-Type: application/json
{
    "Address": "example.com/mybeacon",
    "Token": "MY_TOKEN",
    "Alias": "MyBeacon"
}Response:
HTTP/1.1 200 OKAttempting to authorize a user to access an unknown beacon:
Request:
PUT /beacons/user/bad_docker_address/[email protected] HTTP/1.1Response:
HTTP/1.1 400 BadRequest
databases: given key not foundRequesting a list of known beacons:
Request:
GET /beacons/list HTTP/1.1Response:
HTTP/1.1 200 OK
[ 
    {
        "Alias" : "MyBeacon", 
        "Address" : "127.0.0.1:5002
    }
]Requesting a list of instances connected to the beacon at 127.0.0.1:5001:
Request:
GET /beacons/list/127.0.0.1:5002 HTTP/1.1Response:
HTTP/1.1 200 OK
[
    {
        "Alias" : "MyBeacon.boot2docker",
        "InstanceAddress" : "127.0.0.1:5001/v1.12",
        "Name" : "boot2docker",
        "CanAccessDocker" : true,
        "BeaconAddress" : "127.0.0.1:5002"
    }
][TOP]
##Aliases API ###Exposed endpoints
PUT /aliases/{Alias} HTTP/1.1
"Address"Updating/creating a valid alias:
Request:
PUT /aliases/boot2docker HTTP/1.1
"127.0.0.1:5001/v1.12"Response:
HTTP/1.1 200 OKUpdating/creating an invalid alias:
Request:
PUT /aliases/boot2docker HTTP/1.1
""Response:
HTTP/1.1 400 BadRequest[TOP]
##Users API ###Exposed endpoints
GET /users/list HTTP/1.1GET /users/{Email} HTTP/1.1PUT /users/{Email} HTTP/1.1
Content-Type: application/json
{
    "AuthLevel" : 42,
    "Password" : "updated password",
    "Beacons" : {
        "127.0.0.1:5002" : 2,
        "192.168.1.100" : -1
    }
}Note all fields in the previous endpoint are optional.
POST /users/create HTTP/1.1
Content-Type: application/json
{
    "Email" : "[email protected]",
    "Password" : "N3w P@$$w0rd!!!"
}An explanation of AuthLevels
There are 2 kinds of AuthLevels associated with all users:
- User AuthLevel - this allows a user to see or modify other users
- Resource AuthLevel - this allows a user to see or modify resources (like beacons)
User AuthLevels are unbounded in size. A user me see and modify another iff their AuthLevel is strictly greater than the other user. A user may always view and modify themselves.
Resource AuthLevels are a scale of 0 - 2:
- 0 - can access the resource (e.g. get a beacon token)
- 1 - can modify a resource (e.g. change token, add/remove users)
- 2 - owner of resource (same as level 1, but only other owners may modify you)
A resource AuthLevel of -1 may also be specified in which case the user is removed from the resource.
In order to prevent users from giving themselves or other arbitrarily high AuthLevels, a user is only permitted to set AuthLevel <= their own AuthLevel (for both user and resource AuthLevels).
[TOP]
Unless otherwise noted, assume users "admin", "manager", and "employee" exist with AuthLevels 2, 1, 0 respectively and the request is made by "manager".
List all users:
Request
GET /users/list HTTP/1.1Response
HTTP/1.1 200 OK
["manager", "employee"]Get user information:
Request
GET /users/employee HTTP/1.1Response
HTTP/1.1 200 OK
{
    "AuthLevel" : 0,
    "Permissions" : {
        "Beacons" : { }
    }
}Get user information:
Request
GET /users/admin HTTP/1.1Response
HTTP/1.1 404 NotFoundUpdate a user:
Request
After the request is made "employee" has
- AuthLevel 1
- Password "updated password"
- Ownership of the beacon at "127.0.0.1:5002"
- Revoked permissions for the beacon at "129.168.1.100"
PUT /users/employee HTTP/1.1
Content-Type: application/json
{
    "AuthLevel" : 1,
    "Password" : "updated password",
    "Beacons" : {
        "127.0.0.1:5002" : 2,
        "192.168.1.100" : -1
    }
}Response
HTTP/1.1 200 OKCreate a new user
Request
POST /users/create HTTP/1.1
Content-Type: application/json
{
    "Email" : "intern",
    "Password" : "lol what is real life"
}Response
HTTP/1.1 200 OK[TOP]
##Applications API ###Exposed endpoints
For a more in-depth explanation as well as examples, please see the full applications documentation.
POST /applications/create?start=<Boolean>&forcePull=<Boolean>
{
    "Name" : "MyNewApplication",
    "Command" : { "... Docker command fields ..." },
    "Instances" : [
        "instance1.org",
        "instance2.com",
        "192.168.1.100:5000"
    ]
}POST /applications/revert/<Id>?target=<DeploymentId>&forcePull=<Boolean>POST /applications/start/<Id>POST /applications/stop/<Id>PUT /applications/update/<Id>?restart=<Boolean> [STREAM]
{
    "Command" : { "... Docker command fields ..." },
    "Add" : [ "instance3.org" ],
    "Remove" : [ "instance1.com" ]
}GET /applications/listGET /applications/list/<Id>?count=<Integer>[TOP]