CauseFX před 5 roky
rodič
revize
ee104f00cf

+ 3554 - 0
docs/api.json

@@ -0,0 +1,3554 @@
+{
+    "openapi": "3.0.0",
+    "info": {
+        "title": "Organizr API",
+        "description": "Organizr - Accept no others",
+        "version": "2.0"
+    },
+    "servers": [
+        {
+            "url": "http://docker:8000/",
+            "description": "This Organizr Install"
+        },
+        {
+            "url": "https://demo.organizr.app",
+            "description": "Organizr Demo API"
+        },
+        {
+            "url": "{schema}://{hostPath}",
+            "description": "Custom Organizr API",
+            "variables": {
+                "schema": {
+                    "enum": [
+                        "https",
+                        "http"
+                    ],
+                    "default": "http"
+                },
+                "hostPath": {
+                    "default": "localhost",
+                    "description": "Your Organizr URL"
+                }
+            }
+        }
+    ],
+    "paths": {
+        "/api/v2/plugins/chat/settings": {
+            "get": {
+                "tags": [
+                    "plugins-chat"
+                ],
+                "summary": "Get settings",
+                "responses": {
+                    "200": {
+                        "description": "Success",
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "$ref": "#/components/schemas/pluginSettingsPage"
+                                }
+                            }
+                        }
+                    },
+                    "401": {
+                        "description": "Unauthorized"
+                    }
+                },
+                "security": [
+                    {
+                        "api_key": []
+                    }
+                ]
+            }
+        },
+        "/api/v2/plugins/chat/message": {
+            "get": {
+                "tags": [
+                    "plugins-chat"
+                ],
+                "summary": "Get all messages",
+                "responses": {
+                    "200": {
+                        "description": "Success",
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "$ref": "#/components/schemas/getChatMessages"
+                                }
+                            }
+                        }
+                    },
+                    "401": {
+                        "description": "Unauthorized"
+                    }
+                },
+                "security": [
+                    {
+                        "api_key": []
+                    }
+                ]
+            },
+            "post": {
+                "tags": [
+                    "plugins-chat"
+                ],
+                "summary": "Submit a message",
+                "requestBody": {
+                    "description": "Success",
+                    "required": true,
+                    "content": {
+                        "application/x-www-form-urlencoded": {
+                            "schema": {
+                                "properties": {
+                                    "message": {
+                                        "description": "message to send",
+                                        "type": "string"
+                                    }
+                                },
+                                "type": "object"
+                            }
+                        },
+                        "application/json": {
+                            "schema": {
+                                "$ref": "#/components/schemas/submitMessageData"
+                            }
+                        }
+                    }
+                },
+                "responses": {
+                    "200": {
+                        "description": "Success",
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "$ref": "#/components/schemas/submitMessage"
+                                }
+                            }
+                        }
+                    },
+                    "401": {
+                        "description": "Unauthorized"
+                    }
+                },
+                "security": [
+                    {
+                        "api_key": []
+                    }
+                ]
+            }
+        },
+        "/api/v2/plugins/healthchecks/settings": {
+            "get": {
+                "tags": [
+                    "plugins-healthchecks"
+                ],
+                "summary": "Get settings",
+                "responses": {
+                    "200": {
+                        "description": "Success",
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "$ref": "#/components/schemas/pluginSettingsPage"
+                                }
+                            }
+                        }
+                    },
+                    "401": {
+                        "description": "Unauthorized"
+                    }
+                },
+                "security": [
+                    {
+                        "api_key": []
+                    }
+                ]
+            }
+        },
+        "/api/v2/plugins/healthchecks/run": {
+            "get": {
+                "tags": [
+                    "plugins-healthchecks"
+                ],
+                "summary": "Run Healthchecks.io plugin",
+                "responses": {
+                    "200": {
+                        "description": "Success",
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "$ref": "#/components/schemas/healthChecksRun"
+                                }
+                            }
+                        }
+                    },
+                    "401": {
+                        "description": "Unauthorized"
+                    }
+                },
+                "security": [
+                    {
+                        "api_key": []
+                    }
+                ]
+            }
+        },
+        "/api/v2/plugins/invites/settings": {
+            "get": {
+                "tags": [
+                    "plugins-invites"
+                ],
+                "summary": "Get settings",
+                "responses": {
+                    "200": {
+                        "description": "Success",
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "$ref": "#/components/schemas/pluginSettingsPage"
+                                }
+                            }
+                        }
+                    },
+                    "401": {
+                        "description": "Unauthorized"
+                    }
+                },
+                "security": [
+                    {
+                        "api_key": []
+                    }
+                ]
+            }
+        },
+        "/api/v2/plugins/invites": {
+            "get": {
+                "tags": [
+                    "plugins-invites"
+                ],
+                "summary": "Get All Invites",
+                "responses": {
+                    "200": {
+                        "description": "Success",
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "$ref": "#/components/schemas/getInvites"
+                                }
+                            }
+                        }
+                    },
+                    "401": {
+                        "description": "Unauthorized"
+                    }
+                },
+                "security": [
+                    {
+                        "api_key": []
+                    }
+                ]
+            },
+            "post": {
+                "tags": [
+                    "plugins-invites"
+                ],
+                "summary": "Create Invite Code",
+                "responses": {
+                    "200": {
+                        "description": "Success",
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "$ref": "#/components/schemas/createInviteCode"
+                                }
+                            }
+                        }
+                    },
+                    "401": {
+                        "description": "Unauthorized"
+                    }
+                },
+                "security": [
+                    {
+                        "api_key": []
+                    }
+                ]
+            }
+        },
+        "/api/v2/plugins/invites/{code}": {
+            "get": {
+                "tags": [
+                    "plugins-invites"
+                ],
+                "summary": "Verify Invite Code",
+                "parameters": [
+                    {
+                        "name": "code",
+                        "in": "path",
+                        "description": "The Invite Code",
+                        "required": true,
+                        "schema": {
+                            "type": "integer",
+                            "format": "int64"
+                        }
+                    }
+                ],
+                "responses": {
+                    "200": {
+                        "description": "Success",
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "$ref": "#/components/schemas/verifyInviteCode"
+                                }
+                            }
+                        }
+                    },
+                    "401": {
+                        "description": "Unauthorized"
+                    }
+                }
+            },
+            "post": {
+                "tags": [
+                    "plugins-invites"
+                ],
+                "summary": "Use Invite Code",
+                "parameters": [
+                    {
+                        "name": "code",
+                        "in": "path",
+                        "description": "The Invite Code",
+                        "required": true,
+                        "schema": {
+                            "type": "integer",
+                            "format": "int64"
+                        }
+                    }
+                ],
+                "responses": {
+                    "200": {
+                        "description": "Success",
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "$ref": "#/components/schemas/useInviteCode"
+                                }
+                            }
+                        }
+                    },
+                    "401": {
+                        "description": "Unauthorized"
+                    }
+                }
+            },
+            "delete": {
+                "tags": [
+                    "plugins-invites"
+                ],
+                "summary": "Delete Invite Code",
+                "parameters": [
+                    {
+                        "name": "code",
+                        "in": "path",
+                        "description": "The Invite Code",
+                        "required": true,
+                        "schema": {
+                            "type": "integer",
+                            "format": "int64"
+                        }
+                    }
+                ],
+                "responses": {
+                    "200": {
+                        "description": "Success",
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "$ref": "#/components/schemas/deleteInviteCode"
+                                }
+                            }
+                        }
+                    },
+                    "401": {
+                        "description": "Unauthorized"
+                    }
+                },
+                "security": [
+                    {
+                        "api_key": []
+                    }
+                ]
+            }
+        },
+        "/api/v2/plugins/php-mailer/settings": {
+            "get": {
+                "tags": [
+                    "plugins-php-mailer"
+                ],
+                "summary": "Get settings",
+                "responses": {
+                    "200": {
+                        "description": "Success",
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "$ref": "#/components/schemas/pluginSettingsPage"
+                                }
+                            }
+                        }
+                    },
+                    "401": {
+                        "description": "Unauthorized"
+                    }
+                },
+                "security": [
+                    {
+                        "api_key": []
+                    }
+                ]
+            }
+        },
+        "/api/v2/plugins/php-mailer/email/test": {
+            "get": {
+                "tags": [
+                    "plugins-php-mailer"
+                ],
+                "summary": "Send Test Email to Default Admin Email",
+                "responses": {
+                    "200": {
+                        "description": "Success",
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "$ref": "#/components/schemas/successNullData"
+                                }
+                            }
+                        }
+                    },
+                    "401": {
+                        "description": "Unauthorized"
+                    }
+                },
+                "security": [
+                    {
+                        "api_key": []
+                    }
+                ]
+            }
+        },
+        "/api/v2/plugins/php-mailer/email/send": {
+            "post": {
+                "tags": [
+                    "plugins-php-mailer"
+                ],
+                "summary": "Send Email",
+                "requestBody": {
+                    "description": "Success",
+                    "required": true,
+                    "content": {
+                        "application/json": {
+                            "schema": {
+                                "$ref": "#/components/schemas/sendEmailData"
+                            }
+                        }
+                    }
+                },
+                "responses": {
+                    "200": {
+                        "description": "Success",
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "$ref": "#/components/schemas/successNullData"
+                                }
+                            }
+                        }
+                    },
+                    "401": {
+                        "description": "Unauthorized"
+                    }
+                },
+                "security": [
+                    {
+                        "api_key": []
+                    }
+                ]
+            }
+        },
+        "/api/v2/plugins/php-mailer/email/list": {
+            "get": {
+                "tags": [
+                    "plugins-php-mailer"
+                ],
+                "summary": "Get List of User Emails",
+                "responses": {
+                    "200": {
+                        "description": "Success",
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "$ref": "#/components/schemas/php-mailer-email-list"
+                                }
+                            }
+                        }
+                    },
+                    "401": {
+                        "description": "Unauthorized"
+                    }
+                },
+                "security": [
+                    {
+                        "api_key": []
+                    }
+                ]
+            }
+        },
+        "/api/v2/plugins/speedtest/settings": {
+            "get": {
+                "tags": [
+                    "plugins-speedtest"
+                ],
+                "summary": "Get settings",
+                "responses": {
+                    "200": {
+                        "description": "Success",
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "$ref": "#/components/schemas/pluginSettingsPage"
+                                }
+                            }
+                        }
+                    },
+                    "401": {
+                        "description": "Unauthorized"
+                    }
+                },
+                "security": [
+                    {
+                        "api_key": []
+                    }
+                ]
+            }
+        },
+        "/api/v2/2fa": {
+            "put": {
+                "tags": [
+                    "2fa"
+                ],
+                "summary": "Save 2FA code",
+                "requestBody": {
+                    "description": "Success",
+                    "required": true,
+                    "content": {
+                        "application/json": {
+                            "schema": {
+                                "$ref": "#/components/schemas/submit-2fa-save"
+                            }
+                        }
+                    }
+                },
+                "responses": {
+                    "200": {
+                        "description": "Success",
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "$ref": "#/components/schemas/success-message"
+                                }
+                            }
+                        }
+                    },
+                    "401": {
+                        "description": "Unauthorized",
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "$ref": "#/components/schemas/unauthorized-message"
+                                }
+                            }
+                        }
+                    },
+                    "422": {
+                        "description": "Error",
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "$ref": "#/components/schemas/error-message"
+                                }
+                            }
+                        }
+                    }
+                },
+                "security": [
+                    {
+                        "api_key": []
+                    }
+                ]
+            },
+            "post": {
+                "tags": [
+                    "2fa"
+                ],
+                "summary": "Verify 2FA code",
+                "requestBody": {
+                    "description": "Success",
+                    "required": true,
+                    "content": {
+                        "application/json": {
+                            "schema": {
+                                "$ref": "#/components/schemas/submit-2fa-verify"
+                            }
+                        }
+                    }
+                },
+                "responses": {
+                    "200": {
+                        "description": "Success",
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "$ref": "#/components/schemas/success-message"
+                                }
+                            }
+                        }
+                    },
+                    "401": {
+                        "description": "Unauthorized",
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "$ref": "#/components/schemas/unauthorized-message"
+                                }
+                            }
+                        }
+                    },
+                    "404": {
+                        "description": "Error",
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "$ref": "#/components/schemas/error-message"
+                                }
+                            }
+                        }
+                    },
+                    "422": {
+                        "description": "Error",
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "$ref": "#/components/schemas/error-message"
+                                }
+                            }
+                        }
+                    },
+                    "500": {
+                        "description": "Error",
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "$ref": "#/components/schemas/error-message"
+                                }
+                            }
+                        }
+                    }
+                },
+                "security": [
+                    {
+                        "api_key": []
+                    }
+                ]
+            },
+            "delete": {
+                "tags": [
+                    "2fa"
+                ],
+                "summary": "Delete 2FA code",
+                "responses": {
+                    "204": {
+                        "description": "Success"
+                    },
+                    "401": {
+                        "description": "Unauthorized",
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "$ref": "#/components/schemas/unauthorized-message"
+                                }
+                            }
+                        }
+                    }
+                },
+                "security": [
+                    {
+                        "api_key": []
+                    }
+                ]
+            }
+        },
+        "/api/v2/2fa/{type}": {
+            "post": {
+                "tags": [
+                    "2fa"
+                ],
+                "summary": "Create 2FA code",
+                "parameters": [
+                    {
+                        "name": "type",
+                        "in": "path",
+                        "description": "The type of 2FA",
+                        "required": true,
+                        "schema": {
+                            "type": "string"
+                        },
+                        "example": "google"
+                    }
+                ],
+                "responses": {
+                    "200": {
+                        "description": "Success",
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "$ref": "#/components/schemas/success-message"
+                                }
+                            }
+                        }
+                    }
+                }
+            }
+        },
+        "/api/v2/categories": {
+            "get": {
+                "tags": [
+                    "categories"
+                ],
+                "summary": "Get all categories",
+                "responses": {
+                    "200": {
+                        "description": "Success",
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "$ref": "#/components/schemas/success-message"
+                                }
+                            }
+                        }
+                    },
+                    "401": {
+                        "description": "Unauthorized",
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "$ref": "#/components/schemas/unauthorized-message"
+                                }
+                            }
+                        }
+                    },
+                    "404": {
+                        "description": "Error",
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "$ref": "#/components/schemas/error-message"
+                                }
+                            }
+                        }
+                    },
+                    "422": {
+                        "description": "Error",
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "$ref": "#/components/schemas/error-message"
+                                }
+                            }
+                        }
+                    },
+                    "500": {
+                        "description": "Error",
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "$ref": "#/components/schemas/error-message"
+                                }
+                            }
+                        }
+                    }
+                },
+                "security": [
+                    {
+                        "api_key": []
+                    }
+                ]
+            },
+            "put": {
+                "tags": [
+                    "categories"
+                ],
+                "summary": "Update category order",
+                "requestBody": {
+                    "description": "Success",
+                    "required": true,
+                    "content": {
+                        "application/json": {
+                            "schema": {
+                                "$ref": "#/components/schemas/submit-2fa-verify"
+                            }
+                        }
+                    }
+                },
+                "responses": {
+                    "200": {
+                        "description": "Success",
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "$ref": "#/components/schemas/success-message"
+                                }
+                            }
+                        }
+                    },
+                    "401": {
+                        "description": "Unauthorized",
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "$ref": "#/components/schemas/unauthorized-message"
+                                }
+                            }
+                        }
+                    },
+                    "404": {
+                        "description": "Error",
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "$ref": "#/components/schemas/error-message"
+                                }
+                            }
+                        }
+                    },
+                    "422": {
+                        "description": "Error",
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "$ref": "#/components/schemas/error-message"
+                                }
+                            }
+                        }
+                    },
+                    "500": {
+                        "description": "Error",
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "$ref": "#/components/schemas/error-message"
+                                }
+                            }
+                        }
+                    }
+                },
+                "security": [
+                    {
+                        "api_key": []
+                    }
+                ]
+            },
+            "post": {
+                "tags": [
+                    "categories"
+                ],
+                "summary": "Add new category",
+                "requestBody": {
+                    "description": "Success",
+                    "required": true,
+                    "content": {
+                        "application/json": {
+                            "schema": {
+                                "$ref": "#/components/schemas/submit-2fa-verify"
+                            }
+                        }
+                    }
+                },
+                "responses": {
+                    "200": {
+                        "description": "Success",
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "$ref": "#/components/schemas/success-message"
+                                }
+                            }
+                        }
+                    },
+                    "401": {
+                        "description": "Unauthorized",
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "$ref": "#/components/schemas/unauthorized-message"
+                                }
+                            }
+                        }
+                    },
+                    "404": {
+                        "description": "Error",
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "$ref": "#/components/schemas/error-message"
+                                }
+                            }
+                        }
+                    },
+                    "422": {
+                        "description": "Error",
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "$ref": "#/components/schemas/error-message"
+                                }
+                            }
+                        }
+                    },
+                    "500": {
+                        "description": "Error",
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "$ref": "#/components/schemas/error-message"
+                                }
+                            }
+                        }
+                    }
+                },
+                "security": [
+                    {
+                        "api_key": []
+                    }
+                ]
+            }
+        },
+        "/api/v2/categories/{id}": {
+            "put": {
+                "tags": [
+                    "categories"
+                ],
+                "summary": "Update category",
+                "requestBody": {
+                    "description": "Success",
+                    "required": true,
+                    "content": {
+                        "application/json": {
+                            "schema": {
+                                "$ref": "#/components/schemas/submit-2fa-verify"
+                            }
+                        }
+                    }
+                },
+                "responses": {
+                    "200": {
+                        "description": "Success",
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "$ref": "#/components/schemas/success-message"
+                                }
+                            }
+                        }
+                    },
+                    "401": {
+                        "description": "Unauthorized",
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "$ref": "#/components/schemas/unauthorized-message"
+                                }
+                            }
+                        }
+                    },
+                    "404": {
+                        "description": "Error",
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "$ref": "#/components/schemas/error-message"
+                                }
+                            }
+                        }
+                    },
+                    "422": {
+                        "description": "Error",
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "$ref": "#/components/schemas/error-message"
+                                }
+                            }
+                        }
+                    },
+                    "500": {
+                        "description": "Error",
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "$ref": "#/components/schemas/error-message"
+                                }
+                            }
+                        }
+                    }
+                },
+                "security": [
+                    {
+                        "api_key": []
+                    }
+                ]
+            },
+            "delete": {
+                "tags": [
+                    "categories"
+                ],
+                "summary": "Delete category",
+                "requestBody": {
+                    "description": "Success",
+                    "required": true,
+                    "content": {
+                        "application/json": {
+                            "schema": {
+                                "$ref": "#/components/schemas/submit-2fa-verify"
+                            }
+                        }
+                    }
+                },
+                "responses": {
+                    "200": {
+                        "description": "Success",
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "$ref": "#/components/schemas/success-message"
+                                }
+                            }
+                        }
+                    },
+                    "401": {
+                        "description": "Unauthorized",
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "$ref": "#/components/schemas/unauthorized-message"
+                                }
+                            }
+                        }
+                    },
+                    "404": {
+                        "description": "Error",
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "$ref": "#/components/schemas/error-message"
+                                }
+                            }
+                        }
+                    },
+                    "422": {
+                        "description": "Error",
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "$ref": "#/components/schemas/error-message"
+                                }
+                            }
+                        }
+                    },
+                    "500": {
+                        "description": "Error",
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "$ref": "#/components/schemas/error-message"
+                                }
+                            }
+                        }
+                    }
+                },
+                "security": [
+                    {
+                        "api_key": []
+                    }
+                ]
+            }
+        },
+        "/api/v2/config": {
+            "put": {
+                "tags": [
+                    "config"
+                ],
+                "summary": "Update Organizr Coniguration Item(s)",
+                "requestBody": {
+                    "description": "Success",
+                    "required": true,
+                    "content": {
+                        "application/json": {
+                            "schema": {
+                                "$ref": "#/components/schemas/config-items-example"
+                            }
+                        }
+                    }
+                },
+                "responses": {
+                    "200": {
+                        "description": "Success",
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "$ref": "#/components/schemas/success-message"
+                                }
+                            }
+                        }
+                    },
+                    "401": {
+                        "description": "Unauthorized"
+                    }
+                },
+                "security": [
+                    {
+                        "api_key": []
+                    }
+                ]
+            }
+        },
+        "/api/v2/test/iframe": {
+            "post": {
+                "tags": [
+                    "test connection"
+                ],
+                "summary": "Test if URL can be iFramed",
+                "responses": {
+                    "200": {
+                        "description": "Success",
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "$ref": "#/components/schemas/success-message"
+                                }
+                            }
+                        }
+                    },
+                    "401": {
+                        "description": "Unauthorized",
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "$ref": "#/components/schemas/unauthorized-message"
+                                }
+                            }
+                        }
+                    },
+                    "404": {
+                        "description": "Error",
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "$ref": "#/components/schemas/error-message"
+                                }
+                            }
+                        }
+                    },
+                    "409": {
+                        "description": "Error",
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "$ref": "#/components/schemas/error-message"
+                                }
+                            }
+                        }
+                    }
+                },
+                "security": [
+                    {
+                        "api_key": []
+                    }
+                ]
+            }
+        },
+        "/api/v2/test/path": {
+            "post": {
+                "tags": [
+                    "test connection"
+                ],
+                "summary": "Test if path has correct permissions",
+                "responses": {
+                    "200": {
+                        "description": "Success",
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "$ref": "#/components/schemas/success-message"
+                                }
+                            }
+                        }
+                    },
+                    "401": {
+                        "description": "Unauthorized",
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "$ref": "#/components/schemas/unauthorized-message"
+                                }
+                            }
+                        }
+                    },
+                    "404": {
+                        "description": "Error",
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "$ref": "#/components/schemas/error-message"
+                                }
+                            }
+                        }
+                    }
+                },
+                "security": [
+                    {
+                        "api_key": []
+                    }
+                ]
+            }
+        },
+        "/api/v2/test/plex": {
+            "post": {
+                "tags": [
+                    "test connection"
+                ],
+                "summary": "Test connection to Plex",
+                "responses": {
+                    "200": {
+                        "description": "Success",
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "$ref": "#/components/schemas/success-message"
+                                }
+                            }
+                        }
+                    },
+                    "401": {
+                        "description": "Unauthorized",
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "$ref": "#/components/schemas/unauthorized-message"
+                                }
+                            }
+                        }
+                    },
+                    "422": {
+                        "description": "Error",
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "$ref": "#/components/schemas/error-message"
+                                }
+                            }
+                        }
+                    },
+                    "500": {
+                        "description": "Error",
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "$ref": "#/components/schemas/error-message"
+                                }
+                            }
+                        }
+                    }
+                },
+                "security": [
+                    {
+                        "api_key": []
+                    }
+                ]
+            }
+        },
+        "/api/v2/test/emby": {
+            "post": {
+                "tags": [
+                    "test connection"
+                ],
+                "summary": "Test connection to Emby",
+                "responses": {
+                    "200": {
+                        "description": "Success",
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "$ref": "#/components/schemas/success-message"
+                                }
+                            }
+                        }
+                    },
+                    "401": {
+                        "description": "Unauthorized",
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "$ref": "#/components/schemas/unauthorized-message"
+                                }
+                            }
+                        }
+                    },
+                    "422": {
+                        "description": "Error",
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "$ref": "#/components/schemas/error-message"
+                                }
+                            }
+                        }
+                    },
+                    "500": {
+                        "description": "Error",
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "$ref": "#/components/schemas/error-message"
+                                }
+                            }
+                        }
+                    }
+                },
+                "security": [
+                    {
+                        "api_key": []
+                    }
+                ]
+            }
+        },
+        "/api/v2/test/sabnzbd": {
+            "post": {
+                "tags": [
+                    "test connection"
+                ],
+                "summary": "Test connection to SabNZBd",
+                "responses": {
+                    "200": {
+                        "description": "Success",
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "$ref": "#/components/schemas/success-message"
+                                }
+                            }
+                        }
+                    },
+                    "401": {
+                        "description": "Unauthorized",
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "$ref": "#/components/schemas/unauthorized-message"
+                                }
+                            }
+                        }
+                    },
+                    "422": {
+                        "description": "Error",
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "$ref": "#/components/schemas/error-message"
+                                }
+                            }
+                        }
+                    },
+                    "500": {
+                        "description": "Error",
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "$ref": "#/components/schemas/error-message"
+                                }
+                            }
+                        }
+                    }
+                },
+                "security": [
+                    {
+                        "api_key": []
+                    }
+                ]
+            }
+        },
+        "/api/v2/test/pihole": {
+            "post": {
+                "tags": [
+                    "test connection"
+                ],
+                "summary": "Test connection to PiHole",
+                "responses": {
+                    "200": {
+                        "description": "Success",
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "$ref": "#/components/schemas/success-message"
+                                }
+                            }
+                        }
+                    },
+                    "401": {
+                        "description": "Unauthorized",
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "$ref": "#/components/schemas/unauthorized-message"
+                                }
+                            }
+                        }
+                    },
+                    "422": {
+                        "description": "Error",
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "$ref": "#/components/schemas/error-message"
+                                }
+                            }
+                        }
+                    },
+                    "500": {
+                        "description": "Error",
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "$ref": "#/components/schemas/error-message"
+                                }
+                            }
+                        }
+                    }
+                },
+                "security": [
+                    {
+                        "api_key": []
+                    }
+                ]
+            }
+        },
+        "/api/v2/test/rtorrent": {
+            "post": {
+                "tags": [
+                    "test connection"
+                ],
+                "summary": "Test connection to rTorrent",
+                "responses": {
+                    "200": {
+                        "description": "Success",
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "$ref": "#/components/schemas/success-message"
+                                }
+                            }
+                        }
+                    },
+                    "401": {
+                        "description": "Unauthorized",
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "$ref": "#/components/schemas/unauthorized-message"
+                                }
+                            }
+                        }
+                    },
+                    "422": {
+                        "description": "Error",
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "$ref": "#/components/schemas/error-message"
+                                }
+                            }
+                        }
+                    },
+                    "500": {
+                        "description": "Error",
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "$ref": "#/components/schemas/error-message"
+                                }
+                            }
+                        }
+                    }
+                },
+                "security": [
+                    {
+                        "api_key": []
+                    }
+                ]
+            }
+        },
+        "/api/v2/test/sonarr": {
+            "post": {
+                "tags": [
+                    "test connection"
+                ],
+                "summary": "Test connection to Sonarr",
+                "responses": {
+                    "200": {
+                        "description": "Success",
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "$ref": "#/components/schemas/success-message"
+                                }
+                            }
+                        }
+                    },
+                    "401": {
+                        "description": "Unauthorized",
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "$ref": "#/components/schemas/unauthorized-message"
+                                }
+                            }
+                        }
+                    },
+                    "422": {
+                        "description": "Error",
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "$ref": "#/components/schemas/error-message"
+                                }
+                            }
+                        }
+                    },
+                    "500": {
+                        "description": "Error",
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "$ref": "#/components/schemas/error-message"
+                                }
+                            }
+                        }
+                    }
+                },
+                "security": [
+                    {
+                        "api_key": []
+                    }
+                ]
+            }
+        },
+        "/api/v2/test/radarr": {
+            "post": {
+                "tags": [
+                    "test connection"
+                ],
+                "summary": "Test connection to Radarr",
+                "responses": {
+                    "200": {
+                        "description": "Success",
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "$ref": "#/components/schemas/success-message"
+                                }
+                            }
+                        }
+                    },
+                    "401": {
+                        "description": "Unauthorized",
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "$ref": "#/components/schemas/unauthorized-message"
+                                }
+                            }
+                        }
+                    },
+                    "422": {
+                        "description": "Error",
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "$ref": "#/components/schemas/error-message"
+                                }
+                            }
+                        }
+                    },
+                    "500": {
+                        "description": "Error",
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "$ref": "#/components/schemas/error-message"
+                                }
+                            }
+                        }
+                    }
+                },
+                "security": [
+                    {
+                        "api_key": []
+                    }
+                ]
+            }
+        },
+        "/api/v2/test/lidarr": {
+            "post": {
+                "tags": [
+                    "test connection"
+                ],
+                "summary": "Test connection to Lidarr",
+                "responses": {
+                    "200": {
+                        "description": "Success",
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "$ref": "#/components/schemas/success-message"
+                                }
+                            }
+                        }
+                    },
+                    "401": {
+                        "description": "Unauthorized",
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "$ref": "#/components/schemas/unauthorized-message"
+                                }
+                            }
+                        }
+                    },
+                    "422": {
+                        "description": "Error",
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "$ref": "#/components/schemas/error-message"
+                                }
+                            }
+                        }
+                    },
+                    "500": {
+                        "description": "Error",
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "$ref": "#/components/schemas/error-message"
+                                }
+                            }
+                        }
+                    }
+                },
+                "security": [
+                    {
+                        "api_key": []
+                    }
+                ]
+            }
+        },
+        "/api/v2/test/sickrage": {
+            "post": {
+                "tags": [
+                    "test connection"
+                ],
+                "summary": "Test connection to SickRage",
+                "responses": {
+                    "200": {
+                        "description": "Success",
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "$ref": "#/components/schemas/success-message"
+                                }
+                            }
+                        }
+                    },
+                    "401": {
+                        "description": "Unauthorized",
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "$ref": "#/components/schemas/unauthorized-message"
+                                }
+                            }
+                        }
+                    },
+                    "422": {
+                        "description": "Error",
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "$ref": "#/components/schemas/error-message"
+                                }
+                            }
+                        }
+                    },
+                    "500": {
+                        "description": "Error",
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "$ref": "#/components/schemas/error-message"
+                                }
+                            }
+                        }
+                    }
+                },
+                "security": [
+                    {
+                        "api_key": []
+                    }
+                ]
+            }
+        },
+        "/api/v2/test/ombi": {
+            "post": {
+                "tags": [
+                    "test connection"
+                ],
+                "summary": "Test connection to Ombi",
+                "responses": {
+                    "200": {
+                        "description": "Success",
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "$ref": "#/components/schemas/success-message"
+                                }
+                            }
+                        }
+                    },
+                    "401": {
+                        "description": "Unauthorized",
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "$ref": "#/components/schemas/unauthorized-message"
+                                }
+                            }
+                        }
+                    },
+                    "422": {
+                        "description": "Error",
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "$ref": "#/components/schemas/error-message"
+                                }
+                            }
+                        }
+                    },
+                    "500": {
+                        "description": "Error",
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "$ref": "#/components/schemas/error-message"
+                                }
+                            }
+                        }
+                    }
+                },
+                "security": [
+                    {
+                        "api_key": []
+                    }
+                ]
+            }
+        },
+        "/api/v2/test/nzbget": {
+            "post": {
+                "tags": [
+                    "test connection"
+                ],
+                "summary": "Test connection to NzbGet",
+                "responses": {
+                    "200": {
+                        "description": "Success",
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "$ref": "#/components/schemas/success-message"
+                                }
+                            }
+                        }
+                    },
+                    "401": {
+                        "description": "Unauthorized",
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "$ref": "#/components/schemas/unauthorized-message"
+                                }
+                            }
+                        }
+                    },
+                    "422": {
+                        "description": "Error",
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "$ref": "#/components/schemas/error-message"
+                                }
+                            }
+                        }
+                    },
+                    "500": {
+                        "description": "Error",
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "$ref": "#/components/schemas/error-message"
+                                }
+                            }
+                        }
+                    }
+                },
+                "security": [
+                    {
+                        "api_key": []
+                    }
+                ]
+            }
+        },
+        "/api/v2/test/deluge": {
+            "post": {
+                "tags": [
+                    "test connection"
+                ],
+                "summary": "Test connection to Deluge",
+                "responses": {
+                    "200": {
+                        "description": "Success",
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "$ref": "#/components/schemas/success-message"
+                                }
+                            }
+                        }
+                    },
+                    "401": {
+                        "description": "Unauthorized",
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "$ref": "#/components/schemas/unauthorized-message"
+                                }
+                            }
+                        }
+                    },
+                    "422": {
+                        "description": "Error",
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "$ref": "#/components/schemas/error-message"
+                                }
+                            }
+                        }
+                    },
+                    "500": {
+                        "description": "Error",
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "$ref": "#/components/schemas/error-message"
+                                }
+                            }
+                        }
+                    }
+                },
+                "security": [
+                    {
+                        "api_key": []
+                    }
+                ]
+            }
+        },
+        "/api/v2/test/jdownloader": {
+            "post": {
+                "tags": [
+                    "test connection"
+                ],
+                "summary": "Test connection to jDownloader",
+                "responses": {
+                    "200": {
+                        "description": "Success",
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "$ref": "#/components/schemas/success-message"
+                                }
+                            }
+                        }
+                    },
+                    "401": {
+                        "description": "Unauthorized",
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "$ref": "#/components/schemas/unauthorized-message"
+                                }
+                            }
+                        }
+                    },
+                    "422": {
+                        "description": "Error",
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "$ref": "#/components/schemas/error-message"
+                                }
+                            }
+                        }
+                    },
+                    "500": {
+                        "description": "Error",
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "$ref": "#/components/schemas/error-message"
+                                }
+                            }
+                        }
+                    }
+                },
+                "security": [
+                    {
+                        "api_key": []
+                    }
+                ]
+            }
+        },
+        "/api/v2/test/transmission": {
+            "post": {
+                "tags": [
+                    "test connection"
+                ],
+                "summary": "Test connection to Transmission",
+                "responses": {
+                    "200": {
+                        "description": "Success",
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "$ref": "#/components/schemas/success-message"
+                                }
+                            }
+                        }
+                    },
+                    "401": {
+                        "description": "Unauthorized",
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "$ref": "#/components/schemas/unauthorized-message"
+                                }
+                            }
+                        }
+                    },
+                    "422": {
+                        "description": "Error",
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "$ref": "#/components/schemas/error-message"
+                                }
+                            }
+                        }
+                    },
+                    "500": {
+                        "description": "Error",
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "$ref": "#/components/schemas/error-message"
+                                }
+                            }
+                        }
+                    }
+                },
+                "security": [
+                    {
+                        "api_key": []
+                    }
+                ]
+            }
+        },
+        "/api/v2/test/qbittorrent": {
+            "post": {
+                "tags": [
+                    "test connection"
+                ],
+                "summary": "Test connection to qBittorrent",
+                "responses": {
+                    "200": {
+                        "description": "Success",
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "$ref": "#/components/schemas/success-message"
+                                }
+                            }
+                        }
+                    },
+                    "401": {
+                        "description": "Unauthorized",
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "$ref": "#/components/schemas/unauthorized-message"
+                                }
+                            }
+                        }
+                    },
+                    "422": {
+                        "description": "Error",
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "$ref": "#/components/schemas/error-message"
+                                }
+                            }
+                        }
+                    },
+                    "500": {
+                        "description": "Error",
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "$ref": "#/components/schemas/error-message"
+                                }
+                            }
+                        }
+                    }
+                },
+                "security": [
+                    {
+                        "api_key": []
+                    }
+                ]
+            }
+        },
+        "/api/v2/test/unifi": {
+            "post": {
+                "tags": [
+                    "test connection"
+                ],
+                "summary": "Test connection to Unifi",
+                "responses": {
+                    "200": {
+                        "description": "Success",
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "$ref": "#/components/schemas/success-message"
+                                }
+                            }
+                        }
+                    },
+                    "401": {
+                        "description": "Unauthorized",
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "$ref": "#/components/schemas/unauthorized-message"
+                                }
+                            }
+                        }
+                    },
+                    "422": {
+                        "description": "Error",
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "$ref": "#/components/schemas/error-message"
+                                }
+                            }
+                        }
+                    },
+                    "500": {
+                        "description": "Error",
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "$ref": "#/components/schemas/error-message"
+                                }
+                            }
+                        }
+                    }
+                },
+                "security": [
+                    {
+                        "api_key": []
+                    }
+                ]
+            }
+        },
+        "/api/v2/test/unifi/site": {
+            "post": {
+                "tags": [
+                    "test connection"
+                ],
+                "summary": "Test connection to Unifi Sites",
+                "responses": {
+                    "200": {
+                        "description": "Success",
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "$ref": "#/components/schemas/success-message"
+                                }
+                            }
+                        }
+                    },
+                    "401": {
+                        "description": "Unauthorized",
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "$ref": "#/components/schemas/unauthorized-message"
+                                }
+                            }
+                        }
+                    },
+                    "422": {
+                        "description": "Error",
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "$ref": "#/components/schemas/error-message"
+                                }
+                            }
+                        }
+                    },
+                    "500": {
+                        "description": "Error",
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "$ref": "#/components/schemas/error-message"
+                                }
+                            }
+                        }
+                    }
+                },
+                "security": [
+                    {
+                        "api_key": []
+                    }
+                ]
+            }
+        },
+        "/api/v2/test/tautulli": {
+            "post": {
+                "tags": [
+                    "test connection"
+                ],
+                "summary": "Test connection to Tautulli",
+                "responses": {
+                    "200": {
+                        "description": "Success",
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "$ref": "#/components/schemas/success-message"
+                                }
+                            }
+                        }
+                    },
+                    "401": {
+                        "description": "Unauthorized",
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "$ref": "#/components/schemas/unauthorized-message"
+                                }
+                            }
+                        }
+                    },
+                    "422": {
+                        "description": "Error",
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "$ref": "#/components/schemas/error-message"
+                                }
+                            }
+                        }
+                    },
+                    "500": {
+                        "description": "Error",
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "$ref": "#/components/schemas/error-message"
+                                }
+                            }
+                        }
+                    }
+                },
+                "security": [
+                    {
+                        "api_key": []
+                    }
+                ]
+            }
+        },
+        "/api/v2/emby/register": {
+            "post": {
+                "tags": [
+                    "emby"
+                ],
+                "summary": "Register a user using Emby API",
+                "responses": {
+                    "200": {
+                        "description": "Success",
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "$ref": "#/components/schemas/status"
+                                }
+                            }
+                        }
+                    },
+                    "401": {
+                        "description": "Unauthorized"
+                    }
+                }
+            }
+        },
+        "/api/v2/page/{page}": {
+            "get": {
+                "tags": [
+                    "page"
+                ],
+                "summary": "Get HTML for Organizr Pages",
+                "parameters": [
+                    {
+                        "name": "page",
+                        "in": "path",
+                        "description": "Page to get",
+                        "required": true,
+                        "schema": {
+                            "type": "string"
+                        }
+                    }
+                ],
+                "responses": {
+                    "200": {
+                        "description": "Success",
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "$ref": "#/components/schemas/get-html"
+                                }
+                            }
+                        }
+                    },
+                    "401": {
+                        "description": "Unauthorized"
+                    }
+                },
+                "security": [
+                    {
+                        "api_key": []
+                    }
+                ]
+            }
+        },
+        "/api/v2/page": {
+            "get": {
+                "tags": [
+                    "page"
+                ],
+                "summary": "Get list of all Organizr Pages",
+                "responses": {
+                    "200": {
+                        "description": "Success",
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "$ref": "#/components/schemas/get-html"
+                                }
+                            }
+                        }
+                    },
+                    "401": {
+                        "description": "Unauthorized"
+                    }
+                },
+                "security": [
+                    {
+                        "api_key": []
+                    }
+                ]
+            }
+        },
+        "/api/v2/ping": {
+            "get": {
+                "summary": "Ping the Organizr API",
+                "responses": {
+                    "200": {
+                        "description": "Success",
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "$ref": "#/components/schemas/ping"
+                                }
+                            }
+                        }
+                    },
+                    "401": {
+                        "description": "Unauthorized"
+                    }
+                }
+            }
+        },
+        "/api/v2/plex/register": {
+            "post": {
+                "tags": [
+                    "plex"
+                ],
+                "summary": "Register a user using Plex API",
+                "requestBody": {
+                    "description": "Success",
+                    "required": true,
+                    "content": {
+                        "application/json": {
+                            "schema": {
+                                "$ref": "#/components/schemas/plexRegister"
+                            }
+                        }
+                    }
+                },
+                "responses": {
+                    "200": {
+                        "description": "Success",
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "$ref": "#/components/schemas/status"
+                                }
+                            }
+                        }
+                    },
+                    "401": {
+                        "description": "Unauthorized"
+                    }
+                }
+            }
+        },
+        "/api/v2/status": {
+            "get": {
+                "summary": "Query Organizr API to perform a Status Check",
+                "responses": {
+                    "200": {
+                        "description": "Success",
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "$ref": "#/components/schemas/status"
+                                }
+                            }
+                        }
+                    },
+                    "401": {
+                        "description": "Unauthorized"
+                    }
+                }
+            }
+        },
+        "/api/v2/auth": {
+            "get": {
+                "summary": "Nginx auth_request",
+                "parameters": [
+                    {
+                        "name": "group",
+                        "in": "query",
+                        "description": "The id of the group allowed",
+                        "required": false,
+                        "schema": {
+                            "type": "integer",
+                            "format": "int64"
+                        }
+                    },
+                    {
+                        "name": "whitelist",
+                        "in": "query",
+                        "description": "Whitelisted Ip's",
+                        "required": false,
+                        "explode": false,
+                        "schema": {
+                            "type": "array",
+                            "items": {
+                                "type": "string"
+                            }
+                        }
+                    },
+                    {
+                        "name": "blacklist",
+                        "in": "query",
+                        "description": "Blacklisted Ip's",
+                        "required": false,
+                        "explode": false,
+                        "schema": {
+                            "type": "array",
+                            "items": {
+                                "type": "string"
+                            }
+                        }
+                    }
+                ],
+                "responses": {
+                    "200": {
+                        "description": "Success"
+                    },
+                    "401": {
+                        "description": "Unauthorized"
+                    }
+                }
+            }
+        },
+        "/api/v2/update/download/{branch}": {
+            "get": {
+                "tags": [
+                    "update"
+                ],
+                "summary": "Download Organizr Update Files",
+                "responses": {
+                    "200": {
+                        "description": "Success",
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "$ref": "#/components/schemas/success-message"
+                                }
+                            }
+                        }
+                    },
+                    "401": {
+                        "description": "Unauthorized",
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "$ref": "#/components/schemas/unauthorized-message"
+                                }
+                            }
+                        }
+                    },
+                    "404": {
+                        "description": "Error",
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "$ref": "#/components/schemas/error-message"
+                                }
+                            }
+                        }
+                    },
+                    "422": {
+                        "description": "Error",
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "$ref": "#/components/schemas/error-message"
+                                }
+                            }
+                        }
+                    },
+                    "500": {
+                        "description": "Error",
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "$ref": "#/components/schemas/error-message"
+                                }
+                            }
+                        }
+                    }
+                },
+                "security": [
+                    {
+                        "api_key": []
+                    }
+                ]
+            }
+        },
+        "/api/v2/update/unzip/{branch}": {
+            "get": {
+                "tags": [
+                    "update"
+                ],
+                "summary": "Unzip Organizr Update Files",
+                "responses": {
+                    "200": {
+                        "description": "Success",
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "$ref": "#/components/schemas/success-message"
+                                }
+                            }
+                        }
+                    },
+                    "401": {
+                        "description": "Unauthorized",
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "$ref": "#/components/schemas/unauthorized-message"
+                                }
+                            }
+                        }
+                    },
+                    "404": {
+                        "description": "Error",
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "$ref": "#/components/schemas/error-message"
+                                }
+                            }
+                        }
+                    },
+                    "422": {
+                        "description": "Error",
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "$ref": "#/components/schemas/error-message"
+                                }
+                            }
+                        }
+                    },
+                    "500": {
+                        "description": "Error",
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "$ref": "#/components/schemas/error-message"
+                                }
+                            }
+                        }
+                    }
+                },
+                "security": [
+                    {
+                        "api_key": []
+                    }
+                ]
+            }
+        },
+        "/api/v2/update/move/{branch}": {
+            "get": {
+                "tags": [
+                    "update"
+                ],
+                "summary": "Move Organizr Update Files",
+                "responses": {
+                    "200": {
+                        "description": "Success",
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "$ref": "#/components/schemas/success-message"
+                                }
+                            }
+                        }
+                    },
+                    "401": {
+                        "description": "Unauthorized",
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "$ref": "#/components/schemas/unauthorized-message"
+                                }
+                            }
+                        }
+                    },
+                    "404": {
+                        "description": "Error",
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "$ref": "#/components/schemas/error-message"
+                                }
+                            }
+                        }
+                    },
+                    "422": {
+                        "description": "Error",
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "$ref": "#/components/schemas/error-message"
+                                }
+                            }
+                        }
+                    },
+                    "500": {
+                        "description": "Error",
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "$ref": "#/components/schemas/error-message"
+                                }
+                            }
+                        }
+                    }
+                },
+                "security": [
+                    {
+                        "api_key": []
+                    }
+                ]
+            }
+        },
+        "/api/v2/update/cleanup/{branch}": {
+            "get": {
+                "tags": [
+                    "update"
+                ],
+                "summary": "Cleanup Organizr Update Files",
+                "responses": {
+                    "200": {
+                        "description": "Success",
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "$ref": "#/components/schemas/success-message"
+                                }
+                            }
+                        }
+                    },
+                    "401": {
+                        "description": "Unauthorized",
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "$ref": "#/components/schemas/unauthorized-message"
+                                }
+                            }
+                        }
+                    },
+                    "404": {
+                        "description": "Error",
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "$ref": "#/components/schemas/error-message"
+                                }
+                            }
+                        }
+                    },
+                    "422": {
+                        "description": "Error",
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "$ref": "#/components/schemas/error-message"
+                                }
+                            }
+                        }
+                    },
+                    "500": {
+                        "description": "Error",
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "$ref": "#/components/schemas/error-message"
+                                }
+                            }
+                        }
+                    }
+                },
+                "security": [
+                    {
+                        "api_key": []
+                    }
+                ]
+            }
+        },
+        "/api/v2/update/docker": {
+            "get": {
+                "tags": [
+                    "update"
+                ],
+                "summary": "Update Organizr install using Docker Container script",
+                "responses": {
+                    "200": {
+                        "description": "Success",
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "$ref": "#/components/schemas/success-message"
+                                }
+                            }
+                        }
+                    },
+                    "401": {
+                        "description": "Unauthorized",
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "$ref": "#/components/schemas/unauthorized-message"
+                                }
+                            }
+                        }
+                    },
+                    "404": {
+                        "description": "Error",
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "$ref": "#/components/schemas/error-message"
+                                }
+                            }
+                        }
+                    },
+                    "422": {
+                        "description": "Error",
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "$ref": "#/components/schemas/error-message"
+                                }
+                            }
+                        }
+                    },
+                    "500": {
+                        "description": "Error",
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "$ref": "#/components/schemas/error-message"
+                                }
+                            }
+                        }
+                    }
+                },
+                "security": [
+                    {
+                        "api_key": []
+                    }
+                ]
+            }
+        },
+        "/api/v2/update/windows": {
+            "get": {
+                "tags": [
+                    "update"
+                ],
+                "summary": "Update Organizr install using Windows script",
+                "responses": {
+                    "200": {
+                        "description": "Success",
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "$ref": "#/components/schemas/success-message"
+                                }
+                            }
+                        }
+                    },
+                    "401": {
+                        "description": "Unauthorized",
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "$ref": "#/components/schemas/unauthorized-message"
+                                }
+                            }
+                        }
+                    },
+                    "404": {
+                        "description": "Error",
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "$ref": "#/components/schemas/error-message"
+                                }
+                            }
+                        }
+                    },
+                    "422": {
+                        "description": "Error",
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "$ref": "#/components/schemas/error-message"
+                                }
+                            }
+                        }
+                    },
+                    "500": {
+                        "description": "Error",
+                        "content": {
+                            "application/json": {
+                                "schema": {
+                                    "$ref": "#/components/schemas/error-message"
+                                }
+                            }
+                        }
+                    }
+                },
+                "security": [
+                    {
+                        "api_key": []
+                    }
+                ]
+            }
+        }
+    },
+    "components": {
+        "schemas": {
+            "getChatMessages": {
+                "properties": {
+                    "response": {
+                        "properties": {
+                            "result": {
+                                "description": "success or error",
+                                "type": "string",
+                                "example": "success"
+                            },
+                            "message": {
+                                "description": "success or error message",
+                                "type": "string",
+                                "example": null
+                            },
+                            "data": {
+                                "description": "data from api",
+                                "type": "array",
+                                "items": {
+                                    "properties": {
+                                        "username": {
+                                            "type": "string",
+                                            "example": "causefx"
+                                        },
+                                        "date": {
+                                            "type": "string",
+                                            "example": "2018-09-01 02:02:24"
+                                        },
+                                        "gravatar": {
+                                            "type": "string",
+                                            "example": "https://www.gravatar.com/avatar/a47c4a4b915ddf9601cd228f890bc366?s=100&d=mm"
+                                        },
+                                        "message": {
+                                            "type": "string",
+                                            "example": "ok first message!"
+                                        },
+                                        "uid": {
+                                            "type": "string",
+                                            "example": "f5287"
+                                        }
+                                    },
+                                    "type": "object"
+                                }
+                            }
+                        },
+                        "type": "object"
+                    }
+                },
+                "type": "object"
+            },
+            "submitMessageData": {
+                "properties": {
+                    "message": {
+                        "type": "string",
+                        "example": "This is my message"
+                    }
+                },
+                "type": "object"
+            },
+            "submitMessage": {
+                "properties": {
+                    "response": {
+                        "properties": {
+                            "result": {
+                                "description": "success or error",
+                                "type": "string",
+                                "example": "success"
+                            },
+                            "message": {
+                                "description": "success or error message",
+                                "type": "string",
+                                "example": "message has been accepted"
+                            },
+                            "data": {
+                                "description": "data from api",
+                                "type": "string",
+                                "example": null
+                            }
+                        },
+                        "type": "object"
+                    }
+                },
+                "type": "object"
+            },
+            "healthChecksRun": {
+                "properties": {
+                    "response": {
+                        "properties": {
+                            "result": {
+                                "description": "success or error",
+                                "type": "string",
+                                "example": "success"
+                            },
+                            "message": {
+                                "description": "success or error message",
+                                "type": "string",
+                                "example": null
+                            },
+                            "data": {
+                                "description": "data from api",
+                                "type": "array",
+                                "items": {
+                                    "properties": {
+                                        "Service Name": {
+                                            "type": "string",
+                                            "example": "Radarr"
+                                        },
+                                        "UUID": {
+                                            "type": "string",
+                                            "example": "883f0097-8f4c-4ca5-a9cf-053cfab8e334"
+                                        },
+                                        "External URL": {
+                                            "type": "string",
+                                            "example": "https://radarr.com"
+                                        },
+                                        "Internal URL": {
+                                            "type": "string",
+                                            "example": "http://radarr:7878"
+                                        },
+                                        "Enabled": {
+                                            "type": "string",
+                                            "example": "true"
+                                        },
+                                        "results": {
+                                            "type": "array",
+                                            "items": {
+                                                "properties": {
+                                                    "internal": {
+                                                        "type": "string",
+                                                        "example": "Success"
+                                                    },
+                                                    "external": {
+                                                        "type": "string",
+                                                        "example": "Success"
+                                                    }
+                                                },
+                                                "type": "object"
+                                            }
+                                        }
+                                    },
+                                    "type": "object"
+                                }
+                            }
+                        },
+                        "type": "object"
+                    }
+                },
+                "type": "object"
+            },
+            "getInvites": {
+                "properties": {
+                    "response": {
+                        "properties": {
+                            "result": {
+                                "description": "success or error",
+                                "type": "string",
+                                "example": "success"
+                            },
+                            "message": {
+                                "description": "success or error message",
+                                "type": "string",
+                                "example": null
+                            },
+                            "data": {
+                                "description": "data from api",
+                                "type": "array",
+                                "items": {
+                                    "properties": {
+                                        "id": {
+                                            "type": "number",
+                                            "example": 1
+                                        },
+                                        "code": {
+                                            "type": "string",
+                                            "example": "NN9JH9"
+                                        },
+                                        "date": {
+                                            "type": "string",
+                                            "example": "2018-09-01 02:02:24"
+                                        },
+                                        "email": {
+                                            "type": "string",
+                                            "example": "causefX@organizr.app"
+                                        },
+                                        "username": {
+                                            "type": "string",
+                                            "example": "causefx"
+                                        },
+                                        "dateused": {
+                                            "type": "string",
+                                            "example": "2018-09-01 02:02:24"
+                                        },
+                                        "usedby": {
+                                            "type": "string",
+                                            "example": "causefx"
+                                        },
+                                        "ip": {
+                                            "type": "string",
+                                            "example": "10.0.0.0"
+                                        },
+                                        "valid": {
+                                            "type": "string",
+                                            "example": "No"
+                                        },
+                                        "type": {
+                                            "type": "string",
+                                            "example": "Plex"
+                                        }
+                                    },
+                                    "type": "object"
+                                }
+                            }
+                        },
+                        "type": "object"
+                    }
+                },
+                "type": "object"
+            },
+            "createInviteCode": {
+                "properties": {
+                    "response": {
+                        "properties": {
+                            "result": {
+                                "description": "success or error",
+                                "type": "string",
+                                "example": "success"
+                            },
+                            "message": {
+                                "description": "success or error message",
+                                "type": "string",
+                                "example": "Invite Code: XYXYXY has been created"
+                            },
+                            "data": {
+                                "description": "data from api",
+                                "type": "string",
+                                "example": null
+                            }
+                        },
+                        "type": "object"
+                    }
+                },
+                "type": "object"
+            },
+            "verifyInviteCode": {
+                "properties": {
+                    "response": {
+                        "properties": {
+                            "result": {
+                                "description": "success or error",
+                                "type": "string",
+                                "example": "success"
+                            },
+                            "message": {
+                                "description": "success or error message",
+                                "type": "string",
+                                "example": "Code has been verified"
+                            },
+                            "data": {
+                                "description": "data from api",
+                                "type": "string",
+                                "example": null
+                            }
+                        },
+                        "type": "object"
+                    }
+                },
+                "type": "object"
+            },
+            "useInviteCode": {
+                "properties": {
+                    "response": {
+                        "properties": {
+                            "result": {
+                                "description": "success or error",
+                                "type": "string",
+                                "example": "success"
+                            },
+                            "message": {
+                                "description": "success or error message",
+                                "type": "string",
+                                "example": "Plex/Emby User now has access to system"
+                            },
+                            "data": {
+                                "description": "data from api",
+                                "type": "string",
+                                "example": null
+                            }
+                        },
+                        "type": "object"
+                    }
+                },
+                "type": "object"
+            },
+            "deleteInviteCode": {
+                "properties": {
+                    "response": {
+                        "properties": {
+                            "result": {
+                                "description": "success or error",
+                                "type": "string",
+                                "example": "success"
+                            },
+                            "message": {
+                                "description": "success or error message",
+                                "type": "string",
+                                "example": "Code has been deleted"
+                            },
+                            "data": {
+                                "description": "data from api",
+                                "type": "string",
+                                "example": null
+                            }
+                        },
+                        "type": "object"
+                    }
+                },
+                "type": "object"
+            },
+            "sendEmailData": {
+                "properties": {
+                    "bcc": {
+                        "description": "email of recipients (csv)",
+                        "type": "string",
+                        "example": "causefx@organizr.app,elmer@organizr.app"
+                    },
+                    "subject": {
+                        "type": "string",
+                        "example": "Hey There Buddy?!"
+                    },
+                    "body": {
+                        "type": "string",
+                        "example": "Hi! Boy, has it been a long time!  Have you seen rox in socks?"
+                    }
+                },
+                "type": "object"
+            },
+            "submit-2fa-verify": {
+                "properties": {
+                    "secret": {
+                        "type": "string",
+                        "example": "OX1R4GA3425GSDF"
+                    },
+                    "code": {
+                        "type": "string",
+                        "example": "145047"
+                    },
+                    "type": {
+                        "type": "string",
+                        "example": "google"
+                    }
+                },
+                "type": "object"
+            },
+            "submit-2fa-save": {
+                "properties": {
+                    "secret": {
+                        "type": "string",
+                        "example": "OX1R4GA3425GSDF"
+                    },
+                    "type": {
+                        "type": "string",
+                        "example": "google"
+                    }
+                },
+                "type": "object"
+            },
+            "submit-2fa-create": {
+                "properties": {
+                    "type": {
+                        "type": "string",
+                        "example": "google"
+                    }
+                },
+                "type": "object"
+            },
+            "get-html": {
+                "properties": {
+                    "response": {
+                        "properties": {
+                            "result": {
+                                "description": "success or error",
+                                "type": "string",
+                                "example": "success"
+                            },
+                            "message": {
+                                "description": "success message or error message",
+                                "type": "string",
+                                "example": null
+                            },
+                            "data": {
+                                "description": "data from api",
+                                "type": "string",
+                                "example": "\\r\\n\\u003Cscript\\u003E\\r\\n    (function() {\\r\\n        updateCheck();\\r\\n        authDebugCheck();\\r\\n        sponsorLoad();\\r\\n        newsLoad();\\r\\n        checkCommitLoad();\\r\\n        [].slice.call(document.querySelectorAll('.sttabs-main-settings-div')).forEach(function(el) {\\r\\n            new CBPFWTabs(el);\\r\\n        });\\r\\n    })();\\r\\n\\u003C/script\\u003E\\r\\n"
+                            }
+                        },
+                        "type": "object"
+                    }
+                },
+                "type": "object"
+            },
+            "plexRegister": {
+                "properties": {
+                    "username": {
+                        "type": "string",
+                        "example": "causefx"
+                    },
+                    "email": {
+                        "type": "string",
+                        "example": "causefx@organizr.app"
+                    },
+                    "password": {
+                        "type": "string",
+                        "example": "iCanHazPa$$w0Rd"
+                    }
+                },
+                "type": "object"
+            },
+            "ping": {
+                "properties": {
+                    "response": {
+                        "properties": {
+                            "result": {
+                                "description": "success or error",
+                                "type": "string",
+                                "example": "success"
+                            },
+                            "message": {
+                                "description": "success or error message",
+                                "type": "string",
+                                "example": null
+                            },
+                            "data": {
+                                "description": "data from api",
+                                "type": "string",
+                                "example": "pong"
+                            }
+                        },
+                        "type": "object"
+                    }
+                },
+                "type": "object"
+            },
+            "status": {
+                "properties": {
+                    "response": {
+                        "properties": {
+                            "result": {
+                                "description": "success or error",
+                                "type": "string",
+                                "example": "success"
+                            },
+                            "message": {
+                                "description": "success or error message",
+                                "type": "string",
+                                "example": null
+                            },
+                            "data": {
+                                "description": "data from api",
+                                "properties": {
+                                    "status": {
+                                        "description": "success or error",
+                                        "type": "string",
+                                        "example": "ok"
+                                    },
+                                    "api_version": {
+                                        "type": "string",
+                                        "example": "2.0"
+                                    },
+                                    "organizr_version": {
+                                        "type": "string",
+                                        "example": "2.0.650"
+                                    }
+                                },
+                                "type": "object"
+                            }
+                        },
+                        "type": "object"
+                    }
+                },
+                "type": "object"
+            },
+            "pluginSettingsPage": {
+                "properties": {
+                    "response": {
+                        "properties": {
+                            "result": {
+                                "description": "success or error",
+                                "type": "string",
+                                "example": "success"
+                            },
+                            "message": {
+                                "description": "success or error message",
+                                "type": "string",
+                                "example": null
+                            },
+                            "data": {
+                                "description": "data from api",
+                                "properties": {
+                                    "settingsPageObjectItem1": {
+                                        "type": "object"
+                                    },
+                                    "settingsPageObjectItem2": {
+                                        "type": "object"
+                                    },
+                                    "settingsPageObjectItem3": {
+                                        "type": "object"
+                                    }
+                                },
+                                "type": "object"
+                            }
+                        },
+                        "type": "object"
+                    }
+                },
+                "type": "object"
+            },
+            "successNullData": {
+                "properties": {
+                    "response": {
+                        "properties": {
+                            "result": {
+                                "description": "success or error",
+                                "type": "string",
+                                "example": "success"
+                            },
+                            "message": {
+                                "description": "success message or error message",
+                                "type": "string",
+                                "example": null
+                            },
+                            "data": {
+                                "description": "data from api",
+                                "type": "string",
+                                "example": null
+                            }
+                        },
+                        "type": "object"
+                    }
+                },
+                "type": "object"
+            },
+            "success-message": {
+                "properties": {
+                    "response": {
+                        "properties": {
+                            "result": {
+                                "description": "success or error",
+                                "type": "string",
+                                "example": "success"
+                            },
+                            "message": {
+                                "description": "success message or error message",
+                                "type": "string",
+                                "example": "Successful message here"
+                            },
+                            "data": {
+                                "description": "data from api",
+                                "type": "string",
+                                "example": null
+                            }
+                        },
+                        "type": "object"
+                    }
+                },
+                "type": "object"
+            },
+            "error-message": {
+                "properties": {
+                    "response": {
+                        "properties": {
+                            "result": {
+                                "description": "success or error",
+                                "type": "string",
+                                "example": "error"
+                            },
+                            "message": {
+                                "description": "success message or error message",
+                                "type": "string",
+                                "example": "Error message here"
+                            },
+                            "data": {
+                                "description": "data from api",
+                                "type": "string",
+                                "example": null
+                            }
+                        },
+                        "type": "object"
+                    }
+                },
+                "type": "object"
+            },
+            "unauthorized-message": {
+                "properties": {
+                    "response": {
+                        "properties": {
+                            "result": {
+                                "description": "success or error",
+                                "type": "string",
+                                "example": "error"
+                            },
+                            "message": {
+                                "description": "success message or error message",
+                                "type": "string",
+                                "example": "User is not authorized"
+                            },
+                            "data": {
+                                "description": "data from api",
+                                "type": "string",
+                                "example": null
+                            }
+                        },
+                        "type": "object"
+                    }
+                },
+                "type": "object"
+            },
+            "php-mailer-email-list": {
+                "properties": {
+                    "response": {
+                        "properties": {
+                            "result": {
+                                "description": "success or error",
+                                "type": "string",
+                                "example": "success"
+                            },
+                            "message": {
+                                "description": "success or error message",
+                                "type": "string",
+                                "example": null
+                            },
+                            "data": {
+                                "description": "data from api",
+                                "type": "array",
+                                "items": {
+                                    "properties": {
+                                        "causefx": {
+                                            "type": "string",
+                                            "example": "causefx@organizr.app"
+                                        }
+                                    },
+                                    "type": "object"
+                                }
+                            }
+                        },
+                        "type": "object"
+                    }
+                },
+                "type": "object"
+            },
+            "config-items-example": {
+                "description": "list of config items to update",
+                "properties": {
+                    "branch": {
+                        "description": "config item name",
+                        "type": "string",
+                        "example": "v2-master"
+                    },
+                    "hideRegistration": {
+                        "type": "boolean",
+                        "example": false
+                    },
+                    "homepageUnifiAuth": {
+                        "type": "string",
+                        "example": "1"
+                    }
+                },
+                "type": "object"
+            }
+        },
+        "securitySchemes": {
+            "api_key": {
+                "type": "apiKey",
+                "name": "Token",
+                "in": "header"
+            }
+        }
+    },
+    "tags": [
+        {
+            "name": "plugins-chat",
+            "description": "Pusher Chat Plugin"
+        },
+        {
+            "name": "plugins-healthchecks",
+            "description": "Healthchecks.io Ping Plugin"
+        },
+        {
+            "name": "plugins-invites",
+            "description": "Media Invite Plugin"
+        },
+        {
+            "name": "plugins-php-mailer",
+            "description": "PHP Mailer Plugin"
+        },
+        {
+            "name": "plugins-speedtest",
+            "description": "SpeedTest Plugin"
+        },
+        {
+            "name": "2fa",
+            "description": "Two Form Authentication"
+        },
+        {
+            "name": "categories",
+            "description": "Category Information"
+        },
+        {
+            "name": "config",
+            "description": "Organizr Configuration Items"
+        },
+        {
+            "name": "test connection",
+            "description": "Test Connections"
+        },
+        {
+            "name": "emby"
+        },
+        {
+            "name": "page",
+            "description": "HTML for Organizr Pages"
+        },
+        {
+            "name": "plex"
+        },
+        {
+            "name": "plugins"
+        },
+        {
+            "name": "update",
+            "description": "Organizr Update"
+        }
+    ]
+}

