{
	"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"
					}
				}
			}
		}
	}
}