148 lines
5.1 KiB
Markdown
148 lines
5.1 KiB
Markdown
# 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:
|
|
|
|
* localhost.alpha.daplie.me
|
|
* localhost.admin.daplie.me
|
|
* alpha.localhost.daplie.me
|
|
* admin.localhost.daplie.me
|
|
* localhost.daplie.invalid
|
|
|
|
All requests require an OAuth3 token in the request headers.
|
|
|
|
## 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.
|
|
|
|
|
|
## Tunnel
|
|
|
|
### Check Status
|
|
* **URL** `/api/goldilocks@daplie.com/tunnel`
|
|
* **Method** `POST`
|
|
* **Reponse**: An object whose keys are the URLs for the tunnels, and whose
|
|
properties are arrays of the tunnel tokens.
|
|
|
|
This route with return only the sessions started by the same user who is
|
|
checking the status.
|
|
|
|
### Start Tunnel
|
|
* **URL** `/api/goldilocks@daplie.com/tunnel`
|
|
* **Method** `POST`
|
|
|
|
This route will use the stored token for the user matching the request
|
|
header to request a tunnel token from the audience of the stored token.
|
|
|
|
## Socks5 Proxy
|
|
|
|
### Check Status
|
|
* **URL** `/api/goldilocks@daplie.com/socks5`
|
|
* **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
|
|
* **URL** `/api/goldilocks@daplie.com/socks5`
|
|
* **Method** `POST`
|
|
* **Response**: Same response as for the `GET` request
|
|
|
|
### Stop Proxy
|
|
* **URL** `/api/goldilocks@daplie.com/socks5`
|
|
* **Method** `DELETE`
|
|
* **Response**: Same response as for the `GET` request
|