task #7269
Updated by Andreas Kohlbecker about 6 years ago
The Redmine issue system will be used to establish asynchronous communication between *curator* and *submitters*, which are also referred to as **contributors**.
* All messages are stored in redmine.
* For each registration entity a issue is created in redmine, when even a message needs to be passes to submitter or curator
* The `User` for the contributor is being created as long as it does not exist in redmine.
* A comment to the issue will be created for each message
* The user to which the message is dedicated to will be set as *Assignee* and the **Unread flag** is set to `true`
* Once the user has read the comment **Unread flag** is set to `false`.
* The status of the issue is synchronized with the `Registration.status`
* Submitter and Contributor will become watchers of the issue so that both can receive email notifications when a new message is posted.
Redmine has a REST api for basic CRUD operations (https://www.redmine.org/projects/redmine/wiki/Rest_api).
* Authentication can be done using an API-key passed in as a "X-Redmine-API-Key" HTTP header (added in Redmine 1.1.0)
* The API key is provided per user and can be retrieved from the "My account" page: `./my/account`
* All operations can be done by an admin user on behalf of an ordinary user by using the HTTP header (X-Redmine-Switch-User: jsmith). This only works when using the API with an administrator account!
For our purpose the Issue and User services are relevant:
* https://www.redmine.org/projects/redmine/wiki/Rest_Issues
* https://www.redmine.org/projects/redmine/wiki/Rest_Users