binární
docs/home/index.html.gz


+ 105 - 0
docs/home/index.php

@@ -0,0 +1,105 @@
+<!doctype html>
+<html lang="en">
+<head>
+    <meta charset="utf-8">
+    <meta name="viewport" content="width=device-width,minimum-scale=1,initial-scale=1,user-scalable=yes">
+    <title>RapiDoc</title>
+    <link href="https://fonts.googleapis.com/css?family=Open+Sans:300,600&display=swap" rel="stylesheet">
+    <link href="https://fonts.googleapis.com/css?family=Nunito" rel="stylesheet">
+    <link rel="stylesheet" href="//cdn.jsdelivr.net/gh/highlightjs/cdn-release@9.18.1/build/styles/default.min.css">
+    <script src="//cdn.jsdelivr.net/gh/highlightjs/cdn-release@9.18.1/build/highlight.min.js"></script>
+    <style>
+        .btn {
+            width: 90px;
+            height: 32px;
+            padding: 2px;
+            font-size: 13px;
+            background-color: #707cd2;
+            color: #fff;
+            border: none;
+            margin: 0 2px;
+            border-radius: 2px;
+            cursor: pointer;
+            outline: none;
+        }
+
+        .btn.medium {
+            width: 75px;
+            height: 24px
+        }
+
+        .btn.small {
+            width: 60px;
+            height: 24px
+        }
+
+        rapi-doc {
+            width: 100%;
+        }
+
+        .img-container {
+            text-align: center;
+            display: block;
+        }
+    </style>
+    <script>
+		function getRapiDoc() {
+			return document.getElementById("thedoc");
+		}
+
+		function changeRenderStyle() {
+			let currRender = getRapiDoc().getAttribute('render-style');
+			let newRender = currRender === "read" ? "view" : "read";
+			getRapiDoc().setAttribute('render-style', newRender);
+			toggleAttr('show-header');
+		}
+
+		function toggleAttr(attr) {
+			if (getRapiDoc().getAttribute(attr) === 'false') {
+				getRapiDoc().setAttribute(attr, "true");
+			} else {
+				getRapiDoc().setAttribute(attr, "false");
+			}
+		}
+    </script>
+</head>
+<body>
+<rapi-doc
+        id="thedoc"
+        heading-text=""
+        goto-path="Overview"
+        spec-url="../api.json"
+        allow-server-selection="true"
+        show-header="true"
+        theme="dark"
+        bg-color="#1f1f1f"
+        header-color="#1b1a1a"
+        primary-color="#2cabe3"
+        nav-bg-color="#1b1a1a"
+        allow-try="true"
+        allow-api-list-style-selection="true"
+        regular-font="Nunito"
+        schema-style="tree"
+        render-style="view"
+        default-schema-tab="example"
+        sort-tags="true"
+        allow-spec-url-load="false"
+        allow-spec-file-load="false"
+>
+    <img src="../../plugins/images/organizr/logo.png" style="height: 50px" slot="logo">
+    <div style="display:flex; margin:10px; justify-content:center;flex-wrap: wrap;" slot="logo">
+        <button class="btn read-button" onclick="changeRenderStyle()">Change View</button>
+    </div>
+    <span class="img-container" slot="nav-logo">
+			<img src="../../plugins/images/organizr/logo-wide.png" style="width: 300px">
+		</span>
+    <div slot="nav-logo" style="width:100%; display: flex; flex-direction:column;">
+        <div style="display: flex;justify-content: center; margin: 2px 0">
+            <button class='btn' onclick="changeRenderStyle()">Change View</button>
+        </div>
+    </div>
+</rapi-doc>
+<script src="rapidoc-min.js">
+</script>
+</body>
+</html>

Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 5 - 0
docs/home/rapidoc-min.js


