Skip to content

Commit 4fff55d

Browse files
committed
Resynced current code with origin/develop
2 parents 014eb7c + 054cafb commit 4fff55d

File tree

99 files changed

+8694
-744
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

99 files changed

+8694
-744
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,3 +22,4 @@ scripts/api/py_api_wrapper/local-data/*
2222
doc/sphinx-guides/build
2323
faces-config.NavData
2424
src/main/java/BuildNumber.properties
25+
/nbproject/
File renamed without changes.

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

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -162,6 +162,21 @@ Restores the default logic of the field type to be used as the citation date. Sa
162162
163163
DELETE http://$SERVER/api/datasets/$id/citationdate?key=$apiKey
164164

165+
List all the role assignments at the given dataset::
166+
167+
GET http://$SERVER/api/datasets/$id/assignments?key=$apiKey
168+
169+
Create a Private URL (must be able to manage dataset permissions)::
170+
171+
POST http://$SERVER/api/datasets/$id/privateUrl?key=$apiKey
172+
173+
Get a Private URL from a dataset (if available)::
174+
175+
GET http://$SERVER/api/datasets/$id/privateUrl?key=$apiKey
176+
177+
Delete a Private URL from a dataset (if it exists)::
178+
179+
DELETE http://$SERVER/api/datasets/$id/privateUrl?key=$apiKey
165180

166181
Builtin Users
167182
~~~~~
@@ -244,6 +259,13 @@ Shibboleth Groups
244259

245260
Management of Shibboleth groups via API is documented in the :doc:`/installation/shibboleth` section of the Installation Guide.
246261

262+
Info
263+
~~~~
264+
265+
For now, only the value for the ``:DatasetPublishPopupCustomText`` setting from the :doc:`/installation/config` section of the Installation Guide is exposed::
266+
267+
GET http://$SERVER/api/info/settings/:DatasetPublishPopupCustomText
268+
247269
Metadata Blocks
248270
~~~~~~~~~~~~~~~
249271

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

Lines changed: 33 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,11 @@ SWORD API
33

44
SWORD_ stands for "Simple Web-service Offering Repository Deposit" and is a "profile" of AtomPub (`RFC 5023`_) which is a RESTful API that allows non-Dataverse software to deposit files and metadata into a Dataverse installation. :ref:`client-libraries` are available in Python, Java, R, Ruby, and PHP.
55

6-
Introduced in Dataverse Network (DVN) `3.6 <http://guides.dataverse.org/en/3.6.2/dataverse-api-main.html#data-deposit-api>`_, the SWORD API was formerly known as the "Data Deposit API" and ``data-deposit/v1`` appeared in the URLs. For backwards compatibility these URLs will continue to work (with deprecation warnings). Due to architectural changes and security improvements (especially the introduction of API tokens) in Dataverse 4.0, a few backward incompatible changes were necessarily introduced and for this reason the version has been increased to ``v1.1``. For details, see :ref:`incompatible`.
6+
Introduced in Dataverse Network (DVN) `3.6 <http://guides.dataverse.org/en/3.6.2/dataverse-api-main.html#data-deposit-api>`_, the SWORD API was formerly known as the "Data Deposit API" and ``data-deposit/v1`` appeared in the URLs. For backwards compatibility these URLs continue to work (with deprecation warnings). Due to architectural changes and security improvements (especially the introduction of API tokens) in Dataverse 4.0, a few backward incompatible changes were necessarily introduced and for this reason the version has been increased to ``v1.1``. For details, see :ref:`incompatible`.
77

88
Dataverse implements most of SWORDv2_, which is specified at http://swordapp.github.io/SWORDv2-Profile/SWORDProfile.html . Please reference the `SWORDv2 specification`_ for expected HTTP status codes (i.e. 201, 204, 404, etc.), headers (i.e. "Location"), etc. For a quick introduction to SWORD, the two minute video at http://cottagelabs.com/news/intro-to-sword-2 is recommended.
99

10-
As a profile of AtomPub, XML is used throughout SWORD. As of Dataverse 4.0 datasets can also be created via JSON using the "native" API.
10+
As a profile of AtomPub, XML is used throughout SWORD. As of Dataverse 4.0 datasets can also be created via JSON using the "native" API. SWORD is limited to the dozen or so fields listed below in the crosswalk, but the native API allows you to populate all metadata fields available in Dataverse.
1111

1212
.. _SWORD: http://en.wikipedia.org/wiki/SWORD_%28protocol%29
1313

@@ -24,9 +24,9 @@ As a profile of AtomPub, XML is used throughout SWORD. As of Dataverse 4.0 datas
2424
Backward incompatible changes
2525
-----------------------------
2626

27-
For better security, usernames and passwords are no longer accepted. The use of an API token is required.
27+
For better security than in DVN 3.x, usernames and passwords are no longer accepted. The use of an API token is required.
2828

29-
In addition, differences in Dataverse 4.0 have lead to a few minor backward incompatible changes in the Dataverse implementation of SWORD, which are listed below. Old ``v1`` URLs should continue to work but the ``Service Document`` will contain a deprecation warning and responses will contain ``v1.1`` URLs. See also :ref:`known-issues`.
29+
Differences in Dataverse 4 from DVN 3.x lead to a few minor backward incompatible changes in the Dataverse implementation of SWORD, which are listed below. Old ``v1`` URLs should continue to work but the ``Service Document`` will contain a deprecation warning and responses will contain ``v1.1`` URLs. See also :ref:`known-issues`.
3030

3131
- Newly required fields when creating/editing datasets for compliance with the `Joint Declaration for Data Citation principles <http://thedata.org/blog/joint-declaration-data-citation-principles-and-dataverse>`_.
3232

@@ -41,11 +41,13 @@ In addition, differences in Dataverse 4.0 have lead to a few minor backward inco
4141
New features as of v1.1
4242
-----------------------
4343

44-
- Dataverse 4.0 supports API tokens and they must be used rather that a username and password. In the ``curl`` examples below, you will see ``curl -u $API_TOKEN:`` showing that you should send your API token as the username and nothing as the password. For example, ``curl -u 54b143b5-d001-4254-afc0-a1c0f6a5b5a7:``.
44+
- Dataverse 4 supports API tokens and they must be used rather that a username and password. In the ``curl`` examples below, you will see ``curl -u $API_TOKEN:`` showing that you should send your API token as the username and nothing as the password. For example, ``curl -u 54b143b5-d001-4254-afc0-a1c0f6a5b5a7:``.
4545

46-
- Dataverses can be published via SWORD
46+
- SWORD operations no longer require "admin" permission. In order to use any SWORD operation in DVN 3.x, you had to be "admin" on a dataverse (the container for your dataset) and similar rules were applied in Dataverse 4.4 and earlier (the ``EditDataverse`` permission was required). The SWORD API has now been fully integrated with the Dataverse 4 permission model such that any action you have permission to perform in the GUI or "native" API you are able to perform via SWORD. This means that even a user with a "Contributor" role can operate on datasets via SWORD. Note that users with the "Contributor" role do not have the ``PublishDataset`` permission and will not be able publish their datasets via any mechanism, GUI or API.
4747

48-
- Datasets versions will only be increased to the next minor version (i.e. 1.1) rather than a major version (2.0) if possible. This depends on the nature of the change.
48+
- Dataverses can be published via SWORD.
49+
50+
- Datasets versions will only be increased to the next minor version (i.e. 1.1) rather than a major version (2.0) if possible. This depends on the nature of the change. Adding or removing, a file, for example, requires a major version bump.
4951

5052
- "Author Affiliation" can now be populated with an XML attribute. For example: <dcterms:creator affiliation="Coffee Bean State University">Stumptown, Jane</dcterms:creator>
5153

@@ -67,21 +69,23 @@ curl examples
6769
Retrieve SWORD service document
6870
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
6971

70-
The service document enumerates the dataverses ("collections" from a SWORD perspective) the user can deposit data into. The "collectionPolicy" element for each dataverse contains the Terms of Use.
72+
The service document enumerates the dataverses ("collections" from a SWORD perspective) the user can deposit data into. The "collectionPolicy" element for each dataverse contains the Terms of Use. Any user with an API token can use this API endpoint. Institution-wide Shibboleth groups are not respected because membership in such a group can only be set via a browser.
7173

7274
``curl -u $API_TOKEN: https://$HOSTNAME/dvn/api/data-deposit/v1.1/swordv2/service-document``
7375

7476
Create a dataset with an Atom entry
7577
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
7678

79+
To create a dataset, you must have the "Dataset Creator" role (the ``AddDataset`` permission) on a dataverse. Practically speaking, you should first retrieve the service document to list the dataverses into which you are authorized to deposit data.
80+
7781
``curl -u $API_TOKEN: --data-binary "@path/to/atom-entry-study.xml" -H "Content-Type: application/atom+xml" https://$HOSTNAME/dvn/api/data-deposit/v1.1/swordv2/collection/dataverse/$DATAVERSE_ALIAS``
7882

7983
Example Atom entry (XML)
8084

8185
.. literalinclude:: sword-atom-entry.xml
8286

8387
Dublin Core Terms (DC Terms) Qualified Mapping - Dataverse DB Element Crosswalk
84-
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
88+
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
8589
+-----------------------------+----------------------------------------------+--------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------+
8690
|DC (terms: namespace) | Dataverse DB Element | Required | Note |
8791
+=============================+==============================================+==============+=============================================================================================================================================================+
@@ -117,62 +121,72 @@ Dublin Core Terms (DC Terms) Qualified Mapping - Dataverse DB Element Crosswalk
117121
List datasets in a dataverse
118122
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
119123

124+
You must have permission to add datasets in a dataverse (the dataverse should appear in the service document) to list the datasets inside. Institution-wide Shibboleth groups are not respected because membership in such a group can only be set via a browser.
125+
120126
``curl -u $API_TOKEN: https://$HOSTNAME/dvn/api/data-deposit/v1.1/swordv2/collection/dataverse/$DATAVERSE_ALIAS``
121127

122128
Add files to a dataset with a zip file
123129
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
124130

131+
You must have ``EditDataset`` permission (Contributor role or above such as Curator or Admin) on the dataset to add files.
132+
125133
``curl -u $API_TOKEN: --data-binary @path/to/example.zip -H "Content-Disposition: filename=example.zip" -H "Content-Type: application/zip" -H "Packaging: http://purl.org/net/sword/package/SimpleZip" https://$HOSTNAME/dvn/api/data-deposit/v1.1/swordv2/edit-media/study/doi:TEST/12345``
126134

127135
Display a dataset atom entry
128136
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
129137

138+
You must have ``ViewUnpublishedDataset`` permission (Contributor role or above such as Curator or Admin) on the dataset to view its Atom entry.
139+
130140
Contains data citation (bibliographicCitation), alternate URI (persistent URI of study), edit URI, edit media URI, statement URI.
131141

132142
``curl -u $API_TOKEN: https://$HOSTNAME/dvn/api/data-deposit/v1.1/swordv2/edit/study/doi:TEST/12345``
133143

134144
Display a dataset statement
135145
~~~~~~~~~~~~~~~~~~~~~~~~~~~
136146

137-
Contains title, author, feed of file entries, latestVersionState, locked boolean, updated timestamp.
147+
Contains title, author, feed of file entries, latestVersionState, locked boolean, updated timestamp. You must have ``ViewUnpublishedDataset`` permission (Contributor role or above such as Curator or Admin) on the dataset to display the statement.
138148

139149
``curl -u $API_TOKEN: https://$HOSTNAME/dvn/api/data-deposit/v1.1/swordv2/statement/study/doi:TEST/12345``
140150

141151
Delete a file by database id
142152
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
143153

154+
You must have ``EditDataset`` permission (Contributor role or above such as Curator or Admin) on the dataset to delete files.
155+
144156
``curl -u $API_TOKEN: -X DELETE https://$HOSTNAME/dvn/api/data-deposit/v1.1/swordv2/edit-media/file/123``
145157

146158
Replacing metadata for a dataset
147159
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
148160

149-
Please note that **ALL** metadata (title, author, etc.) will be replaced, including fields that can not be expressed with "dcterms" fields.
161+
Please note that **ALL** metadata (title, author, etc.) will be replaced, including fields that can not be expressed with "dcterms" fields. You must have ``EditDataset`` permission (Contributor role or above such as Curator or Admin) on the dataset to replace metadata.
150162

151163
``curl -u $API_TOKEN: --upload-file "path/to/atom-entry-study2.xml" -H "Content-Type: application/atom+xml" https://$HOSTNAME/dvn/api/data-deposit/v1.1/swordv2/edit/study/doi:TEST/12345``
152164

153165
Delete a dataset
154166
~~~~~~~~~~~~~~~~
155167

168+
You must have the ``DeleteDatasetDraft`` permission (Contributor role or above such as Curator or Admin) on the dataset to delete it. Please note that if the dataset has never been published you will be able to delete it completely but if the dataset has already been published you will only be able to delete post-publication drafts, never a published version.
169+
156170
``curl -u $API_TOKEN: -i -X DELETE https://$HOSTNAME/dvn/api/data-deposit/v1.1/swordv2/edit/study/doi:TEST/12345``
157171

158172
Determine if a dataverse has been published
159173
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
160174

161-
Look for a `dataverseHasBeenReleased` boolean.
175+
This API endpoint is the same as the "list datasets in a dataverse" endpoint documented above and the same permissions apply but it is documented here separately to point out that you can look for a boolean called ``dataverseHasBeenReleased`` to know if a dataverse has been released, which is required for publishing a dataset.
162176

163177
``curl -u $API_TOKEN: https://$HOSTNAME/dvn/api/data-deposit/v1.1/swordv2/collection/dataverse/$DATAVERSE_ALIAS``
164178

165179
Publish a dataverse
166180
~~~~~~~~~~~~~~~~~~~
167181

168-
The ``cat /dev/null`` and ``--data-binary @-`` arguments are used to send zero-length content to the API, which is required by the upstream library to process the ``In-Progress: false`` header.
182+
The ``cat /dev/null`` and ``--data-binary @-`` arguments are used to send zero-length content to the API, which is required by the upstream library to process the ``In-Progress: false`` header. You must have the ``PublishDataverse`` permission (Admin role) on the dataverse to publish it.
169183

170184
``cat /dev/null | curl -u $API_TOKEN: -X POST -H "In-Progress: false" --data-binary @- https://$HOSTNAME/dvn/api/data-deposit/v1.1/swordv2/edit/dataverse/$DATAVERSE_ALIAS``
171185

172186
Publish a dataset
173187
~~~~~~~~~~~~~~~~~
174188

175-
The ``cat /dev/null`` and ``--data-binary @-`` arguments are used to send zero-length content to the API, which is required by the upstream library to process the ``In-Progress: false`` header.
189+
The ``cat /dev/null`` and ``--data-binary @-`` arguments are used to send zero-length content to the API, which is required by the upstream library to process the ``In-Progress: false`` header. You must have the ``PublishDataset`` permission (Curator or Admin role) on the dataset to publish it.
176190

177191
``cat /dev/null | curl -u $API_TOKEN: -X POST -H "In-Progress: false" --data-binary @- https://$HOSTNAME/dvn/api/data-deposit/v1.1/swordv2/edit/study/doi:TEST/12345``
178192

@@ -181,22 +195,15 @@ The ``cat /dev/null`` and ``--data-binary @-`` arguments are used to send zero-l
181195
Known issues
182196
------------
183197

184-
- Potential mismatch between the dataverses ("collections" from a SWORD perspective) the user can deposit data into in returned by the Service Document and which dataverses the user can actually deposit data into. This is due to an incomplete transition from the old DVN 3.x "admin-only" style permission checking to the new permissions system in Dataverse 4.0 ( https://github.com/IQSS/dataverse/issues/1070 ). The mismatch was reported at https://github.com/IQSS/dataverse/issues/1443
185-
186-
- Should see all the fields filled in for a dataset regardless of what the parent dataverse specifies: https://github.com/IQSS/dataverse/issues/756
187-
188-
- Inefficiency in constructing the ``Service Document``: https://github.com/IQSS/dataverse/issues/784
189-
190-
- Inefficiency in constructing the list of datasets: https://github.com/IQSS/dataverse/issues/784
198+
- Deleting a file from a published version (not a draft) creates a draft but doesn't delete the file: https://github.com/IQSS/dataverse/issues/2464
191199

192-
Roadmap
193-
-------
200+
- The Service Document does not honor groups within groups: https://github.com/IQSS/dataverse/issues/3056
194201

195-
These are features we'd like to add in the future:
202+
- Should see all the fields filled in for a dataset regardless of what the parent dataverse specifies: https://github.com/IQSS/dataverse/issues/756
196203

197-
- Implement SWORD 2.0 Profile 6.4: https://github.com/IQSS/dataverse/issues/183
204+
- SWORD 2.0 Profile 6.4 "Retrieving the content" has not been implemented: https://github.com/IQSS/dataverse/issues/183
198205

199-
- Support deaccessioning via API: https://github.com/IQSS/dataverse/issues/778
206+
- Deaccessioning via API is not supported (it was in DVN 3.x): https://github.com/IQSS/dataverse/issues/778
200207

201208
- Let file metadata (i.e. description) be specified during zip upload: https://github.com/IQSS/dataverse/issues/723
202209

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -422,7 +422,7 @@ For Development only. Set ``GeoconnectDebug`` to true to allow a user to see SQ
422422
:DatasetPublishPopupCustomText
423423
++++++++++++++++++++++++++++++
424424

425-
Set custom text a user will view when publishing a dataset.
425+
Set custom text a user will view when publishing a dataset. Note that this text is exposed via the "Info" endpoint of the :doc:`/api/native-api`.
426426

427427
``curl -X PUT -d "Deposit License Requirements" http://localhost:8080/api/admin/settings/:DatasetPublishPopupCustomText``
428428

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

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -304,12 +304,14 @@ To create an institution-wide Shibboleth groups, create a JSON file as below and
304304

305305
.. literalinclude:: ../_static/installation/files/etc/shibboleth/shibGroupTestShib.json
306306

307-
Note that institution-wide Shibboleth groups are based on the "Shib-Identity-Provider" attribute but https://github.com/IQSS/dataverse/issues/1515 tracks adding support for arbitrary attributes such as ""eduPersonScopedAffiliation", etc.
307+
Institution-wide Shibboleth groups are based on the "Shib-Identity-Provider" SAML attribute asserted at runtime after successful authentication with the Identity Provider (IdP) and held within the browser session rather than being persisted in the database for any length of time. It is for this reason that roles based on these groups, such as the ability to create a dataset, are not honored by non-browser interactions, such as through the SWORD API.
308308

309309
To list institution-wide Shibboleth groups: ``curl http://localhost:8080/api/admin/groups/shib``
310310

311311
To delete an institution-wide Shibboleth group (assuming id 1): ``curl -X DELETE http://localhost:8080/api/admin/groups/shib/1``
312312

313+
Support for arbitrary attributes beyond "Shib-Identity-Provider" such as "eduPersonScopedAffiliation", etc. is being tracked at https://github.com/IQSS/dataverse/issues/1515
314+
313315
Converting Local Users to Shibboleth
314316
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
315317

0 commit comments

Comments
 (0)