This document describes the access permissions which are required to use the various Tradamus endpoints. The endpoints themselves are more full described in Tradamus Server API.
There are five ranked levels of access: NONE, VIEWER, CONTRIBUTOR, EDITOR, and OWNER. If a user has a particular level of access to a resource, they also implicitly have all the lower levels of access.
| level | access |
|---|---|
NONE |
None |
VIEWER |
Read-only access. |
CONTRIBUTOR |
Can add new annotations but these will be unvetted. |
EDITOR |
Can add fully-vetted annotations. Can vet annotations for CONTRIBUTORs. |
OWNER |
Can assign permissions. |
These levels are relative to a given resource. A particular user could have OWNER access to one edition while having no access at all to other editions.
Permissions can currently be set at three different points: the edition, the transcription, and the manifest. When verifying permissions, they are checked at the edition level first; if the user has sufficient permissions to access the edition, permissions are then checked at the transcription or manifest level. Accordingly, transcription and manifestt permissions can only be used to make access more restrictive.
Also new is the notion of annotations being vetted or unvetted. When a user with CONTRIBUTOR access adds an annotation, it is only visible to themselves and to users with EDITOR access. Once an EDITOR has approved an annotation, it becomes visible to all users with VIEWER access.
Endpoint: /users
Method: POST
Access: No restrictions.
Endpoint: /users
Method: POST
Access: EDITOR on edition to which user is being invited.
Endpoint: /user/userID
Method: GET
Access: No restrictions.
Endpoint: /user?mail=emailAddress
Method: GET
Access: No restrictions.
Endpoint: /user/userID
Method: PUT
Access: Only userID can modify their own details.
Endpoint: /user?reset=emailAddress
Method: POST
Access: No restrictions.
Endpoint: /login
Method: POST
Access: No restrictions.
Endpoint: /login
Method: GET
Access: The call always returns the status of the current user.
Endpoint: /editions
Method: POST
Access: No restrictions. The current user will be granted OWNER access to the newly-created edition.
Endpoint: /editions
Method: GET
Access: The call will only return editions for which the current user has VIEWER permissions.
Endpoint: /edition/edID
Method: GET
Access: VIEWER on the edition.
Endpoint: /edition/edID
Method: PUT
Access: EDITOR on the edition.
Endpoint: /edition/edID/metadata
Method: POST
Access: CONTRIBUTOR on the edition.
Endpoint: /edition/edID/metadata
Method: PUT
Access: CONTRIBUTOR on the edition. If access level is just CONTRIBUTOR, the call will fail with a 403 if it attempts to modify any metadata which belong to another user.
Endpoint: /edition/edID/decisions
Method: GET
Access: VIEWER on the edition.
Endpoint: /edition/edID/decisions
Method: PUT
Access: CONTRIBUTOR on the edition. If access level is just CONTRIBUTOR, the call will fail with a 403 if it attempts to modify any decisions which belong to another user.
Endpoint: /edition/edID/permissions
Method: PUT
Access: OWNER on the edition.
Endpoint: /edition/edID
Method: DELETE
Access: OWNER on the edition.
Endpoint: /witnesses
Method: POST
Access: EDITOR on the edition.
Endpoint: /witness/witID
Method: GET
Access: VIEWER on the edition.
Endpoint: /witness/witID
Method: PUT
Access: EDITOR on the edition.
Endpoint: /witness/witID/metadata
Method: POST
Access: CONTRIBUTOR on the edition.
Endpoint: /witness/witID/metadata
Method: PUT
Access: CONTRIBUTOR on the edition. If access level is just CONTRIBUTOR, the call will fail with a 403 if it attempts to modify any metadata which belong to another user.
Endpoint: /witness/witID
Method: DELETE
Access: EDITOR on the edition.
Endpoint: /witness/witID/annotations
Method: GET
Access: VIEWER on the edition. The results will be filtered if access is more restricted at the transcription or manifest levels.
Endpoint: /transcription/transcrID
Method: GET
Access: VIEWER on the transcription.
Endpoint: /transcription/transcrID/permissions
Method: PUT
Access: OWNER on the transcription.
Endpoint: /page/pageID
Method: GET
Access: VIEWER on the transcription.
Endpoint: /page/pageID
Method: PUT
Access: EDITOR on the transcription.
Endpoint: /page/pgID/annotations
Method: POST
Access: CONTRIBUTOR on the transcription.
Endpoint: /page/pgID/annotations
Method: GET
Access: VIEWER on the transcription.
Endpoint: /page/pageID/annotations
Method: PUT
Access: CONTRIBUTOR on the transcription. If access level is just CONTRIBUTOR, the call will fail with a 403 if it attempts to modify any annotations which belong to another user.
Endpoint: /page/pgID/lines
Method: GET
Access: VIEWER on the transcription.
Endpoint: /page/pageID/lines
Method: PUT
Access: CONTRIBUTOR on the transcription. If access level is just CONTRIBUTOR, the call will fail with a 403 if it attempts to modify any lines which belong to another user.
Endpoint: /manifest/manID
Method: GET
Access: VIEWER on the manifest.
Endpoint: /manifest/manID/permissions
Method: PUT
Access: OWNER on the manifest.
Endpoint: /canvas/canvID
Method: GET
Access: VIEWER on the manifest.
Endpoint: /canvas/canvID
Method: PUT
Access: EDITOR on the manifest.
Endpoint: /canvas/canvID/annotations
Method: POST
Access: CONTRIBUTOR on the manifest.
Endpoint: /canvas/canvID/annotations
Method: GET
Access: VIEWER on the manifest.
Endpoint: /canvas/canvID/annotations
Method: PUT
Access: CONTRIBUTOR on the manifest. If access level is just CONTRIBUTOR, the call will fail with a 403 if it attempts to modify any annotations which belong to another user.
Endpoint: /canvas/canvID/lines
Method: GET
Access: VIEWER on the manifest.
Endpoint: /canvas/canvID/lines
Method: PUT
Access: CONTRIBUTOR on the manifest. If access level is just CONTRIBUTOR, the call will fail with a 403 if it attempts to modify any lines which belong to another user.
Endpoint: /annotation/annID
Method: GET
Access: VIEWER on the transcription or the manifest. In particular, if an annotation is anchored to both the page and the canvas, it is sufficient to have VIEWER access on one of the transcription or the manifest.
Endpoint: /annotation/annID
Method: PUT
Access: CONTRIBUTOR on the transcription or the manifest. If access level is just CONTRIBUTOR, the call will fail with a 403 if it attempts to modify an annotation which belongs to another user.
Endpoint: /annotation/annID
Method: DELETE
Access: CONTRIBUTOR on the transcription or the manifest. If the access level is just CONTRIBUTOR, the call can only delete an annotation belonging to the current user.
Endpoint: /collation/edID
Method: GET
Access: Only transcriptions with VIEWER access will be included in the collation.
Endpoint: /collation
Method: GET
Access: Only transcriptions with VIEWER access will be included in the collation.
Endpoint: /config
Method: GET
Access: No restrictions.
Endpoint: /activity
Method: GET
Access: To be determined.