Package snowballr
Message
AuthenticationStatusResponse
Message
GetAvailableFetcherOptionsRequest
Message
Project.Information.DecisionStatistics
Message
Project.Information.DecisionStatistics.Get
Message
Project.Information.DecisionStatistics.Statistic
Message
Project.Information.Get
Message
Project.InviteCandidatesRequest
Message
RequestPasswordResetRequest
Message
ReviewDecisionMatrix.Pattern
Services
service SnowballR main.proto
The set of API calls the SnowballR web application uses to communicate with the backend. SnowballR is a tool aiming to assist in scientific research by organizing and managing structured literature reviews. The application is split into a web frontend and a backend on a central server keeping track of all data. This service represents all available interactions between this frontend and backend.
The padlock icon in the top right of a service method description indicates
whether a call requires the user to be authenticated. This will
happen automatically using a http-only cookie set by the server during
registration or login. If failing to do so, an UNAUTHENTICATED
error will
be returned.
Furthermore, the server may respond at any time with the UNAVAILABLE
error
code if it is unable to process a request.
Every error should come with a meaningful description, detailing the nature of the occurred error.
Every enum contains a _UNSPECIFIED
variant indicating its absence.
If any other variant is present, the field is considered to be specified.
The word guaranteed may only convey meaning in the context of this
contract. Due to the nature of the underlying network communication, a result
may never be really guaranteed and proper error handling is advised. In the
following, guaranteed shall denote a situation in which the client shall
be able to safely make assumptions about a successfully received message.
architecture-beta group frontend(internet)[Frontend] service browser(internet)[Browser] in frontend group backend(server)[Backend] service server(server)[SnowballR Server] in backend service db(database)[Database] in backend group external(internet)[External Resources] service fetcher1(internet)[External Paper Database 1] in external service fetcher2(internet)[External Paper Database 2] in external junction j1 in external junction j2 in external browser:R --> L:server server:B --> T:db server:R -- L:j1 j1:R -- L:j2 j1:B --> T:fetcher1 j2:B --> T:fetcher2
The SnowballR application is split into a frontend and a backend. The frontend is a web page that runs in the browser of a client. The backend runs on a server and contains most if not all logic. It accesses a database to persist data and makes requests to external resources like paper databases.
erDiagram direction LR Project 0+ -- 0+ User : "member of" Project 1 -- 1 ProjectSettings : has Project 1 -- 0+ ProjectPaper : contains Project 1 -- 0+ Criterion : contains ProjectSettings 0+ -- 1+ Fetcher : "fetches from" ProjectPaper 1 -- 0+ Review : has ProjectPaper 1 -- 1 Paper : "refers to" Review 0+ -- 1 User : by Review 0+ -- 0+ Criterion : "ticks off" User 1 -- 1 UserSettings : has User 0+ -- 0+ Paper : "reading-list"
This figure shows the relationships between entities/concepts of the SnowballR application. It is not the actual database schema SnowballR's backend is using and solely assists with understanding the broader picture.
Disclaimer:
Access control for these calls is not fully worked out yet. Due to this, the required role for any call may change at any time.
Query all available origins from which a paper may be sourced by the backend. Each source is identified by a unique string and is later used to specify which APIs shall be used by a project to collect papers. The list is guaranteed to be non-empty, but may change at any time.
Errors
No additional errors may occur.
Query all available options for the specified fetcher. The names and default values of the available options are returned as a string map. Each option name can only appear once. Note that there may be no available options.
Errors
Error Code | Description |
---|---|
NOT_FOUND |
The provided fetcher is unknown. |
Create an account. The provided email must not be already registered and every field must not be blank. If successful, login tokens are provided which are automatically used by following calls.
The password string is required to
- be at least eight characters long,
- contain at least two lower-case letters,
- contain at least two upper-case letters,
- contain at least two digits,
- and contain at least two special characters.
Errors
Error Code | Description |
---|---|
ALREADY_EXISTS |
The provided email is already registered. |
INVALID_ARGUMENT |
At least one input did not meet the requirements. The email needs to be a valid email, the password needs to meet the previously stated criteria and the first and last name must not be blank. |
If the email and password exactly match a user in the server's database, a new set of login tokens is provided to authenticate as that user. Old access and refresh tokens shall remain valid. These credentials are handled automatically and do not need further attention.
Errors
Error Code | Description |
---|---|
UNAUTHENTICATED |
The user does not exist or the password is incorrect. |
INVALID_ARGUMENT |
The email is not an actual email or no password is provided. |
Revoke access through the currently used set of access and refresh token. Other token pairs may not be affected.
Errors
No additional errors may occur.
Acquire the client's authentication status. The result is guaranteed to be specified.
Errors
No additional errors may occur.
Upon presentation of a valid refresh token, a new set of login tokens authenticating the owner of the token is issued. The new pair is guaranteed to contain valid credentials. The refresh token may change too. These credentials are handled automatically and do not need further attention.
Use this call if the access token is expired.
This call does not require the user to be authenticated using an access
token. Instead, the validity of the accompanying refresh token — which is
also set by Register
and Login
— is confirmed.
Errors
Error Code | Description |
---|---|
UNAUTHENTICATED |
The refresh token is invalid. |
If the provided email address is registered as an active user, a challenge/token is emailed to that address. That token must be sent alongside a new password (see ResetPassword) in order to update a lost or forgotten password.
Errors
Error Code | Description |
---|---|
INVALID_ARGUMENT |
The email is not valid. This does not occur if a valid email is not yet registered. |
After requesting a password reset email using RequestPasswordReset, this call may be used to actually set the new password. To verify the ownership of the account, the token sent via email must also be provided and valid. The new password must follow the same rules as during registration.
Errors
Error Code | Description |
---|---|
INVALID_ARGUMENT |
Either the provided token is invalid or the new password does not meet the rules specified in Register . |
FAILED_PRECONDITION |
The account trying to be reset is not in a state in which the password can be changed. |
DEADLINE_EXCEEDED |
The provided token is expired. |
Use the old password in order to set a new password. The new password must follow the same rules as during registration. This serves no recovery purpose and is for user convenience only.
Errors
Error Code | Description |
---|---|
INVALID_ARGUMENT |
The provided old password is not correct or the new password does not meet the rules specified in Register . |
UNAUTHENTICATED |
The user is not signed in. |
Get all registered users.
Errors
Error Code | Description |
---|---|
PERMISSION_DENIED |
The user is not an admin. |
UNAUTHENTICATED |
The user is not signed in. |
Get the currently authenticated user by looking up the provided access token. If properly authenticated, it is guaranteed to return a valid user.
Errors
Error Code | Description |
---|---|
UNAUTHENTICATED |
The user is not signed in. |
Get a user by its id.
Errors
Error Code | Description |
---|---|
UNAUTHENTICATED |
The user is not signed in. |
NOT_FOUND |
No user with the provided id was found. |
Get the user with the specified email address.
Errors
Error Code | Description |
---|---|
UNAUTHENTICATED |
The user is not signed in. |
NOT_FOUND |
No user with the provided email was found. |
INVALID_ARGUMENT |
The email was invalid. |
Update all in the field-mask specified attributes of the user with the
provided id except for status
. The role
may be updated by a server
admin using this call. The updated user is returned and guaranteed to
be specified.
Errors
Error Code | Description |
---|---|
UNAUTHENTICATED |
The user is not signed in. |
NOT_FOUND |
No user with the provided id was found. |
INVALID_ARGUMENT |
The first name, last name, role or email was invalid. |
PERMISSION_DENIED |
The user is not allowed to modify the user with the specified id. |
ALREADY_EXISTS |
The updated email is already registered. |
Prevent the user with the provided id from logging in. It is not fully deleted from the database though, but not considered an active user anymore.
Errors
Error Code | Description |
---|---|
UNAUTHENTICATED |
The user is not signed in. |
NOT_FOUND |
No user with the provided id was found. |
PERMISSION_DENIED |
The user is not allowed to delete the user with the specified id. |
FAILED_PRECONDITION |
The user to be deleted is an admin. |
Allow a previously soft-deleted user to login again. The calling user is required to be admin.
Errors
Error Code | Description |
---|---|
UNAUTHENTICATED |
The user is not signed in. |
NOT_FOUND |
No user with the provided id was found. |
PERMISSION_DENIED |
The user is not allowed to restore the user with the specified id. |
Get the user-specific settings for the calling user. It is guaranteed that the result is specified.
Errors
Error Code | Description |
---|---|
UNAUTHENTICATED |
The user is not signed in. |
Update all in the field-mask specified attributes of the calling user's user settings. The updated user settings are returned and guaranteed to be specified.
Errors
Error Code | Description |
---|---|
UNAUTHENTICATED |
The user is not signed in. |
INVALID_ARGUMENT |
The updated settings are invalid. |
Get all project papers the requesting user is able to review. It is not given that the returned papers belong to the same project. The returned paper list may be empty if no papers can be reviewed.
Errors
Error Code | Description |
---|---|
UNAUTHENTICATED |
The user is not signed in. |
Get all project papers from a specific project identified by the id, the requesting user is able to review. The returned paper list may be empty if no papers can be reviewed.
Errors
Error Code | Description |
---|---|
UNAUTHENTICATED |
The user is not signed in. |
NOT_FOUND |
No project with the provided id was found. |
PERMISSION_DENIED |
The user is not a member of the specified project or is not allowed to review. |
Get the project paper with the succeeding local id of the project paper identified by the provided global id. It is guaranteed that the returned paper is in the same project as the provided one.
Errors
Error Code | Description |
---|---|
UNAUTHENTICATED |
The user is not signed in. |
NOT_FOUND |
No paper with the provided id was found. |
FAILED_PRECONDITION |
There was no next paper. |
PERMISSION_DENIED |
The user is not a member of the specified project. |
Get the next project paper the calling user is able to review. Papers with lower local ids are preferred. It is guaranteed that the returned paper is in the same project as the one provided.
Errors
Error Code | Description |
---|---|
UNAUTHENTICATED |
The user is not signed in. |
NOT_FOUND |
No paper with the provided id was found. |
FAILED_PRECONDITION |
There was no next paper available to review. |
PERMISSION_DENIED |
The user is not a member of the specified project or is not allowed to review. |
Get the project paper with the preceding local id of the project paper identified by the provided global id. It is guaranteed that the returned paper is in the same project as the provided one.
Errors
Error Code | Description |
---|---|
UNAUTHENTICATED |
The user is not signed in. |
NOT_FOUND |
No paper with the provided id was found. |
FAILED_PRECONDITION |
There was no previous paper. |
PERMISSION_DENIED |
The user is not a member of the specified project. |
Get the list of papers on the reading list of the calling user.
Errors
Error Code | Description |
---|---|
UNAUTHENTICATED |
The user is not signed in. |
Return whether the paper with the provided id is on the calling user's reading list.
Errors
Error Code | Description |
---|---|
UNAUTHENTICATED |
The user is not signed in. |
NOT_FOUND |
The specified paper does not exist. |
Add the paper with the provided id to the calling user's reading list. If the paper is already on the user's reading list, nothing will be changed and no error will be returned.
Errors
Error Code | Description |
---|---|
UNAUTHENTICATED |
The user is not signed in. |
NOT_FOUND |
No paper with the provided id was found. |
Remove the paper with the provided id from the calling user's reading list.
Errors
Error Code | Description |
---|---|
UNAUTHENTICATED |
The user is not signed in. |
NOT_FOUND |
The specified paper does not exist. |
Get a list of all projects to which the user with the provided id is invited.
Errors
Error Code | Description |
---|---|
UNAUTHENTICATED |
The user is not signed in. |
NOT_FOUND |
No user with the provided id was found. |
PERMISSION_DENIED |
The user is not allowed to view the invitations of the specified user. |
Get a list of users that match the search query and can be invited. If the query is too short or no users match, an empty list is returned. If a project is specified, i.e., a project id is given, all current members of that project are excluded from the candidate list. In case no project with the given id exists, then no project members are filtered out from the candidate list. The calling user is always excluded from the candidate list.
Errors
Error Code | Description |
---|---|
UNAUTHENTICATED |
The user is not signed in. |
Invite a user to a project. The provided project has to be active, meaning it is neither deleted nor archived. If a user with the provided email already exists, an invitation is sent. The user is not instantly added to the project. The user may then join the project using the invitation displayed in the frontend. If, however, no user with the provided email exists, an invitation email is sent out. The recipient may register and then accept the invitation. The calling user is required to be a project admin.
Errors
Error Code | Description |
---|---|
UNAUTHENTICATED |
The user is not signed in. |
NOT_FOUND |
No project with the provided id was found. |
FAILED_PRECONDITION |
The project is not active, meaning it is either archived or deleted. |
PERMISSION_DENIED |
The user is not allowed to invite users to the specified project. |
INVALID_ARGUMENT |
The provided email is not a valid email address. |
Get a list of all users with a pending invitation to the provided project.
If the id
field is specified, it is guaranteed that the user exists.
If, however, the id
is blank, the user was invited by email and has not
yet registered.
Errors
Error Code | Description |
---|---|
UNAUTHENTICATED |
The user is not signed in. |
NOT_FOUND |
No project with the provided id was found. |
PERMISSION_DENIED |
The user is not allowed to view the pending invitations of the specified project. |
Get a list of all members of the specified project. The calling user is included. Pending invitations are not included.
Errors
Error Code | Description |
---|---|
UNAUTHENTICATED |
The user is not signed in. |
NOT_FOUND |
No project with the provided id was found. |
PERMISSION_DENIED |
The user is not allowed to view the members of the specified project. |
Remove the specified user from the given project. If the user is not part of the project, nothing happens. The calling user is required to be a project admin. A project admin cannot be removed from the project.
Errors
Error Code | Description |
---|---|
UNAUTHENTICATED |
The user is not signed in. |
NOT_FOUND |
No project with the provided project id or user with the provided user id was found. |
PERMISSION_DENIED |
The user is not allowed to remove the specified user from the project. |
FAILED_PRECONDITION |
The user to be removed is the last project admin. |
Change the role of the user with the provided id within the given project. The new role must not be unspecified. The calling user is required to be a project admin.
Errors
Error Code | Description |
---|---|
UNAUTHENTICATED |
The user is not signed in. |
INVALID_ARGUMENT |
The provided role is unspecified. |
PERMISSION_DENIED |
The user is not allowed to change the role of the specified user in the project. This could for example be the case if trying to demote a project admin. |
NOT_FOUND |
No project with the provided id or user with the provided id was found. |
FAILED_PRECONDITION |
The user to be updated is not a member of the specified project. |
Get a list of all active projects.
Errors
Error Code | Description |
---|---|
UNAUTHENTICATED |
The user is not signed in. |
PERMISSION_DENIED |
The user is not allowed to view all global projects. |
Get a list of all projects that are marked as deleted.
Errors
Error Code | Description |
---|---|
UNAUTHENTICATED |
The user is not signed in. |
PERMISSION_DENIED |
The user is not allowed to view all global deleted projects. |
Get a list of all projects the provided user is a member of and that are marked as deleted.
Errors
Error Code | Description |
---|---|
UNAUTHENTICATED |
The user is not signed in. |
NOT_FOUND |
No user with the provided id was found. |
PERMISSION_DENIED |
The user is not allowed to view the deleted projects of the specified user. |
Get a list of all projects that are marked as archived.
Errors
Error Code | Description |
---|---|
UNAUTHENTICATED |
The user is not signed in. |
PERMISSION_DENIED |
The user is not allowed to view all global archived projects. |
Get a list of all active projects the provided user is a member of. Pending invitations are not included.
Errors
Error Code | Description |
---|---|
UNAUTHENTICATED |
The user is not signed in. |
NOT_FOUND |
No user with the provided id was found. |
PERMISSION_DENIED |
The user is not allowed to view the projects of the specified user. |
Get a list of all projects the provided user is a member of and that are marked as archived.
Errors
Error Code | Description |
---|---|
UNAUTHENTICATED |
The user is not signed in. |
NOT_FOUND |
No user with the provided id was found. |
PERMISSION_DENIED |
The user is not allowed to view the archived projects of the specified user. |
Create a new project. Every field must be specified and non-blank.
The calling user is automatically a member of that project with the
"project admin" role (MEMBER_ROLE_ADMIN
). If the project was successfully
created, it is returned and guaranteed to be specified.
Errors
Error Code | Description |
---|---|
UNAUTHENTICATED |
The user is not signed in. |
INVALID_ARGUMENT |
The provided project name was blank. |
Get a project by its id.
Errors
Error Code | Description |
---|---|
UNAUTHENTICATED |
The user is not signed in. |
NOT_FOUND |
No project with the provided id was found. |
PERMISSION_DENIED |
The user is not a member of the specified project. |
Update the project with the given id using the provided data. Only
fields specified in the field-mask will be updated. The following fields
cannot be modified: current_stage
, max_stage
. The updated project
is returned and guaranteed to be specified. The calling user is
required to be a project admin.
Errors
Error Code | Description |
---|---|
UNAUTHENTICATED |
The user is not signed in. |
NOT_FOUND |
No project with the provided id was found. |
INVALID_ARGUMENT |
Invalid name, status or project settings specified. |
PERMISSION_DENIED |
The user is not allowed to update the project. |
FAILED_PRECONDITION |
The project is not active. |
Export the provided project in the given format. A blob is returned. The export includes everything for it to be reimported and be indistinguishable from the original project.
Errors
Error Code | Description |
---|---|
UNAUTHENTICATED |
The user is not signed in. |
INVALID_ARGUMENT |
The specified format is invalid. |
NOT_FOUND |
No project with the provided id was found. |
PERMISSION_DENIED |
The user is not a member of the specified project. |
Mark a project as deleted. It is not fully deleted from the database and may later be restored. The calling user is required to be a project admin.
Errors
Error Code | Description |
---|---|
UNAUTHENTICATED |
The user is not signed in. |
NOT_FOUND |
No project with the provided id was found. |
PERMISSION_DENIED |
The user is not an admin of the specified project. |
Restore a previously deleted project to the active state. The calling user is required to be a project admin.
Errors
Error Code | Description |
---|---|
UNAUTHENTICATED |
The user is not signed in. |
NOT_FOUND |
No project with the provided id was found. |
PERMISSION_DENIED |
The user is not an admin of the specified project. |
Retrieve information about the specified project. Only attributes specified in the field-mask are included in the response.
Errors
Error Code | Description |
---|---|
UNAUTHENTICATED |
The user is not signed in. |
NOT_FOUND |
No project with the provided id was found. |
PERMISSION_DENIED |
The user is not a member of the specified project. |
rpc GetDecisionStatisticsForStage
Request: Project.Information.DecisionStatistics.Get
Response:
Project.Information.DecisionStatistics
Get the distribution of paper decisions within a project's stage, meaning
it returns the number of papers for each possible PaperDecision
in the
specified stage.
Errors
Error Code | Description |
---|---|
UNAUTHENTICATED |
The user is not signed in. |
NOT_FOUND |
No project with the provided id was found or the specified stage does not exist. |
PERMISSION_DENIED |
The user is not a member of the specified project. |
Get a criterion by its id.
Errors
Error Code | Description |
---|---|
UNAUTHENTICATED |
The user is not signed in. |
NOT_FOUND |
No criterion with the provided id was found. |
PERMISSION_DENIED |
If the criterion is a user-criterion, then the calling user is not the original creator of the criterion. If the criterion is a project-criterion, then the user is not a member of the project the criterion belongs to. |
Get all criteria associated with a given project.
Errors
Error Code | Description |
---|---|
UNAUTHENTICATED |
The user is not signed in. |
NOT_FOUND |
No project with the provided id was found. |
PERMISSION_DENIED |
The user is not a member of the specified project. |
Create a new criterion. Every field must be specified and non-blank. If successful, the newly created criterion is returned.
There are two types of criterion that must be differentiated: user- and project-criterion. A user-criterion has a user but no project attached and can be used for the creation of default criteria for a project. Project-criteria on the other hand are associated with a project and provide the basis for justifying reviews.
A user-criterion is created by leaving the project_id
empty. For project-
criterion creation this field has to be set and refer to a valid project in
the ACTIVE
state. Creating project-criteria requires the calling user to
be a project admin.
Errors
Error Code | Description |
---|---|
UNAUTHENTICATED |
The user is not signed in. |
INVALID_ARGUMENT |
At least one field in the provided criterion other than project_id was blank. |
NOT_FOUND |
The project_id was not blank but does not refer to a valid project. |
PERMISSION_DENIED |
A project-criterion is created and the user is not an admin of the specified project. |
FAILED_PRECONDITION |
A project-criterion is created and the specified project is not in the ACTIVE state. |
Update the criterion with the given id using the provided data. Only fields specified in the field-mask will be updated. The updated criterion is returned and guaranteed to be specified. If the updated criterion is a user-criterion, the calling user is required to be the creator of the criterion. If it is a project-criterion, then then the calling user is required to be a project admin .
Errors
Error Code | Description |
---|---|
UNAUTHENTICATED |
The user is not signed in. |
NOT_FOUND |
No criterion with the provided id was found. |
INVALID_ARGUMENT |
At least one field in the provided update other than project_id was blank. |
PERMISSION_DENIED |
If the criterion is a user-criterion, then the calling user is not the original creator of the criterion. If the criterion is a project-criterion, then the user is not an admin of the project the criterion belongs to. |
FAILED_PRECONDITION |
If the criterion is a project-criterion, then the project this criterion belongs to is not in the ACTIVE state. |
Permanently delete the specified criterion. All references to it will also be removed. This cannot be undone. If the updated criterion is a user-criterion, the calling user is required to be the creator of the criterion. If it is a project-criterion, then then the calling user is required to be a project admin
Errors
Error Code | Description |
---|---|
UNAUTHENTICATED |
The user is not signed in. |
NOT_FOUND |
No criterion with the provided id was found. |
PERMISSION_DENIED |
If the criterion is a user-criterion, then the calling user is not the original creator of the criterion. If the criterion is a project-criterion, then the user is not an admin of the project the criterion belongs to. |
FAILED_PRECONDITION |
If the criterion is a project-criterion, then the project this criterion belongs to is not in the ACTIVE state. |
Get a project paper by its id.
Errors
Error Code | Description |
---|---|
UNAUTHENTICATED |
The user is not signed in. |
NOT_FOUND |
No project paper with the provided id was found. |
PERMISSION_DENIED |
The user is not a member of the project the paper belongs to. |
Get a project paper using the project id and the local id within that
project. The local id is only unique within its project, not,
however, globally. Prefer GetProjectPaperById
wherever possible.
Errors
Error Code | Description |
---|---|
UNAUTHENTICATED |
The user is not signed in. |
NOT_FOUND |
No project paper with the provided relative id was found. Either the project does not exist or the relative id was not found within the project. |
PERMISSION_DENIED |
The user is not a member of the project the paper belongs to. |
Retrieve all project papers associated with the given project.
Errors
Error Code | Description |
---|---|
UNAUTHENTICATED |
The user is not signed in. |
NOT_FOUND |
No project with the provided id was found. |
PERMISSION_DENIED |
The user is not a member of the specified project. |
Add the provided paper to the given project within the specified stage.
The stage must be lesser or equal to the projects max_stage
.
The calling user is required to be a project admin.
Errors
Error Code | Description |
---|---|
UNAUTHENTICATED |
The user is not signed in. |
NOT_FOUND |
Either the project or the paper with the provided ids were not found. |
INVALID_ARGUMENT |
The provided stage does not exist in the project. This could mean that stage was less than zero or greater than max_stage . |
ALREADY_EXISTS |
The specified paper already exists within the provided project. |
PERMISSION_DENIED |
The user is not part of the specified project or is not a project admin. |
Update the project paper with the specified id using the provided data.
Only fields specified in the field-mask will be updated, excluding
local_id
, decision
, stage
and reviews
. Furthermore, the composited paper
cannot be modified, resort to the UpdatePaper
call for this. The updated
project will be returned and guaranteed to be specified.
The calling user is required to be a project admin.
Errors
Error Code | Description |
---|---|
UNAUTHENTICATED |
The user is not signed in. |
NOT_FOUND |
No project paper with the provided id was found. |
PERMISSION_DENIED |
The user is not admin of the project the project paper belongs to. |
Permanently remove the specified project paper from the project. All references to this project paper will also be deleted. This cannot be undone. The calling user is required to be a project admin.
Errors
Error Code | Description |
---|---|
UNAUTHENTICATED |
The user is not signed in. |
PERMISSION_DENIED |
The user is not an admin of the project the project paper belongs to. |
Get a review by its id.
Errors
Error Code | Description |
---|---|
UNAUTHENTICATED |
The user is not signed in. |
NOT_FOUND |
No review with the provided id was found. |
PERMISSION_DENIED |
The user is not a member of the project the review belongs to. |
Retrieve all reviews for a specific project paper.
Errors
Error Code | Description |
---|---|
UNAUTHENTICATED |
The user is not signed in. |
NOT_FOUND |
No project paper with the provided id was found. |
PERMISSION_DENIED |
The user is not a member of the project the project paper belongs to. |
Create a new review for a specific project paper. Every field must be
specified and non-blank. selected_criteria_ids
may be empty. The
calling user must not currently have another review for this project paper.
The paper must also be currently UNREVIEWED
or IN_REVIEW
. The user also
has to be a member of the same project the project paper belongs to. If
successful, the created review is returned.
Errors
Error Code | Description |
---|---|
UNAUTHENTICATED |
The user is not signed in. |
NOT_FOUND |
No project paper with the provided id was found. |
ALREADY_EXISTS |
The user already has a review for the specified project paper. |
FAILED_PRECONDITION |
The project paper is not in the UNREVIEWED or IN_REVIEW state. |
PERMISSION_DENIED |
The user is not a member of the project the project paper belongs to. |
INVALID_ARGUMENT |
At least one field in the provided review (except for selected_criteria_ids ) was blank. This could be an invalid decision or selected_criteria_ids . |
Update the review with the given id using the provided data. Only fields
specified in the field-mask will be updated, excluding user_id
. The
updated review is returned and guaranteed to be specified. Only the
owner of a review is allowed to update a review. The owner of the review
has to be a member of the project the review is in, in order to update
it. A user is the owner of a review if the review's user_id
matches the
user's id
.
Errors
Error Code | Description |
---|---|
UNAUTHENTICATED |
The user is not signed in. |
NOT_FOUND |
No review with the provided id was found. |
INVALID_ARGUMENT |
At least one field in the provided update was blank. This could be an invalid decision or an empty or invalid selected_criteria_ids . |
PERMISSION_DENIED |
The user is either not the owner of the review or not a member of the project the review belongs to. |
FAILED_PRECONDITION |
The project paper is in a state where no further review modifications are allowed. |
Permanently remove the specified review from the project paper. This
cannot be undone. Only the owner of a review is allowed to delete a
review. The owner of the review has to be a member of the project the
review is in, in order to remove it. A user is the owner of a review if the
review's user_id
matches the user's id
.
Errors
Error Code | Description |
---|---|
UNAUTHENTICATED |
The user is not signed in. |
NOT_FOUND |
No review with the provided id was found. |
PERMISSION_DENIED |
The user is either not the owner of the review or not a member of the project the review belongs to. |
FAILED_PRECONDITION |
The project paper is in a state where reviews are not allowed to be deleted. |
Get a paper by its id.
Errors
Error Code | Description |
---|---|
UNAUTHENTICATED |
The user is not signed in. |
NOT_FOUND |
No paper with the provided id was found. |
Create a paper using the given data. The id
will be ignored and set by
the server. All fields may be blank. The created paper will be returned.
Errors
Error Code | Description |
---|---|
UNAUTHENTICATED |
The user is not signed in. |
INVALID_ARGUMENT |
At least one field in the provided paper was invalid. |
Update the paper with the given id using the provided data. Only
fields specified in the field-mask will be updated, excluding has_pdf
.
The updated paper is returned and guaranteed to be specified.
Errors
Error Code | Description |
---|---|
UNAUTHENTICATED |
The user is not signed in. |
NOT_FOUND |
No paper with the provided id was found. |
INVALID_ARGUMENT |
At least one field in the provided paper was invalid. |
PERMISSION_DENIED |
The user is not allowed to update the specified paper. |
Get a list of papers that are referred to by the provided paper.
Errors
Error Code | Description |
---|---|
UNAUTHENTICATED |
The user is not signed in. |
NOT_FOUND |
No paper with the provided id was found. |
Get a list of papers that are referring to the provided paper.
Errors
Error Code | Description |
---|---|
UNAUTHENTICATED |
The user is not signed in. |
NOT_FOUND |
No paper with the provided id was found. |
Get a paper's PDF as a blob.
Errors
Error Code | Description |
---|---|
UNAUTHENTICATED |
The user is not signed in. |
NOT_FOUND |
No paper with the provided id was found. |
FAILED_PRECONDITION |
The paper has no PDF attached to it. See paper.has_pdf . |
Set or overwrite the PDF of the specified paper. This call may also be
used to remove the PDF of a paper by not specifying the pdf
field.
The paper's has_pdf
field is automatically updated by the server.
Errors
Error Code | Description |
---|---|
UNAUTHENTICATED |
The user is not signed in. |
NOT_FOUND |
No paper with the provided id was found. |
RESOURCE_EXHAUSTED |
The provided PDF was declined by the server. A possible reason could be, that it was too large. |
INVALID_ARGUMENT |
The provided PDF does not seem to be in the correct format. |
Messages
message AuthenticationStatusResponse authentication.proto
Field | Type | Description | |
---|---|---|---|
1 | authentication_status |
AuthenticationStatus
|
message Author paper.proto
Field | Type | Description | |
---|---|---|---|
1 | first_name |
string
|
|
2 | last_name |
string
|
|
3 | orcid |
string
|
message Criterion criterion.proto
Field | Type | Description | |
---|---|---|---|
1 | id |
string
|
|
2 | tag |
string
|
|
3 | name |
string
|
|
4 | description |
string
|
|
5 | category |
CriterionCategory
|
message Criterion.Create criterion.proto
Field | Type | Description | |
---|---|---|---|
1 | project_id |
string
|
|
2 | tag |
string
|
|
3 | name |
string
|
|
4 | description |
string
|
|
5 | category |
CriterionCategory
|
message Criterion.Update criterion.proto
Field | Type | Description | |
---|---|---|---|
1 | criterion |
Criterion
|
|
2 | mask |
google.protobuf.FieldMask
|
message FetcherOptions fetcher.proto
Field | Type | Description | |
---|---|---|---|
1 | options |
map<string, string>
|
Map the option name to a (default) value |
message GetAvailableFetcherOptionsRequest fetcher.proto
Field | Type | Description | |
---|---|---|---|
1 | fetcher_name |
string
|
message Paper paper.proto
Field | Type | Description | |
---|---|---|---|
1 | id |
string
|
|
2 | external_id |
string
|
|
3 | title |
string
|
|
4 | abstrakt |
string
|
|
5 | year |
int32
|
|
6 | publisher |
string
|
|
7 | publication_name |
string
|
|
8 | publication_type |
string
|
|
9 | has_pdf |
bool
|
|
10 | authors |
repeated
Author
|
|
11 | backward_referenced_ids |
repeated
string
|
message Paper.Update paper.proto
Field | Type | Description | |
---|---|---|---|
1 | paper |
Paper
|
|
2 | mask |
google.protobuf.FieldMask
|
message PasswordChangeRequest authentication.proto
Field | Type | Description | |
---|---|---|---|
1 | old_password |
string
|
|
2 | new_password |
string
|
message PasswordResetRequest authentication.proto
Field | Type | Description | |
---|---|---|---|
1 | token |
string
|
|
2 | new_password |
string
|
message Project project.proto
Field | Type | Description | |
---|---|---|---|
1 | id |
string
|
|
2 | name |
string
|
|
3 | status |
ProjectStatus
|
|
4 | current_stage |
uint64
|
|
5 | max_stage |
uint64
|
|
6 | settings |
Project.Settings
|
message Project.Information project.proto
Field | Type | Description | |
---|---|---|---|
1 | project_progress |
float
|
In a range from 0.0 to 1.0 |
2 | creation_date |
google.protobuf.Timestamp
|
|
3 | last_stage_started |
google.protobuf.Timestamp
|
The start time of the last (not necessarily completed) stage |
message Project.Information.DecisionStatistics project.proto
Field | Type | Description | |
---|---|---|---|
1 | statistics |
repeated
Project.Information.DecisionStatistics.Statistic
|
message Project.Information.DecisionStatistics.Get project.proto
Field | Type | Description | |
---|---|---|---|
1 | project_id |
string
|
|
2 | stage |
uint64
|
message Project.Information.DecisionStatistics.Statistic project.proto
Field | Type | Description | |
---|---|---|---|
1 | decision |
PaperDecision
|
|
2 | count |
uint64
|
message Project.Information.Get project.proto
Field | Type | Description | |
---|---|---|---|
1 | project_id |
string
|
|
2 | mask |
google.protobuf.FieldMask
|
message Project.InviteCandidatesRequest project.proto
Field | Type | Description | |
---|---|---|---|
1 | query |
string
|
The search query to match users by name or email. The query must be at least 3 characters long. |
2 | project_id |
string
|
The id of the project to which potential candidates should be invited. This field is optional and should be left unspecified if candidates are requested for a project that has not yet been created. |
message Project.Member.Invite project.proto
Field | Type | Description | |
---|---|---|---|
1 | project_id |
string
|
|
2 | user_email |
string
|
message Project.Member.Remove project.proto
Field | Type | Description | |
---|---|---|---|
1 | project_id |
string
|
|
2 | user_id |
string
|
message Project.Member.Update project.proto
Field | Type | Description | |
---|---|---|---|
1 | project_id |
string
|
|
2 | user_id |
string
|
|
3 | new_role |
MemberRole
|
message Project.Paper project.proto
Field | Type | Description | |
---|---|---|---|
1 | id |
string
|
|
2 | paper |
Paper
|
|
3 | stage |
uint64
|
|
4 | decision |
PaperDecision
|
|
5 | reviews |
repeated
Review
|
|
6 | local_id |
string
|
message Project.Paper.Add project.proto
Field | Type | Description | |
---|---|---|---|
1 | project_id |
string
|
|
2 | stage |
uint64
|
|
3 | paper_id |
string
|
message Project.Paper.Get project.proto
Field | Type | Description | |
---|---|---|---|
1 | project_id |
string
|
|
2 | relative_project_paper_id |
string
|
message Project.Paper.List project.proto
Field | Type | Description | |
---|---|---|---|
1 | project_papers |
repeated
Project.Paper
|
message Project.Paper.Update project.proto
Field | Type | Description | |
---|---|---|---|
1 | project_paper |
Project.Paper
|
|
2 | mask |
google.protobuf.FieldMask
|
message Project.Settings project.proto
Field | Type | Description | |
---|---|---|---|
5 | similarity_threshold |
float
|
|
6 | decision_matrix |
ReviewDecisionMatrix
|
|
7 | fetchers |
map<string, FetcherOptions>
|
Map fetcher name to its fetcher options, i.e. the map of option names to saved option values |
8 | snowballing_type |
SnowballingType
|
|
9 | review_maybe_allowed |
bool
|
message Project.Update project.proto
Field | Type | Description | |
---|---|---|---|
1 | project |
Project
|
|
2 | mask |
google.protobuf.FieldMask
|
message RegisterRequest authentication.proto
Field | Type | Description | |
---|---|---|---|
1 | first_name |
string
|
|
2 | last_name |
string
|
|
3 |
string
|
||
4 | password |
string
|
message Review review.proto
Field | Type | Description | |
---|---|---|---|
1 | id |
string
|
|
2 | user_id |
string
|
|
3 | decision |
ReviewDecision
|
|
4 | selected_criteria_ids |
repeated
string
|
message Review.Create review.proto
Field | Type | Description | |
---|---|---|---|
1 | project_paper_id |
string
|
|
2 | decision |
ReviewDecision
|
|
3 | selected_criteria_ids |
repeated
string
|
message Review.Update review.proto
Field | Type | Description | |
---|---|---|---|
1 | review |
Review
|
|
2 | mask |
google.protobuf.FieldMask
|
message ReviewDecisionMatrix project.proto
Field | Type | Description | |
---|---|---|---|
1 | number_of_reviewers |
uint32
|
|
2 | patterns |
repeated
ReviewDecisionMatrix.Pattern
|
message ReviewDecisionMatrix.Pattern project.proto
Field | Type | Description | |
---|---|---|---|
1 | entries |
repeated
ReviewDecisionMatrix.Pattern.Entry
|
|
2 | decision |
PaperDecision
|
message ReviewDecisionMatrix.Pattern.Entry project.proto
Field | Type | Description | |
---|---|---|---|
1 | review_decision |
ReviewDecision
|
|
2 | count |
uint64
|
message User user.proto
Field | Type | Description | |
---|---|---|---|
1 | id |
string
|
|
2 |
string
|
||
3 | first_name |
string
|
|
4 | last_name |
string
|
|
5 | role |
UserRole
|
|
6 | status |
UserStatus
|
message UserSettings user_settings.proto
Field | Type | Description | |
---|---|---|---|
1 | show_hotkeys |
bool
|
|
2 | review_mode |
bool
|
|
3 | default_project_settings |
Project.Settings
|
|
4 | default_criteria |
Criterion.List
|
message UserSettings.Update user_settings.proto
Field | Type | Description | |
---|---|---|---|
1 | user_settings |
UserSettings
|
|
2 | mask |
google.protobuf.FieldMask
|
Enums
enum AuthenticationStatus authentication.proto
Name | Number | Description |
---|---|---|
AUTHENTICATION_STATUS_UNSPECIFIED |
0 | |
AUTHENTICATION_STATUS_UNAUTHENTICATED |
1 | |
AUTHENTICATION_STATUS_ACCESS_TOKEN_EXPIRED |
2 | |
AUTHENTICATION_STATUS_AUTHENTICATED |
3 |
enum CriterionCategory criterion.proto
Name | Number | Description |
---|---|---|
CRITERION_CATEGORY_UNSPECIFIED |
0 | |
CRITERION_CATEGORY_INCLUSION |
1 | |
CRITERION_CATEGORY_EXCLUSION |
2 | |
CRITERION_CATEGORY_HARD_EXCLUSION |
3 |
enum ExportFormat export.proto
Name | Number | Description |
---|---|---|
EXPORT_FORMAT_UNSPECIFIED |
0 | |
EXPORT_FORMAT_CSV |
1 | |
EXPORT_FORMAT_ZIP |
2 |
enum MemberRole project.proto
Name | Number | Description |
---|---|---|
MEMBER_ROLE_UNSPECIFIED |
0 | |
MEMBER_ROLE_DEFAULT |
1 | |
MEMBER_ROLE_ADMIN |
2 |
enum PaperDecision project.proto
Name | Number | Description |
---|---|---|
PAPER_DECISION_UNSPECIFIED |
0 | |
PAPER_DECISION_UNREVIEWED |
1 | |
PAPER_DECISION_IN_REVIEW |
2 | |
PAPER_DECISION_DECLINED |
3 | |
PAPER_DECISION_ACCEPTED |
4 |
enum ProjectStatus project.proto
Name | Number | Description |
---|---|---|
PROJECT_STATUS_UNSPECIFIED |
0 | |
PROJECT_STATUS_ACTIVE |
1 | Project is active and fully editable, including settings. |
PROJECT_STATUS_ACTIVE_LOCKED |
4 | Project is active, but slr settings can no longer be changed. This state is reached as soon as the first review is submitted. |
PROJECT_STATUS_ARCHIVED |
2 | Project is read-only and no longer actively used. This project is marked as archived. |
PROJECT_STATUS_DELETED |
3 | Project is marked for deletion and should not be shown to users. This project is marked as deleted. |
enum ReviewDecision review.proto
Name | Number | Description |
---|---|---|
REVIEW_DECISION_UNSPECIFIED |
0 | |
REVIEW_DECISION_DECLINED |
1 | |
REVIEW_DECISION_MAYBE |
2 | |
REVIEW_DECISION_ACCEPTED |
3 |
enum SnowballingType project.proto
Name | Number | Description |
---|---|---|
SNOWBALLING_TYPE_UNSPECIFIED |
0 | |
SNOWBALLING_TYPE_FORWARD |
1 | |
SNOWBALLING_TYPE_BACKWARD |
2 | |
SNOWBALLING_TYPE_BOTH |
3 |
enum UserRole user.proto
Name | Number | Description |
---|---|---|
USER_ROLE_UNSPECIFIED |
0 | |
USER_ROLE_DEFAULT |
1 | |
USER_ROLE_ADMIN |
2 |
enum UserStatus user.proto
Name | Number | Description |
---|---|---|
USER_STATUS_UNSPECIFIED |
0 | |
USER_STATUS_ACTIVE |
1 | User is registered and has confirmed their email address |
USER_STATUS_DELETED |
2 | User has requested the deletion of their account |
USER_STATUS_ACTIVE_UNCONFIRMED |
3 | User is registered, but has not yet confirmed their email address |