mirror of
				https://github.com/NginxProxyManager/nginx-proxy-manager.git
				synced 2025-10-31 15:53:33 +00:00 
			
		
		
		
	v2.1.0 (#293)
* 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>
This commit is contained in:
		
							
								
								
									
										168
									
								
								backend/schema/endpoints/access-lists.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										168
									
								
								backend/schema/endpoints/access-lists.json
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,168 @@ | ||||
| { | ||||
|   "$schema": "http://json-schema.org/draft-07/schema#", | ||||
|   "$id": "endpoints/access-lists", | ||||
|   "title": "Access Lists", | ||||
|   "description": "Endpoints relating to Access Lists", | ||||
|   "stability": "stable", | ||||
|   "type": "object", | ||||
|   "definitions": { | ||||
|     "id": { | ||||
|       "$ref": "../definitions.json#/definitions/id" | ||||
|     }, | ||||
|     "created_on": { | ||||
|       "$ref": "../definitions.json#/definitions/created_on" | ||||
|     }, | ||||
|     "modified_on": { | ||||
|       "$ref": "../definitions.json#/definitions/modified_on" | ||||
|     }, | ||||
|     "name": { | ||||
|       "type": "string", | ||||
|       "description": "Name of the Access List" | ||||
|     }, | ||||
|     "meta": { | ||||
|       "type": "object" | ||||
|     } | ||||
|   }, | ||||
|   "properties": { | ||||
|     "id": { | ||||
|       "$ref": "#/definitions/id" | ||||
|     }, | ||||
|     "created_on": { | ||||
|       "$ref": "#/definitions/created_on" | ||||
|     }, | ||||
|     "modified_on": { | ||||
|       "$ref": "#/definitions/modified_on" | ||||
|     }, | ||||
|     "name": { | ||||
|       "$ref": "#/definitions/name" | ||||
|     }, | ||||
|     "meta": { | ||||
|       "$ref": "#/definitions/meta" | ||||
|     } | ||||
|   }, | ||||
|   "links": [ | ||||
|     { | ||||
|       "title": "List", | ||||
|       "description": "Returns a list of Access Lists", | ||||
|       "href": "/nginx/access-lists", | ||||
|       "access": "private", | ||||
|       "method": "GET", | ||||
|       "rel": "self", | ||||
|       "http_header": { | ||||
|         "$ref": "../examples.json#/definitions/auth_header" | ||||
|       }, | ||||
|       "targetSchema": { | ||||
|         "type": "array", | ||||
|         "items": { | ||||
|           "$ref": "#/properties" | ||||
|         } | ||||
|       } | ||||
|     }, | ||||
|     { | ||||
|       "title": "Create", | ||||
|       "description": "Creates a new Access List", | ||||
|       "href": "/nginx/access-list", | ||||
|       "access": "private", | ||||
|       "method": "POST", | ||||
|       "rel": "create", | ||||
|       "http_header": { | ||||
|         "$ref": "../examples.json#/definitions/auth_header" | ||||
|       }, | ||||
|       "schema": { | ||||
|         "type": "object", | ||||
|         "additionalProperties": false, | ||||
|         "required": [ | ||||
|           "name" | ||||
|         ], | ||||
|         "properties": { | ||||
|           "name": { | ||||
|             "$ref": "#/definitions/name" | ||||
|           }, | ||||
|           "items": { | ||||
|             "type": "array", | ||||
|             "minItems": 1, | ||||
|             "items": { | ||||
|               "type": "object", | ||||
|               "additionalProperties": false, | ||||
|               "properties": { | ||||
|                 "username": { | ||||
|                   "type": "string", | ||||
|                   "minLength": 1 | ||||
|                 }, | ||||
|                 "password": { | ||||
|                   "type": "string", | ||||
|                   "minLength": 1 | ||||
|                 } | ||||
|               } | ||||
|             } | ||||
|           }, | ||||
|           "meta": { | ||||
|             "$ref": "#/definitions/meta" | ||||
|           } | ||||
|         } | ||||
|       }, | ||||
|       "targetSchema": { | ||||
|         "properties": { | ||||
|           "$ref": "#/properties" | ||||
|         } | ||||
|       } | ||||
|     }, | ||||
|     { | ||||
|       "title": "Update", | ||||
|       "description": "Updates a existing Access List", | ||||
|       "href": "/nginx/access-list/{definitions.identity.example}", | ||||
|       "access": "private", | ||||
|       "method": "PUT", | ||||
|       "rel": "update", | ||||
|       "http_header": { | ||||
|         "$ref": "../examples.json#/definitions/auth_header" | ||||
|       }, | ||||
|       "schema": { | ||||
|         "type": "object", | ||||
|         "additionalProperties": false, | ||||
|         "properties": { | ||||
|           "name": { | ||||
|             "$ref": "#/definitions/name" | ||||
|           }, | ||||
|           "items": { | ||||
|             "type": "array", | ||||
|             "minItems": 1, | ||||
|             "items": { | ||||
|               "type": "object", | ||||
|               "additionalProperties": false, | ||||
|               "properties": { | ||||
|                 "username": { | ||||
|                   "type": "string", | ||||
|                   "minLength": 1 | ||||
|                 }, | ||||
|                 "password": { | ||||
|                   "type": "string", | ||||
|                   "minLength": 0 | ||||
|                 } | ||||
|               } | ||||
|             } | ||||
|           } | ||||
|         } | ||||
|       }, | ||||
|       "targetSchema": { | ||||
|         "properties": { | ||||
|           "$ref": "#/properties" | ||||
|         } | ||||
|       } | ||||
|     }, | ||||
|     { | ||||
|       "title": "Delete", | ||||
|       "description": "Deletes a existing Access List", | ||||
|       "href": "/nginx/access-list/{definitions.identity.example}", | ||||
|       "access": "private", | ||||
|       "method": "DELETE", | ||||
|       "rel": "delete", | ||||
|       "http_header": { | ||||
|         "$ref": "../examples.json#/definitions/auth_header" | ||||
|       }, | ||||
|       "targetSchema": { | ||||
|         "type": "boolean" | ||||
|       } | ||||
|     } | ||||
|   ] | ||||
| } | ||||
							
								
								
									
										144
									
								
								backend/schema/endpoints/certificates.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										144
									
								
								backend/schema/endpoints/certificates.json
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,144 @@ | ||||
| { | ||||
|   "$schema": "http://json-schema.org/draft-07/schema#", | ||||
|   "$id": "endpoints/certificates", | ||||
|   "title": "Certificates", | ||||
|   "description": "Endpoints relating to Certificates", | ||||
|   "stability": "stable", | ||||
|   "type": "object", | ||||
|   "definitions": { | ||||
|     "id": { | ||||
|       "$ref": "../definitions.json#/definitions/id" | ||||
|     }, | ||||
|     "created_on": { | ||||
|       "$ref": "../definitions.json#/definitions/created_on" | ||||
|     }, | ||||
|     "modified_on": { | ||||
|       "$ref": "../definitions.json#/definitions/modified_on" | ||||
|     }, | ||||
|     "provider": { | ||||
|       "$ref": "../definitions.json#/definitions/ssl_provider" | ||||
|     }, | ||||
|     "nice_name": { | ||||
|       "type": "string", | ||||
|       "description": "Nice Name for the custom certificate" | ||||
|     }, | ||||
|     "domain_names": { | ||||
|       "$ref": "../definitions.json#/definitions/domain_names" | ||||
|     }, | ||||
|     "expires_on": { | ||||
|       "description": "Date and time of expiration", | ||||
|       "format": "date-time", | ||||
|       "readOnly": true, | ||||
|       "type": "string" | ||||
|     }, | ||||
|     "meta": { | ||||
|       "type": "object", | ||||
|       "additionalProperties": false, | ||||
|       "properties": { | ||||
|         "letsencrypt_email": { | ||||
|           "type": "string", | ||||
|           "format": "email" | ||||
|         }, | ||||
|         "letsencrypt_agree": { | ||||
|           "type": "boolean" | ||||
|         } | ||||
|       } | ||||
|     } | ||||
|   }, | ||||
|   "properties": { | ||||
|     "id": { | ||||
|       "$ref": "#/definitions/id" | ||||
|     }, | ||||
|     "created_on": { | ||||
|       "$ref": "#/definitions/created_on" | ||||
|     }, | ||||
|     "modified_on": { | ||||
|       "$ref": "#/definitions/modified_on" | ||||
|     }, | ||||
|     "provider": { | ||||
|       "$ref": "#/definitions/provider" | ||||
|     }, | ||||
|     "nice_name": { | ||||
|       "$ref": "#/definitions/nice_name" | ||||
|     }, | ||||
|     "domain_names": { | ||||
|       "$ref": "#/definitions/domain_names" | ||||
|     }, | ||||
|     "expires_on": { | ||||
|       "$ref": "#/definitions/expires_on" | ||||
|     }, | ||||
|     "meta": { | ||||
|       "$ref": "#/definitions/meta" | ||||
|     } | ||||
|   }, | ||||
|   "links": [ | ||||
|     { | ||||
|       "title": "List", | ||||
|       "description": "Returns a list of Certificates", | ||||
|       "href": "/nginx/certificates", | ||||
|       "access": "private", | ||||
|       "method": "GET", | ||||
|       "rel": "self", | ||||
|       "http_header": { | ||||
|         "$ref": "../examples.json#/definitions/auth_header" | ||||
|       }, | ||||
|       "targetSchema": { | ||||
|         "type": "array", | ||||
|         "items": { | ||||
|           "$ref": "#/properties" | ||||
|         } | ||||
|       } | ||||
|     }, | ||||
|     { | ||||
|       "title": "Create", | ||||
|       "description": "Creates a new Certificate", | ||||
|       "href": "/nginx/certificates", | ||||
|       "access": "private", | ||||
|       "method": "POST", | ||||
|       "rel": "create", | ||||
|       "http_header": { | ||||
|         "$ref": "../examples.json#/definitions/auth_header" | ||||
|       }, | ||||
|       "schema": { | ||||
|         "type": "object", | ||||
|         "additionalProperties": false, | ||||
|         "required": [ | ||||
|           "provider" | ||||
|         ], | ||||
|         "properties": { | ||||
|           "provider": { | ||||
|             "$ref": "#/definitions/provider" | ||||
|           }, | ||||
|           "nice_name": { | ||||
|             "$ref": "#/definitions/nice_name" | ||||
|           }, | ||||
|           "domain_names": { | ||||
|             "$ref": "#/definitions/domain_names" | ||||
|           }, | ||||
|           "meta": { | ||||
|             "$ref": "#/definitions/meta" | ||||
|           } | ||||
|         } | ||||
|       }, | ||||
|       "targetSchema": { | ||||
|         "properties": { | ||||
|           "$ref": "#/properties" | ||||
|         } | ||||
|       } | ||||
|     }, | ||||
|     { | ||||
|       "title": "Delete", | ||||
|       "description": "Deletes a existing Certificate", | ||||
|       "href": "/nginx/certificates/{definitions.identity.example}", | ||||
|       "access": "private", | ||||
|       "method": "DELETE", | ||||
|       "rel": "delete", | ||||
|       "http_header": { | ||||
|         "$ref": "../examples.json#/definitions/auth_header" | ||||
|       }, | ||||
|       "targetSchema": { | ||||
|         "type": "boolean" | ||||
|       } | ||||
|     } | ||||
|   ] | ||||
| } | ||||
							
								
								
									
										240
									
								
								backend/schema/endpoints/dead-hosts.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										240
									
								
								backend/schema/endpoints/dead-hosts.json
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,240 @@ | ||||
| { | ||||
|   "$schema": "http://json-schema.org/draft-07/schema#", | ||||
|   "$id": "endpoints/dead-hosts", | ||||
|   "title": "404 Hosts", | ||||
|   "description": "Endpoints relating to 404 Hosts", | ||||
|   "stability": "stable", | ||||
|   "type": "object", | ||||
|   "definitions": { | ||||
|     "id": { | ||||
|       "$ref": "../definitions.json#/definitions/id" | ||||
|     }, | ||||
|     "created_on": { | ||||
|       "$ref": "../definitions.json#/definitions/created_on" | ||||
|     }, | ||||
|     "modified_on": { | ||||
|       "$ref": "../definitions.json#/definitions/modified_on" | ||||
|     }, | ||||
|     "domain_names": { | ||||
|       "$ref": "../definitions.json#/definitions/domain_names" | ||||
|     }, | ||||
|     "certificate_id": { | ||||
|       "$ref": "../definitions.json#/definitions/certificate_id" | ||||
|     }, | ||||
|     "ssl_forced": { | ||||
|       "$ref": "../definitions.json#/definitions/ssl_forced" | ||||
|     }, | ||||
|     "hsts_enabled": { | ||||
|       "$ref": "../definitions.json#/definitions/hsts_enabled" | ||||
|     }, | ||||
|     "hsts_subdomains": { | ||||
|       "$ref": "../definitions.json#/definitions/hsts_subdomains" | ||||
|     }, | ||||
|     "http2_support": { | ||||
|       "$ref": "../definitions.json#/definitions/http2_support" | ||||
|     }, | ||||
|     "advanced_config": { | ||||
|       "type": "string" | ||||
|     }, | ||||
|     "enabled": { | ||||
|       "$ref": "../definitions.json#/definitions/enabled" | ||||
|     }, | ||||
|     "meta": { | ||||
|       "type": "object" | ||||
|     } | ||||
|   }, | ||||
|   "properties": { | ||||
|     "id": { | ||||
|       "$ref": "#/definitions/id" | ||||
|     }, | ||||
|     "created_on": { | ||||
|       "$ref": "#/definitions/created_on" | ||||
|     }, | ||||
|     "modified_on": { | ||||
|       "$ref": "#/definitions/modified_on" | ||||
|     }, | ||||
|     "domain_names": { | ||||
|       "$ref": "#/definitions/domain_names" | ||||
|     }, | ||||
|     "certificate_id": { | ||||
|       "$ref": "#/definitions/certificate_id" | ||||
|     }, | ||||
|     "ssl_forced": { | ||||
|       "$ref": "#/definitions/ssl_forced" | ||||
|     }, | ||||
|     "hsts_enabled": { | ||||
|       "$ref": "#/definitions/hsts_enabled" | ||||
|     }, | ||||
|     "hsts_subdomains": { | ||||
|       "$ref": "#/definitions/hsts_subdomains" | ||||
|     }, | ||||
|     "http2_support": { | ||||
|       "$ref": "#/definitions/http2_support" | ||||
|     }, | ||||
|     "advanced_config": { | ||||
|       "$ref": "#/definitions/advanced_config" | ||||
|     }, | ||||
|     "enabled": { | ||||
|       "$ref": "#/definitions/enabled" | ||||
|     }, | ||||
|     "meta": { | ||||
|       "$ref": "#/definitions/meta" | ||||
|     } | ||||
|   }, | ||||
|   "links": [ | ||||
|     { | ||||
|       "title": "List", | ||||
|       "description": "Returns a list of 404 Hosts", | ||||
|       "href": "/nginx/dead-hosts", | ||||
|       "access": "private", | ||||
|       "method": "GET", | ||||
|       "rel": "self", | ||||
|       "http_header": { | ||||
|         "$ref": "../examples.json#/definitions/auth_header" | ||||
|       }, | ||||
|       "targetSchema": { | ||||
|         "type": "array", | ||||
|         "items": { | ||||
|           "$ref": "#/properties" | ||||
|         } | ||||
|       } | ||||
|     }, | ||||
|     { | ||||
|       "title": "Create", | ||||
|       "description": "Creates a new 404 Host", | ||||
|       "href": "/nginx/dead-hosts", | ||||
|       "access": "private", | ||||
|       "method": "POST", | ||||
|       "rel": "create", | ||||
|       "http_header": { | ||||
|         "$ref": "../examples.json#/definitions/auth_header" | ||||
|       }, | ||||
|       "schema": { | ||||
|         "type": "object", | ||||
|         "additionalProperties": false, | ||||
|         "required": [ | ||||
|           "domain_names" | ||||
|         ], | ||||
|         "properties": { | ||||
|           "domain_names": { | ||||
|             "$ref": "#/definitions/domain_names" | ||||
|           }, | ||||
|           "certificate_id": { | ||||
|             "$ref": "#/definitions/certificate_id" | ||||
|           }, | ||||
|           "ssl_forced": { | ||||
|             "$ref": "#/definitions/ssl_forced" | ||||
|           }, | ||||
|           "hsts_enabled": { | ||||
|             "$ref": "#/definitions/hsts_enabled" | ||||
|           }, | ||||
|           "hsts_subdomains": { | ||||
|             "$ref": "#/definitions/hsts_enabled" | ||||
|           }, | ||||
|           "http2_support": { | ||||
|             "$ref": "#/definitions/http2_support" | ||||
|           }, | ||||
|           "advanced_config": { | ||||
|             "$ref": "#/definitions/advanced_config" | ||||
|           }, | ||||
|           "meta": { | ||||
|             "$ref": "#/definitions/meta" | ||||
|           } | ||||
|         } | ||||
|       }, | ||||
|       "targetSchema": { | ||||
|         "properties": { | ||||
|           "$ref": "#/properties" | ||||
|         } | ||||
|       } | ||||
|     }, | ||||
|     { | ||||
|       "title": "Update", | ||||
|       "description": "Updates a existing 404 Host", | ||||
|       "href": "/nginx/dead-hosts/{definitions.identity.example}", | ||||
|       "access": "private", | ||||
|       "method": "PUT", | ||||
|       "rel": "update", | ||||
|       "http_header": { | ||||
|         "$ref": "../examples.json#/definitions/auth_header" | ||||
|       }, | ||||
|       "schema": { | ||||
|         "type": "object", | ||||
|         "additionalProperties": false, | ||||
|         "properties": { | ||||
|           "domain_names": { | ||||
|             "$ref": "#/definitions/domain_names" | ||||
|           }, | ||||
|           "certificate_id": { | ||||
|             "$ref": "#/definitions/certificate_id" | ||||
|           }, | ||||
|           "ssl_forced": { | ||||
|             "$ref": "#/definitions/ssl_forced" | ||||
|           }, | ||||
|           "hsts_enabled": { | ||||
|             "$ref": "#/definitions/hsts_enabled" | ||||
|           }, | ||||
|           "hsts_subdomains": { | ||||
|             "$ref": "#/definitions/hsts_enabled" | ||||
|           }, | ||||
|           "http2_support": { | ||||
|             "$ref": "#/definitions/http2_support" | ||||
|           }, | ||||
|           "advanced_config": { | ||||
|             "$ref": "#/definitions/advanced_config" | ||||
|           }, | ||||
|           "meta": { | ||||
|             "$ref": "#/definitions/meta" | ||||
|           } | ||||
|         } | ||||
|       }, | ||||
|       "targetSchema": { | ||||
|         "properties": { | ||||
|           "$ref": "#/properties" | ||||
|         } | ||||
|       } | ||||
|     }, | ||||
|     { | ||||
|       "title": "Delete", | ||||
|       "description": "Deletes a existing 404 Host", | ||||
|       "href": "/nginx/dead-hosts/{definitions.identity.example}", | ||||
|       "access": "private", | ||||
|       "method": "DELETE", | ||||
|       "rel": "delete", | ||||
|       "http_header": { | ||||
|         "$ref": "../examples.json#/definitions/auth_header" | ||||
|       }, | ||||
|       "targetSchema": { | ||||
|         "type": "boolean" | ||||
|       } | ||||
|     }, | ||||
|     { | ||||
|       "title": "Enable", | ||||
|       "description": "Enables a existing 404 Host", | ||||
|       "href": "/nginx/dead-hosts/{definitions.identity.example}/enable", | ||||
|       "access": "private", | ||||
|       "method": "POST", | ||||
|       "rel": "update", | ||||
|       "http_header": { | ||||
|         "$ref": "../examples.json#/definitions/auth_header" | ||||
|       }, | ||||
|       "targetSchema": { | ||||
|         "type": "boolean" | ||||
|       } | ||||
|     }, | ||||
|     { | ||||
|       "title": "Disable", | ||||
|       "description": "Disables a existing 404 Host", | ||||
|       "href": "/nginx/dead-hosts/{definitions.identity.example}/disable", | ||||
|       "access": "private", | ||||
|       "method": "POST", | ||||
|       "rel": "update", | ||||
|       "http_header": { | ||||
|         "$ref": "../examples.json#/definitions/auth_header" | ||||
|       }, | ||||
|       "targetSchema": { | ||||
|         "type": "boolean" | ||||
|       } | ||||
|     } | ||||
|   ] | ||||
| } | ||||
							
								
								
									
										387
									
								
								backend/schema/endpoints/proxy-hosts.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										387
									
								
								backend/schema/endpoints/proxy-hosts.json
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,387 @@ | ||||
| { | ||||
|   "$schema": "http://json-schema.org/draft-07/schema#", | ||||
|   "$id": "endpoints/proxy-hosts", | ||||
|   "title": "Proxy Hosts", | ||||
|   "description": "Endpoints relating to Proxy Hosts", | ||||
|   "stability": "stable", | ||||
|   "type": "object", | ||||
|   "definitions": { | ||||
|     "id": { | ||||
|       "$ref": "../definitions.json#/definitions/id" | ||||
|     }, | ||||
|     "created_on": { | ||||
|       "$ref": "../definitions.json#/definitions/created_on" | ||||
|     }, | ||||
|     "modified_on": { | ||||
|       "$ref": "../definitions.json#/definitions/modified_on" | ||||
|     }, | ||||
|     "domain_names": { | ||||
|       "$ref": "../definitions.json#/definitions/domain_names" | ||||
|     }, | ||||
|     "forward_scheme": { | ||||
|       "type": "string", | ||||
|       "enum": ["http", "https"] | ||||
|     }, | ||||
|     "forward_host": { | ||||
|       "type": "string", | ||||
|       "minLength": 1, | ||||
|       "maxLength": 50 | ||||
|     }, | ||||
|     "forward_port": { | ||||
|       "type": "integer", | ||||
|       "minimum": 1, | ||||
|       "maximum": 65535 | ||||
|     }, | ||||
|     "certificate_id": { | ||||
|       "$ref": "../definitions.json#/definitions/certificate_id" | ||||
|     }, | ||||
|     "ssl_forced": { | ||||
|       "$ref": "../definitions.json#/definitions/ssl_forced" | ||||
|     }, | ||||
|     "hsts_enabled": { | ||||
|       "$ref": "../definitions.json#/definitions/hsts_enabled" | ||||
|     }, | ||||
|     "hsts_subdomains": { | ||||
|       "$ref": "../definitions.json#/definitions/hsts_subdomains" | ||||
|     }, | ||||
|     "http2_support": { | ||||
|       "$ref": "../definitions.json#/definitions/http2_support" | ||||
|     }, | ||||
|     "block_exploits": { | ||||
|       "$ref": "../definitions.json#/definitions/block_exploits" | ||||
|     }, | ||||
|     "caching_enabled": { | ||||
|       "$ref": "../definitions.json#/definitions/caching_enabled" | ||||
|     }, | ||||
|     "allow_websocket_upgrade": { | ||||
|       "description": "Allow Websocket Upgrade for all paths", | ||||
|       "example": true, | ||||
|       "type": "boolean" | ||||
|     }, | ||||
|     "access_list_id": { | ||||
|       "$ref": "../definitions.json#/definitions/access_list_id" | ||||
|     }, | ||||
|     "advanced_config": { | ||||
|       "type": "string" | ||||
|     }, | ||||
|     "enabled": { | ||||
|       "$ref": "../definitions.json#/definitions/enabled" | ||||
|     }, | ||||
|     "meta": { | ||||
|       "type": "object" | ||||
|     }, | ||||
|     "locations": { | ||||
|       "type": "array", | ||||
|       "minItems": 0, | ||||
|       "items": { | ||||
|         "type": "object", | ||||
|         "required": [ | ||||
|           "forward_scheme", | ||||
|           "forward_host", | ||||
|           "forward_port", | ||||
|           "path" | ||||
|         ], | ||||
|         "additionalProperties": false, | ||||
|         "properties": { | ||||
|           "id": { | ||||
|             "type": ["integer", "null"] | ||||
|           }, | ||||
|           "path": { | ||||
|             "type": "string", | ||||
|             "minLength": 1 | ||||
|           }, | ||||
|           "forward_scheme": { | ||||
|             "$ref": "#/definitions/forward_scheme" | ||||
|           }, | ||||
|           "forward_host": { | ||||
|             "$ref": "#/definitions/forward_host" | ||||
|           }, | ||||
|           "forward_port": { | ||||
|             "$ref": "#/definitions/forward_port" | ||||
|           }, | ||||
|           "forward_path": { | ||||
|             "type": "string" | ||||
|           }, | ||||
|           "advanced_config": { | ||||
|             "type": "string" | ||||
|           } | ||||
|         } | ||||
|       } | ||||
|     } | ||||
|   }, | ||||
|   "properties": { | ||||
|     "id": { | ||||
|       "$ref": "#/definitions/id" | ||||
|     }, | ||||
|     "created_on": { | ||||
|       "$ref": "#/definitions/created_on" | ||||
|     }, | ||||
|     "modified_on": { | ||||
|       "$ref": "#/definitions/modified_on" | ||||
|     }, | ||||
|     "domain_names": { | ||||
|       "$ref": "#/definitions/domain_names" | ||||
|     }, | ||||
|     "forward_scheme": { | ||||
|       "$ref": "#/definitions/forward_scheme" | ||||
|     }, | ||||
|     "forward_host": { | ||||
|       "$ref": "#/definitions/forward_host" | ||||
|     }, | ||||
|     "forward_port": { | ||||
|       "$ref": "#/definitions/forward_port" | ||||
|     }, | ||||
|     "certificate_id": { | ||||
|       "$ref": "#/definitions/certificate_id" | ||||
|     }, | ||||
|     "ssl_forced": { | ||||
|       "$ref": "#/definitions/ssl_forced" | ||||
|     }, | ||||
|     "hsts_enabled": { | ||||
|       "$ref": "#/definitions/hsts_enabled" | ||||
|     }, | ||||
|     "hsts_subdomains": { | ||||
|       "$ref": "#/definitions/hsts_subdomains" | ||||
|     }, | ||||
|     "http2_support": { | ||||
|       "$ref": "#/definitions/http2_support" | ||||
|     }, | ||||
|     "block_exploits": { | ||||
|       "$ref": "#/definitions/block_exploits" | ||||
|     }, | ||||
|     "caching_enabled": { | ||||
|       "$ref": "#/definitions/caching_enabled" | ||||
|     }, | ||||
|     "allow_websocket_upgrade": { | ||||
|       "$ref": "#/definitions/allow_websocket_upgrade" | ||||
|     }, | ||||
|     "access_list_id": { | ||||
|       "$ref": "#/definitions/access_list_id" | ||||
|     }, | ||||
|     "advanced_config": { | ||||
|       "$ref": "#/definitions/advanced_config" | ||||
|     }, | ||||
|     "enabled": { | ||||
|       "$ref": "#/definitions/enabled" | ||||
|     }, | ||||
|     "meta": { | ||||
|       "$ref": "#/definitions/meta" | ||||
|     }, | ||||
|     "locations": { | ||||
|       "$ref": "#/definitions/locations" | ||||
|     } | ||||
|   }, | ||||
|   "links": [ | ||||
|     { | ||||
|       "title": "List", | ||||
|       "description": "Returns a list of Proxy Hosts", | ||||
|       "href": "/nginx/proxy-hosts", | ||||
|       "access": "private", | ||||
|       "method": "GET", | ||||
|       "rel": "self", | ||||
|       "http_header": { | ||||
|         "$ref": "../examples.json#/definitions/auth_header" | ||||
|       }, | ||||
|       "targetSchema": { | ||||
|         "type": "array", | ||||
|         "items": { | ||||
|           "$ref": "#/properties" | ||||
|         } | ||||
|       } | ||||
|     }, | ||||
|     { | ||||
|       "title": "Create", | ||||
|       "description": "Creates a new Proxy Host", | ||||
|       "href": "/nginx/proxy-hosts", | ||||
|       "access": "private", | ||||
|       "method": "POST", | ||||
|       "rel": "create", | ||||
|       "http_header": { | ||||
|         "$ref": "../examples.json#/definitions/auth_header" | ||||
|       }, | ||||
|       "schema": { | ||||
|         "type": "object", | ||||
|         "additionalProperties": false, | ||||
|         "required": [ | ||||
|           "domain_names", | ||||
|           "forward_scheme", | ||||
|           "forward_host", | ||||
|           "forward_port" | ||||
|         ], | ||||
|         "properties": { | ||||
|           "domain_names": { | ||||
|             "$ref": "#/definitions/domain_names" | ||||
|           }, | ||||
|           "forward_scheme": { | ||||
|             "$ref": "#/definitions/forward_scheme" | ||||
|           }, | ||||
|           "forward_host": { | ||||
|             "$ref": "#/definitions/forward_host" | ||||
|           }, | ||||
|           "forward_port": { | ||||
|             "$ref": "#/definitions/forward_port" | ||||
|           }, | ||||
|           "certificate_id": { | ||||
|             "$ref": "#/definitions/certificate_id" | ||||
|           }, | ||||
|           "ssl_forced": { | ||||
|             "$ref": "#/definitions/ssl_forced" | ||||
|           }, | ||||
|           "hsts_enabled": { | ||||
|             "$ref": "#/definitions/hsts_enabled" | ||||
|           }, | ||||
|           "hsts_subdomains": { | ||||
|             "$ref": "#/definitions/hsts_enabled" | ||||
|           }, | ||||
|           "http2_support": { | ||||
|             "$ref": "#/definitions/http2_support" | ||||
|           }, | ||||
|           "block_exploits": { | ||||
|             "$ref": "#/definitions/block_exploits" | ||||
|           }, | ||||
|           "caching_enabled": { | ||||
|             "$ref": "#/definitions/caching_enabled" | ||||
|           }, | ||||
|           "allow_websocket_upgrade": { | ||||
|             "$ref": "#/definitions/allow_websocket_upgrade" | ||||
|           }, | ||||
|           "access_list_id": { | ||||
|             "$ref": "#/definitions/access_list_id" | ||||
|           }, | ||||
|           "advanced_config": { | ||||
|             "$ref": "#/definitions/advanced_config" | ||||
|           }, | ||||
|           "enabled": { | ||||
|             "$ref": "#/definitions/enabled" | ||||
|           }, | ||||
|           "meta": { | ||||
|             "$ref": "#/definitions/meta" | ||||
|           }, | ||||
|           "locations": { | ||||
|             "$ref": "#/definitions/locations" | ||||
|           } | ||||
|         } | ||||
|       }, | ||||
|       "targetSchema": { | ||||
|         "properties": { | ||||
|           "$ref": "#/properties" | ||||
|         } | ||||
|       } | ||||
|     }, | ||||
|     { | ||||
|       "title": "Update", | ||||
|       "description": "Updates a existing Proxy Host", | ||||
|       "href": "/nginx/proxy-hosts/{definitions.identity.example}", | ||||
|       "access": "private", | ||||
|       "method": "PUT", | ||||
|       "rel": "update", | ||||
|       "http_header": { | ||||
|         "$ref": "../examples.json#/definitions/auth_header" | ||||
|       }, | ||||
|       "schema": { | ||||
|         "type": "object", | ||||
|         "additionalProperties": false, | ||||
|         "properties": { | ||||
|           "domain_names": { | ||||
|             "$ref": "#/definitions/domain_names" | ||||
|           }, | ||||
|           "forward_scheme": { | ||||
|             "$ref": "#/definitions/forward_scheme" | ||||
|           }, | ||||
|           "forward_host": { | ||||
|             "$ref": "#/definitions/forward_host" | ||||
|           }, | ||||
|           "forward_port": { | ||||
|             "$ref": "#/definitions/forward_port" | ||||
|           }, | ||||
|           "certificate_id": { | ||||
|             "$ref": "#/definitions/certificate_id" | ||||
|           }, | ||||
|           "ssl_forced": { | ||||
|             "$ref": "#/definitions/ssl_forced" | ||||
|           }, | ||||
|           "hsts_enabled": { | ||||
|             "$ref": "#/definitions/hsts_enabled" | ||||
|           }, | ||||
|           "hsts_subdomains": { | ||||
|             "$ref": "#/definitions/hsts_enabled" | ||||
|           }, | ||||
|           "http2_support": { | ||||
|             "$ref": "#/definitions/http2_support" | ||||
|           }, | ||||
|           "block_exploits": { | ||||
|             "$ref": "#/definitions/block_exploits" | ||||
|           }, | ||||
|           "caching_enabled": { | ||||
|             "$ref": "#/definitions/caching_enabled" | ||||
|           }, | ||||
|           "allow_websocket_upgrade": { | ||||
|             "$ref": "#/definitions/allow_websocket_upgrade" | ||||
|           }, | ||||
|           "access_list_id": { | ||||
|             "$ref": "#/definitions/access_list_id" | ||||
|           }, | ||||
|           "advanced_config": { | ||||
|             "$ref": "#/definitions/advanced_config" | ||||
|           }, | ||||
|           "enabled": { | ||||
|             "$ref": "#/definitions/enabled" | ||||
|           }, | ||||
|           "meta": { | ||||
|             "$ref": "#/definitions/meta" | ||||
|           }, | ||||
|           "locations": { | ||||
|             "$ref": "#/definitions/locations" | ||||
|           } | ||||
|         } | ||||
|       }, | ||||
|       "targetSchema": { | ||||
|         "properties": { | ||||
|           "$ref": "#/properties" | ||||
|         } | ||||
|       } | ||||
|     }, | ||||
|     { | ||||
|       "title": "Delete", | ||||
|       "description": "Deletes a existing Proxy Host", | ||||
|       "href": "/nginx/proxy-hosts/{definitions.identity.example}", | ||||
|       "access": "private", | ||||
|       "method": "DELETE", | ||||
|       "rel": "delete", | ||||
|       "http_header": { | ||||
|         "$ref": "../examples.json#/definitions/auth_header" | ||||
|       }, | ||||
|       "targetSchema": { | ||||
|         "type": "boolean" | ||||
|       } | ||||
|     }, | ||||
|     { | ||||
|       "title": "Enable", | ||||
|       "description": "Enables a existing Proxy Host", | ||||
|       "href": "/nginx/proxy-hosts/{definitions.identity.example}/enable", | ||||
|       "access": "private", | ||||
|       "method": "POST", | ||||
|       "rel": "update", | ||||
|       "http_header": { | ||||
|         "$ref": "../examples.json#/definitions/auth_header" | ||||
|       }, | ||||
|       "targetSchema": { | ||||
|         "type": "boolean" | ||||
|       } | ||||
|     }, | ||||
|     { | ||||
|       "title": "Disable", | ||||
|       "description": "Disables a existing Proxy Host", | ||||
|       "href": "/nginx/proxy-hosts/{definitions.identity.example}/disable", | ||||
|       "access": "private", | ||||
|       "method": "POST", | ||||
|       "rel": "update", | ||||
|       "http_header": { | ||||
|         "$ref": "../examples.json#/definitions/auth_header" | ||||
|       }, | ||||
|       "targetSchema": { | ||||
|         "type": "boolean" | ||||
|       } | ||||
|     } | ||||
|   ] | ||||
| } | ||||
							
								
								
									
										279
									
								
								backend/schema/endpoints/redirection-hosts.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										279
									
								
								backend/schema/endpoints/redirection-hosts.json
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,279 @@ | ||||
| { | ||||
|   "$schema": "http://json-schema.org/draft-07/schema#", | ||||
|   "$id": "endpoints/redirection-hosts", | ||||
|   "title": "Redirection Hosts", | ||||
|   "description": "Endpoints relating to Redirection Hosts", | ||||
|   "stability": "stable", | ||||
|   "type": "object", | ||||
|   "definitions": { | ||||
|     "id": { | ||||
|       "$ref": "../definitions.json#/definitions/id" | ||||
|     }, | ||||
|     "created_on": { | ||||
|       "$ref": "../definitions.json#/definitions/created_on" | ||||
|     }, | ||||
|     "modified_on": { | ||||
|       "$ref": "../definitions.json#/definitions/modified_on" | ||||
|     }, | ||||
|     "domain_names": { | ||||
|       "$ref": "../definitions.json#/definitions/domain_names" | ||||
|     }, | ||||
|     "forward_domain_name": { | ||||
|       "$ref": "../definitions.json#/definitions/domain_name" | ||||
|     }, | ||||
|     "preserve_path": { | ||||
|       "description": "Should the path be preserved", | ||||
|       "example": true, | ||||
|       "type": "boolean" | ||||
|     }, | ||||
|     "certificate_id": { | ||||
|       "$ref": "../definitions.json#/definitions/certificate_id" | ||||
|     }, | ||||
|     "ssl_forced": { | ||||
|       "$ref": "../definitions.json#/definitions/ssl_forced" | ||||
|     }, | ||||
|     "hsts_enabled": { | ||||
|       "$ref": "../definitions.json#/definitions/hsts_enabled" | ||||
|     }, | ||||
|     "hsts_subdomains": { | ||||
|       "$ref": "../definitions.json#/definitions/hsts_subdomains" | ||||
|     }, | ||||
|     "http2_support": { | ||||
|       "$ref": "../definitions.json#/definitions/http2_support" | ||||
|     }, | ||||
|     "block_exploits": { | ||||
|       "$ref": "../definitions.json#/definitions/block_exploits" | ||||
|     }, | ||||
|     "advanced_config": { | ||||
|       "type": "string" | ||||
|     }, | ||||
|     "enabled": { | ||||
|       "$ref": "../definitions.json#/definitions/enabled" | ||||
|     }, | ||||
|     "meta": { | ||||
|       "type": "object" | ||||
|     } | ||||
|   }, | ||||
|   "properties": { | ||||
|     "id": { | ||||
|       "$ref": "#/definitions/id" | ||||
|     }, | ||||
|     "created_on": { | ||||
|       "$ref": "#/definitions/created_on" | ||||
|     }, | ||||
|     "modified_on": { | ||||
|       "$ref": "#/definitions/modified_on" | ||||
|     }, | ||||
|     "domain_names": { | ||||
|       "$ref": "#/definitions/domain_names" | ||||
|     }, | ||||
|     "forward_domain_name": { | ||||
|       "$ref": "#/definitions/forward_domain_name" | ||||
|     }, | ||||
|     "preserve_path": { | ||||
|       "$ref": "#/definitions/preserve_path" | ||||
|     }, | ||||
|     "certificate_id": { | ||||
|       "$ref": "#/definitions/certificate_id" | ||||
|     }, | ||||
|     "ssl_forced": { | ||||
|       "$ref": "#/definitions/ssl_forced" | ||||
|     }, | ||||
|     "hsts_enabled": { | ||||
|       "$ref": "#/definitions/hsts_enabled" | ||||
|     }, | ||||
|     "hsts_subdomains": { | ||||
|       "$ref": "#/definitions/hsts_subdomains" | ||||
|     }, | ||||
|     "http2_support": { | ||||
|       "$ref": "#/definitions/http2_support" | ||||
|     }, | ||||
|     "block_exploits": { | ||||
|       "$ref": "#/definitions/block_exploits" | ||||
|     }, | ||||
|     "advanced_config": { | ||||
|       "$ref": "#/definitions/advanced_config" | ||||
|     }, | ||||
|     "enabled": { | ||||
|       "$ref": "#/definitions/enabled" | ||||
|     }, | ||||
|     "meta": { | ||||
|       "$ref": "#/definitions/meta" | ||||
|     } | ||||
|   }, | ||||
|   "links": [ | ||||
|     { | ||||
|       "title": "List", | ||||
|       "description": "Returns a list of Redirection Hosts", | ||||
|       "href": "/nginx/redirection-hosts", | ||||
|       "access": "private", | ||||
|       "method": "GET", | ||||
|       "rel": "self", | ||||
|       "http_header": { | ||||
|         "$ref": "../examples.json#/definitions/auth_header" | ||||
|       }, | ||||
|       "targetSchema": { | ||||
|         "type": "array", | ||||
|         "items": { | ||||
|           "$ref": "#/properties" | ||||
|         } | ||||
|       } | ||||
|     }, | ||||
|     { | ||||
|       "title": "Create", | ||||
|       "description": "Creates a new Redirection Host", | ||||
|       "href": "/nginx/redirection-hosts", | ||||
|       "access": "private", | ||||
|       "method": "POST", | ||||
|       "rel": "create", | ||||
|       "http_header": { | ||||
|         "$ref": "../examples.json#/definitions/auth_header" | ||||
|       }, | ||||
|       "schema": { | ||||
|         "type": "object", | ||||
|         "additionalProperties": false, | ||||
|         "required": [ | ||||
|           "domain_names", | ||||
|           "forward_domain_name" | ||||
|         ], | ||||
|         "properties": { | ||||
|           "domain_names": { | ||||
|             "$ref": "#/definitions/domain_names" | ||||
|           }, | ||||
|           "forward_domain_name": { | ||||
|             "$ref": "#/definitions/forward_domain_name" | ||||
|           }, | ||||
|           "preserve_path": { | ||||
|             "$ref": "#/definitions/preserve_path" | ||||
|           }, | ||||
|           "certificate_id": { | ||||
|             "$ref": "#/definitions/certificate_id" | ||||
|           }, | ||||
|           "ssl_forced": { | ||||
|             "$ref": "#/definitions/ssl_forced" | ||||
|           }, | ||||
|           "hsts_enabled": { | ||||
|             "$ref": "#/definitions/hsts_enabled" | ||||
|           }, | ||||
|           "hsts_subdomains": { | ||||
|             "$ref": "#/definitions/hsts_enabled" | ||||
|           }, | ||||
|           "http2_support": { | ||||
|             "$ref": "#/definitions/http2_support" | ||||
|           }, | ||||
|           "block_exploits": { | ||||
|             "$ref": "#/definitions/block_exploits" | ||||
|           }, | ||||
|           "advanced_config": { | ||||
|             "$ref": "#/definitions/advanced_config" | ||||
|           }, | ||||
|           "meta": { | ||||
|             "$ref": "#/definitions/meta" | ||||
|           } | ||||
|         } | ||||
|       }, | ||||
|       "targetSchema": { | ||||
|         "properties": { | ||||
|           "$ref": "#/properties" | ||||
|         } | ||||
|       } | ||||
|     }, | ||||
|     { | ||||
|       "title": "Update", | ||||
|       "description": "Updates a existing Redirection Host", | ||||
|       "href": "/nginx/redirection-hosts/{definitions.identity.example}", | ||||
|       "access": "private", | ||||
|       "method": "PUT", | ||||
|       "rel": "update", | ||||
|       "http_header": { | ||||
|         "$ref": "../examples.json#/definitions/auth_header" | ||||
|       }, | ||||
|       "schema": { | ||||
|         "type": "object", | ||||
|         "additionalProperties": false, | ||||
|         "properties": { | ||||
|           "domain_names": { | ||||
|             "$ref": "#/definitions/domain_names" | ||||
|           }, | ||||
|           "forward_domain_name": { | ||||
|             "$ref": "#/definitions/forward_domain_name" | ||||
|           }, | ||||
|           "preserve_path": { | ||||
|             "$ref": "#/definitions/preserve_path" | ||||
|           }, | ||||
|           "certificate_id": { | ||||
|             "$ref": "#/definitions/certificate_id" | ||||
|           }, | ||||
|           "ssl_forced": { | ||||
|             "$ref": "#/definitions/ssl_forced" | ||||
|           }, | ||||
|           "hsts_enabled": { | ||||
|             "$ref": "#/definitions/hsts_enabled" | ||||
|           }, | ||||
|           "hsts_subdomains": { | ||||
|             "$ref": "#/definitions/hsts_enabled" | ||||
|           }, | ||||
|           "http2_support": { | ||||
|             "$ref": "#/definitions/http2_support" | ||||
|           }, | ||||
|           "block_exploits": { | ||||
|             "$ref": "#/definitions/block_exploits" | ||||
|           }, | ||||
|           "advanced_config": { | ||||
|             "$ref": "#/definitions/advanced_config" | ||||
|           }, | ||||
|           "meta": { | ||||
|             "$ref": "#/definitions/meta" | ||||
|           } | ||||
|         } | ||||
|       }, | ||||
|       "targetSchema": { | ||||
|         "properties": { | ||||
|           "$ref": "#/properties" | ||||
|         } | ||||
|       } | ||||
|     }, | ||||
|     { | ||||
|       "title": "Delete", | ||||
|       "description": "Deletes a existing Redirection Host", | ||||
|       "href": "/nginx/redirection-hosts/{definitions.identity.example}", | ||||
|       "access": "private", | ||||
|       "method": "DELETE", | ||||
|       "rel": "delete", | ||||
|       "http_header": { | ||||
|         "$ref": "../examples.json#/definitions/auth_header" | ||||
|       }, | ||||
|       "targetSchema": { | ||||
|         "type": "boolean" | ||||
|       } | ||||
|     }, | ||||
|     { | ||||
|       "title": "Enable", | ||||
|       "description": "Enables a existing Redirection Host", | ||||
|       "href": "/nginx/redirection-hosts/{definitions.identity.example}/enable", | ||||
|       "access": "private", | ||||
|       "method": "POST", | ||||
|       "rel": "update", | ||||
|       "http_header": { | ||||
|         "$ref": "../examples.json#/definitions/auth_header" | ||||
|       }, | ||||
|       "targetSchema": { | ||||
|         "type": "boolean" | ||||
|       } | ||||
|     }, | ||||
|     { | ||||
|       "title": "Disable", | ||||
|       "description": "Disables a existing Redirection Host", | ||||
|       "href": "/nginx/redirection-hosts/{definitions.identity.example}/disable", | ||||
|       "access": "private", | ||||
|       "method": "POST", | ||||
|       "rel": "update", | ||||
|       "http_header": { | ||||
|         "$ref": "../examples.json#/definitions/auth_header" | ||||
|       }, | ||||
|       "targetSchema": { | ||||
|         "type": "boolean" | ||||
|       } | ||||
|     } | ||||
|   ] | ||||
| } | ||||
							
								
								
									
										99
									
								
								backend/schema/endpoints/settings.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										99
									
								
								backend/schema/endpoints/settings.json
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,99 @@ | ||||
| { | ||||
|   "$schema": "http://json-schema.org/draft-07/schema#", | ||||
|   "$id": "endpoints/settings", | ||||
|   "title": "Settings", | ||||
|   "description": "Endpoints relating to Settings", | ||||
|   "stability": "stable", | ||||
|   "type": "object", | ||||
|   "definitions": { | ||||
|     "id": { | ||||
|       "$ref": "../definitions.json#/definitions/setting_id" | ||||
|     }, | ||||
|     "name": { | ||||
|       "description": "Name", | ||||
|       "example": "Default Site", | ||||
|       "type": "string", | ||||
|       "minLength": 2, | ||||
|       "maxLength": 100 | ||||
|     }, | ||||
|     "description": { | ||||
|       "description": "Description", | ||||
|       "example": "Default Site", | ||||
|       "type": "string", | ||||
|       "minLength": 2, | ||||
|       "maxLength": 255 | ||||
|     }, | ||||
|     "value": { | ||||
|       "description": "Value", | ||||
|       "example": "404", | ||||
|       "type": "string", | ||||
|       "maxLength": 255 | ||||
|     }, | ||||
|     "meta": { | ||||
|       "type": "object" | ||||
|     } | ||||
|   }, | ||||
|   "links": [ | ||||
|     { | ||||
|       "title": "List", | ||||
|       "description": "Returns a list of Settings", | ||||
|       "href": "/settings", | ||||
|       "access": "private", | ||||
|       "method": "GET", | ||||
|       "rel": "self", | ||||
|       "http_header": { | ||||
|         "$ref": "../examples.json#/definitions/auth_header" | ||||
|       }, | ||||
|       "targetSchema": { | ||||
|         "type": "array", | ||||
|         "items": { | ||||
|           "$ref": "#/properties" | ||||
|         } | ||||
|       } | ||||
|     }, | ||||
|     { | ||||
|       "title": "Update", | ||||
|       "description": "Updates a existing Setting", | ||||
|       "href": "/settings/{definitions.identity.example}", | ||||
|       "access": "private", | ||||
|       "method": "PUT", | ||||
|       "rel": "update", | ||||
|       "http_header": { | ||||
|         "$ref": "../examples.json#/definitions/auth_header" | ||||
|       }, | ||||
|       "schema": { | ||||
|         "type": "object", | ||||
|         "properties": { | ||||
|           "value": { | ||||
|             "$ref": "#/definitions/value" | ||||
|           }, | ||||
|           "meta": { | ||||
|             "$ref": "#/definitions/meta" | ||||
|           } | ||||
|         } | ||||
|       }, | ||||
|       "targetSchema": { | ||||
|         "properties": { | ||||
|           "$ref": "#/properties" | ||||
|         } | ||||
|       } | ||||
|     } | ||||
|   ], | ||||
|   "properties": { | ||||
|     "id": { | ||||
|       "$ref": "#/definitions/id" | ||||
|     }, | ||||
|     "name": { | ||||
|       "$ref": "#/definitions/description" | ||||
|     }, | ||||
|     "description": { | ||||
|       "$ref": "#/definitions/description" | ||||
|     }, | ||||
|     "value": { | ||||
|       "$ref": "#/definitions/value" | ||||
|     }, | ||||
|     "meta": { | ||||
|       "$ref": "#/definitions/meta" | ||||
|     } | ||||
|   } | ||||
| } | ||||
							
								
								
									
										223
									
								
								backend/schema/endpoints/streams.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										223
									
								
								backend/schema/endpoints/streams.json
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,223 @@ | ||||
| { | ||||
|   "$schema": "http://json-schema.org/draft-07/schema#", | ||||
|   "$id": "endpoints/streams", | ||||
|   "title": "Streams", | ||||
|   "description": "Endpoints relating to Streams", | ||||
|   "stability": "stable", | ||||
|   "type": "object", | ||||
|   "definitions": { | ||||
|     "id": { | ||||
|       "$ref": "../definitions.json#/definitions/id" | ||||
|     }, | ||||
|     "created_on": { | ||||
|       "$ref": "../definitions.json#/definitions/created_on" | ||||
|     }, | ||||
|     "modified_on": { | ||||
|       "$ref": "../definitions.json#/definitions/modified_on" | ||||
|     }, | ||||
|     "incoming_port": { | ||||
|       "type": "integer", | ||||
|       "minimum": 1, | ||||
|       "maximum": 65535 | ||||
|     }, | ||||
|     "forward_ip": { | ||||
|       "type": "string", | ||||
|       "format": "ipv4" | ||||
|     }, | ||||
|     "forwarding_port": { | ||||
|       "type": "integer", | ||||
|       "minimum": 1, | ||||
|       "maximum": 65535 | ||||
|     }, | ||||
|     "tcp_forwarding": { | ||||
|       "type": "boolean" | ||||
|     }, | ||||
|     "udp_forwarding": { | ||||
|       "type": "boolean" | ||||
|     }, | ||||
|     "enabled": { | ||||
|       "$ref": "../definitions.json#/definitions/enabled" | ||||
|     }, | ||||
|     "meta": { | ||||
|       "type": "object" | ||||
|     } | ||||
|   }, | ||||
|   "properties": { | ||||
|     "id": { | ||||
|       "$ref": "#/definitions/id" | ||||
|     }, | ||||
|     "created_on": { | ||||
|       "$ref": "#/definitions/created_on" | ||||
|     }, | ||||
|     "modified_on": { | ||||
|       "$ref": "#/definitions/modified_on" | ||||
|     }, | ||||
|     "incoming_port": { | ||||
|       "$ref": "#/definitions/incoming_port" | ||||
|     }, | ||||
|     "forward_ip": { | ||||
|       "$ref": "#/definitions/forward_ip" | ||||
|     }, | ||||
|     "forwarding_port": { | ||||
|       "$ref": "#/definitions/forwarding_port" | ||||
|     }, | ||||
|     "tcp_forwarding": { | ||||
|       "$ref": "#/definitions/tcp_forwarding" | ||||
|     }, | ||||
|     "udp_forwarding": { | ||||
|       "$ref": "#/definitions/udp_forwarding" | ||||
|     }, | ||||
|     "enabled": { | ||||
|       "$ref": "#/definitions/enabled" | ||||
|     }, | ||||
|     "meta": { | ||||
|       "$ref": "#/definitions/meta" | ||||
|     } | ||||
|   }, | ||||
|   "links": [ | ||||
|     { | ||||
|       "title": "List", | ||||
|       "description": "Returns a list of Steams", | ||||
|       "href": "/nginx/streams", | ||||
|       "access": "private", | ||||
|       "method": "GET", | ||||
|       "rel": "self", | ||||
|       "http_header": { | ||||
|         "$ref": "../examples.json#/definitions/auth_header" | ||||
|       }, | ||||
|       "targetSchema": { | ||||
|         "type": "array", | ||||
|         "items": { | ||||
|           "$ref": "#/properties" | ||||
|         } | ||||
|       } | ||||
|     }, | ||||
|     { | ||||
|       "title": "Create", | ||||
|       "description": "Creates a new Stream", | ||||
|       "href": "/nginx/streams", | ||||
|       "access": "private", | ||||
|       "method": "POST", | ||||
|       "rel": "create", | ||||
|       "http_header": { | ||||
|         "$ref": "../examples.json#/definitions/auth_header" | ||||
|       }, | ||||
|       "schema": { | ||||
|         "type": "object", | ||||
|         "additionalProperties": false, | ||||
|         "required": [ | ||||
|           "incoming_port", | ||||
|           "forward_ip", | ||||
|           "forwarding_port" | ||||
|         ], | ||||
|         "properties": { | ||||
|           "incoming_port": { | ||||
|             "$ref": "#/definitions/incoming_port" | ||||
|           }, | ||||
|           "forward_ip": { | ||||
|             "$ref": "#/definitions/forward_ip" | ||||
|           }, | ||||
|           "forwarding_port": { | ||||
|             "$ref": "#/definitions/forwarding_port" | ||||
|           }, | ||||
|           "tcp_forwarding": { | ||||
|             "$ref": "#/definitions/tcp_forwarding" | ||||
|           }, | ||||
|           "udp_forwarding": { | ||||
|             "$ref": "#/definitions/udp_forwarding" | ||||
|           }, | ||||
|           "meta": { | ||||
|             "$ref": "#/definitions/meta" | ||||
|           } | ||||
|         } | ||||
|       }, | ||||
|       "targetSchema": { | ||||
|         "properties": { | ||||
|           "$ref": "#/properties" | ||||
|         } | ||||
|       } | ||||
|     }, | ||||
|     { | ||||
|       "title": "Update", | ||||
|       "description": "Updates a existing Stream", | ||||
|       "href": "/nginx/streams/{definitions.identity.example}", | ||||
|       "access": "private", | ||||
|       "method": "PUT", | ||||
|       "rel": "update", | ||||
|       "http_header": { | ||||
|         "$ref": "../examples.json#/definitions/auth_header" | ||||
|       }, | ||||
|       "schema": { | ||||
|         "type": "object", | ||||
|         "additionalProperties": false, | ||||
|         "properties": { | ||||
|           "incoming_port": { | ||||
|             "$ref": "#/definitions/incoming_port" | ||||
|           }, | ||||
|           "forward_ip": { | ||||
|             "$ref": "#/definitions/forward_ip" | ||||
|           }, | ||||
|           "forwarding_port": { | ||||
|             "$ref": "#/definitions/forwarding_port" | ||||
|           }, | ||||
|           "tcp_forwarding": { | ||||
|             "$ref": "#/definitions/tcp_forwarding" | ||||
|           }, | ||||
|           "udp_forwarding": { | ||||
|             "$ref": "#/definitions/udp_forwarding" | ||||
|           }, | ||||
|           "meta": { | ||||
|             "$ref": "#/definitions/meta" | ||||
|           } | ||||
|         } | ||||
|       }, | ||||
|       "targetSchema": { | ||||
|         "properties": { | ||||
|           "$ref": "#/properties" | ||||
|         } | ||||
|       } | ||||
|     }, | ||||
|     { | ||||
|       "title": "Delete", | ||||
|       "description": "Deletes a existing Stream", | ||||
|       "href": "/nginx/streams/{definitions.identity.example}", | ||||
|       "access": "private", | ||||
|       "method": "DELETE", | ||||
|       "rel": "delete", | ||||
|       "http_header": { | ||||
|         "$ref": "../examples.json#/definitions/auth_header" | ||||
|       }, | ||||
|       "targetSchema": { | ||||
|         "type": "boolean" | ||||
|       } | ||||
|     }, | ||||
|     { | ||||
|       "title": "Enable", | ||||
|       "description": "Enables a existing Stream", | ||||
|       "href": "/nginx/streams/{definitions.identity.example}/enable", | ||||
|       "access": "private", | ||||
|       "method": "POST", | ||||
|       "rel": "update", | ||||
|       "http_header": { | ||||
|         "$ref": "../examples.json#/definitions/auth_header" | ||||
|       }, | ||||
|       "targetSchema": { | ||||
|         "type": "boolean" | ||||
|       } | ||||
|     }, | ||||
|     { | ||||
|       "title": "Disable", | ||||
|       "description": "Disables a existing Stream", | ||||
|       "href": "/nginx/streams/{definitions.identity.example}/disable", | ||||
|       "access": "private", | ||||
|       "method": "POST", | ||||
|       "rel": "update", | ||||
|       "http_header": { | ||||
|         "$ref": "../examples.json#/definitions/auth_header" | ||||
|       }, | ||||
|       "targetSchema": { | ||||
|         "type": "boolean" | ||||
|       } | ||||
|     } | ||||
|   ] | ||||
| } | ||||
							
								
								
									
										100
									
								
								backend/schema/endpoints/tokens.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										100
									
								
								backend/schema/endpoints/tokens.json
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,100 @@ | ||||
| { | ||||
|   "$schema": "http://json-schema.org/draft-07/schema#", | ||||
|   "$id": "endpoints/tokens", | ||||
|   "title": "Token", | ||||
|   "description": "Tokens are required to authenticate against the API", | ||||
|   "stability": "stable", | ||||
|   "type": "object", | ||||
|   "definitions": { | ||||
|     "identity": { | ||||
|       "description": "Email Address or other 3rd party providers identifier", | ||||
|       "example": "john@example.com", | ||||
|       "type": "string" | ||||
|     }, | ||||
|     "secret": { | ||||
|       "description": "A password or key", | ||||
|       "example": "correct horse battery staple", | ||||
|       "type": "string" | ||||
|     }, | ||||
|     "token": { | ||||
|       "description": "JWT", | ||||
|       "example": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.e30.O_frfYM8RzmRsUNigHtu0_jZ_utSejyr1axMGa8rlsk", | ||||
|       "type": "string" | ||||
|     }, | ||||
|     "expires": { | ||||
|       "description": "Token expiry time", | ||||
|       "format": "date-time", | ||||
|       "type": "string" | ||||
|     }, | ||||
|     "scope": { | ||||
|       "description": "Scope of the Token, defaults to 'user'", | ||||
|       "example": "user", | ||||
|       "type": "string" | ||||
|     } | ||||
|   }, | ||||
|   "links": [ | ||||
|     { | ||||
|       "title": "Create", | ||||
|       "description": "Creates a new token.", | ||||
|       "href": "/tokens", | ||||
|       "access": "public", | ||||
|       "method": "POST", | ||||
|       "rel": "create", | ||||
|       "schema": { | ||||
|         "type": "object", | ||||
|         "required": [ | ||||
|           "identity", | ||||
|           "secret" | ||||
|         ], | ||||
|         "properties": { | ||||
|           "identity": { | ||||
|             "$ref": "#/definitions/identity" | ||||
|           }, | ||||
|           "secret": { | ||||
|             "$ref": "#/definitions/secret" | ||||
|           }, | ||||
|           "scope": { | ||||
|             "$ref": "#/definitions/scope" | ||||
|           } | ||||
|         } | ||||
|       }, | ||||
|       "targetSchema": { | ||||
|         "type": "object", | ||||
|         "properties": { | ||||
|           "token": { | ||||
|             "$ref": "#/definitions/token" | ||||
|           }, | ||||
|           "expires": { | ||||
|             "$ref": "#/definitions/expires" | ||||
|           } | ||||
|         } | ||||
|       } | ||||
|     }, | ||||
|     { | ||||
|       "title": "Refresh", | ||||
|       "description": "Returns a new token.", | ||||
|       "href": "/tokens", | ||||
|       "access": "private", | ||||
|       "method": "GET", | ||||
|       "rel": "self", | ||||
|       "http_header": { | ||||
|         "$ref": "../examples.json#/definitions/auth_header" | ||||
|       }, | ||||
|       "schema": {}, | ||||
|       "targetSchema": { | ||||
|         "type": "object", | ||||
|         "properties": { | ||||
|           "token": { | ||||
|             "$ref": "#/definitions/token" | ||||
|           }, | ||||
|           "expires": { | ||||
|             "$ref": "#/definitions/expires" | ||||
|           }, | ||||
|           "scope": { | ||||
|             "$ref": "#/definitions/scope" | ||||
|           } | ||||
|         } | ||||
|       } | ||||
|     } | ||||
|   ] | ||||
| } | ||||
							
								
								
									
										287
									
								
								backend/schema/endpoints/users.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										287
									
								
								backend/schema/endpoints/users.json
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,287 @@ | ||||
| { | ||||
|   "$schema": "http://json-schema.org/draft-07/schema#", | ||||
|   "$id": "endpoints/users", | ||||
|   "title": "Users", | ||||
|   "description": "Endpoints relating to Users", | ||||
|   "stability": "stable", | ||||
|   "type": "object", | ||||
|   "definitions": { | ||||
|     "id": { | ||||
|       "$ref": "../definitions.json#/definitions/id" | ||||
|     }, | ||||
|     "created_on": { | ||||
|       "$ref": "../definitions.json#/definitions/created_on" | ||||
|     }, | ||||
|     "modified_on": { | ||||
|       "$ref": "../definitions.json#/definitions/modified_on" | ||||
|     }, | ||||
|     "name": { | ||||
|       "description": "Name", | ||||
|       "example": "Jamie Curnow", | ||||
|       "type": "string", | ||||
|       "minLength": 2, | ||||
|       "maxLength": 100 | ||||
|     }, | ||||
|     "nickname": { | ||||
|       "description": "Nickname", | ||||
|       "example": "Jamie", | ||||
|       "type": "string", | ||||
|       "minLength": 2, | ||||
|       "maxLength": 50 | ||||
|     }, | ||||
|     "email": { | ||||
|       "$ref": "../definitions.json#/definitions/email" | ||||
|     }, | ||||
|     "avatar": { | ||||
|       "description": "Avatar", | ||||
|       "example": "http://somewhere.jpg", | ||||
|       "type": "string", | ||||
|       "minLength": 2, | ||||
|       "maxLength": 150, | ||||
|       "readOnly": true | ||||
|     }, | ||||
|     "roles": { | ||||
|       "description": "Roles", | ||||
|       "example": [ | ||||
|         "admin" | ||||
|       ], | ||||
|       "type": "array" | ||||
|     }, | ||||
|     "is_disabled": { | ||||
|       "description": "Is Disabled", | ||||
|       "example": false, | ||||
|       "type": "boolean" | ||||
|     } | ||||
|   }, | ||||
|   "links": [ | ||||
|     { | ||||
|       "title": "List", | ||||
|       "description": "Returns a list of Users", | ||||
|       "href": "/users", | ||||
|       "access": "private", | ||||
|       "method": "GET", | ||||
|       "rel": "self", | ||||
|       "http_header": { | ||||
|         "$ref": "../examples.json#/definitions/auth_header" | ||||
|       }, | ||||
|       "targetSchema": { | ||||
|         "type": "array", | ||||
|         "items": { | ||||
|           "$ref": "#/properties" | ||||
|         } | ||||
|       } | ||||
|     }, | ||||
|     { | ||||
|       "title": "Create", | ||||
|       "description": "Creates a new User", | ||||
|       "href": "/users", | ||||
|       "access": "private", | ||||
|       "method": "POST", | ||||
|       "rel": "create", | ||||
|       "http_header": { | ||||
|         "$ref": "../examples.json#/definitions/auth_header" | ||||
|       }, | ||||
|       "schema": { | ||||
|         "type": "object", | ||||
|         "required": [ | ||||
|           "name", | ||||
|           "nickname", | ||||
|           "email" | ||||
|         ], | ||||
|         "properties": { | ||||
|           "name": { | ||||
|             "$ref": "#/definitions/name" | ||||
|           }, | ||||
|           "nickname": { | ||||
|             "$ref": "#/definitions/nickname" | ||||
|           }, | ||||
|           "email": { | ||||
|             "$ref": "#/definitions/email" | ||||
|           }, | ||||
|           "roles": { | ||||
|             "$ref": "#/definitions/roles" | ||||
|           }, | ||||
|           "is_disabled": { | ||||
|             "$ref": "#/definitions/is_disabled" | ||||
|           }, | ||||
|           "auth": { | ||||
|             "type": "object", | ||||
|             "description": "Auth Credentials", | ||||
|             "example": { | ||||
|               "type": "password", | ||||
|               "secret": "bigredhorsebanana" | ||||
|             } | ||||
|           } | ||||
|         } | ||||
|       }, | ||||
|       "targetSchema": { | ||||
|         "properties": { | ||||
|           "$ref": "#/properties" | ||||
|         } | ||||
|       } | ||||
|     }, | ||||
|     { | ||||
|       "title": "Update", | ||||
|       "description": "Updates a existing User", | ||||
|       "href": "/users/{definitions.identity.example}", | ||||
|       "access": "private", | ||||
|       "method": "PUT", | ||||
|       "rel": "update", | ||||
|       "http_header": { | ||||
|         "$ref": "../examples.json#/definitions/auth_header" | ||||
|       }, | ||||
|       "schema": { | ||||
|         "type": "object", | ||||
|         "properties": { | ||||
|           "name": { | ||||
|             "$ref": "#/definitions/name" | ||||
|           }, | ||||
|           "nickname": { | ||||
|             "$ref": "#/definitions/nickname" | ||||
|           }, | ||||
|           "email": { | ||||
|             "$ref": "#/definitions/email" | ||||
|           }, | ||||
|           "roles": { | ||||
|             "$ref": "#/definitions/roles" | ||||
|           }, | ||||
|           "is_disabled": { | ||||
|             "$ref": "#/definitions/is_disabled" | ||||
|           } | ||||
|         } | ||||
|       }, | ||||
|       "targetSchema": { | ||||
|         "properties": { | ||||
|           "$ref": "#/properties" | ||||
|         } | ||||
|       } | ||||
|     }, | ||||
|     { | ||||
|       "title": "Delete", | ||||
|       "description": "Deletes a existing User", | ||||
|       "href": "/users/{definitions.identity.example}", | ||||
|       "access": "private", | ||||
|       "method": "DELETE", | ||||
|       "rel": "delete", | ||||
|       "http_header": { | ||||
|         "$ref": "../examples.json#/definitions/auth_header" | ||||
|       }, | ||||
|       "targetSchema": { | ||||
|         "type": "boolean" | ||||
|       } | ||||
|     }, | ||||
|     { | ||||
|       "title": "Set Password", | ||||
|       "description": "Sets a password for an existing User", | ||||
|       "href": "/users/{definitions.identity.example}/auth", | ||||
|       "access": "private", | ||||
|       "method": "PUT", | ||||
|       "rel": "update", | ||||
|       "http_header": { | ||||
|         "$ref": "../examples.json#/definitions/auth_header" | ||||
|       }, | ||||
|       "schema": { | ||||
|         "type": "object", | ||||
|         "required": [ | ||||
|           "type", | ||||
|           "secret" | ||||
|         ], | ||||
|         "properties": { | ||||
|           "type": { | ||||
|             "type": "string", | ||||
|             "pattern": "^password$" | ||||
|           }, | ||||
|           "current": { | ||||
|             "type": "string", | ||||
|             "minLength": 1, | ||||
|             "maxLength": 64 | ||||
|           }, | ||||
|           "secret": { | ||||
|             "type": "string", | ||||
|             "minLength": 8, | ||||
|             "maxLength": 64 | ||||
|           } | ||||
|         } | ||||
|       }, | ||||
|       "targetSchema": { | ||||
|         "type": "boolean" | ||||
|       } | ||||
|     }, | ||||
|     { | ||||
|       "title": "Set Permissions", | ||||
|       "description": "Sets Permissions for a User", | ||||
|       "href": "/users/{definitions.identity.example}/permissions", | ||||
|       "access": "private", | ||||
|       "method": "PUT", | ||||
|       "rel": "update", | ||||
|       "http_header": { | ||||
|         "$ref": "../examples.json#/definitions/auth_header" | ||||
|       }, | ||||
|       "schema": { | ||||
|         "type": "object", | ||||
|         "properties": { | ||||
|           "visibility": { | ||||
|             "type": "string", | ||||
|             "pattern": "^(all|user)$" | ||||
|           }, | ||||
|           "access_lists": { | ||||
|             "type": "string", | ||||
|             "pattern": "^(hidden|view|manage)$" | ||||
|           }, | ||||
|           "dead_hosts": { | ||||
|             "type": "string", | ||||
|             "pattern": "^(hidden|view|manage)$" | ||||
|           }, | ||||
|           "proxy_hosts": { | ||||
|             "type": "string", | ||||
|             "pattern": "^(hidden|view|manage)$" | ||||
|           }, | ||||
|           "redirection_hosts": { | ||||
|             "type": "string", | ||||
|             "pattern": "^(hidden|view|manage)$" | ||||
|           }, | ||||
|           "streams": { | ||||
|             "type": "string", | ||||
|             "pattern": "^(hidden|view|manage)$" | ||||
|           }, | ||||
|           "certificates": { | ||||
|             "type": "string", | ||||
|             "pattern": "^(hidden|view|manage)$" | ||||
|           } | ||||
|         } | ||||
|       }, | ||||
|       "targetSchema": { | ||||
|         "type": "boolean" | ||||
|       } | ||||
|     } | ||||
|   ], | ||||
|   "properties": { | ||||
|     "id": { | ||||
|       "$ref": "#/definitions/id" | ||||
|     }, | ||||
|     "created_on": { | ||||
|       "$ref": "#/definitions/created_on" | ||||
|     }, | ||||
|     "modified_on": { | ||||
|       "$ref": "#/definitions/modified_on" | ||||
|     }, | ||||
|     "name": { | ||||
|       "$ref": "#/definitions/name" | ||||
|     }, | ||||
|     "nickname": { | ||||
|       "$ref": "#/definitions/nickname" | ||||
|     }, | ||||
|     "email": { | ||||
|       "$ref": "#/definitions/email" | ||||
|     }, | ||||
|     "avatar": { | ||||
|       "$ref": "#/definitions/avatar" | ||||
|     }, | ||||
|     "roles": { | ||||
|       "$ref": "#/definitions/roles" | ||||
|     }, | ||||
|     "is_disabled": { | ||||
|       "$ref": "#/definitions/is_disabled" | ||||
|     } | ||||
|   } | ||||
| } | ||||
		Reference in New Issue
	
	Block a user