mirror of
				https://github.com/NginxProxyManager/nginx-proxy-manager.git
				synced 2025-10-31 15:53:33 +00:00 
			
		
		
		
	Swagger/openapi schema mega fixes and Cypress validation/enforcement
This commit is contained in:
		| @@ -1,10 +1,12 @@ | ||||
| { | ||||
| 	"operationId": "getAccessLists", | ||||
| 	"summary": "Get all access lists", | ||||
| 	"tags": ["Access Lists"], | ||||
| 	"tags": ["access-lists"], | ||||
| 	"security": [ | ||||
| 		{ | ||||
| 			"BearerAuth": ["access_lists"] | ||||
| 			"bearerAuth": [ | ||||
| 				"access_lists.view" | ||||
| 			] | ||||
| 		} | ||||
| 	], | ||||
| 	"parameters": [ | ||||
| @@ -14,7 +16,12 @@ | ||||
| 			"description": "Expansions", | ||||
| 			"schema": { | ||||
| 				"type": "string", | ||||
| 				"enum": ["owner", "items", "clients", "proxy_hosts"] | ||||
| 				"enum": [ | ||||
| 					"owner", | ||||
| 					"items", | ||||
| 					"clients", | ||||
| 					"proxy_hosts" | ||||
| 				] | ||||
| 			} | ||||
| 		} | ||||
| 	], | ||||
| @@ -23,22 +30,16 @@ | ||||
| 			"description": "200 response", | ||||
| 			"content": { | ||||
| 				"application/json": { | ||||
| 					"examples": { | ||||
| 						"default": { | ||||
| 							"value": [ | ||||
| 								{ | ||||
| 									"id": 1, | ||||
| 									"created_on": "2024-10-08T22:15:40.000Z", | ||||
| 									"modified_on": "2024-10-08T22:15:40.000Z", | ||||
| 									"owner_user_id": 1, | ||||
| 									"name": "test1234", | ||||
| 									"meta": {}, | ||||
| 									"satisfy_any": true, | ||||
| 									"pass_auth": false, | ||||
| 									"proxy_host_count": 0 | ||||
| 								} | ||||
| 							] | ||||
| 						} | ||||
| 					"example": { | ||||
| 						"id": 1, | ||||
| 						"created_on": "2024-10-08T22:15:40.000Z", | ||||
| 						"modified_on": "2024-10-08T22:15:40.000Z", | ||||
| 						"owner_user_id": 1, | ||||
| 						"name": "test1234", | ||||
| 						"meta": {}, | ||||
| 						"satisfy_any": true, | ||||
| 						"pass_auth": false, | ||||
| 						"proxy_host_count": 0 | ||||
| 					}, | ||||
| 					"schema": { | ||||
| 						"$ref": "../../../components/access-list-object.json" | ||||
|   | ||||
| @@ -1,16 +1,17 @@ | ||||
| { | ||||
| 	"operationId": "deleteAccessList", | ||||
| 	"summary": "Delete a Access List", | ||||
| 	"tags": ["Access Lists"], | ||||
| 	"tags": ["access-lists"], | ||||
| 	"security": [ | ||||
| 		{ | ||||
| 			"BearerAuth": ["access_lists"] | ||||
| 			"bearerAuth": ["access_lists.manage"] | ||||
| 		} | ||||
| 	], | ||||
| 	"parameters": [ | ||||
| 		{ | ||||
| 			"in": "path", | ||||
| 			"name": "listID", | ||||
| 			"description": "Access List ID", | ||||
| 			"schema": { | ||||
| 				"type": "integer", | ||||
| 				"minimum": 1 | ||||
|   | ||||
| @@ -1,49 +1,54 @@ | ||||
| { | ||||
| 	"operationId": "getAccessList", | ||||
| 	"summary": "Get a access List", | ||||
| 	"tags": ["Access Lists"], | ||||
| 	"security": [ | ||||
| 		{ | ||||
| 			"BearerAuth": ["access_lists"] | ||||
| 		} | ||||
| 	], | ||||
| 	"parameters": [ | ||||
| 		{ | ||||
| 			"in": "path", | ||||
| 			"name": "listID", | ||||
| 			"schema": { | ||||
| 				"type": "integer", | ||||
| 				"minimum": 1 | ||||
| 			}, | ||||
| 			"required": true, | ||||
| 			"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": false, | ||||
| 								"email": "jc@jc21.com", | ||||
| 								"name": "Jamie Curnow", | ||||
| 								"nickname": "James", | ||||
| 								"avatar": "//www.gravatar.com/avatar/6193176330f8d38747f038c170ddb193?default=mm", | ||||
| 								"roles": ["admin"] | ||||
| 							} | ||||
| 						} | ||||
| 					}, | ||||
| 					"schema": { | ||||
| 						"$ref": "../../../../components/access-list-object.json" | ||||
| 					} | ||||
| 				} | ||||
| 			} | ||||
| 		} | ||||
| 	} | ||||
|     "operationId": "getAccessList", | ||||
|     "summary": "Get a access List", | ||||
|     "tags": [ | ||||
|         "access-lists" | ||||
|     ], | ||||
|     "security": [ | ||||
|         { | ||||
|             "bearerAuth": [ | ||||
|                 "access_lists.view" | ||||
|             ] | ||||
|         } | ||||
|     ], | ||||
|     "parameters": [ | ||||
|         { | ||||
|             "in": "path", | ||||
|             "name": "listID", | ||||
|             "description": "Access List ID", | ||||
|             "schema": { | ||||
|                 "type": "integer", | ||||
|                 "minimum": 1 | ||||
|             }, | ||||
|             "required": true, | ||||
|             "example": 1 | ||||
|         } | ||||
|     ], | ||||
|     "responses": { | ||||
|         "200": { | ||||
|             "description": "200 response", | ||||
|             "content": { | ||||
|                 "application/json": { | ||||
|                     "examples": { | ||||
|                         "default": { | ||||
|                             "value": { | ||||
|                                 "id": 1, | ||||
|                                 "created_on": "2025-10-28T04:06:55.000Z", | ||||
|                                 "modified_on": "2025-10-29T22:48:20.000Z", | ||||
|                                 "owner_user_id": 1, | ||||
|                                 "name": "My Access List", | ||||
|                                 "meta": {}, | ||||
|                                 "satisfy_any": false, | ||||
|                                 "pass_auth": false, | ||||
|                                 "proxy_host_count": 1 | ||||
|                             } | ||||
|                         } | ||||
|                     }, | ||||
|                     "schema": { | ||||
|                         "$ref": "../../../../components/access-list-object.json" | ||||
|                     } | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -1,16 +1,17 @@ | ||||
| { | ||||
| 	"operationId": "updateAccessList", | ||||
| 	"summary": "Update a Access List", | ||||
| 	"tags": ["Access Lists"], | ||||
| 	"tags": ["access-lists"], | ||||
| 	"security": [ | ||||
| 		{ | ||||
| 			"BearerAuth": ["access_lists"] | ||||
| 			"bearerAuth": ["access_lists.manage"] | ||||
| 		} | ||||
| 	], | ||||
| 	"parameters": [ | ||||
| 		{ | ||||
| 			"in": "path", | ||||
| 			"name": "listID", | ||||
| 			"description": "Access List ID", | ||||
| 			"schema": { | ||||
| 				"type": "integer", | ||||
| 				"minimum": 1 | ||||
| @@ -39,50 +40,29 @@ | ||||
| 							"$ref": "../../../../components/access-list-object.json#/properties/pass_auth" | ||||
| 						}, | ||||
| 						"items": { | ||||
| 							"type": "array", | ||||
| 							"items": { | ||||
| 								"type": "object", | ||||
| 								"additionalProperties": false, | ||||
| 								"properties": { | ||||
| 									"username": { | ||||
| 										"type": "string", | ||||
| 										"minLength": 1 | ||||
| 									}, | ||||
| 									"password": { | ||||
| 										"type": "string" | ||||
| 									} | ||||
| 								} | ||||
| 							} | ||||
| 							"$ref": "../../../../common.json#/properties/access_items" | ||||
| 						}, | ||||
| 						"clients": { | ||||
| 							"type": "array", | ||||
| 							"items": { | ||||
| 								"type": "object", | ||||
| 								"additionalProperties": false, | ||||
| 								"properties": { | ||||
| 									"address": { | ||||
| 										"oneOf": [ | ||||
| 											{ | ||||
| 												"type": "string", | ||||
| 												"pattern": "^([0-9]{1,3}\\.){3}[0-9]{1,3}(/([0-9]|[1-2][0-9]|3[0-2]))?$" | ||||
| 											}, | ||||
| 											{ | ||||
| 												"type": "string", | ||||
| 												"pattern": "^s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:)))(%.+)?s*(/([0-9]|[1-9][0-9]|1[0-1][0-9]|12[0-8]))?$" | ||||
| 											}, | ||||
| 											{ | ||||
| 												"type": "string", | ||||
| 												"pattern": "^all$" | ||||
| 											} | ||||
| 										] | ||||
| 									}, | ||||
| 									"directive": { | ||||
| 										"$ref": "../../../../components/access-list-object.json#/properties/directive" | ||||
| 									} | ||||
| 								} | ||||
| 							} | ||||
| 							"$ref": "../../../../common.json#/properties/access_clients" | ||||
| 						} | ||||
| 					} | ||||
| 				}, | ||||
| 				"example": { | ||||
| 					"name": "My Access List", | ||||
| 					"satisfy_any": true, | ||||
| 					"pass_auth": false, | ||||
| 					"items": [ | ||||
| 						{ | ||||
| 							"username": "admin2", | ||||
| 							"password": "pass2" | ||||
| 						} | ||||
| 					], | ||||
| 					"clients": [ | ||||
| 						{ | ||||
| 							"directive": "allow", | ||||
| 							"address": "192.168.0.0/24" | ||||
| 						} | ||||
| 					] | ||||
| 				} | ||||
| 			} | ||||
| 		} | ||||
| @@ -108,7 +88,6 @@ | ||||
| 									"id": 1, | ||||
| 									"created_on": "2024-10-07T22:43:55.000Z", | ||||
| 									"modified_on": "2024-10-08T12:52:54.000Z", | ||||
| 									"is_deleted": false, | ||||
| 									"is_disabled": false, | ||||
| 									"email": "admin@example.com", | ||||
| 									"name": "Administrator", | ||||
|   | ||||
| @@ -1,10 +1,12 @@ | ||||
| { | ||||
| 	"operationId": "createAccessList", | ||||
| 	"summary": "Create a Access List", | ||||
| 	"tags": ["Access Lists"], | ||||
| 	"tags": ["access-lists"], | ||||
| 	"security": [ | ||||
| 		{ | ||||
| 			"BearerAuth": ["access_lists"] | ||||
| 			"bearerAuth": [ | ||||
| 				"access_lists.manage" | ||||
| 			] | ||||
| 		} | ||||
| 	], | ||||
| 	"requestBody": { | ||||
| @@ -15,7 +17,9 @@ | ||||
| 				"schema": { | ||||
| 					"type": "object", | ||||
| 					"additionalProperties": false, | ||||
| 					"required": ["name"], | ||||
| 					"required": [ | ||||
| 						"name" | ||||
| 					], | ||||
| 					"properties": { | ||||
| 						"name": { | ||||
| 							"$ref": "../../../components/access-list-object.json#/properties/name" | ||||
| @@ -27,54 +31,29 @@ | ||||
| 							"$ref": "../../../components/access-list-object.json#/properties/pass_auth" | ||||
| 						}, | ||||
| 						"items": { | ||||
| 							"type": "array", | ||||
| 							"items": { | ||||
| 								"type": "object", | ||||
| 								"additionalProperties": false, | ||||
| 								"properties": { | ||||
| 									"username": { | ||||
| 										"type": "string", | ||||
| 										"minLength": 1 | ||||
| 									}, | ||||
| 									"password": { | ||||
| 										"type": "string", | ||||
| 										"minLength": 1 | ||||
| 									} | ||||
| 								} | ||||
| 							} | ||||
| 							"$ref": "../../../common.json#/properties/access_items" | ||||
| 						}, | ||||
| 						"clients": { | ||||
| 							"type": "array", | ||||
| 							"items": { | ||||
| 								"type": "object", | ||||
| 								"additionalProperties": false, | ||||
| 								"properties": { | ||||
| 									"address": { | ||||
| 										"oneOf": [ | ||||
| 											{ | ||||
| 												"type": "string", | ||||
| 												"pattern": "^([0-9]{1,3}\\.){3}[0-9]{1,3}(/([0-9]|[1-2][0-9]|3[0-2]))?$" | ||||
| 											}, | ||||
| 											{ | ||||
| 												"type": "string", | ||||
| 												"pattern": "^s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:)))(%.+)?s*(/([0-9]|[1-9][0-9]|1[0-1][0-9]|12[0-8]))?$" | ||||
| 											}, | ||||
| 											{ | ||||
| 												"type": "string", | ||||
| 												"pattern": "^all$" | ||||
| 											} | ||||
| 										] | ||||
| 									}, | ||||
| 									"directive": { | ||||
| 										"$ref": "../../../components/access-list-object.json#/properties/directive" | ||||
| 									} | ||||
| 								} | ||||
| 							} | ||||
| 						}, | ||||
| 						"meta": { | ||||
| 							"$ref": "../../../components/access-list-object.json#/properties/meta" | ||||
| 							"$ref": "../../../common.json#/properties/access_clients" | ||||
| 						} | ||||
| 					} | ||||
| 				}, | ||||
| 				"example": { | ||||
| 					"name": "My Access List", | ||||
| 					"satisfy_any": true, | ||||
| 					"pass_auth": false, | ||||
| 					"items": [ | ||||
| 						{ | ||||
| 							"username": "admin", | ||||
| 							"password": "pass" | ||||
| 						} | ||||
| 					], | ||||
| 					"clients": [ | ||||
| 						{ | ||||
| 							"directive": "allow", | ||||
| 							"address": "192.168.0.0/24" | ||||
| 						} | ||||
| 					] | ||||
| 				} | ||||
| 			} | ||||
| 		} | ||||
| @@ -100,13 +79,14 @@ | ||||
| 									"id": 1, | ||||
| 									"created_on": "2024-10-07T22:43:55.000Z", | ||||
| 									"modified_on": "2024-10-08T12:52:54.000Z", | ||||
| 									"is_deleted": false, | ||||
| 									"is_disabled": false, | ||||
| 									"email": "admin@example.com", | ||||
| 									"name": "Administrator", | ||||
| 									"nickname": "some guy", | ||||
| 									"avatar": "//www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?default=mm", | ||||
| 									"roles": ["admin"] | ||||
| 									"roles": [ | ||||
| 										"admin" | ||||
| 									] | ||||
| 								}, | ||||
| 								"items": [ | ||||
| 									{ | ||||
|   | ||||
| @@ -1,16 +1,17 @@ | ||||
| { | ||||
| 	"operationId": "deleteCertificate", | ||||
| 	"summary": "Delete a Certificate", | ||||
| 	"tags": ["Certificates"], | ||||
| 	"tags": ["certificates"], | ||||
| 	"security": [ | ||||
| 		{ | ||||
| 			"BearerAuth": ["certificates"] | ||||
| 			"bearerAuth": ["certificates.manage"] | ||||
| 		} | ||||
| 	], | ||||
| 	"parameters": [ | ||||
| 		{ | ||||
| 			"in": "path", | ||||
| 			"name": "certID", | ||||
| 			"description": "Certificate ID", | ||||
| 			"schema": { | ||||
| 				"type": "integer", | ||||
| 				"minimum": 1 | ||||
|   | ||||
| @@ -1,16 +1,17 @@ | ||||
| { | ||||
| 	"operationId": "downloadCertificate", | ||||
| 	"summary": "Downloads a Certificate", | ||||
| 	"tags": ["Certificates"], | ||||
| 	"tags": ["certificates"], | ||||
| 	"security": [ | ||||
| 		{ | ||||
| 			"BearerAuth": ["certificates"] | ||||
| 			"bearerAuth": ["certificates.manage"] | ||||
| 		} | ||||
| 	], | ||||
| 	"parameters": [ | ||||
| 		{ | ||||
| 			"in": "path", | ||||
| 			"name": "certID", | ||||
| 			"description": "Certificate ID", | ||||
| 			"schema": { | ||||
| 				"type": "integer", | ||||
| 				"minimum": 1 | ||||
|   | ||||
| @@ -1,16 +1,17 @@ | ||||
| { | ||||
| 	"operationId": "getCertificate", | ||||
| 	"summary": "Get a Certificate", | ||||
| 	"tags": ["Certificates"], | ||||
| 	"tags": ["certificates"], | ||||
| 	"security": [ | ||||
| 		{ | ||||
| 			"BearerAuth": ["certificates"] | ||||
| 			"bearerAuth": ["certificates.view"] | ||||
| 		} | ||||
| 	], | ||||
| 	"parameters": [ | ||||
| 		{ | ||||
| 			"in": "path", | ||||
| 			"name": "certID", | ||||
| 			"description": "Certificate ID", | ||||
| 			"schema": { | ||||
| 				"type": "integer", | ||||
| 				"minimum": 1 | ||||
|   | ||||
| @@ -1,16 +1,17 @@ | ||||
| { | ||||
| 	"operationId": "renewCertificate", | ||||
| 	"summary": "Renews a Certificate", | ||||
| 	"tags": ["Certificates"], | ||||
| 	"tags": ["certificates"], | ||||
| 	"security": [ | ||||
| 		{ | ||||
| 			"BearerAuth": ["certificates"] | ||||
| 			"bearerAuth": ["certificates.manage"] | ||||
| 		} | ||||
| 	], | ||||
| 	"parameters": [ | ||||
| 		{ | ||||
| 			"in": "path", | ||||
| 			"name": "certID", | ||||
| 			"description": "Certificate ID", | ||||
| 			"schema": { | ||||
| 				"type": "integer", | ||||
| 				"minimum": 1 | ||||
| @@ -32,7 +33,6 @@ | ||||
| 								"id": 4, | ||||
| 								"created_on": "2024-10-09T05:31:58.000Z", | ||||
| 								"owner_user_id": 1, | ||||
| 								"is_deleted": false, | ||||
| 								"provider": "letsencrypt", | ||||
| 								"nice_name": "My Test Cert", | ||||
| 								"domain_names": ["test.jc21.supernerd.pro"], | ||||
|   | ||||
| @@ -1,16 +1,17 @@ | ||||
| { | ||||
| 	"operationId": "uploadCertificate", | ||||
| 	"summary": "Uploads a custom Certificate", | ||||
| 	"tags": ["Certificates"], | ||||
| 	"tags": ["certificates"], | ||||
| 	"security": [ | ||||
| 		{ | ||||
| 			"BearerAuth": ["certificates"] | ||||
| 			"bearerAuth": ["certificates.manage"] | ||||
| 		} | ||||
| 	], | ||||
| 	"parameters": [ | ||||
| 		{ | ||||
| 			"in": "path", | ||||
| 			"name": "certID", | ||||
| 			"description": "Certificate ID", | ||||
| 			"schema": { | ||||
| 				"type": "integer", | ||||
| 				"minimum": 1 | ||||
| @@ -20,28 +21,7 @@ | ||||
| 		} | ||||
| 	], | ||||
| 	"requestBody": { | ||||
| 		"description": "Certificate Files", | ||||
| 		"required": true, | ||||
| 		"content": { | ||||
| 			"multipart/form-data": { | ||||
| 				"schema": { | ||||
| 					"type": "object", | ||||
| 					"additionalProperties": false, | ||||
| 					"required": ["certificate", "certificate_key"], | ||||
| 					"properties": { | ||||
| 						"certificate": { | ||||
| 							"type": "string" | ||||
| 						}, | ||||
| 						"certificate_key": { | ||||
| 							"type": "string" | ||||
| 						}, | ||||
| 						"intermediate_certificate": { | ||||
| 							"type": "string" | ||||
| 						} | ||||
| 					} | ||||
| 				} | ||||
| 			} | ||||
| 		} | ||||
| 		"$ref": "../../../../../common.json#/properties/certificate_files" | ||||
| 	}, | ||||
| 	"responses": { | ||||
| 		"200": { | ||||
| @@ -63,15 +43,18 @@ | ||||
| 						"properties": { | ||||
| 							"certificate": { | ||||
| 								"type": "string", | ||||
| 								"minLength": 1 | ||||
| 								"minLength": 1, | ||||
| 								"example": "-----BEGIN CERTIFICATE-----\nMIID...-----END CERTIFICATE-----" | ||||
| 							}, | ||||
| 							"certificate_key": { | ||||
| 								"type": "string", | ||||
| 								"minLength": 1 | ||||
| 								"minLength": 1, | ||||
| 								"example": "-----BEGIN CERTIFICATE-----\nMIID...-----END CERTIFICATE-----" | ||||
| 							}, | ||||
| 							"intermediate_certificate": { | ||||
| 								"type": "string", | ||||
| 								"minLength": 1 | ||||
| 								"minLength": 1, | ||||
| 								"example": "-----BEGIN CERTIFICATE-----\nMIID...-----END CERTIFICATE-----" | ||||
| 							} | ||||
| 						} | ||||
| 					} | ||||
|   | ||||
| @@ -1,14 +1,10 @@ | ||||
| { | ||||
| 	"operationId": "getDNSProviders", | ||||
| 	"summary": "Get DNS Providers for Certificates", | ||||
| 	"tags": [ | ||||
| 		"Certificates" | ||||
| 	], | ||||
| 	"tags": ["certificates"], | ||||
| 	"security": [ | ||||
| 		{ | ||||
| 			"BearerAuth": [ | ||||
| 				"certificates" | ||||
| 			] | ||||
| 			"bearerAuth": ["certificates.view"] | ||||
| 		} | ||||
| 	], | ||||
| 	"responses": { | ||||
|   | ||||
| @@ -1,10 +1,10 @@ | ||||
| { | ||||
| 	"operationId": "getCertificates", | ||||
| 	"summary": "Get all certificates", | ||||
| 	"tags": ["Certificates"], | ||||
| 	"tags": ["certificates"], | ||||
| 	"security": [ | ||||
| 		{ | ||||
| 			"BearerAuth": ["certificates"] | ||||
| 			"bearerAuth": ["certificates.view"] | ||||
| 		} | ||||
| 	], | ||||
| 	"parameters": [ | ||||
|   | ||||
| @@ -1,10 +1,10 @@ | ||||
| { | ||||
| 	"operationId": "createCertificate", | ||||
| 	"summary": "Create a Certificate", | ||||
| 	"tags": ["Certificates"], | ||||
| 	"tags": ["certificates"], | ||||
| 	"security": [ | ||||
| 		{ | ||||
| 			"BearerAuth": ["certificates"] | ||||
| 			"bearerAuth": ["certificates.manage"] | ||||
| 		} | ||||
| 	], | ||||
| 	"requestBody": { | ||||
| @@ -30,6 +30,13 @@ | ||||
| 							"$ref": "../../../components/certificate-object.json#/properties/meta" | ||||
| 						} | ||||
| 					} | ||||
| 				}, | ||||
| 				"example": { | ||||
| 					"provider": "letsencrypt", | ||||
| 					"domain_names": ["test.example.com"], | ||||
| 					"meta": { | ||||
| 						"dns_challenge": false | ||||
| 					} | ||||
| 				} | ||||
| 			} | ||||
| 		} | ||||
| @@ -47,7 +54,6 @@ | ||||
| 								"id": 5, | ||||
| 								"created_on": "2024-10-09 05:28:35", | ||||
| 								"owner_user_id": 1, | ||||
| 								"is_deleted": false, | ||||
| 								"provider": "letsencrypt", | ||||
| 								"nice_name": "test.example.com", | ||||
| 								"domain_names": ["test.example.com"], | ||||
|   | ||||
| @@ -1,10 +1,10 @@ | ||||
| { | ||||
| 	"operationId": "testHttpReach", | ||||
| 	"summary": "Test HTTP Reachability", | ||||
| 	"tags": ["Certificates"], | ||||
| 	"tags": ["certificates"], | ||||
| 	"security": [ | ||||
| 		{ | ||||
| 			"BearerAuth": ["certificates"] | ||||
| 			"bearerAuth": ["certificates.view"] | ||||
| 		} | ||||
| 	], | ||||
| 	"requestBody": { | ||||
|   | ||||
| @@ -1,35 +1,14 @@ | ||||
| { | ||||
| 	"operationId": "validateCertificates", | ||||
| 	"summary": "Validates given Custom Certificates", | ||||
| 	"tags": ["Certificates"], | ||||
| 	"tags": ["certificates"], | ||||
| 	"security": [ | ||||
| 		{ | ||||
| 			"BearerAuth": ["certificates"] | ||||
| 			"bearerAuth": ["certificates.manage"] | ||||
| 		} | ||||
| 	], | ||||
| 	"requestBody": { | ||||
| 		"description": "Certificate Files", | ||||
| 		"required": true, | ||||
| 		"content": { | ||||
| 			"multipart/form-data": { | ||||
| 				"schema": { | ||||
| 					"type": "object", | ||||
| 					"additionalProperties": false, | ||||
| 					"required": ["certificate", "certificate_key"], | ||||
| 					"properties": { | ||||
| 						"certificate": { | ||||
| 							"type": "string" | ||||
| 						}, | ||||
| 						"certificate_key": { | ||||
| 							"type": "string" | ||||
| 						}, | ||||
| 						"intermediate_certificate": { | ||||
| 							"type": "string" | ||||
| 						} | ||||
| 					} | ||||
| 				} | ||||
| 			} | ||||
| 		} | ||||
| 		"$ref": "../../../../common.json#/properties/certificate_files" | ||||
| 	}, | ||||
| 	"responses": { | ||||
| 		"200": { | ||||
| @@ -62,10 +41,12 @@ | ||||
| 								"required": ["cn", "issuer", "dates"], | ||||
| 								"properties": { | ||||
| 									"cn": { | ||||
| 										"type": "string" | ||||
| 										"type": "string", | ||||
| 										"example": "example.com" | ||||
| 									}, | ||||
| 									"issuer": { | ||||
| 										"type": "string" | ||||
| 										"type": "string", | ||||
| 										"example": "C = US, O = Let's Encrypt, CN = E5" | ||||
| 									}, | ||||
| 									"dates": { | ||||
| 										"type": "object", | ||||
| @@ -78,12 +59,17 @@ | ||||
| 											"to": { | ||||
| 												"type": "integer" | ||||
| 											} | ||||
| 										}, | ||||
| 										"example": { | ||||
| 											"from": 1728448218, | ||||
| 											"to": 1736224217 | ||||
| 										} | ||||
| 									} | ||||
| 								} | ||||
| 							}, | ||||
| 							"certificate_key": { | ||||
| 								"type": "boolean" | ||||
| 								"type": "boolean", | ||||
| 								"example": true | ||||
| 							} | ||||
| 						} | ||||
| 					} | ||||
|   | ||||
| @@ -1,10 +1,10 @@ | ||||
| { | ||||
| 	"operationId": "getDeadHosts", | ||||
| 	"summary": "Get all 404 hosts", | ||||
| 	"tags": ["404 Hosts"], | ||||
| 	"tags": ["404-hosts"], | ||||
| 	"security": [ | ||||
| 		{ | ||||
| 			"BearerAuth": ["dead_hosts"] | ||||
| 			"bearerAuth": ["dead_hosts.view"] | ||||
| 		} | ||||
| 	], | ||||
| 	"parameters": [ | ||||
|   | ||||
| @@ -1,16 +1,17 @@ | ||||
| { | ||||
| 	"operationId": "deleteDeadHost", | ||||
| 	"summary": "Delete a 404 Host", | ||||
| 	"tags": ["404 Hosts"], | ||||
| 	"tags": ["404-hosts"], | ||||
| 	"security": [ | ||||
| 		{ | ||||
| 			"BearerAuth": ["dead_hosts"] | ||||
| 			"bearerAuth": ["dead_hosts.manage"] | ||||
| 		} | ||||
| 	], | ||||
| 	"parameters": [ | ||||
| 		{ | ||||
| 			"in": "path", | ||||
| 			"name": "hostID", | ||||
| 			"description": "The ID of the 404 Host", | ||||
| 			"schema": { | ||||
| 				"type": "integer", | ||||
| 				"minimum": 1 | ||||
|   | ||||
| @@ -1,16 +1,17 @@ | ||||
| { | ||||
| 	"operationId": "disableDeadHost", | ||||
| 	"summary": "Disable a 404 Host", | ||||
| 	"tags": ["404 Hosts"], | ||||
| 	"tags": ["404-hosts"], | ||||
| 	"security": [ | ||||
| 		{ | ||||
| 			"BearerAuth": ["dead_hosts"] | ||||
| 			"bearerAuth": ["dead_hosts.manage"] | ||||
| 		} | ||||
| 	], | ||||
| 	"parameters": [ | ||||
| 		{ | ||||
| 			"in": "path", | ||||
| 			"name": "hostID", | ||||
| 			"description": "The ID of the 404 Host", | ||||
| 			"schema": { | ||||
| 				"type": "integer", | ||||
| 				"minimum": 1 | ||||
|   | ||||
| @@ -1,16 +1,17 @@ | ||||
| { | ||||
| 	"operationId": "enableDeadHost", | ||||
| 	"summary": "Enable a 404 Host", | ||||
| 	"tags": ["404 Hosts"], | ||||
| 	"tags": ["404-hosts"], | ||||
| 	"security": [ | ||||
| 		{ | ||||
| 			"BearerAuth": ["dead_hosts"] | ||||
| 			"bearerAuth": ["dead_hosts.manage"] | ||||
| 		} | ||||
| 	], | ||||
| 	"parameters": [ | ||||
| 		{ | ||||
| 			"in": "path", | ||||
| 			"name": "hostID", | ||||
| 			"description": "The ID of the 404 Host", | ||||
| 			"schema": { | ||||
| 				"type": "integer", | ||||
| 				"minimum": 1 | ||||
|   | ||||
| @@ -1,16 +1,17 @@ | ||||
| { | ||||
| 	"operationId": "getDeadHost", | ||||
| 	"summary": "Get a 404 Host", | ||||
| 	"tags": ["404 Hosts"], | ||||
| 	"tags": ["404-hosts"], | ||||
| 	"security": [ | ||||
| 		{ | ||||
| 			"BearerAuth": ["dead_hosts"] | ||||
| 			"bearerAuth": ["dead_hosts.view"] | ||||
| 		} | ||||
| 	], | ||||
| 	"parameters": [ | ||||
| 		{ | ||||
| 			"in": "path", | ||||
| 			"name": "hostID", | ||||
| 			"description": "The ID of the 404 Host", | ||||
| 			"schema": { | ||||
| 				"type": "integer", | ||||
| 				"minimum": 1 | ||||
|   | ||||
| @@ -1,16 +1,17 @@ | ||||
| { | ||||
| 	"operationId": "updateDeadHost", | ||||
| 	"summary": "Update a 404 Host", | ||||
| 	"tags": ["404 Hosts"], | ||||
| 	"tags": ["404-hosts"], | ||||
| 	"security": [ | ||||
| 		{ | ||||
| 			"BearerAuth": ["dead_hosts"] | ||||
| 			"bearerAuth": ["dead_hosts.manage"] | ||||
| 		} | ||||
| 	], | ||||
| 	"parameters": [ | ||||
| 		{ | ||||
| 			"in": "path", | ||||
| 			"name": "hostID", | ||||
| 			"description": "The ID of the 404 Host", | ||||
| 			"schema": { | ||||
| 				"type": "integer", | ||||
| 				"minimum": 1 | ||||
| @@ -86,7 +87,6 @@ | ||||
| 									"id": 1, | ||||
| 									"created_on": "2024-10-09T00:59:56.000Z", | ||||
| 									"modified_on": "2024-10-09T00:59:56.000Z", | ||||
| 									"is_deleted": false, | ||||
| 									"is_disabled": false, | ||||
| 									"email": "admin@example.com", | ||||
| 									"name": "Administrator", | ||||
|   | ||||
| @@ -1,10 +1,12 @@ | ||||
| { | ||||
| 	"operationId": "create404Host", | ||||
| 	"summary": "Create a 404 Host", | ||||
| 	"tags": ["404 Hosts"], | ||||
| 	"tags": ["404-hosts"], | ||||
| 	"security": [ | ||||
| 		{ | ||||
| 			"BearerAuth": ["dead_hosts"] | ||||
| 			"bearerAuth": [ | ||||
| 				"dead_hosts.manage" | ||||
| 			] | ||||
| 		} | ||||
| 	], | ||||
| 	"requestBody": { | ||||
| @@ -15,7 +17,9 @@ | ||||
| 				"schema": { | ||||
| 					"type": "object", | ||||
| 					"additionalProperties": false, | ||||
| 					"required": ["domain_names"], | ||||
| 					"required": [ | ||||
| 						"domain_names" | ||||
| 					], | ||||
| 					"properties": { | ||||
| 						"domain_names": { | ||||
| 							"$ref": "../../../components/dead-host-object.json#/properties/domain_names" | ||||
| @@ -42,6 +46,18 @@ | ||||
| 							"$ref": "../../../components/dead-host-object.json#/properties/meta" | ||||
| 						} | ||||
| 					} | ||||
| 				}, | ||||
| 				"example": { | ||||
| 					"domain_names": [ | ||||
| 						"test.example.com" | ||||
| 					], | ||||
| 					"certificate_id": 0, | ||||
| 					"ssl_forced": false, | ||||
| 					"advanced_config": "", | ||||
| 					"http2_support": false, | ||||
| 					"hsts_enabled": false, | ||||
| 					"hsts_subdomains": false, | ||||
| 					"meta": {} | ||||
| 				} | ||||
| 			} | ||||
| 		} | ||||
| @@ -58,7 +74,9 @@ | ||||
| 								"created_on": "2024-10-09T01:38:52.000Z", | ||||
| 								"modified_on": "2024-10-09T01:38:52.000Z", | ||||
| 								"owner_user_id": 1, | ||||
| 								"domain_names": ["test.example.com"], | ||||
| 								"domain_names": [ | ||||
| 									"test.example.com" | ||||
| 								], | ||||
| 								"certificate_id": 0, | ||||
| 								"ssl_forced": false, | ||||
| 								"advanced_config": "", | ||||
| @@ -72,13 +90,14 @@ | ||||
| 									"id": 1, | ||||
| 									"created_on": "2024-10-09T00:59:56.000Z", | ||||
| 									"modified_on": "2024-10-09T00:59:56.000Z", | ||||
| 									"is_deleted": false, | ||||
| 									"is_disabled": false, | ||||
| 									"email": "admin@example.com", | ||||
| 									"name": "Administrator", | ||||
| 									"nickname": "Admin", | ||||
| 									"avatar": "", | ||||
| 									"roles": ["admin"] | ||||
| 									"roles": [ | ||||
| 										"admin" | ||||
| 									] | ||||
| 								} | ||||
| 							} | ||||
| 						} | ||||
|   | ||||
| @@ -1,10 +1,12 @@ | ||||
| { | ||||
| 	"operationId": "getProxyHosts", | ||||
| 	"summary": "Get all proxy hosts", | ||||
| 	"tags": ["Proxy Hosts"], | ||||
| 	"tags": ["proxy-hosts"], | ||||
| 	"security": [ | ||||
| 		{ | ||||
| 			"BearerAuth": ["proxy_hosts"] | ||||
| 			"bearerAuth": [ | ||||
| 				"proxy_hosts.view" | ||||
| 			] | ||||
| 		} | ||||
| 	], | ||||
| 	"parameters": [ | ||||
| @@ -14,7 +16,11 @@ | ||||
| 			"description": "Expansions", | ||||
| 			"schema": { | ||||
| 				"type": "string", | ||||
| 				"enum": ["access_list", "owner", "certificate"] | ||||
| 				"enum": [ | ||||
| 					"access_list", | ||||
| 					"owner", | ||||
| 					"certificate" | ||||
| 				] | ||||
| 			} | ||||
| 		} | ||||
| 	], | ||||
| @@ -28,14 +34,16 @@ | ||||
| 							"value": [ | ||||
| 								{ | ||||
| 									"id": 1, | ||||
| 									"created_on": "2024-10-08T23:23:03.000Z", | ||||
| 									"modified_on": "2024-10-08T23:23:04.000Z", | ||||
| 									"created_on": "2025-10-28T01:10:26.000Z", | ||||
| 									"modified_on": "2025-10-28T04:07:16.000Z", | ||||
| 									"owner_user_id": 1, | ||||
| 									"domain_names": ["test.example.com"], | ||||
| 									"domain_names": [ | ||||
| 										"test.jc21com" | ||||
| 									], | ||||
| 									"forward_host": "127.0.0.1", | ||||
| 									"forward_port": 8989, | ||||
| 									"access_list_id": 0, | ||||
| 									"certificate_id": 0, | ||||
| 									"forward_port": 8081, | ||||
| 									"access_list_id": 1, | ||||
| 									"certificate_id": 1, | ||||
| 									"ssl_forced": false, | ||||
| 									"caching_enabled": false, | ||||
| 									"block_exploits": false, | ||||
| @@ -48,7 +56,7 @@ | ||||
| 									"http2_support": false, | ||||
| 									"forward_scheme": "http", | ||||
| 									"enabled": true, | ||||
| 									"locations": null, | ||||
| 									"locations": [], | ||||
| 									"hsts_enabled": false, | ||||
| 									"hsts_subdomains": false | ||||
| 								} | ||||
|   | ||||
| @@ -1,16 +1,17 @@ | ||||
| { | ||||
| 	"operationId": "deleteProxyHost", | ||||
| 	"summary": "Delete a Proxy Host", | ||||
| 	"tags": ["Proxy Hosts"], | ||||
| 	"tags": ["proxy-hosts"], | ||||
| 	"security": [ | ||||
| 		{ | ||||
| 			"BearerAuth": ["proxy_hosts"] | ||||
| 			"bearerAuth": ["proxy_hosts.manage"] | ||||
| 		} | ||||
| 	], | ||||
| 	"parameters": [ | ||||
| 		{ | ||||
| 			"in": "path", | ||||
| 			"name": "hostID", | ||||
| 			"description": "The ID of the Proxy Host", | ||||
| 			"schema": { | ||||
| 				"type": "integer", | ||||
| 				"minimum": 1 | ||||
|   | ||||
| @@ -1,16 +1,17 @@ | ||||
| { | ||||
| 	"operationId": "disableProxyHost", | ||||
| 	"summary": "Disable a Proxy Host", | ||||
| 	"tags": ["Proxy Hosts"], | ||||
| 	"tags": ["proxy-hosts"], | ||||
| 	"security": [ | ||||
| 		{ | ||||
| 			"BearerAuth": ["proxy_hosts"] | ||||
| 			"bearerAuth": ["proxy_hosts.manage"] | ||||
| 		} | ||||
| 	], | ||||
| 	"parameters": [ | ||||
| 		{ | ||||
| 			"in": "path", | ||||
| 			"name": "hostID", | ||||
| 			"description": "The ID of the Proxy Host", | ||||
| 			"schema": { | ||||
| 				"type": "integer", | ||||
| 				"minimum": 1 | ||||
|   | ||||
| @@ -1,16 +1,17 @@ | ||||
| { | ||||
| 	"operationId": "enableProxyHost", | ||||
| 	"summary": "Enable a Proxy Host", | ||||
| 	"tags": ["Proxy Hosts"], | ||||
| 	"tags": ["proxy-hosts"], | ||||
| 	"security": [ | ||||
| 		{ | ||||
| 			"BearerAuth": ["proxy_hosts"] | ||||
| 			"bearerAuth": ["proxy_hosts.manage"] | ||||
| 		} | ||||
| 	], | ||||
| 	"parameters": [ | ||||
| 		{ | ||||
| 			"in": "path", | ||||
| 			"name": "hostID", | ||||
| 			"description": "The ID of the Proxy Host", | ||||
| 			"schema": { | ||||
| 				"type": "integer", | ||||
| 				"minimum": 1 | ||||
|   | ||||
| @@ -1,16 +1,19 @@ | ||||
| { | ||||
| 	"operationId": "getProxyHost", | ||||
| 	"summary": "Get a Proxy Host", | ||||
| 	"tags": ["Proxy Hosts"], | ||||
| 	"tags": ["proxy-hosts"], | ||||
| 	"security": [ | ||||
| 		{ | ||||
| 			"BearerAuth": ["proxy_hosts"] | ||||
| 			"bearerAuth": [ | ||||
| 				"proxy_hosts.view" | ||||
| 			] | ||||
| 		} | ||||
| 	], | ||||
| 	"parameters": [ | ||||
| 		{ | ||||
| 			"in": "path", | ||||
| 			"name": "hostID", | ||||
| 			"description": "The ID of the Proxy Host", | ||||
| 			"schema": { | ||||
| 				"type": "integer", | ||||
| 				"minimum": 1 | ||||
| @@ -27,13 +30,15 @@ | ||||
| 					"examples": { | ||||
| 						"default": { | ||||
| 							"value": { | ||||
| 								"id": 1, | ||||
| 								"created_on": "2024-10-08T23:23:03.000Z", | ||||
| 								"modified_on": "2024-10-08T23:26:38.000Z", | ||||
| 								"id": 3, | ||||
| 								"created_on": "2025-10-30T01:12:05.000Z", | ||||
| 								"modified_on": "2025-10-30T01:12:05.000Z", | ||||
| 								"owner_user_id": 1, | ||||
| 								"domain_names": ["test.example.com"], | ||||
| 								"forward_host": "192.168.0.10", | ||||
| 								"forward_port": 8989, | ||||
| 								"domain_names": [ | ||||
| 									"test.example.com" | ||||
| 								], | ||||
| 								"forward_host": "127.0.0.1", | ||||
| 								"forward_port": 8080, | ||||
| 								"access_list_id": 0, | ||||
| 								"certificate_id": 0, | ||||
| 								"ssl_forced": false, | ||||
| @@ -48,9 +53,22 @@ | ||||
| 								"http2_support": false, | ||||
| 								"forward_scheme": "http", | ||||
| 								"enabled": true, | ||||
| 								"locations": null, | ||||
| 								"locations": [], | ||||
| 								"hsts_enabled": false, | ||||
| 								"hsts_subdomains": false | ||||
| 								"hsts_subdomains": false, | ||||
| 								"owner": { | ||||
| 									"id": 1, | ||||
| 									"created_on": "2025-10-28T00:50:24.000Z", | ||||
| 									"modified_on": "2025-10-28T00:50:24.000Z", | ||||
| 									"is_disabled": false, | ||||
| 									"email": "jc@jc21.com", | ||||
| 									"name": "jamiec", | ||||
| 									"nickname": "jamiec", | ||||
| 									"avatar": "//www.gravatar.com/avatar/6193176330f8d38747f038c170ddb193?default=mm", | ||||
| 									"roles": [ | ||||
| 										"admin" | ||||
| 									] | ||||
| 								} | ||||
| 							} | ||||
| 						} | ||||
| 					}, | ||||
|   | ||||
| @@ -1,16 +1,19 @@ | ||||
| { | ||||
| 	"operationId": "updateProxyHost", | ||||
| 	"summary": "Update a Proxy Host", | ||||
| 	"tags": ["Proxy Hosts"], | ||||
| 	"tags": ["proxy-hosts"], | ||||
| 	"security": [ | ||||
| 		{ | ||||
| 			"BearerAuth": ["proxy_hosts"] | ||||
| 			"bearerAuth": [ | ||||
| 				"proxy_hosts.manage" | ||||
| 			] | ||||
| 		} | ||||
| 	], | ||||
| 	"parameters": [ | ||||
| 		{ | ||||
| 			"in": "path", | ||||
| 			"name": "hostID", | ||||
| 			"description": "The ID of the Proxy Host", | ||||
| 			"schema": { | ||||
| 				"type": "integer", | ||||
| 				"minimum": 1 | ||||
| @@ -93,13 +96,15 @@ | ||||
| 					"examples": { | ||||
| 						"default": { | ||||
| 							"value": { | ||||
| 								"id": 1, | ||||
| 								"created_on": "2024-10-08T23:23:03.000Z", | ||||
| 								"modified_on": "2024-10-08T23:26:37.000Z", | ||||
| 								"id": 3, | ||||
| 								"created_on": "2025-10-30T01:12:05.000Z", | ||||
| 								"modified_on": "2025-10-30T01:17:06.000Z", | ||||
| 								"owner_user_id": 1, | ||||
| 								"domain_names": ["test.example.com"], | ||||
| 								"forward_host": "192.168.0.10", | ||||
| 								"forward_port": 8989, | ||||
| 								"domain_names": [ | ||||
| 									"test.example.com" | ||||
| 								], | ||||
| 								"forward_host": "127.0.0.1", | ||||
| 								"forward_port": 8080, | ||||
| 								"access_list_id": 0, | ||||
| 								"certificate_id": 0, | ||||
| 								"ssl_forced": false, | ||||
| @@ -114,19 +119,21 @@ | ||||
| 								"http2_support": false, | ||||
| 								"forward_scheme": "http", | ||||
| 								"enabled": true, | ||||
| 								"locations": [], | ||||
| 								"hsts_enabled": false, | ||||
| 								"hsts_subdomains": false, | ||||
| 								"owner": { | ||||
| 									"id": 1, | ||||
| 									"created_on": "2024-10-07T22:43:55.000Z", | ||||
| 									"modified_on": "2024-10-08T12:52:54.000Z", | ||||
| 									"is_deleted": false, | ||||
| 									"created_on": "2025-10-28T00:50:24.000Z", | ||||
| 									"modified_on": "2025-10-28T00:50:24.000Z", | ||||
| 									"is_disabled": false, | ||||
| 									"email": "admin@example.com", | ||||
| 									"name": "Administrator", | ||||
| 									"nickname": "some guy", | ||||
| 									"avatar": "//www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?default=mm", | ||||
| 									"roles": ["admin"] | ||||
| 									"email": "jc@jc21.com", | ||||
| 									"name": "jamiec", | ||||
| 									"nickname": "jamiec", | ||||
| 									"avatar": "//www.gravatar.com/avatar/6193176330f8d38747f038c170ddb193?default=mm", | ||||
| 									"roles": [ | ||||
| 										"admin" | ||||
| 									] | ||||
| 								}, | ||||
| 								"certificate": null, | ||||
| 								"access_list": null | ||||
|   | ||||
| @@ -1,10 +1,12 @@ | ||||
| { | ||||
| 	"operationId": "createProxyHost", | ||||
| 	"summary": "Create a Proxy Host", | ||||
| 	"tags": ["Proxy Hosts"], | ||||
| 	"tags": ["proxy-hosts"], | ||||
| 	"security": [ | ||||
| 		{ | ||||
| 			"BearerAuth": ["proxy_hosts"] | ||||
| 			"bearerAuth": [ | ||||
| 				"proxy_hosts.manage" | ||||
| 			] | ||||
| 		} | ||||
| 	], | ||||
| 	"requestBody": { | ||||
| @@ -15,7 +17,12 @@ | ||||
| 				"schema": { | ||||
| 					"type": "object", | ||||
| 					"additionalProperties": false, | ||||
| 					"required": ["domain_names", "forward_scheme", "forward_host", "forward_port"], | ||||
| 					"required": [ | ||||
| 						"domain_names", | ||||
| 						"forward_scheme", | ||||
| 						"forward_host", | ||||
| 						"forward_port" | ||||
| 					], | ||||
| 					"properties": { | ||||
| 						"domain_names": { | ||||
| 							"$ref": "../../../components/proxy-host-object.json#/properties/domain_names" | ||||
| @@ -69,6 +76,14 @@ | ||||
| 							"$ref": "../../../components/proxy-host-object.json#/properties/locations" | ||||
| 						} | ||||
| 					} | ||||
| 				}, | ||||
| 				"example": { | ||||
| 					"domain_names": [ | ||||
| 						"test.example.com" | ||||
| 					], | ||||
| 					"forward_scheme": "http", | ||||
| 					"forward_host": "127.0.0.1", | ||||
| 					"forward_port": 8080 | ||||
| 				} | ||||
| 			} | ||||
| 		} | ||||
| @@ -81,13 +96,15 @@ | ||||
| 					"examples": { | ||||
| 						"default": { | ||||
| 							"value": { | ||||
| 								"id": 1, | ||||
| 								"created_on": "2024-10-08T23:23:03.000Z", | ||||
| 								"modified_on": "2024-10-08T23:23:03.000Z", | ||||
| 								"id": 3, | ||||
| 								"created_on": "2025-10-30T01:12:05.000Z", | ||||
| 								"modified_on": "2025-10-30T01:12:05.000Z", | ||||
| 								"owner_user_id": 1, | ||||
| 								"domain_names": ["test.example.com"], | ||||
| 								"domain_names": [ | ||||
| 									"test.example.com" | ||||
| 								], | ||||
| 								"forward_host": "127.0.0.1", | ||||
| 								"forward_port": 8989, | ||||
| 								"forward_port": 8080, | ||||
| 								"access_list_id": 0, | ||||
| 								"certificate_id": 0, | ||||
| 								"ssl_forced": false, | ||||
| @@ -99,20 +116,22 @@ | ||||
| 								"http2_support": false, | ||||
| 								"forward_scheme": "http", | ||||
| 								"enabled": true, | ||||
| 								"locations": [], | ||||
| 								"hsts_enabled": false, | ||||
| 								"hsts_subdomains": false, | ||||
| 								"certificate": null, | ||||
| 								"owner": { | ||||
| 									"id": 1, | ||||
| 									"created_on": "2024-10-07T22:43:55.000Z", | ||||
| 									"modified_on": "2024-10-08T12:52:54.000Z", | ||||
| 									"is_deleted": false, | ||||
| 									"created_on": "2025-10-28T00:50:24.000Z", | ||||
| 									"modified_on": "2025-10-28T00:50:24.000Z", | ||||
| 									"is_disabled": false, | ||||
| 									"email": "admin@example.com", | ||||
| 									"name": "Administrator", | ||||
| 									"nickname": "some guy", | ||||
| 									"avatar": "//www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?default=mm", | ||||
| 									"roles": ["admin"] | ||||
| 									"email": "jc@jc21.com", | ||||
| 									"name": "jamiec", | ||||
| 									"nickname": "jamiec", | ||||
| 									"avatar": "//www.gravatar.com/avatar/6193176330f8d38747f038c170ddb193?default=mm", | ||||
| 									"roles": [ | ||||
| 										"admin" | ||||
| 									] | ||||
| 								}, | ||||
| 								"access_list": null | ||||
| 							} | ||||
|   | ||||
| @@ -1,10 +1,10 @@ | ||||
| { | ||||
| 	"operationId": "getRedirectionHosts", | ||||
| 	"summary": "Get all Redirection hosts", | ||||
| 	"tags": ["Redirection Hosts"], | ||||
| 	"tags": ["redirection-hosts"], | ||||
| 	"security": [ | ||||
| 		{ | ||||
| 			"BearerAuth": ["redirection_hosts"] | ||||
| 			"bearerAuth": ["redirection_hosts.view"] | ||||
| 		} | ||||
| 	], | ||||
| 	"parameters": [ | ||||
|   | ||||
| @@ -1,16 +1,17 @@ | ||||
| { | ||||
| 	"operationId": "deleteRedirectionHost", | ||||
| 	"summary": "Delete a Redirection Host", | ||||
| 	"tags": ["Redirection Hosts"], | ||||
| 	"tags": ["redirection-hosts"], | ||||
| 	"security": [ | ||||
| 		{ | ||||
| 			"BearerAuth": ["redirection_hosts"] | ||||
| 			"bearerAuth": ["redirection_hosts.manage"] | ||||
| 		} | ||||
| 	], | ||||
| 	"parameters": [ | ||||
| 		{ | ||||
| 			"in": "path", | ||||
| 			"name": "hostID", | ||||
| 			"description": "The ID of the Redirection Host", | ||||
| 			"schema": { | ||||
| 				"type": "integer", | ||||
| 				"minimum": 1 | ||||
|   | ||||
| @@ -1,16 +1,17 @@ | ||||
| { | ||||
| 	"operationId": "disableRedirectionHost", | ||||
| 	"summary": "Disable a Redirection Host", | ||||
| 	"tags": ["Redirection Hosts"], | ||||
| 	"tags": ["redirection-hosts"], | ||||
| 	"security": [ | ||||
| 		{ | ||||
| 			"BearerAuth": ["redirection_hosts"] | ||||
| 			"bearerAuth": ["redirection_hosts.manage"] | ||||
| 		} | ||||
| 	], | ||||
| 	"parameters": [ | ||||
| 		{ | ||||
| 			"in": "path", | ||||
| 			"name": "hostID", | ||||
| 			"description": "The ID of the Redirection Host", | ||||
| 			"schema": { | ||||
| 				"type": "integer", | ||||
| 				"minimum": 1 | ||||
|   | ||||
| @@ -1,16 +1,17 @@ | ||||
| { | ||||
| 	"operationId": "enableRedirectionHost", | ||||
| 	"summary": "Enable a Redirection Host", | ||||
| 	"tags": ["Redirection Hosts"], | ||||
| 	"tags": ["redirection-hosts"], | ||||
| 	"security": [ | ||||
| 		{ | ||||
| 			"BearerAuth": ["redirection_hosts"] | ||||
| 			"bearerAuth": ["redirection_hosts.manage"] | ||||
| 		} | ||||
| 	], | ||||
| 	"parameters": [ | ||||
| 		{ | ||||
| 			"in": "path", | ||||
| 			"name": "hostID", | ||||
| 			"description": "The ID of the Redirection Host", | ||||
| 			"schema": { | ||||
| 				"type": "integer", | ||||
| 				"minimum": 1 | ||||
|   | ||||
| @@ -1,16 +1,17 @@ | ||||
| { | ||||
| 	"operationId": "getRedirectionHost", | ||||
| 	"summary": "Get a Redirection Host", | ||||
| 	"tags": ["Redirection Hosts"], | ||||
| 	"tags": ["redirection-hosts"], | ||||
| 	"security": [ | ||||
| 		{ | ||||
| 			"BearerAuth": ["redirection_hosts"] | ||||
| 			"bearerAuth": ["redirection_hosts.view"] | ||||
| 		} | ||||
| 	], | ||||
| 	"parameters": [ | ||||
| 		{ | ||||
| 			"in": "path", | ||||
| 			"name": "hostID", | ||||
| 			"description": "The ID of the Redirection Host", | ||||
| 			"schema": { | ||||
| 				"type": "integer", | ||||
| 				"minimum": 1 | ||||
|   | ||||
| @@ -1,16 +1,17 @@ | ||||
| { | ||||
| 	"operationId": "updateRedirectionHost", | ||||
| 	"summary": "Update a Redirection Host", | ||||
| 	"tags": ["Redirection Hosts"], | ||||
| 	"tags": ["redirection-hosts"], | ||||
| 	"security": [ | ||||
| 		{ | ||||
| 			"BearerAuth": ["redirection_hosts"] | ||||
| 			"bearerAuth": ["redirection_hosts.manage"] | ||||
| 		} | ||||
| 	], | ||||
| 	"parameters": [ | ||||
| 		{ | ||||
| 			"in": "path", | ||||
| 			"name": "hostID", | ||||
| 			"description": "The ID of the Redirection Host", | ||||
| 			"schema": { | ||||
| 				"type": "integer", | ||||
| 				"minimum": 1 | ||||
| @@ -106,7 +107,6 @@ | ||||
| 									"id": 1, | ||||
| 									"created_on": "2024-10-09T00:59:56.000Z", | ||||
| 									"modified_on": "2024-10-09T00:59:56.000Z", | ||||
| 									"is_deleted": false, | ||||
| 									"is_disabled": false, | ||||
| 									"email": "admin@example.com", | ||||
| 									"name": "Administrator", | ||||
|   | ||||
| @@ -1,10 +1,12 @@ | ||||
| { | ||||
| 	"operationId": "createRedirectionHost", | ||||
| 	"summary": "Create a Redirection Host", | ||||
| 	"tags": ["Redirection Hosts"], | ||||
| 	"tags": ["redirection-hosts"], | ||||
| 	"security": [ | ||||
| 		{ | ||||
| 			"BearerAuth": ["redirection_hosts"] | ||||
| 			"bearerAuth": [ | ||||
| 				"redirection_hosts.manage" | ||||
| 			] | ||||
| 		} | ||||
| 	], | ||||
| 	"requestBody": { | ||||
| @@ -15,7 +17,12 @@ | ||||
| 				"schema": { | ||||
| 					"type": "object", | ||||
| 					"additionalProperties": false, | ||||
| 					"required": ["domain_names", "forward_scheme", "forward_http_code", "forward_domain_name"], | ||||
| 					"required": [ | ||||
| 						"domain_names", | ||||
| 						"forward_scheme", | ||||
| 						"forward_http_code", | ||||
| 						"forward_domain_name" | ||||
| 					], | ||||
| 					"properties": { | ||||
| 						"domain_names": { | ||||
| 							"$ref": "../../../components/redirection-host-object.json#/properties/domain_names" | ||||
| @@ -57,6 +64,23 @@ | ||||
| 							"$ref": "../../../components/redirection-host-object.json#/properties/meta" | ||||
| 						} | ||||
| 					} | ||||
| 				}, | ||||
| 				"example": { | ||||
| 					"domain_names": [ | ||||
| 						"test.example.com" | ||||
| 					], | ||||
| 					"forward_domain_name": "example.com", | ||||
| 					"forward_scheme": "auto", | ||||
| 					"forward_http_code": 301, | ||||
| 					"preserve_path": false, | ||||
| 					"block_exploits": false, | ||||
| 					"certificate_id": 0, | ||||
| 					"ssl_forced": false, | ||||
| 					"http2_support": false, | ||||
| 					"hsts_enabled": false, | ||||
| 					"hsts_subdomains": false, | ||||
| 					"advanced_config": "", | ||||
| 					"meta": {} | ||||
| 				} | ||||
| 			} | ||||
| 		} | ||||
| @@ -69,12 +93,14 @@ | ||||
| 					"examples": { | ||||
| 						"default": { | ||||
| 							"value": { | ||||
| 								"id": 1, | ||||
| 								"created_on": "2024-10-09T01:13:12.000Z", | ||||
| 								"modified_on": "2024-10-09T01:13:12.000Z", | ||||
| 								"id": 2, | ||||
| 								"created_on": "2025-10-30T01:27:04.000Z", | ||||
| 								"modified_on": "2025-10-30T01:27:04.000Z", | ||||
| 								"owner_user_id": 1, | ||||
| 								"domain_names": ["test.example.com"], | ||||
| 								"forward_domain_name": "something-else.com", | ||||
| 								"domain_names": [ | ||||
| 									"test.example.com" | ||||
| 								], | ||||
| 								"forward_domain_name": "example.com", | ||||
| 								"preserve_path": false, | ||||
| 								"certificate_id": 0, | ||||
| 								"ssl_forced": false, | ||||
| @@ -85,20 +111,21 @@ | ||||
| 								"enabled": true, | ||||
| 								"hsts_enabled": false, | ||||
| 								"hsts_subdomains": false, | ||||
| 								"forward_scheme": "http", | ||||
| 								"forward_scheme": "auto", | ||||
| 								"forward_http_code": 301, | ||||
| 								"certificate": null, | ||||
| 								"owner": { | ||||
| 									"id": 1, | ||||
| 									"created_on": "2024-10-09T00:59:56.000Z", | ||||
| 									"modified_on": "2024-10-09T00:59:56.000Z", | ||||
| 									"is_deleted": false, | ||||
| 									"created_on": "2025-10-28T00:50:24.000Z", | ||||
| 									"modified_on": "2025-10-28T00:50:24.000Z", | ||||
| 									"is_disabled": false, | ||||
| 									"email": "admin@example.com", | ||||
| 									"name": "Administrator", | ||||
| 									"nickname": "Admin", | ||||
| 									"avatar": "", | ||||
| 									"roles": ["admin"] | ||||
| 									"email": "jc@jc21.com", | ||||
| 									"name": "jamiec", | ||||
| 									"nickname": "jamiec", | ||||
| 									"avatar": "//www.gravatar.com/avatar/6193176330f8d38747f038c170ddb193?default=mm", | ||||
| 									"roles": [ | ||||
| 										"admin" | ||||
| 									] | ||||
| 								} | ||||
| 							} | ||||
| 						} | ||||
|   | ||||
| @@ -1,10 +1,10 @@ | ||||
| { | ||||
| 	"operationId": "getStreams", | ||||
| 	"summary": "Get all streams", | ||||
| 	"tags": ["Streams"], | ||||
| 	"tags": ["streams"], | ||||
| 	"security": [ | ||||
| 		{ | ||||
| 			"BearerAuth": ["streams"] | ||||
| 			"bearerAuth": ["streams.view"] | ||||
| 		} | ||||
| 	], | ||||
| 	"parameters": [ | ||||
|   | ||||
| @@ -1,10 +1,12 @@ | ||||
| { | ||||
| 	"operationId": "createStream", | ||||
| 	"summary": "Create a Stream", | ||||
| 	"tags": ["Streams"], | ||||
| 	"tags": ["streams"], | ||||
| 	"security": [ | ||||
| 		{ | ||||
| 			"BearerAuth": ["streams"] | ||||
| 			"bearerAuth": [ | ||||
| 				"streams.manage" | ||||
| 			] | ||||
| 		} | ||||
| 	], | ||||
| 	"requestBody": { | ||||
| @@ -15,7 +17,11 @@ | ||||
| 				"schema": { | ||||
| 					"type": "object", | ||||
| 					"additionalProperties": false, | ||||
| 					"required": ["incoming_port", "forwarding_host", "forwarding_port"], | ||||
| 					"required": [ | ||||
| 						"incoming_port", | ||||
| 						"forwarding_host", | ||||
| 						"forwarding_port" | ||||
| 					], | ||||
| 					"properties": { | ||||
| 						"incoming_port": { | ||||
| 							"$ref": "../../../components/stream-object.json#/properties/incoming_port" | ||||
| @@ -42,6 +48,15 @@ | ||||
| 							"$ref": "../../../components/dead-host-object.json#/properties/domain_names" | ||||
| 						} | ||||
| 					} | ||||
| 				}, | ||||
| 				"example": { | ||||
| 					"incoming_port": 8888, | ||||
| 					"forwarding_host": "127.0.0.1", | ||||
| 					"forwarding_port": 8080, | ||||
| 					"tcp_forwarding": true, | ||||
| 					"udp_forwarding": false, | ||||
| 					"certificate_id": 0, | ||||
| 					"meta": {} | ||||
| 				} | ||||
| 			} | ||||
| 		} | ||||
| @@ -72,13 +87,14 @@ | ||||
| 									"id": 1, | ||||
| 									"created_on": "2024-10-09T02:33:16.000Z", | ||||
| 									"modified_on": "2024-10-09T02:33:16.000Z", | ||||
| 									"is_deleted": false, | ||||
| 									"is_disabled": false, | ||||
| 									"email": "admin@example.com", | ||||
| 									"name": "Administrator", | ||||
| 									"nickname": "Admin", | ||||
| 									"avatar": "", | ||||
| 									"roles": ["admin"] | ||||
| 									"roles": [ | ||||
| 										"admin" | ||||
| 									] | ||||
| 								}, | ||||
| 								"certificate_id": 0 | ||||
| 							} | ||||
|   | ||||
| @@ -1,16 +1,17 @@ | ||||
| { | ||||
| 	"operationId": "deleteStream", | ||||
| 	"summary": "Delete a Stream", | ||||
| 	"tags": ["Streams"], | ||||
| 	"tags": ["streams"], | ||||
| 	"security": [ | ||||
| 		{ | ||||
| 			"BearerAuth": ["streams"] | ||||
| 			"bearerAuth": ["streams.manage"] | ||||
| 		} | ||||
| 	], | ||||
| 	"parameters": [ | ||||
| 		{ | ||||
| 			"in": "path", | ||||
| 			"name": "streamID", | ||||
| 			"description": "The ID of the Stream", | ||||
| 			"schema": { | ||||
| 				"type": "integer", | ||||
| 				"minimum": 1 | ||||
|   | ||||
| @@ -1,16 +1,17 @@ | ||||
| { | ||||
| 	"operationId": "disableStream", | ||||
| 	"summary": "Disable a Stream", | ||||
| 	"tags": ["Streams"], | ||||
| 	"tags": ["streams"], | ||||
| 	"security": [ | ||||
| 		{ | ||||
| 			"BearerAuth": ["streams"] | ||||
| 			"bearerAuth": ["streams.manage"] | ||||
| 		} | ||||
| 	], | ||||
| 	"parameters": [ | ||||
| 		{ | ||||
| 			"in": "path", | ||||
| 			"name": "streamID", | ||||
| 			"description": "The ID of the Stream", | ||||
| 			"schema": { | ||||
| 				"type": "integer", | ||||
| 				"minimum": 1 | ||||
|   | ||||
| @@ -1,16 +1,17 @@ | ||||
| { | ||||
| 	"operationId": "enableStream", | ||||
| 	"summary": "Enable a Stream", | ||||
| 	"tags": ["Streams"], | ||||
| 	"tags": ["streams"], | ||||
| 	"security": [ | ||||
| 		{ | ||||
| 			"BearerAuth": ["streams"] | ||||
| 			"bearerAuth": ["streams.manage"] | ||||
| 		} | ||||
| 	], | ||||
| 	"parameters": [ | ||||
| 		{ | ||||
| 			"in": "path", | ||||
| 			"name": "streamID", | ||||
| 			"description": "The ID of the Stream", | ||||
| 			"schema": { | ||||
| 				"type": "integer", | ||||
| 				"minimum": 1 | ||||
|   | ||||
| @@ -1,16 +1,17 @@ | ||||
| { | ||||
| 	"operationId": "getStream", | ||||
| 	"summary": "Get a Stream", | ||||
| 	"tags": ["Streams"], | ||||
| 	"tags": ["streams"], | ||||
| 	"security": [ | ||||
| 		{ | ||||
| 			"BearerAuth": ["streams"] | ||||
| 			"bearerAuth": ["streams.view"] | ||||
| 		} | ||||
| 	], | ||||
| 	"parameters": [ | ||||
| 		{ | ||||
| 			"in": "path", | ||||
| 			"name": "streamID", | ||||
| 			"description": "The ID of the Stream", | ||||
| 			"schema": { | ||||
| 				"type": "integer", | ||||
| 				"minimum": 1 | ||||
|   | ||||
| @@ -1,16 +1,17 @@ | ||||
| { | ||||
| 	"operationId": "updateStream", | ||||
| 	"summary": "Update a Stream", | ||||
| 	"tags": ["Streams"], | ||||
| 	"tags": ["streams"], | ||||
| 	"security": [ | ||||
| 		{ | ||||
| 			"BearerAuth": ["streams"] | ||||
| 			"bearerAuth": ["streams.manage"] | ||||
| 		} | ||||
| 	], | ||||
| 	"parameters": [ | ||||
| 		{ | ||||
| 			"in": "path", | ||||
| 			"name": "streamID", | ||||
| 			"description": "The ID of the Stream", | ||||
| 			"schema": { | ||||
| 				"type": "integer", | ||||
| 				"minimum": 1 | ||||
| @@ -81,7 +82,6 @@ | ||||
| 									"id": 1, | ||||
| 									"created_on": "2024-10-09T02:33:16.000Z", | ||||
| 									"modified_on": "2024-10-09T02:33:16.000Z", | ||||
| 									"is_deleted": false, | ||||
| 									"is_disabled": false, | ||||
| 									"email": "admin@example.com", | ||||
| 									"name": "Administrator", | ||||
|   | ||||
		Reference in New Issue
	
	Block a user