binární
docs/home/rapidoc-min.js.gz


+ 1 - 0
docs/home/rapidoc-min.js.map

@@ -0,0 +1 @@
+{"version":3,"file":"rapidoc-min.js","sources":["webpack:///rapidoc-min.js"],"mappings":";;;;;AAMA;;;;;;;AAqoMA;;;;;;AA8hIA;;;;;;AAmlDA;;;;;;;;;;;;;;;;;;;;;;;;;;;AAonSA;;;;;;AAylBA;;;;;;;;;;;;;AA6udA;;;;;;;;;;;;;;AAmYA;;;;;;;;;;;;;;AAiGA;;;;;;;;;;;;;AAsIA;;;;;;;;;;;;;;AAsHA;;;;;;;;;;;;;AAqcA;;;;;;;;;;;;;AAgIA;;;;;;;;;;;;;;AAjCA;;;;;;;;;;;;;AAkFA;;;;;;;;;;;AA+yCA;;;;;;;;;;;;;;AAuFA;;;;;;;;;;;;;AAg5KA","sourceRoot":""}

binární
docs/home/rapidoc-min.js.map.gz


Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 6 - 0
docs/home/report.html


+ 20 - 0
docs/index.php

@@ -0,0 +1,20 @@
+<?php
+require_once '../api/functions.php';
+define("API_HOST", getServerPath(false) . '');
+$dirs = [
+	'../api/plugins',
+	'../api/v2',
+];
+$openapi = \OpenApi\scan($dirs);
+ob_start();
+header('Content-Type: application/json');
+$json = $openapi->toJson();
+echo $json;
+//  Return the contents of the output buffer
+$htmlStr = ob_get_contents();
+// Clean (erase) the output buffer and turn off output buffering
+ob_end_clean();
+// Write final string to file
+file_put_contents('./api.json', $htmlStr);
+header("Location: home/");
+echo $json;

