bb0f4bfa62
* Fix wrapping when too many hosts are shown (#207) * Update npm packages, fixes CVE-2019-10757 * Revert some breaking packages * Major overhaul - Docker buildx support in CI - Cypress API Testing in CI - Restructured folder layout (insert clean face meme) - Added Swagger documentation and validate API against that (to be completed) - Use common base image for all supported archs, which includes updated nginx with ipv6 support - Updated certbot and changes required for it - Large amount of Hosts names will wrap in UI - Updated packages for frontend - Version bump 2.1.0 * Updated documentation * Fix JWT expire time going crazy. Now set to 1day * Backend JS formatting rules * Remove v1 importer, I doubt anyone is using v1 anymore * Added backend formatting rules and enforce them in Jenkins builds * Fix CI, doesn't need a tty * Thanks bcrypt. Why can't you just be normal. * Cleanup after syntax check Co-authored-by: Marcelo Castagna <margaale@users.noreply.github.com>
1254 lines
25 KiB
JSON
1254 lines
25 KiB
JSON
{
|
|
"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"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/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"
|
|
}
|
|
}
|
|
},
|
|
"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"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
} |