You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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 `WorkflowsAdmin#IP_WHITELIST_KEY` was renamed to `:WorkflowsAdminIpWhitelist`, aligned with our general naming pattern for options.
9
+
3. Setting `:TabularIngestSizeLimit` no longer uses suffixes for formats and becomes a JSON-based setting instead.
10
+
4. If set, all three settings will be migrated to their new form automatically for you (Flyway migration).
11
+
5. You can no longer (accidentally) create or use arbitrary setting names or languages.
12
+
All Admin API endpoints for settings now validate setting names and languages for existence and compliance.
13
+
14
+
As an administrator of a Dataverse instance, you can now make use of enhanced Bulk Operations on the Settings Admin API:
15
+
16
+
1. Retrieving all settings as JSON via `GET /api/admin/settings` supports localized options now, too.
17
+
2. You can replace all existing settings in an idempotent way sending JSON to `PUT /api/admin/settings`.
18
+
This will create, update and remove settings as necessary in one atomic operation.
19
+
The new endpoint is especially useful to admins using GitOps or other automations.
20
+
It allows control over all Database Settings from a single source without risking an undefined state.
21
+
22
+
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!
23
+
24
+
### Updated Database Settings
25
+
26
+
The following database settings are were added to the official list within the code (to remain valid with the settings cleanup mentioned above):
27
+
28
+
-`:BagGeneratorThreads`
29
+
-`:BagItHandlerEnabled`
30
+
-`:BagItLocalPath`
31
+
-`:BagValidatorJobPoolSize`
32
+
-`:BagValidatorJobWaitInterval`
33
+
-`:BagValidatorMaxErrors`
34
+
-`:BuiltinUsersKey` - formerly `BuiltinUsers.KEY`
35
+
-`:CreateDataFilesMaxErrorsToDisplay`
36
+
-`:DRSArchiverConfig` - a Harvard-specific setting
Modernizes CORS so browser integrations (previewers, external tools, JS clients) work correctly with multiple origins and proper caching.
4
+
5
+
## Highlights
6
+
7
+
- Echoes the request origin (`Access-Control-Allow-Origin`) when it matches `dataverse.cors.origin`.
8
+
- Adds `Vary: Origin` for per-origin responses (not for wildcard).
9
+
- Supports comma‑separated origin list; any `*` in the list = wildcard mode.
10
+
- CORS now only enabled when `dataverse.cors.origin` is set (removed `:AllowCors` no longer enables it).
11
+
- All comma-separated configuration settings (database properties and MicroProfile config) now ignore spaces around commas; tokens remain unchanged (no quote parsing). Examples: `dataverse.cors.methods`, `dataverse.cors.headers.allow`, `dataverse.cors.headers.expose`. See "Comma-separated configuration values" in the Installation Guide.
12
+
- Docs updated (Installation, Big Data Support, External Tools, File Previews); new tests cover edge cases.
13
+
14
+
## Admin Action
15
+
16
+
Set `dataverse.cors.origin` explicitly (required). Use explicit origins (not `*`) for credentialed requests. Ensure proxies keep `Vary: Origin`.
dataverse.cors.methods=GET, POST, OPTIONS, PUT, DELETE
30
+
```
31
+
32
+
## Compatibility
33
+
34
+
- Must configure `dataverse.cors.origin`; `:AllowCors` was deprecated and has now been removed.
35
+
- Any `*` triggers wildcard (no per-origin echo / no Vary header).
36
+
37
+
## Docs
38
+
39
+
See updated `dataverse.cors.origin` section and related notes in Big Data Support (S3), External Tools, and File Previews.
40
+
41
+
<!-- Maintainer note: The generic behavior for comma-separated settings has been documented centrally under Installation Guide > Configuration > "Comma-separated configuration values". Keep this item here as a cross-reference. -->
Copy file name to clipboardExpand all lines: doc/sphinx-guides/source/api/changelog.rst
+3Lines changed: 3 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -9,7 +9,10 @@ This API changelog is experimental and we would love feedback on its usefulness.
9
9
10
10
v6.9
11
11
----
12
+
12
13
- The POST /api/admin/makeDataCount/{id}/updateCitationsForDataset processing is now asynchronous and the response no longer includes the number of citations. The response can be OK if the request is queued or 503 if the queue is full (default queue size is 1000).
14
+
- The way to set per-format size limits for tabular ingest has changed. JSON input is now used. See :ref:`:TabularIngestSizeLimit`.
15
+
- In the past, the settings API would accept any key and value. This is no longer the case because validation has been added. See :ref:`settings_put_single`, for example.
Copy file name to clipboardExpand all lines: doc/sphinx-guides/source/api/external-tools.rst
+3Lines changed: 3 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -11,6 +11,9 @@ Introduction
11
11
12
12
External tools are additional applications the user can access or open from your Dataverse installation to preview, explore, and manipulate data files and datasets. The term "external" is used to indicate that the tool is not part of the main Dataverse Software.
13
13
14
+
.. note::
15
+
Browser-based tools must have CORS explicitly enabled via :ref:`dataverse.cors.origin <dataverse.cors.origin>`. List every origin that will host your tool (or use ``*`` when a wildcard is acceptable). If an origin is not listed, the browser will block that tool's API requests even if the tool page itself loads.
16
+
14
17
Once you have created the external tool itself (which is most of the work!), you need to teach a Dataverse installation how to construct URLs that your tool needs to operate. For example, if you've deployed your tool to fabulousfiletool.com your tool might want the ID of a file and the siteUrl of the Dataverse installation like this: https://fabulousfiletool.com?fileId=42&siteUrl=https://demo.dataverse.org
15
18
16
19
In short, you will be creating a manifest in JSON format that describes not only how to construct URLs for your tool, but also what types of files your tool operates on, where it should appear in the Dataverse installation web interfaces, etc.
If there are no metadata languages configured on the server, this call returns an empty array. If the Dataverse collection has a mandatory metadata language, the return value is an array of that single language,
310
+
otherwise it's an array of all available metadata languages on the server.
311
+
312
+
Set the Allowed Metadata Language of a Dataverse Collection
curl -H "X-Dataverse-key:$API_TOKEN" -X PUT "$SERVER_URL/api/dataverses/$ID/allowedMetadataLanguages/$LANGCODE"
325
+
326
+
The fully expanded example above (without environment variables) looks like this:
327
+
328
+
.. code-block:: bash
329
+
330
+
curl -H "X-Dataverse-key:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" -X PUT "https://demo.dataverse.org/api/dataverses/root/allowedMetadataLanguages/en"
331
+
332
+
Returns an array of the set metadata language.
333
+
If the metadata language is not available on the server, this call responds with a 400 BAD REQUEST.
334
+
290
335
List Facets Configured for a Dataverse Collection
291
336
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
292
337
@@ -5843,13 +5888,13 @@ Builtin users are known as "Username/Email and Password" users in the :doc:`/use
5843
5888
Create a Builtin User
5844
5889
~~~~~~~~~~~~~~~~~~~~~
5845
5890
5846
-
For security reasons, builtin users cannot be created via API unless the team who runs the Dataverse installation has populated a database setting called ``BuiltinUsers.KEY``, which is described under :ref:`securing-your-installation` and :ref:`database-settings` sections of Configuration in the Installation Guide. You will need to know the value of ``BuiltinUsers.KEY`` before you can proceed.
5891
+
For security reasons, builtin users cannot be created via API unless the team who runs the Dataverse installation has populated a database setting called ``:BuiltinUsersKey``, which is described under :ref:`securing-your-installation` and :ref:`database-settings` sections of Configuration in the Installation Guide. You will need to know the value of ``:BuiltinUsersKey`` before you can proceed.
5847
5892
5848
5893
To create a builtin user via API, you must first construct a JSON document. You can download :download:`user-add.json <../_static/api/user-add.json>` or copy the text below as a starting point and edit as necessary.
5849
5894
5850
5895
.. literalinclude:: ../_static/api/user-add.json
5851
5896
5852
-
Place this ``user-add.json`` file in your current directory and run the following curl command, substituting variables as necessary. Note that both the password of the new user and the value of ``BuiltinUsers.KEY`` are passed as query parameters::
5897
+
Place this ``user-add.json`` file in your current directory and run the following curl command, substituting variables as necessary. Note that both the password of the new user and the value of ``:BuiltinUsersKey`` are passed as query parameters::
@@ -7133,35 +7178,193 @@ If the PID is not managed by Dataverse, this call will report if the PID is reco
7133
7178
Admin
7134
7179
-----
7135
7180
7136
-
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 fordetails. See :ref:`blocking-api-endpoints`in Securing Your Installation section of the Configuration page of the Installation Guide.
7181
+
This is the administrative part of the API.
7182
+
For security reasons, it is absolutely essential that you block it before allowing public access to a Dataverse installation.
7183
+
See :ref:`blocking-api-endpoints`in the Installation Guide for details.
7184
+
7185
+
.. note:: See :ref:`curl-examples-and-environment-variables`if you are unfamiliar with the use of export below.
7186
+
7187
+
.. _admin-api-db-settings:
7188
+
7189
+
Manage Database Settings
7190
+
~~~~~~~~~~~~~~~~~~~~~~~~
7191
+
7192
+
These are the API endpoints formanaging the :ref:`database-settings` listedin the Installation Guide.
7193
+
7194
+
.. _settings_get_all:
7137
7195
7138
7196
List All Database Settings
7139
-
~~~~~~~~~~~~~~~~~~~~~~~~~~
7197
+
^^^^^^^^^^^^^^^^^^^^^^^^^^
7140
7198
7141
-
List all settings::
7199
+
.. code-block:: bash
7142
7200
7143
-
GET http://$SERVER/api/admin/settings
7201
+
export SERVER_URL="http://localhost:8080"
7202
+
7203
+
curl "$SERVER_URL/api/admin/settings"
7144
7204
7145
-
Configure Database Setting
7146
-
~~~~~~~~~~~~~~~~~~~~~~~~~~
7205
+
The fully expanded example above (without environment variables) looks like this:
7206
+
7207
+
.. code-block:: bash
7147
7208
7148
-
Sets setting ``name`` to the body of the request::
7209
+
curl http://localhost:8080/api/admin/settings
7149
7210
7150
-
PUT http://$SERVER/api/admin/settings/$name
7211
+
.. _settings_get_single:
7151
7212
7152
7213
Get Single Database Setting
7153
-
~~~~~~~~~~~~~~~~~~~~~~~~~~~
7214
+
^^^^^^^^^^^^^^^^^^^^^^^^^^^
7154
7215
7155
-
Get the setting under ``name``::
7216
+
.. code-block:: bash
7156
7217
7157
-
GET http://$SERVER/api/admin/settings/$name
7218
+
export SERVER_URL="http://localhost:8080"
7219
+
export NAME=":UploadMethods"
7220
+
7221
+
curl "$SERVER_URL/api/admin/settings/$NAME"
7158
7222
7159
-
Delete Database Setting
7160
-
~~~~~~~~~~~~~~~~~~~~~~~
7223
+
The fully expanded example above (without environment variables) looks like this:
0 commit comments