2017-08-04 20:38:22 +00:00
|
|
|
# API
|
|
|
|
The API system is intended for use with Desktop and Mobile clients.
|
|
|
|
It must be accessed using one of the following domains as the Host header:
|
|
|
|
|
2017-10-16 18:59:45 +00:00
|
|
|
* localhost.alpha.daplie.me
|
|
|
|
* localhost.admin.daplie.me
|
|
|
|
* alpha.localhost.daplie.me
|
|
|
|
* admin.localhost.daplie.me
|
|
|
|
* localhost.daplie.invalid
|
2017-08-04 20:38:22 +00:00
|
|
|
|
2017-08-10 00:30:18 +00:00
|
|
|
All requests require an OAuth3 token in the request headers.
|
|
|
|
|
2017-10-26 18:07:27 +00:00
|
|
|
## Tokens
|
|
|
|
|
|
|
|
Some of the functionality of goldilocks requires the use of OAuth3 tokens to
|
|
|
|
perform tasks like setting DNS records. Management of these tokens can be done
|
|
|
|
using the following APIs.
|
|
|
|
|
|
|
|
### Get A Single Token
|
|
|
|
* **URL** `/api/goldilocks@daplie.com/tokens/:id`
|
|
|
|
* **Method** `GET`
|
|
|
|
* **Reponse**: The token matching the specified ID. Has the following properties.
|
|
|
|
* `id`: The hash used to identify the token. Based on several of the fields
|
|
|
|
inside the decoded token.
|
|
|
|
* `provider_uri`: The URI for the one who issued the token. Should be the same
|
|
|
|
as the `iss` field inside the decoded token.
|
|
|
|
* `client_uri`: The URI for the app authorized to use the token. Should be the
|
|
|
|
same as the `azp` field inside the decoded token.
|
|
|
|
* `scope`: The list of permissions granted by the token. Should be the same
|
|
|
|
as the `scp` field inside the decoded token.
|
|
|
|
* `access_token`: The encoded JWT.
|
|
|
|
* `token`: The decoded token.
|
|
|
|
|
|
|
|
### Get All Tokens
|
|
|
|
* **URL** `/api/goldilocks@daplie.com/tokens`
|
|
|
|
* **Method** `GET`
|
|
|
|
* **Reponse**: An array of the tokens stored. Each item looks the same as if it
|
|
|
|
had been requested individually.
|
|
|
|
|
|
|
|
### Save New Token
|
|
|
|
* **URL** `/api/goldilocks@daplie.com/tokens`
|
|
|
|
* **Method** `POST`
|
|
|
|
* **Body**: An object similar to an OAuth3 session used by the javascript
|
|
|
|
library. The only important fields are `refresh_token` or `access_token`, and
|
|
|
|
`refresh_token` will be used before `access_token`. (This is because the
|
|
|
|
`access_token` usually expires quickly, making it meaningless to store.)
|
|
|
|
* **Reponse**: The response looks the same as a single GET request.
|
|
|
|
|
|
|
|
### Delete Token
|
|
|
|
* **URL** `/api/goldilocks@daplie.com/tokens/:id`
|
|
|
|
* **Method** `DELETE`
|
|
|
|
* **Reponse**: Either `{"success":true}` or `{"success":false}`, depending on
|
|
|
|
whether the token was present before the request.
|
|
|
|
|
2017-10-16 18:59:45 +00:00
|
|
|
## Config
|
|
|
|
|
|
|
|
### Get All Settings
|
|
|
|
* **URL** `/api/goldilocks@daplie.com/config`
|
|
|
|
* **Method** `GET`
|
|
|
|
* **Reponse**: The JSON representation of the current config. See the [README.md](/README.md)
|
|
|
|
for the structure of the config.
|
|
|
|
|
|
|
|
### Get Group Setting
|
|
|
|
* **URL** `/api/goldilocks@daplie.com/config/:group`
|
|
|
|
* **Method** `GET`
|
|
|
|
* **Reponse**: The sub-object of the config relevant to the group specified in
|
|
|
|
the url (ie http, tls, tcp, etc.)
|
|
|
|
|
|
|
|
### Get Group Module List
|
|
|
|
* **URL** `/api/goldilocks@daplie.com/config/:group/modules`
|
|
|
|
* **Method** `GET`
|
|
|
|
* **Reponse**: The list of modules relevant to the group specified in the url
|
|
|
|
(ie http, tls, tcp, etc.)
|
|
|
|
|
|
|
|
### Get Specific Module
|
|
|
|
* **URL** `/api/goldilocks@daplie.com/config/:group/modules/:modId`
|
|
|
|
* **Method** `GET`
|
|
|
|
* **Reponse**: The module with the specified module ID.
|
|
|
|
|
|
|
|
### Get Domain Group
|
|
|
|
* **URL** `/api/goldilocks@daplie.com/config/domains/:domId`
|
|
|
|
* **Method** `GET`
|
|
|
|
* **Reponse**: The domains specification with the specified domains ID.
|
|
|
|
|
|
|
|
### Get Domain Group Modules
|
|
|
|
* **URL** `/api/goldilocks@daplie.com/config/domains/:domId/modules`
|
|
|
|
* **Method** `GET`
|
|
|
|
* **Reponse**: An object containing all of the relevant modules for the group
|
|
|
|
of domains.
|
|
|
|
|
|
|
|
### Get Domain Group Module Category
|
|
|
|
* **URL** `/api/goldilocks@daplie.com/config/domains/:domId/modules/:group`
|
|
|
|
* **Method** `GET`
|
|
|
|
* **Reponse**: A list of the specific category of modules for the group of domains.
|
|
|
|
|
|
|
|
### Get Specific Domain Group Module
|
|
|
|
* **URL** `/api/goldilocks@daplie.com/config/domains/:domId/modules/:group/:modId`
|
|
|
|
* **Method** `GET`
|
|
|
|
* **Reponse**: The module with the specified module ID.
|
|
|
|
|
|
|
|
|
|
|
|
### Change Settings
|
|
|
|
* **URL** `/api/goldilocks@daplie.com/config`
|
|
|
|
* **URL** `/api/goldilocks@daplie.com/config/:group`
|
|
|
|
* **Method** `POST`
|
|
|
|
* **Body**: The changes to be applied on top of the current config. See the
|
|
|
|
[README.md](/README.md) for the settings. If modules or domains are specified
|
|
|
|
they are added to the current list.
|
|
|
|
* **Reponse**: The current config. If the group is specified in the URL it will
|
|
|
|
only be the config relevant to that group.
|
|
|
|
|
|
|
|
### Add Module
|
|
|
|
* **URL** `/api/goldilocks@daplie.com/config/:group/modules`
|
|
|
|
* **URL** `/api/goldilocks@daplie.com/config/domains/:domId/modules/:group`
|
|
|
|
* **Method** `POST`
|
|
|
|
* **Body**: The module to be added. Can also be provided an array of modules
|
|
|
|
to add multiple modules in the same request.
|
|
|
|
* **Reponse**: The current list of modules.
|
|
|
|
|
|
|
|
### Add Domain Group
|
|
|
|
* **URL** `/api/goldilocks@daplie.com/config/domains`
|
|
|
|
* **Method** `POST`
|
|
|
|
* **Body**: The domains names and modules for the new domain group(s).
|
|
|
|
* **Reponse**: The current list of domain groups.
|
|
|
|
|
|
|
|
|
|
|
|
### Edit Module
|
|
|
|
* **URL** `/api/goldilocks@daplie.com/config/:group/modules/:modId`
|
|
|
|
* **URL** `/api/goldilocks@daplie.com/config/domains/:domId/modules/:group/:modId`
|
|
|
|
* **Method** `PUT`
|
|
|
|
* **Body**: The new parameters for the module.
|
|
|
|
* **Reponse**: The editted module.
|
|
|
|
|
|
|
|
### Edit Domain Group
|
|
|
|
* **URL** `/api/goldilocks@daplie.com/config/domains/:domId`
|
|
|
|
* **Method** `PUT`
|
|
|
|
* **Body**: The new domains names for the domains group. The module list cannot
|
|
|
|
be editted through this route.
|
|
|
|
* **Reponse**: The editted domain group.
|
|
|
|
|
|
|
|
|
|
|
|
### Remove Module
|
|
|
|
* **URL** `/api/goldilocks@daplie.com/config/:group/modules/:modId`
|
|
|
|
* **URL** `/api/goldilocks@daplie.com/config/domains/:domId/modules/:group/:modId`
|
|
|
|
* **Method** `DELETE`
|
|
|
|
* **Reponse**: The list of modules.
|
|
|
|
|
|
|
|
### Remove Domain Group
|
|
|
|
* **URL** `/api/goldilocks@daplie.com/config/domains/:domId`
|
|
|
|
* **Method** `DELETE`
|
|
|
|
* **Reponse**: The list of domain groups.
|
|
|
|
|
|
|
|
|
2017-08-04 20:38:22 +00:00
|
|
|
## Socks5 Proxy
|
|
|
|
|
|
|
|
### Check Status
|
2017-08-10 16:41:16 +00:00
|
|
|
* **URL** `/api/goldilocks@daplie.com/socks5`
|
2017-08-04 20:38:22 +00:00
|
|
|
* **Method** `GET`
|
|
|
|
* **Response**: The returned object will have up to two values inside
|
|
|
|
* `running`: boolean value to indicate if the proxy is currently active
|
|
|
|
* `port`: if the proxy is running this is the port it's running on
|
|
|
|
|
|
|
|
### Start Proxy
|
2017-08-10 16:41:16 +00:00
|
|
|
* **URL** `/api/goldilocks@daplie.com/socks5`
|
2017-08-04 20:38:22 +00:00
|
|
|
* **Method** `POST`
|
2017-10-16 18:59:45 +00:00
|
|
|
* **Response**: Same response as for the `GET` request
|
2017-08-04 20:38:22 +00:00
|
|
|
|
|
|
|
### Stop Proxy
|
2017-08-10 16:41:16 +00:00
|
|
|
* **URL** `/api/goldilocks@daplie.com/socks5`
|
2017-08-04 20:38:22 +00:00
|
|
|
* **Method** `DELETE`
|
2017-10-16 18:59:45 +00:00
|
|
|
* **Response**: Same response as for the `GET` request
|