Skip to content

Commit 069ec88

Browse files
committed
docs: add release note and API docs for #11639
1 parent f839a51 commit 069ec88

3 files changed

Lines changed: 56 additions & 5 deletions

File tree

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
## Database Settings Cleanup
2+
3+
With this release, we remove some legacy specialties around Database Settings and provide better Admin API endpoints for them.
4+
5+
Most important changes:
6+
7+
1. Setting `BuiltinUsers.KEY` was renamed to `:BuiltinUsersKey`, aligned with our general naming pattern for options.
8+
2. Setting `:TabularIngestSizeLimit` no longer uses suffixes for formats and becomes a JSON-based setting instead.
9+
3. If set, both settings will be migrated to their new form automatically for you (Flyway migration).
10+
4. You can no longer (accidentally) create or use arbitrary setting names or languages.
11+
All Admin API endpoints for settings now validate setting names and languages for existence and compliance.
12+
13+
As an administrator of a Dataverse instance, you can now make use of enhanced Bulk Operations on the Settings Admin API:
14+
15+
1. Retrieving all settings as JSON via `GET /api/admin/settings` supports localized options now, too.
16+
2. You can replace all existing settings in an idempotent way sending JSON to `PUT /api/admin/settings`.
17+
This will create, update and remove settings as necessary in one atomic operation.
18+
The new endpoint is especially useful to admins using GitOps or other automations.
19+
It allows control over all Database Settings from a single source without risking an undefined state.
20+
21+
Note: Despite the validation of setting names and languages, the content of any database setting is still not being validated when using the Settings Admin API!

doc/sphinx-guides/source/api/native-api.rst

Lines changed: 33 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6530,7 +6530,11 @@ If the PID is not managed by Dataverse, this call will report if the PID is reco
65306530
Admin
65316531
-----
65326532
6533-
This is the administrative part of the API. For security reasons, it is absolutely essential that you block it before allowing public access to a Dataverse installation. Blocking can be done using settings. See the ``post-install-api-block.sh`` script in the ``scripts/api`` folder for details. See :ref:`blocking-api-endpoints` in Securing Your Installation section of the Configuration page of the Installation Guide.
6533+
This is the administrative part of the API.
6534+
For security reasons, it is absolutely essential that you block it before allowing public access to a Dataverse installation.
6535+
Blocking can be done using settings.
6536+
See the ``post-install-api-block.sh`` script in the ``scripts/api`` folder for details.
6537+
See :ref:`blocking-api-endpoints` in Securing Your Installation section of the Configuration page of the Installation Guide.
65346538
65356539
List All Database Settings
65366540
~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -6539,27 +6543,51 @@ List all settings::
65396543
65406544
GET http://$SERVER/api/admin/settings
65416545
6542-
Configure Database Setting
6543-
~~~~~~~~~~~~~~~~~~~~~~~~~~
6546+
.. _settings_put_bulk:
6547+
6548+
Configure All Database Settings
6549+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
6550+
6551+
Replace all settings in a single idempotent and atomic operation::
6552+
6553+
PUT http://$SERVER/api/admin/settings
6554+
6555+
See JSON ``data`` object in output of ``GET /api/admin/settings`` for the JSON input structure for this endpoint.
6556+
The :doc:`../installation/config` page of the Installation Guide has a :ref:`complete list of all the available settings <database-settings>`.
6557+
6558+
Configure Single Database Setting
6559+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
65446560
65456561
Sets setting ``name`` to the body of the request::
65466562
65476563
PUT http://$SERVER/api/admin/settings/$name
65486564
6565+
Sets a localized setting ``name`` for locale/language ``lang`` to the body of the request::
6566+
6567+
PUT http://$SERVER/api/admin/settings/$name/lang/$lang
6568+
65496569
Get Single Database Setting
65506570
~~~~~~~~~~~~~~~~~~~~~~~~~~~
65516571
65526572
Get the setting under ``name``::
65536573
65546574
GET http://$SERVER/api/admin/settings/$name
65556575
6556-
Delete Database Setting
6557-
~~~~~~~~~~~~~~~~~~~~~~~
6576+
Gets a localized setting under ``name`` for locale/language ``lang``::
6577+
6578+
GET http://$SERVER/api/admin/settings/$name/lang/$lang
6579+
6580+
Delete Single Database Setting
6581+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
65586582
65596583
Delete the setting under ``name``::
65606584
65616585
DELETE http://$SERVER/api/admin/settings/$name
65626586
6587+
Delete a localized setting under ``name`` for locale/language ``lang``::
6588+
6589+
DELETE http://$SERVER/api/admin/settings/$name/lang/$lang
6590+
65636591
.. _list-all-feature-flags:
65646592
65656593
List All Feature Flags

doc/sphinx-guides/source/installation/config.rst

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3824,6 +3824,8 @@ The most commonly used configuration options are listed first.
38243824

38253825
The pattern you will observe in curl examples below is that an HTTP ``PUT`` is used to add or modify a setting. If you perform an HTTP ``GET`` (the default when using curl), the output will contain the value of the setting, if it has been set. You can also do a ``GET`` of all settings with ``curl http://localhost:8080/api/admin/settings`` which you may want to pretty-print by piping the output through a tool such as jq by appending ``| jq .``. If you want to remove a setting, use an HTTP ``DELETE`` such as ``curl -X DELETE http://localhost:8080/api/admin/settings/:GuidesBaseUrl`` .
38263826

3827+
For your convenience, there is also an Admin API endpoint to :ref:`bulk manage database settings in an atomic, idempotent fashion <settings_put_bulk>`.
3828+
38273829
.. _:BlockedApiPolicy:
38283830

38293831
:BlockedApiPolicy (Deprecated)

0 commit comments

Comments
 (0)