Merge branch 'feature/restart-pleroma-from-outside-application' into 'develop'
[akkoma] / docs / API / admin_api.md
index e0eda0841645e8efd9dc814cbc84a28925c58a2a..2c0c5f46b8f0bad465f3179b7810b14e1e470f04 100644 (file)
@@ -3,7 +3,7 @@
 Authentication is required and the user must be an admin.
 
 Configuration options:
+
 * `[:auth, :enforce_oauth_admin_scope_usage]` — OAuth admin scope requirement toggle.
     If `true`, admin actions explicitly demand admin OAuth scope(s) presence in OAuth token (client app must support admin scopes).
     If `false` and token doesn't have admin scope(s), `is_admin` user flag grants access to admin-specific actions.
@@ -665,6 +665,19 @@ Note: Available `:permission_group` is currently moderator and admin. 404 is ret
     - 404 Not Found `"Not found"`
   - On success: 200 OK `{}`
 
+## `GET /api/pleroma/admin/restart`
+
+### Restarts pleroma application
+
+- Params: none
+- Response:
+  - On failure:
+    - 400 Bad Request `"To use this endpoint you need to enable configuration from database."`
+
+```json
+{}
+```
+
 ## `GET /api/pleroma/admin/config/migrate_from_db`
 
 ### Run mix task pleroma.config migrate_from_db
@@ -674,7 +687,7 @@ Copies all settings from database to `config/{env}.exported_from_db.secret.exs`
 - Params: none
 - Response:
   - On failure:
-    - 400 Bad Request `"To use this endpoint you need to enable dynamic configuration."`
+    - 400 Bad Request `"To use this endpoint you need to enable configuration from database."`
 
 ```json
 {}
@@ -682,15 +695,16 @@ Copies all settings from database to `config/{env}.exported_from_db.secret.exs`
 
 ## `GET /api/pleroma/admin/config`
 
-### Get saved config settings
+### Get list of merged default settings with saved in database.
 
-**Only works when `:dynamic_configuration` is `true`.**
+**Only works when configuration from database is enabled.**
 
-- Params: none
+- Params:
+  - `only_db`: true (*optional*, get only saved in database settings)
 - Response:
   - On failure:
-    - 400 Bad Request `"To use this endpoint you need to enable dynamic configuration."`
-    - 400 Bad Request `"To use dynamic configuration migrate your settings to database."`
+    - 400 Bad Request `"To use this endpoint you need to enable configuration from database."`
+    - 400 Bad Request `"To use configuration from database migrate your settings to database."`
 
 ```json
 {
@@ -708,7 +722,7 @@ Copies all settings from database to `config/{env}.exported_from_db.secret.exs`
 
 ### Update config settings
 
-**Only works when `:dynamic_configuration` is `true`.**
+**Only works when configuration from database is enabled.**
 
 Some modifications are necessary to save the config settings correctly:
 
@@ -721,11 +735,11 @@ Some modifications are necessary to save the config settings correctly:
 ```
 ":pleroma" -> :pleroma
 ```
-- objects with `tuple` key and array value will be converted to atoms;
+- objects with `tuple` key and array value will be converted to tuples;
 ```
 {"tuple": ["string", "Pleroma.Upload", []]} -> {"string", Pleroma.Upload, []}
 ```
-- arrays with *tuple objects* and 2 childs in array will be converted to keywords;
+- arrays with *tuple objects* will be converted to keywords;
 ```
 [{"tuple": [":key1", "value"]}, {"tuple": [":key2", "value"]}] -> [key1: "value", key2: "value"]
 ```
@@ -734,7 +748,6 @@ Most of the settings will be applied in `runtime`, this means that you don't nee
 - all settings inside these keys:
   - `:hackney_pools`
   - `:chat`
-  - `Pleroma.Web.Endpoint`
 - partially settings inside these keys:
   - `:seconds_valid` in `Pleroma.Captcha`
   - `:proxy_remote` in `Pleroma.Upload`
@@ -763,7 +776,7 @@ Example of setting without keyword in value:
 config :tesla, :adapter, Tesla.Adapter.Hackney
 ```
 
-List of settings which have list in value:
+List of settings which support only full update by key:
 ```elixir
 @full_key_update [
     {:pleroma, :ecto_repos},
@@ -771,7 +784,19 @@ List of settings which have list in value:
     {:mime, :types},
     {:cors_plug, [:max_age, :methods, :expose, :headers]},
     {:auto_linker, :opts},
-    {:swarm, :node_blacklist}
+    {:swarm, :node_blacklist},
+    {:logger, :backends}
+  ]
+```
+
+List of settings which support only full update by subkey:
+```elixir
+@full_subkey_update [
+    {:pleroma, :assets, :mascots},
+    {:pleroma, :emoji, :groups},
+    {:pleroma, :workers, :retries},
+    {:pleroma, :mrf_subchain, :match_actor},
+    {:pleroma, :mrf_keyword, :replace}
   ]
 ```
 
@@ -824,7 +849,7 @@ config :quack,
 
 - Response:
   - On failure:
-    - 400 Bad Request `"To use this endpoint you need to enable dynamic configuration."`
+    - 400 Bad Request `"To use this endpoint you need to enable configuration from database."`
 ```json
 {
   configs: [