# Sites

| Method | Path | What it does | Permission | Sudo | Approval |
|---|---|---|---|---|---|
| GET | `/api/sites` | List Sites | `apps.read` |  |  |
| POST | `/api/sites` | Create Site | `apps.manage` |  |  |
| POST | `/api/sites/reload` | Reload Webserver | `apps.operate` |  |  |
| GET | `/api/sites/templates` | List Site Templates | `apps.read` |  |  |
| GET | `/api/sites/{domain}` | Get Site | `apps.read` |  |  |
| DELETE | `/api/sites/{domain}` | Delete Site | `apps.manage` | yes |  |
| GET | `/api/sites/{domain}/config` | Get Site Config | `apps.read` |  |  |
| PUT | `/api/sites/{domain}/config` | Update Site Config | `root_equivalent` | yes | yes |
| POST | `/api/sites/{domain}/config/edit` | Edit Site Config | `apps.read` |  |  |
| POST | `/api/sites/{domain}/config/test` | Test Site Config | `apps.operate` |  |  |
| GET | `/api/sites/{domain}/config/versions` | List Versions | `apps.read` |  |  |
| GET | `/api/sites/{domain}/config/versions/{version}` | Read Version | `apps.read` |  |  |
| POST | `/api/sites/{domain}/config/versions/{version}/restore` | Restore Version | `root_equivalent` | yes | yes |
| POST | `/api/sites/{domain}/disable` | Disable Site | `apps.manage` |  |  |
| POST | `/api/sites/{domain}/enable` | Enable Site | `apps.manage` |  |  |
| POST | `/api/sites/{domain}/route` | Route Site Request | `apps.read` |  |  |
| GET | `/api/sites/{domain}/structure` | Get Site Structure | `apps.read` |  |  |
| POST | `/api/sites/{domain}/structure` | Post Site Structure | `apps.read` |  |  |
| GET | `/api/sites/{domain}/topology` | Get Site Topology | `apps.read` |  |  |
| GET | `/api/unknown-hosts` | Get Unknown Hosts | `server.read` |  |  |
| PUT | `/api/unknown-hosts` | Put Unknown Hosts | `server.manage` | yes |  |
| DELETE | `/api/unknown-hosts` | Delete Unknown Hosts | `server.manage` | yes |  |