+ 0 - 0
swagger/favicon-16x16.png → docs/swagger/favicon-16x16.png


+ 0 - 0
swagger/favicon-32x32.png → docs/swagger/favicon-32x32.png


+ 11 - 2
swagger/index.html → docs/swagger/index.html

@@ -39,7 +39,7 @@
     window.onload = function() {
       // Begin Swagger UI call region
       const ui = SwaggerUIBundle({
-        url: "swagger.json",
+        url: "../api.json",
         dom_id: '#swagger-ui',
         deepLinking: true,
         presets: [
@@ -49,7 +49,16 @@
         plugins: [
           SwaggerUIBundle.plugins.DownloadUrl
         ],
-        layout: "StandaloneLayout"
+        layout: "BaseLayout",
+		tagsSorter:'alpha',
+		operationsSorter:'alpha',
+		filter: true,
+		syntaxHighlight: {
+			'activate':true,
+			'theme':'monokai'
+		},
+		defaultModelRendering:'example'
+		
       })
       // End Swagger UI call region
 

+ 0 - 0
swagger/oauth2-redirect.html → docs/swagger/oauth2-redirect.html


+ 0 - 0
swagger/swagger-ui-bundle.js → docs/swagger/swagger-ui-bundle.js


+ 0 - 0
swagger/swagger-ui-bundle.js.map → docs/swagger/swagger-ui-bundle.js.map


+ 0 - 0
swagger/swagger-ui-standalone-preset.js → docs/swagger/swagger-ui-standalone-preset.js


+ 0 - 0
swagger/swagger-ui-standalone-preset.js.map → docs/swagger/swagger-ui-standalone-preset.js.map


+ 0 - 0
swagger/swagger-ui.css → docs/swagger/swagger-ui.css


+ 0 - 0
swagger/swagger-ui.css.map → docs/swagger/swagger-ui.css.map


+ 0 - 0
swagger/swagger-ui.js → docs/swagger/swagger-ui.js


+ 0 - 0
swagger/swagger-ui.js.map → docs/swagger/swagger-ui.js.map


Některé soubory nejsou zobrazeny, neboť je v těchto rozdílových datech změněno mnoho souborů