{% include navmenu.html %}
In this exercise, we will interact with the submission process, from the submittion to the deposit of a new ite.
For this exercise we will use two separate accounts, a basic submitter and the administrator
api/authn/logout
verify that your are not anymore authenticated
api/authn/status
In the return section, note that authentication is false.
Similar to what done in [exercise4.md] login, this time using the following credentials: dspacedemo+submit@gmail.com / dspace
Note that the credentials you need to use will differ from the screenshot below.
Note that the login endpoint should be invoked with the POST method.
POST api/authn/login
api/authn/status
In the return section, note that authentication is true.
As long as you continue to use the tab that contains this Bearer token, you will continue to be authenticated. If the Bearer token times out, repeat the steps above to generate a new one.
Similarly to what done in exercise 4 we will create a new workspaceitem. This time we will start sending a pdf file to the server.
Again, in this process, you will perform the underlying tasks that the DSpace Angular client will perform on behalf of a user.
POST api/submission/workspaceitems?parent=51715dd3-5590-49f2-b227-6a663c849921
Note the different Content-type used to inform the server about the attached PDF and the use of the parent parameter to force the use of a specifc collection. A sample pdf file can be found here
Note the id of the object that is created and the new upload section containing the information about the uploaded file
Depending on the uploaded PDF file, if the server has the GrobId integration enabled, descriptive metadata could be automatically extracted and added to the item
If your item doesn't contain yet a DOI add one with the following
PATCH api/submission/workspaceitems/[id]
using as body
[
{
"op":"add",
"path":"/sections/traditionalpageone/dc.identifier.doi",
"value": [{"value": "10.1016/j.procs.2014.06.008"}]
}
]
In the response, note the additional metadata automatically added to the item querying CrossRef (this requires to enable the crossref integration in the DSpace server adding valid API Key)
The JSON PATCH allows to perform multiple operation as with a single atomic request/transaction.
PATCH api/submission/workspaceitems/[id]
Use the following json
[
{"op":"move","from":"/sections/traditionalpageone/dc.contributor.author/1", "path":"/sections/traditionalpageone/dc.contributor.author/0"},
{"op":"add","path":"/sections/upload/files/0/metadata/dc.description", "value":[{"value":"Description of the file"}]},
{"op":"add","path":"/sections/license/granted", "value": true}
]
Look for the errors attribute, the item should be now ready for the deposit
You need to create a workflowitem from your workspaceitem, to do that send a reference to the workspaceitem to the workflowitems endpoint as text/uri-list
POST api/workflow/workflowitems
-H Content-Type: "text/uri-list" --data '{{dspaceresturl}}/api/submission/workspaceitems/[id]
'
Note the workflowitem ID from the response
Follow the instruction at point 1 to logout as submitter (not really required as long as you are sure to use the right authentication token) and login with the usual administrative account (this account is also configured in the official demo as Reviewer for the collection where we are submitting).
In this process, you will retrieve the task associated with the submitted item, claim and approve it publishing the item to the repository.
In the real Angular UI the reviewer will use the discover endpoint to get a list of all her tasks with faceting capabilities and select the one that require her attention. To keep the task easier, in this exercise, we will retrieve the pool tasks available using a search method of the PoolTasks endpoint
POST api/submission/pooltasks/search/findByUser?uuid=335647b6-8a52-4ecb-a8c1-7ebabb199bda
the uuid in the parameter is the uuid of the administrator (reviewer) that we are currently loggedin. You can observe it in the response of the login method or looking to the User Data in the decoded JWT token (an online decoder is available on the JWT website
Identify your task or just keep one among the available. Be fast other could grab your task :)
To claim the task send a simple POST request to the pool task URI
POST api/workflow/pooltasks/[id]
-H Content-Type: "x-www-form-urlencoded"
Similarly to point 3a lookup for the claimed task ID
POST api/submission/claimedtasks/search/findByUser=335647b6-8a52-4ecb-a8c1-7ebabb199bda
Note the ID of the claimed task in the response
You can now manipulate the embedded workflowitem using PATCH in the same way than was done for the workspaceitem. To complete the exercise simply approve the task
POST api/workflow/claimedtasks/[id]?submit_approve=true
{% include credentials.html %} {% include nav.html %}