+
+## `/api/pleroma/admin/config`
+### List config settings
+- Method `GET`
+- Params: none
+- Response:
+
+```json
+{
+ configs: [
+ {
+ "group": string,
+ "key": string,
+ "value": string or {} or [] or {"tuple": []}
+ }
+ ]
+}
+```
+
+## `/api/pleroma/admin/config`
+### Update config settings
+Module name can be passed as string, which starts with `Pleroma`, e.g. `"Pleroma.Upload"`.
+Atom or boolean value can be passed with `:` in the beginning, e.g. `":true"`, `":upload"`.
+Integer with `i:`, e.g. `"i:150"`.
+Tuple with more than 2 values with `{"tuple": ["first_val", Pleroma.Module, []]}`.
+`{"tuple": ["some_string", "Pleroma.Some.Module", []]}` will be converted to `{"some_string", Pleroma.Some.Module, []}`.
+
+Compile time settings (need instance reboot):
+- all settings by this keys:
+ - `:hackney_pools`
+ - `:chat`
+ - `Pleroma.Web.Endpoint`
+ - `Pleroma.Repo`
+- part settings:
+ - `Pleroma.Captcha` -> `:seconds_valid`
+ - `Pleroma.Upload` -> `:proxy_remote`
+ - `:instance` -> `:upload_limit`
+
+- Method `POST`
+- Params:
+ - `configs` => [
+ - `group` (string)
+ - `key` (string)
+ - `value` (string, [], {} or {"tuple": []})
+ - `delete` = true (optional, if parameter must be deleted)
+ ]
+
+- Request (example):
+
+```json
+{
+ configs: [
+ {
+ "group": "pleroma",
+ "key": "Pleroma.Upload",
+ "value": {
+ "uploader": "Pleroma.Uploaders.Local",
+ "filters": ["Pleroma.Upload.Filter.Dedupe"],
+ "link_name": ":true",
+ "proxy_remote": ":false",
+ "proxy_opts": {
+ "redirect_on_failure": ":false",
+ "max_body_length": "i:1048576",
+ "http": {
+ "follow_redirect": ":true",
+ "pool": ":upload"
+ }
+ },
+ "dispatch": {
+ "tuple": ["/api/v1/streaming", "Pleroma.Web.MastodonAPI.WebsocketHandler", []]
+ }
+ }
+ }
+ ]
+}
+
+- Response:
+
+```json
+{
+ configs: [
+ {
+ "group": string,
+ "key": string,
+ "value": string or {} or [] or {"tuple": []}
+ }
+ ]
+}
+```