mirror of
https://github.com/Websoft9/websoft9.git
synced 2024-11-29 02:50:29 +00:00
1619 lines
No EOL
67 KiB
JSON
Executable file
1619 lines
No EOL
67 KiB
JSON
Executable file
{
|
|
"openapi": "3.0.0",
|
|
"info": {
|
|
"title": "Nginx Proxy Manager API",
|
|
"version": "2.x.x"
|
|
},
|
|
"servers": [
|
|
{
|
|
"url": "http://127.0.0.1:81/api"
|
|
}
|
|
],
|
|
"paths": {
|
|
"/": {
|
|
"get": {
|
|
"operationId": "health",
|
|
"summary": "Returns the API health status",
|
|
"responses": {
|
|
"200": {
|
|
"description": "200 response",
|
|
"content": {
|
|
"application/json": {
|
|
"examples": {
|
|
"default": {
|
|
"value": {
|
|
"status": "OK",
|
|
"version": {
|
|
"major": 2,
|
|
"minor": 1,
|
|
"revision": 0
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"schema": {
|
|
"$ref": "#/components/schemas/HealthObject"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/nginx/proxy-hosts": {
|
|
"get": {
|
|
"operationId": "getProxyHosts",
|
|
"summary": "Get all proxy hosts",
|
|
"tags": [
|
|
"Proxy Hosts"
|
|
],
|
|
"security": [
|
|
{
|
|
"BearerAuth": [
|
|
"users"
|
|
]
|
|
}
|
|
],
|
|
"parameters": [
|
|
{
|
|
"in": "query",
|
|
"name": "expand",
|
|
"description": "Expansions",
|
|
"schema": {
|
|
"type": "string",
|
|
"enum": [
|
|
"access_list",
|
|
"owner",
|
|
"certificate"
|
|
]
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "200 response",
|
|
"content": {
|
|
"application/json": {
|
|
"examples": {
|
|
"default": {
|
|
"value": [
|
|
{
|
|
"id": 1,
|
|
"created_on": "2023-03-30T01:12:23.000Z",
|
|
"modified_on": "2023-03-30T02:15:40.000Z",
|
|
"owner_user_id": 1,
|
|
"domain_names": [
|
|
"aasdasdad"
|
|
],
|
|
"forward_host": "asdasd",
|
|
"forward_port": 80,
|
|
"access_list_id": 0,
|
|
"certificate_id": 0,
|
|
"ssl_forced": 0,
|
|
"caching_enabled": 0,
|
|
"block_exploits": 0,
|
|
"advanced_config": "sdfsdfsdf",
|
|
"meta": {
|
|
"letsencrypt_agree": false,
|
|
"dns_challenge": false,
|
|
"nginx_online": false,
|
|
"nginx_err": "Command failed: /usr/sbin/nginx -t -g \"error_log off;\"\nnginx: [emerg] unknown directive \"sdfsdfsdf\" in /data/nginx/proxy_host/1.conf:37\nnginx: configuration file /etc/nginx/nginx.conf test failed\n"
|
|
},
|
|
"allow_websocket_upgrade": 0,
|
|
"http2_support": 0,
|
|
"forward_scheme": "http",
|
|
"enabled": 1,
|
|
"locations": [],
|
|
"hsts_enabled": 0,
|
|
"hsts_subdomains": 0,
|
|
"owner": {
|
|
"id": 1,
|
|
"created_on": "2023-03-30T01:11:50.000Z",
|
|
"modified_on": "2023-03-30T01:11:50.000Z",
|
|
"is_deleted": 0,
|
|
"is_disabled": 0,
|
|
"email": "admin@example.com",
|
|
"name": "Administrator",
|
|
"nickname": "Admin",
|
|
"avatar": "",
|
|
"roles": [
|
|
"admin"
|
|
]
|
|
},
|
|
"access_list": null,
|
|
"certificate": null
|
|
},
|
|
{
|
|
"id": 2,
|
|
"created_on": "2023-03-30T02:11:49.000Z",
|
|
"modified_on": "2023-03-30T02:11:49.000Z",
|
|
"owner_user_id": 1,
|
|
"domain_names": [
|
|
"test.example.com"
|
|
],
|
|
"forward_host": "1.1.1.1",
|
|
"forward_port": 80,
|
|
"access_list_id": 0,
|
|
"certificate_id": 0,
|
|
"ssl_forced": 0,
|
|
"caching_enabled": 0,
|
|
"block_exploits": 0,
|
|
"advanced_config": "",
|
|
"meta": {
|
|
"letsencrypt_agree": false,
|
|
"dns_challenge": false,
|
|
"nginx_online": true,
|
|
"nginx_err": null
|
|
},
|
|
"allow_websocket_upgrade": 0,
|
|
"http2_support": 0,
|
|
"forward_scheme": "http",
|
|
"enabled": 1,
|
|
"locations": [],
|
|
"hsts_enabled": 0,
|
|
"hsts_subdomains": 0,
|
|
"owner": {
|
|
"id": 1,
|
|
"created_on": "2023-03-30T01:11:50.000Z",
|
|
"modified_on": "2023-03-30T01:11:50.000Z",
|
|
"is_deleted": 0,
|
|
"is_disabled": 0,
|
|
"email": "admin@example.com",
|
|
"name": "Administrator",
|
|
"nickname": "Admin",
|
|
"avatar": "",
|
|
"roles": [
|
|
"admin"
|
|
]
|
|
},
|
|
"access_list": null,
|
|
"certificate": null
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProxyHostsList"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"post": {
|
|
"operationId": "createProxyHost",
|
|
"summary": "Create a Proxy Host",
|
|
"tags": [
|
|
"Proxy Hosts"
|
|
],
|
|
"security": [
|
|
{
|
|
"BearerAuth": [
|
|
"users"
|
|
]
|
|
}
|
|
],
|
|
"parameters": [
|
|
{
|
|
"in": "body",
|
|
"name": "proxyhost",
|
|
"description": "Proxy Host Payload",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProxyHostObject"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"201": {
|
|
"description": "201 response",
|
|
"content": {
|
|
"application/json": {
|
|
"examples": {
|
|
"default": {
|
|
"value": {
|
|
"id": 3,
|
|
"created_on": "2023-03-30T02:31:27.000Z",
|
|
"modified_on": "2023-03-30T02:31:27.000Z",
|
|
"owner_user_id": 1,
|
|
"domain_names": [
|
|
"test2.example.com"
|
|
],
|
|
"forward_host": "1.1.1.1",
|
|
"forward_port": 80,
|
|
"access_list_id": 0,
|
|
"certificate_id": 0,
|
|
"ssl_forced": 0,
|
|
"caching_enabled": 0,
|
|
"block_exploits": 0,
|
|
"advanced_config": "",
|
|
"meta": {
|
|
"letsencrypt_agree": false,
|
|
"dns_challenge": false
|
|
},
|
|
"allow_websocket_upgrade": 0,
|
|
"http2_support": 0,
|
|
"forward_scheme": "http",
|
|
"enabled": 1,
|
|
"locations": [],
|
|
"hsts_enabled": 0,
|
|
"hsts_subdomains": 0,
|
|
"certificate": null,
|
|
"owner": {
|
|
"id": 1,
|
|
"created_on": "2023-03-30T01:11:50.000Z",
|
|
"modified_on": "2023-03-30T01:11:50.000Z",
|
|
"is_deleted": 0,
|
|
"is_disabled": 0,
|
|
"email": "admin@example.com",
|
|
"name": "Administrator",
|
|
"nickname": "Admin",
|
|
"avatar": "",
|
|
"roles": [
|
|
"admin"
|
|
]
|
|
},
|
|
"access_list": null,
|
|
"use_default_location": true,
|
|
"ipv6": true
|
|
}
|
|
}
|
|
},
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProxyHostObject"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/schema": {
|
|
"get": {
|
|
"operationId": "schema",
|
|
"responses": {
|
|
"200": {
|
|
"description": "200 response"
|
|
}
|
|
},
|
|
"summary": "Returns this swagger API schema"
|
|
}
|
|
},
|
|
"/tokens": {
|
|
"get": {
|
|
"operationId": "refreshToken",
|
|
"summary": "Refresh your access token",
|
|
"tags": [
|
|
"Tokens"
|
|
],
|
|
"security": [
|
|
{
|
|
"BearerAuth": [
|
|
"tokens"
|
|
]
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "200 response",
|
|
"content": {
|
|
"application/json": {
|
|
"examples": {
|
|
"default": {
|
|
"value": {
|
|
"expires": 1566540510,
|
|
"token": "eyJhbGciOiJSUzUxMiIsInR5cCI6IkpXVCJ9.ey...xaHKYr3Kk6MvkUjcC4"
|
|
}
|
|
}
|
|
},
|
|
"schema": {
|
|
"$ref": "#/components/schemas/TokenObject"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"post": {
|
|
"operationId": "requestToken",
|
|
"parameters": [
|
|
{
|
|
"description": "Credentials Payload",
|
|
"in": "body",
|
|
"name": "credentials",
|
|
"required": true,
|
|
"schema": {
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"identity": {
|
|
"minLength": 1,
|
|
"type": "string"
|
|
},
|
|
"scope": {
|
|
"minLength": 1,
|
|
"type": "string",
|
|
"enum": [
|
|
"user"
|
|
]
|
|
},
|
|
"secret": {
|
|
"minLength": 1,
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"identity",
|
|
"secret"
|
|
],
|
|
"type": "object"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"content": {
|
|
"application/json": {
|
|
"examples": {
|
|
"default": {
|
|
"value": {
|
|
"result": {
|
|
"expires": 1566540510,
|
|
"token": "eyJhbGciOiJSUzUxMiIsInR5cCI6IkpXVCJ9.ey...xaHKYr3Kk6MvkUjcC4"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"schema": {
|
|
"$ref": "#/components/schemas/TokenObject"
|
|
}
|
|
}
|
|
},
|
|
"description": "200 response"
|
|
}
|
|
},
|
|
"summary": "Request a new access token from credentials",
|
|
"tags": [
|
|
"Tokens"
|
|
]
|
|
}
|
|
},
|
|
"/settings": {
|
|
"get": {
|
|
"operationId": "getSettings",
|
|
"summary": "Get all settings",
|
|
"tags": [
|
|
"Settings"
|
|
],
|
|
"security": [
|
|
{
|
|
"BearerAuth": [
|
|
"settings"
|
|
]
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "200 response",
|
|
"content": {
|
|
"application/json": {
|
|
"examples": {
|
|
"default": {
|
|
"value": [
|
|
{
|
|
"id": "default-site",
|
|
"name": "Default Site",
|
|
"description": "What to show when Nginx is hit with an unknown Host",
|
|
"value": "congratulations",
|
|
"meta": {}
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"schema": {
|
|
"$ref": "#/components/schemas/SettingsList"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/settings/{settingID}": {
|
|
"get": {
|
|
"operationId": "getSetting",
|
|
"summary": "Get a setting",
|
|
"tags": [
|
|
"Settings"
|
|
],
|
|
"security": [
|
|
{
|
|
"BearerAuth": [
|
|
"settings"
|
|
]
|
|
}
|
|
],
|
|
"parameters": [
|
|
{
|
|
"in": "path",
|
|
"name": "settingID",
|
|
"schema": {
|
|
"type": "string",
|
|
"minLength": 1
|
|
},
|
|
"required": true,
|
|
"description": "Setting ID",
|
|
"example": "default-site"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "200 response",
|
|
"content": {
|
|
"application/json": {
|
|
"examples": {
|
|
"default": {
|
|
"value": {
|
|
"id": "default-site",
|
|
"name": "Default Site",
|
|
"description": "What to show when Nginx is hit with an unknown Host",
|
|
"value": "congratulations",
|
|
"meta": {}
|
|
}
|
|
}
|
|
},
|
|
"schema": {
|
|
"$ref": "#/components/schemas/SettingObject"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"put": {
|
|
"operationId": "updateSetting",
|
|
"summary": "Update a setting",
|
|
"tags": [
|
|
"Settings"
|
|
],
|
|
"security": [
|
|
{
|
|
"BearerAuth": [
|
|
"settings"
|
|
]
|
|
}
|
|
],
|
|
"parameters": [
|
|
{
|
|
"in": "path",
|
|
"name": "settingID",
|
|
"schema": {
|
|
"type": "string",
|
|
"minLength": 1
|
|
},
|
|
"required": true,
|
|
"description": "Setting ID",
|
|
"example": "default-site"
|
|
},
|
|
{
|
|
"in": "body",
|
|
"name": "setting",
|
|
"description": "Setting Payload",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/components/schemas/SettingObject"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "200 response",
|
|
"content": {
|
|
"application/json": {
|
|
"examples": {
|
|
"default": {
|
|
"value": {
|
|
"id": "default-site",
|
|
"name": "Default Site",
|
|
"description": "What to show when Nginx is hit with an unknown Host",
|
|
"value": "congratulations",
|
|
"meta": {}
|
|
}
|
|
}
|
|
},
|
|
"schema": {
|
|
"$ref": "#/components/schemas/SettingObject"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/users": {
|
|
"get": {
|
|
"operationId": "getUsers",
|
|
"summary": "Get all users",
|
|
"tags": [
|
|
"Users"
|
|
],
|
|
"security": [
|
|
{
|
|
"BearerAuth": [
|
|
"users"
|
|
]
|
|
}
|
|
],
|
|
"parameters": [
|
|
{
|
|
"in": "query",
|
|
"name": "expand",
|
|
"description": "Expansions",
|
|
"schema": {
|
|
"type": "string",
|
|
"enum": [
|
|
"permissions"
|
|
]
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "200 response",
|
|
"content": {
|
|
"application/json": {
|
|
"examples": {
|
|
"default": {
|
|
"value": [
|
|
{
|
|
"id": 1,
|
|
"created_on": "2020-01-30T09:36:08.000Z",
|
|
"modified_on": "2020-01-30T09:41:04.000Z",
|
|
"is_disabled": 0,
|
|
"email": "jc@jc21.com",
|
|
"name": "Jamie Curnow",
|
|
"nickname": "James",
|
|
"avatar": "//www.gravatar.com/avatar/6193176330f8d38747f038c170ddb193?default=mm",
|
|
"roles": [
|
|
"admin"
|
|
]
|
|
}
|
|
]
|
|
},
|
|
"withPermissions": {
|
|
"value": [
|
|
{
|
|
"id": 1,
|
|
"created_on": "2020-01-30T09:36:08.000Z",
|
|
"modified_on": "2020-01-30T09:41:04.000Z",
|
|
"is_disabled": 0,
|
|
"email": "jc@jc21.com",
|
|
"name": "Jamie Curnow",
|
|
"nickname": "James",
|
|
"avatar": "//www.gravatar.com/avatar/6193176330f8d38747f038c170ddb193?default=mm",
|
|
"roles": [
|
|
"admin"
|
|
],
|
|
"permissions": {
|
|
"visibility": "all",
|
|
"proxy_hosts": "manage",
|
|
"redirection_hosts": "manage",
|
|
"dead_hosts": "manage",
|
|
"streams": "manage",
|
|
"access_lists": "manage",
|
|
"certificates": "manage"
|
|
}
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UsersList"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"post": {
|
|
"operationId": "createUser",
|
|
"summary": "Create a User",
|
|
"tags": [
|
|
"Users"
|
|
],
|
|
"security": [
|
|
{
|
|
"BearerAuth": [
|
|
"users"
|
|
]
|
|
}
|
|
],
|
|
"parameters": [
|
|
{
|
|
"in": "body",
|
|
"name": "user",
|
|
"description": "User Payload",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UserObject"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"201": {
|
|
"description": "201 response",
|
|
"content": {
|
|
"application/json": {
|
|
"examples": {
|
|
"default": {
|
|
"value": {
|
|
"id": 2,
|
|
"created_on": "2020-01-30T09:36:08.000Z",
|
|
"modified_on": "2020-01-30T09:41:04.000Z",
|
|
"is_disabled": 0,
|
|
"email": "jc@jc21.com",
|
|
"name": "Jamie Curnow",
|
|
"nickname": "James",
|
|
"avatar": "//www.gravatar.com/avatar/6193176330f8d38747f038c170ddb193?default=mm",
|
|
"roles": [
|
|
"admin"
|
|
],
|
|
"permissions": {
|
|
"visibility": "all",
|
|
"proxy_hosts": "manage",
|
|
"redirection_hosts": "manage",
|
|
"dead_hosts": "manage",
|
|
"streams": "manage",
|
|
"access_lists": "manage",
|
|
"certificates": "manage"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UserObject"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/users/{userID}": {
|
|
"get": {
|
|
"operationId": "getUser",
|
|
"summary": "Get a user",
|
|
"tags": [
|
|
"Users"
|
|
],
|
|
"security": [
|
|
{
|
|
"BearerAuth": [
|
|
"users"
|
|
]
|
|
}
|
|
],
|
|
"parameters": [
|
|
{
|
|
"in": "path",
|
|
"name": "userID",
|
|
"schema": {
|
|
"oneOf": [
|
|
{
|
|
"type": "string",
|
|
"pattern": "^me$"
|
|
},
|
|
{
|
|
"type": "integer",
|
|
"minimum": 1
|
|
}
|
|
]
|
|
},
|
|
"required": true,
|
|
"description": "User ID or 'me' for yourself",
|
|
"example": 1
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "200 response",
|
|
"content": {
|
|
"application/json": {
|
|
"examples": {
|
|
"default": {
|
|
"value": {
|
|
"id": 1,
|
|
"created_on": "2020-01-30T09:36:08.000Z",
|
|
"modified_on": "2020-01-30T09:41:04.000Z",
|
|
"is_disabled": 0,
|
|
"email": "jc@jc21.com",
|
|
"name": "Jamie Curnow",
|
|
"nickname": "James",
|
|
"avatar": "//www.gravatar.com/avatar/6193176330f8d38747f038c170ddb193?default=mm",
|
|
"roles": [
|
|
"admin"
|
|
]
|
|
}
|
|
}
|
|
},
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UserObject"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"put": {
|
|
"operationId": "updateUser",
|
|
"summary": "Update a User",
|
|
"tags": [
|
|
"Users"
|
|
],
|
|
"security": [
|
|
{
|
|
"BearerAuth": [
|
|
"users"
|
|
]
|
|
}
|
|
],
|
|
"parameters": [
|
|
{
|
|
"in": "path",
|
|
"name": "userID",
|
|
"schema": {
|
|
"oneOf": [
|
|
{
|
|
"type": "string",
|
|
"pattern": "^me$"
|
|
},
|
|
{
|
|
"type": "integer",
|
|
"minimum": 1
|
|
}
|
|
]
|
|
},
|
|
"required": true,
|
|
"description": "User ID or 'me' for yourself",
|
|
"example": 2
|
|
},
|
|
{
|
|
"in": "body",
|
|
"name": "user",
|
|
"description": "User Payload",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UserObject"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "200 response",
|
|
"content": {
|
|
"application/json": {
|
|
"examples": {
|
|
"default": {
|
|
"value": {
|
|
"id": 2,
|
|
"created_on": "2020-01-30T09:36:08.000Z",
|
|
"modified_on": "2020-01-30T09:41:04.000Z",
|
|
"is_disabled": 0,
|
|
"email": "jc@jc21.com",
|
|
"name": "Jamie Curnow",
|
|
"nickname": "James",
|
|
"avatar": "//www.gravatar.com/avatar/6193176330f8d38747f038c170ddb193?default=mm",
|
|
"roles": [
|
|
"admin"
|
|
]
|
|
}
|
|
}
|
|
},
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UserObject"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"delete": {
|
|
"operationId": "deleteUser",
|
|
"summary": "Delete a User",
|
|
"tags": [
|
|
"Users"
|
|
],
|
|
"security": [
|
|
{
|
|
"BearerAuth": [
|
|
"users"
|
|
]
|
|
}
|
|
],
|
|
"parameters": [
|
|
{
|
|
"in": "path",
|
|
"name": "userID",
|
|
"schema": {
|
|
"type": "integer",
|
|
"minimum": 1
|
|
},
|
|
"required": true,
|
|
"description": "User ID",
|
|
"example": 2
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "200 response",
|
|
"content": {
|
|
"application/json": {
|
|
"examples": {
|
|
"default": {
|
|
"value": true
|
|
}
|
|
},
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/users/{userID}/auth": {
|
|
"put": {
|
|
"operationId": "updateUserAuth",
|
|
"summary": "Update a User's Authentication",
|
|
"tags": [
|
|
"Users"
|
|
],
|
|
"security": [
|
|
{
|
|
"BearerAuth": [
|
|
"users"
|
|
]
|
|
}
|
|
],
|
|
"parameters": [
|
|
{
|
|
"in": "path",
|
|
"name": "userID",
|
|
"schema": {
|
|
"oneOf": [
|
|
{
|
|
"type": "string",
|
|
"pattern": "^me$"
|
|
},
|
|
{
|
|
"type": "integer",
|
|
"minimum": 1
|
|
}
|
|
]
|
|
},
|
|
"required": true,
|
|
"description": "User ID or 'me' for yourself",
|
|
"example": 2
|
|
},
|
|
{
|
|
"in": "body",
|
|
"name": "user",
|
|
"description": "User Payload",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/components/schemas/AuthObject"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "200 response",
|
|
"content": {
|
|
"application/json": {
|
|
"examples": {
|
|
"default": {
|
|
"value": true
|
|
}
|
|
},
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/users/{userID}/permissions": {
|
|
"put": {
|
|
"operationId": "updateUserPermissions",
|
|
"summary": "Update a User's Permissions",
|
|
"tags": [
|
|
"Users"
|
|
],
|
|
"security": [
|
|
{
|
|
"BearerAuth": [
|
|
"users"
|
|
]
|
|
}
|
|
],
|
|
"parameters": [
|
|
{
|
|
"in": "path",
|
|
"name": "userID",
|
|
"schema": {
|
|
"type": "integer",
|
|
"minimum": 1
|
|
},
|
|
"required": true,
|
|
"description": "User ID",
|
|
"example": 2
|
|
},
|
|
{
|
|
"in": "body",
|
|
"name": "user",
|
|
"description": "Permissions Payload",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/components/schemas/PermissionsObject"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "200 response",
|
|
"content": {
|
|
"application/json": {
|
|
"examples": {
|
|
"default": {
|
|
"value": true
|
|
}
|
|
},
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/users/{userID}/login": {
|
|
"put": {
|
|
"operationId": "loginAsUser",
|
|
"summary": "Login as this user",
|
|
"tags": [
|
|
"Users"
|
|
],
|
|
"security": [
|
|
{
|
|
"BearerAuth": [
|
|
"users"
|
|
]
|
|
}
|
|
],
|
|
"parameters": [
|
|
{
|
|
"in": "path",
|
|
"name": "userID",
|
|
"schema": {
|
|
"type": "integer",
|
|
"minimum": 1
|
|
},
|
|
"required": true,
|
|
"description": "User ID",
|
|
"example": 2
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "200 response",
|
|
"content": {
|
|
"application/json": {
|
|
"examples": {
|
|
"default": {
|
|
"value": {
|
|
"token": "eyJhbGciOiJSUzI1NiIsInR...16OjT8B3NLyXg",
|
|
"expires": "2020-01-31T10:56:23.239Z",
|
|
"user": {
|
|
"id": 1,
|
|
"created_on": "2020-01-30T10:43:44.000Z",
|
|
"modified_on": "2020-01-30T10:43:44.000Z",
|
|
"is_disabled": 0,
|
|
"email": "jc@jc21.com",
|
|
"name": "Jamie Curnow",
|
|
"nickname": "James",
|
|
"avatar": "//www.gravatar.com/avatar/3c8d73f45fd8763f827b964c76e6032a?default=mm",
|
|
"roles": [
|
|
"admin"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"schema": {
|
|
"type": "object",
|
|
"description": "Login object",
|
|
"required": [
|
|
"expires",
|
|
"token",
|
|
"user"
|
|
],
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"expires": {
|
|
"description": "Token Expiry Unix Time",
|
|
"example": 1566540249,
|
|
"minimum": 1,
|
|
"type": "number"
|
|
},
|
|
"token": {
|
|
"description": "JWT Token",
|
|
"example": "eyJhbGciOiJSUzUxMiIsInR5cCI6IkpXVCJ9.ey...xaHKYr3Kk6MvkUjcC4",
|
|
"type": "string"
|
|
},
|
|
"user": {
|
|
"$ref": "#/components/schemas/UserObject"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/reports/hosts": {
|
|
"get": {
|
|
"operationId": "reportsHosts",
|
|
"summary": "Report on Host Statistics",
|
|
"tags": [
|
|
"Reports"
|
|
],
|
|
"security": [
|
|
{
|
|
"BearerAuth": [
|
|
"reports"
|
|
]
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "200 response",
|
|
"content": {
|
|
"application/json": {
|
|
"examples": {
|
|
"default": {
|
|
"value": {
|
|
"proxy": 20,
|
|
"redirection": 1,
|
|
"stream": 0,
|
|
"dead": 1
|
|
}
|
|
}
|
|
},
|
|
"schema": {
|
|
"$ref": "#/components/schemas/HostReportObject"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/audit-log": {
|
|
"get": {
|
|
"operationId": "getAuditLog",
|
|
"summary": "Get Audit Log",
|
|
"tags": [
|
|
"Audit Log"
|
|
],
|
|
"security": [
|
|
{
|
|
"BearerAuth": [
|
|
"audit-log"
|
|
]
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "200 response",
|
|
"content": {
|
|
"application/json": {
|
|
"examples": {
|
|
"default": {
|
|
"value": {
|
|
"proxy": 20,
|
|
"redirection": 1,
|
|
"stream": 0,
|
|
"dead": 1
|
|
}
|
|
}
|
|
},
|
|
"schema": {
|
|
"$ref": "#/components/schemas/HostReportObject"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"components": {
|
|
"securitySchemes": {
|
|
"BearerAuth": {
|
|
"type": "http",
|
|
"scheme": "bearer"
|
|
}
|
|
},
|
|
"schemas": {
|
|
"HealthObject": {
|
|
"type": "object",
|
|
"description": "Health object",
|
|
"additionalProperties": false,
|
|
"required": [
|
|
"status",
|
|
"version"
|
|
],
|
|
"properties": {
|
|
"status": {
|
|
"type": "string",
|
|
"description": "Healthy",
|
|
"example": "OK"
|
|
},
|
|
"version": {
|
|
"type": "object",
|
|
"description": "The version object",
|
|
"example": {
|
|
"major": 2,
|
|
"minor": 0,
|
|
"revision": 0
|
|
},
|
|
"additionalProperties": false,
|
|
"required": [
|
|
"major",
|
|
"minor",
|
|
"revision"
|
|
],
|
|
"properties": {
|
|
"major": {
|
|
"type": "integer",
|
|
"minimum": 0
|
|
},
|
|
"minor": {
|
|
"type": "integer",
|
|
"minimum": 0
|
|
},
|
|
"revision": {
|
|
"type": "integer",
|
|
"minimum": 0
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"TokenObject": {
|
|
"type": "object",
|
|
"description": "Token object",
|
|
"required": [
|
|
"expires",
|
|
"token"
|
|
],
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"expires": {
|
|
"description": "Token Expiry Unix Time",
|
|
"example": 1566540249,
|
|
"minimum": 1,
|
|
"type": "number"
|
|
},
|
|
"token": {
|
|
"description": "JWT Token",
|
|
"example": "eyJhbGciOiJSUzUxMiIsInR5cCI6IkpXVCJ9.ey...xaHKYr3Kk6MvkUjcC4",
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"ProxyHostObject": {
|
|
"type": "object",
|
|
"description": "Proxy Host object",
|
|
"required": [
|
|
"id",
|
|
"created_on",
|
|
"modified_on",
|
|
"owner_user_id",
|
|
"domain_names",
|
|
"forward_host",
|
|
"forward_port",
|
|
"access_list_id",
|
|
"certificate_id",
|
|
"ssl_forced",
|
|
"caching_enabled",
|
|
"block_exploits",
|
|
"advanced_config",
|
|
"meta",
|
|
"allow_websocket_upgrade",
|
|
"http2_support",
|
|
"forward_scheme",
|
|
"enabled",
|
|
"locations",
|
|
"hsts_enabled",
|
|
"hsts_subdomains",
|
|
"certificate",
|
|
"use_default_location",
|
|
"ipv6"
|
|
],
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"id": {
|
|
"type": "integer",
|
|
"description": "Proxy Host ID",
|
|
"minimum": 1,
|
|
"example": 1
|
|
},
|
|
"created_on": {
|
|
"type": "string",
|
|
"description": "Created Date",
|
|
"example": "2020-01-30T09:36:08.000Z"
|
|
},
|
|
"modified_on": {
|
|
"type": "string",
|
|
"description": "Modified Date",
|
|
"example": "2020-01-30T09:41:04.000Z"
|
|
},
|
|
"owner_user_id": {
|
|
"type": "integer",
|
|
"minimum": 1,
|
|
"example": 1
|
|
},
|
|
"domain_names": {
|
|
"type": "array",
|
|
"minItems": 1,
|
|
"items": {
|
|
"type": "string",
|
|
"minLength": 1
|
|
}
|
|
},
|
|
"forward_host": {
|
|
"type": "string",
|
|
"minLength": 1
|
|
},
|
|
"forward_port": {
|
|
"type": "integer",
|
|
"minimum": 1
|
|
},
|
|
"access_list_id": {
|
|
"type": "integer"
|
|
},
|
|
"certificate_id": {
|
|
"type": "integer"
|
|
},
|
|
"ssl_forced": {
|
|
"type": "integer"
|
|
},
|
|
"caching_enabled": {
|
|
"type": "integer"
|
|
},
|
|
"block_exploits": {
|
|
"type": "integer"
|
|
},
|
|
"advanced_config": {
|
|
"type": "string"
|
|
},
|
|
"meta": {
|
|
"type": "object"
|
|
},
|
|
"allow_websocket_upgrade": {
|
|
"type": "integer"
|
|
},
|
|
"http2_support": {
|
|
"type": "integer"
|
|
},
|
|
"forward_scheme": {
|
|
"type": "string"
|
|
},
|
|
"enabled": {
|
|
"type": "integer"
|
|
},
|
|
"locations": {
|
|
"type": "array"
|
|
},
|
|
"hsts_enabled": {
|
|
"type": "integer"
|
|
},
|
|
"hsts_subdomains": {
|
|
"type": "integer"
|
|
},
|
|
"certificate": {
|
|
"type": "object",
|
|
"nullable": true
|
|
},
|
|
"owner": {
|
|
"type": "object",
|
|
"nullable": true
|
|
},
|
|
"access_list": {
|
|
"type": "object",
|
|
"nullable": true
|
|
},
|
|
"use_default_location": {
|
|
"type": "boolean"
|
|
},
|
|
"ipv6": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
},
|
|
"ProxyHostsList": {
|
|
"type": "array",
|
|
"description": "Proxyn Hosts list",
|
|
"items": {
|
|
"$ref": "#/components/schemas/ProxyHostObject"
|
|
}
|
|
},
|
|
"SettingObject": {
|
|
"type": "object",
|
|
"description": "Setting object",
|
|
"required": [
|
|
"id",
|
|
"name",
|
|
"description",
|
|
"value",
|
|
"meta"
|
|
],
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"id": {
|
|
"type": "string",
|
|
"description": "Setting ID",
|
|
"minLength": 1,
|
|
"example": "default-site"
|
|
},
|
|
"name": {
|
|
"type": "string",
|
|
"description": "Setting Display Name",
|
|
"minLength": 1,
|
|
"example": "Default Site"
|
|
},
|
|
"description": {
|
|
"type": "string",
|
|
"description": "Meaningful description",
|
|
"minLength": 1,
|
|
"example": "What to show when Nginx is hit with an unknown Host"
|
|
},
|
|
"value": {
|
|
"description": "Value in almost any form",
|
|
"example": "congratulations",
|
|
"oneOf": [
|
|
{
|
|
"type": "string",
|
|
"minLength": 1
|
|
},
|
|
{
|
|
"type": "integer"
|
|
},
|
|
{
|
|
"type": "object"
|
|
},
|
|
{
|
|
"type": "number"
|
|
},
|
|
{
|
|
"type": "array"
|
|
}
|
|
]
|
|
},
|
|
"meta": {
|
|
"description": "Extra metadata",
|
|
"example": {},
|
|
"type": "object"
|
|
}
|
|
}
|
|
},
|
|
"SettingsList": {
|
|
"type": "array",
|
|
"description": "Setting list",
|
|
"items": {
|
|
"$ref": "#/components/schemas/SettingObject"
|
|
}
|
|
},
|
|
"UserObject": {
|
|
"type": "object",
|
|
"description": "User object",
|
|
"required": [
|
|
"id",
|
|
"created_on",
|
|
"modified_on",
|
|
"is_disabled",
|
|
"email",
|
|
"name",
|
|
"nickname",
|
|
"avatar",
|
|
"roles"
|
|
],
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"id": {
|
|
"type": "integer",
|
|
"description": "User ID",
|
|
"minimum": 1,
|
|
"example": 1
|
|
},
|
|
"created_on": {
|
|
"type": "string",
|
|
"description": "Created Date",
|
|
"example": "2020-01-30T09:36:08.000Z"
|
|
},
|
|
"modified_on": {
|
|
"type": "string",
|
|
"description": "Modified Date",
|
|
"example": "2020-01-30T09:41:04.000Z"
|
|
},
|
|
"is_disabled": {
|
|
"type": "integer",
|
|
"minimum": 0,
|
|
"maximum": 1,
|
|
"description": "Is user Disabled (0 = false, 1 = true)",
|
|
"example": 0
|
|
},
|
|
"email": {
|
|
"type": "string",
|
|
"description": "Email",
|
|
"minLength": 3,
|
|
"example": "jc@jc21.com"
|
|
},
|
|
"name": {
|
|
"type": "string",
|
|
"description": "Name",
|
|
"minLength": 1,
|
|
"example": "Jamie Curnow"
|
|
},
|
|
"nickname": {
|
|
"type": "string",
|
|
"description": "Nickname",
|
|
"example": "James"
|
|
},
|
|
"avatar": {
|
|
"type": "string",
|
|
"description": "Gravatar URL based on email, without scheme",
|
|
"example": "//www.gravatar.com/avatar/6193176330f8d38747f038c170ddb193?default=mm"
|
|
},
|
|
"roles": {
|
|
"description": "Roles applied",
|
|
"example": [
|
|
"admin"
|
|
],
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"UsersList": {
|
|
"type": "array",
|
|
"description": "User list",
|
|
"items": {
|
|
"$ref": "#/components/schemas/UserObject"
|
|
}
|
|
},
|
|
"AuthObject": {
|
|
"type": "object",
|
|
"description": "Authentication Object",
|
|
"required": [
|
|
"type",
|
|
"secret"
|
|
],
|
|
"properties": {
|
|
"type": {
|
|
"type": "string",
|
|
"pattern": "^password$",
|
|
"example": "password"
|
|
},
|
|
"current": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"maxLength": 64,
|
|
"example": "changeme"
|
|
},
|
|
"secret": {
|
|
"type": "string",
|
|
"minLength": 8,
|
|
"maxLength": 64,
|
|
"example": "mySuperN3wP@ssword!"
|
|
}
|
|
}
|
|
},
|
|
"PermissionsObject": {
|
|
"type": "object",
|
|
"properties": {
|
|
"visibility": {
|
|
"type": "string",
|
|
"description": "Visibility Type",
|
|
"enum": [
|
|
"all",
|
|
"user"
|
|
]
|
|
},
|
|
"access_lists": {
|
|
"type": "string",
|
|
"description": "Access Lists Permissions",
|
|
"enum": [
|
|
"hidden",
|
|
"view",
|
|
"manage"
|
|
]
|
|
},
|
|
"dead_hosts": {
|
|
"type": "string",
|
|
"description": "404 Hosts Permissions",
|
|
"enum": [
|
|
"hidden",
|
|
"view",
|
|
"manage"
|
|
]
|
|
},
|
|
"proxy_hosts": {
|
|
"type": "string",
|
|
"description": "Proxy Hosts Permissions",
|
|
"enum": [
|
|
"hidden",
|
|
"view",
|
|
"manage"
|
|
]
|
|
},
|
|
"redirection_hosts": {
|
|
"type": "string",
|
|
"description": "Redirection Permissions",
|
|
"enum": [
|
|
"hidden",
|
|
"view",
|
|
"manage"
|
|
]
|
|
},
|
|
"streams": {
|
|
"type": "string",
|
|
"description": "Streams Permissions",
|
|
"enum": [
|
|
"hidden",
|
|
"view",
|
|
"manage"
|
|
]
|
|
},
|
|
"certificates": {
|
|
"type": "string",
|
|
"description": "Certificates Permissions",
|
|
"enum": [
|
|
"hidden",
|
|
"view",
|
|
"manage"
|
|
]
|
|
}
|
|
}
|
|
},
|
|
"HostReportObject": {
|
|
"type": "object",
|
|
"properties": {
|
|
"proxy": {
|
|
"type": "integer",
|
|
"description": "Proxy Hosts Count"
|
|
},
|
|
"redirection": {
|
|
"type": "integer",
|
|
"description": "Redirection Hosts Count"
|
|
},
|
|
"stream": {
|
|
"type": "integer",
|
|
"description": "Streams Count"
|
|
},
|
|
"dead": {
|
|
"type": "integer",
|
|
"description": "404 Hosts Count"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
} |