Package snowballr
Message
AuthenticationStatusResponse
Message
AvailableExportFormatsResponse
Message
GetAvailableFetcherOptionsRequest
Message
Project.Information.DecisionStatistics
Message
Project.Information.DecisionStatistics.Get
Message
Project.Information.DecisionStatistics.Statistic
Message
Project.Information.Get
Message
Project.InviteCandidatesRequest
Message
Project.Paper.SearchQuery
Message
RequestPasswordResetRequest
Message
ReviewDecisionMatrix.Pattern
Services
service SnowballR main.proto
This service contains the complete set of API calls that the SnowballR web application uses to communicate with the backend.
Overview
SnowballR is a tool designed to assist with scientific research by organizing and managing structured literature reviews (SLRs). The application is split into a web frontend and a backend on a central server. The frontend is a web application that runs in the user's browser. The backend runs on a server and contains most, if not all, of the application logic. It tracks all data by accessing a database and makes requests to external resources like paper databases.
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
Authentication
A 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 an HTTP-only cookie set by the server during
registration or login. If the authentication fails, an UNAUTHENTICATED error will
be returned in all cases.
Error Handling
Furthermore, the server may respond with the UNAVAILABLE error
code at any time if it is unable to process a request. It may also
respond with the INTERNAL error code if some unknown server-side errors occur.
If the field mask
is empty or contains an invalid format the server returns an INVALID_ARGUMENT error.
This includes cases where the mask specifies fields that are not defined in the target object type.
The error description provides additional details.
Each error should come with a meaningful description, detailing the nature of the error that occurred.
Update Semantics
Updates are applied atomically. If one part of an update request cannot
be fulfilled, the entire update fails and no changes are persisted.
If the field mask specifies a field that is not allowed to be updated, the update request is rejected.
In this case, the server responds with an INVALID_ARGUMENT error.
Enums and Guarantees
Each enum contains an _UNSPECIFIED variant to indicate that no meaningful value was set.
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, results can never really be guaranteed, so proper error handling is advised anyway. In the following context, guaranteed denotes a situation in which the client shall be able to safely make assumptions about a successfully received message.
Entities and Relationships
The following figure shows the relationships between the entities/concepts of the SnowballR application. It does not depict the actual database schema used by SnowballR's backend; rather, it provides a broader understanding.
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 : "on reading-list of"
Disclaimer:
Access control for these calls has not yet been fully worked out. Consequently, the required role for any call may change at any time.
Get all available fetchers 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 will be used by a project to collect papers. The list is guaranteed to be non-empty but may change at any time.
Errors
| Error Code | Description |
|---|---|
UNAUTHENTICATED |
The user is not signed in. |
Get 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 fetcher with the provided name was not found. |
UNAUTHENTICATED |
The user is not signed in. |
Create an account. The provided email address must not already be registered, and no field may be blank. If successful, login tokens are provided, which are used automatically for subsequent 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 |
|---|---|
INVALID_ARGUMENT |
At least one input did not meet the requirements: The email must be a valid email address, the password must meet the previously stated criteria, and the first_name and last_name must not be left blank. |
ALREADY_EXISTS |
An account with the provided email address is already registered. |
INTERNAL |
The verification email could not be sent. |
After registering, a user receives a verification token via email. This call is then used to submit that token, confirming the ownership of the email address and activating the user account.
Errors
| Error Code | Description |
|---|---|
INVALID_ARGUMENT |
No token was provided. |
NOT_FOUND |
The provided token is invalid, could not be found, or has expired. |
If the provided email address and password exactly match those of a user in the server's database and the user's email address has been verified, a new set of login tokens is provided to authenticate as that user. Old access and refresh tokens will remain valid. These credentials are handled automatically and do not require any further attention.
Errors
| Error Code | Description |
|---|---|
INVALID_ARGUMENT |
The email address is not a valid email address or no password was provided. |
UNAUTHENTICATED |
The email address is not registered (anymore) or verified, or the password is incorrect. |
Revoke access through the currently used set of access and refresh tokens. Other token pairs may not be affected.
Errors
| Error Code | Description |
|---|---|
UNAUTHENTICATED |
The user is not signed in. |
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 is issued, authenticating the owner of the token. This new pair is guaranteed to contain valid credentials. The refresh token may change too. These credentials are handled automatically and do not require any further attention.
Use this call if the access token has expired, as it 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 belongs to an active user, the server sends a challenge/token to that address. This token must then 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 address is not a valid email address. If the email address is valid, but has not yet been registered, this error does not occur. |
INTERNAL |
The verification email could not be sent. |
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 user is not active (i.e., in state USER_STATUS_ACTIVE). |
UNAUTHENTICATED |
The provided token could not be found or has expired. |
Set a new password using the old 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 |
Either the provided old password is incorrect, or the new password does not meet the rules specified in Register. |
FAILED_PRECONDITION |
The user is not active (i.e., in state USER_STATUS_ACTIVE). |
UNAUTHENTICATED |
The user is not signed in. |
Get all registered users.
Errors
| Error Code | Description |
|---|---|
PERMISSION_DENIED |
The calling user is not a server admin. |
UNAUTHENTICATED |
The user is not signed in. |
Get the user who is currently logged in by looking up the provided access token. If the user is properly authenticated, this call is guaranteed to return a valid user.
Errors
| Error Code | Description |
|---|---|
UNAUTHENTICATED |
The user is not signed in. |
Get a user by their ID.
Errors
| Error Code | Description |
|---|---|
INVALID_ARGUMENT |
The user ID is not a valid UUID. |
NOT_FOUND |
No user with the provided ID was found. |
PERMISSION_DENIED |
The calling user is neither a server admin nor a member of the same project as the requested user. |
UNAUTHENTICATED |
The user is not signed in. |
Get the user with the specified email address.
Errors
| Error Code | Description |
|---|---|
INVALID_ARGUMENT |
The email address is not a valid email address. |
NOT_FOUND |
No user with the provided email address was found. |
PERMISSION_DENIED |
The calling user is neither a server admin nor a member of the same project as the requested user. |
UNAUTHENTICATED |
The user is not signed in. |
Update all attributes specified in the field mask for the user with the
provided ID, except the status field. A server admin may update the role field using this call.
The updated user is returned and guaranteed to be specified.
Errors
| Error Code | Description |
|---|---|
INVALID_ARGUMENT |
At least one (updated) user detail did not meet the requirements: The id must be a valid UUID, the email must be a valid email address, the first_name and last_name must not be left blank, and the role must be specified. |
NOT_FOUND |
No user with the provided ID was found. |
ALREADY_EXISTS |
Another user with the provided email address already exists. |
PERMISSION_DENIED |
The calling user is neither a server admin nor the requested user themselves. |
FAILED_PRECONDITION |
The user is not active (i.e., in state USER_STATUS_ACTIVE). |
UNAUTHENTICATED |
The user is not signed in. |
Prevent the user with the provided ID from logging in. They are not fully deleted from the database but are no longer considered an active user.
Errors
| Error Code | Description |
|---|---|
INVALID_ARGUMENT |
The user ID is not a valid UUID. |
NOT_FOUND |
No user with the provided ID was found. |
PERMISSION_DENIED |
The calling user is neither a server admin nor the requested user themselves. |
FAILED_PRECONDITION |
The user to be deleted is a server admin or the last project admin in any non-deleted project. |
UNAUTHENTICATED |
The user is not signed in. |
Allow a previously soft-deleted user to log in again. The calling user is required to be an admin.
Errors
| Error Code | Description |
|---|---|
INVALID_ARGUMENT |
The user ID is not a valid UUID. |
NOT_FOUND |
No user with the provided ID was found. |
PERMISSION_DENIED |
The calling user is not a server admin. |
FAILED_PRECONDITION |
The user to be restored is not deleted (i.e., not in state USER_STATUS_DELETED). |
UNAUTHENTICATED |
The user is not signed in. |
Get the user-specific settings for the calling user. The user settings are returned and guaranteed to be specified.
Errors
| Error Code | Description |
|---|---|
NOT_FOUND |
No user settings were found for the calling user. |
UNAUTHENTICATED |
The user is not signed in. |
Update all attributes specified in the field mask for the user settings of the calling user. The updated user settings are returned and guaranteed to be specified.
Errors
| Error Code | Description |
|---|---|
INVALID_ARGUMENT |
At least one updated setting did not meet the requirements. |
FAILED_PRECONDITION |
The user is not active (i.e., in state USER_STATUS_ACTIVE). |
UNAUTHENTICATED |
The user is not signed in. |
Get all project papers that the calling user can review. It is not guaranteed 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 the project identified by its ID that the calling user can review. The returned paper list may be empty if no papers can be reviewed.
Errors
| Error Code | Description |
|---|---|
INVALID_ARGUMENT |
The project ID is not a valid UUID. |
NOT_FOUND |
No project with the provided ID was found. |
PERMISSION_DENIED |
The calling user is neither a server admin nor a member of the project. |
UNAUTHENTICATED |
The user is not signed in. |
Get the project paper with the succeeding local ID (local_id) of the project paper
identified by the provided global ID (id). It is guaranteed that the
returned paper is in the same project as the provided one.
Errors
| Error Code | Description |
|---|---|
INVALID_ARGUMENT |
The project paper ID is not a valid UUID. |
NOT_FOUND |
No project paper with the provided ID was found. |
PERMISSION_DENIED |
The calling user is neither a server admin nor a member of the project the project paper belongs to. |
FAILED_PRECONDITION |
There is no next project paper in the project. |
UNAUTHENTICATED |
The user is not signed in. |
Get the next project paper that the calling user can review. Papers with lower local IDs are preferred. It is guaranteed that the returned paper is in the same project as the provided one.
Errors
| Error Code | Description |
|---|---|
INVALID_ARGUMENT |
The project paper ID is not a valid UUID. |
NOT_FOUND |
No project paper with the provided ID was found. |
PERMISSION_DENIED |
The calling user is neither a server admin nor a member of the project the project paper belongs to. |
FAILED_PRECONDITION |
There is no next project paper available to review in the project. |
UNAUTHENTICATED |
The user is not signed in. |
Get the project paper with the previous local ID (local_id) of the project paper
identified by the provided global ID (id). It is guaranteed that the
returned paper is in the same project as the provided one.
Errors
| Error Code | Description |
|---|---|
INVALID_ARGUMENT |
The project paper ID is not a valid UUID. |
NOT_FOUND |
No project paper with the provided ID was found. |
PERMISSION_DENIED |
The calling user is neither a server admin nor a member of the project the project paper belongs to. |
FAILED_PRECONDITION |
There is no previous project paper in the project. |
UNAUTHENTICATED |
The user is not signed in. |
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 |
|---|---|
INVALID_ARGUMENT |
The paper ID is not a valid UUID. |
NOT_FOUND |
No paper with the provided ID was found. |
UNAUTHENTICATED |
The user is not signed in. |
Add the paper with the provided ID to the calling user's reading list. If the paper is already on the reading list, nothing will be changed and no error will be returned.
Errors
| Error Code | Description |
|---|---|
INVALID_ARGUMENT |
The paper ID is not a valid UUID. |
NOT_FOUND |
No paper with the provided ID was found. |
UNAUTHENTICATED |
The user is not signed in. |
Remove the paper with the provided ID from the calling user's reading list.
Errors
| Error Code | Description |
|---|---|
INVALID_ARGUMENT |
The paper ID is not a valid UUID. |
NOT_FOUND |
No paper with the provided ID was found. |
UNAUTHENTICATED |
The user is not signed in. |
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, 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. If the user is already a project member or invitee, nothing happens. The provided project must be active, meaning it is neither deleted nor archived. An invitation email is sent to the specified email address. The recipient may need to register first and then accept the invitation. The calling user is required to be a project admin.
Errors
| Error Code | Description |
|---|---|
INVALID_ARGUMENT |
The email address is not a valid email address, or the project ID is not a valid UUID. |
NOT_FOUND |
No project with the provided ID was found. |
PERMISSION_DENIED |
The calling user is neither a server admin nor a project admin of the project. |
FAILED_PRECONDITION |
The project is not active (i.e., archived or deleted). |
INTERNAL |
The invitation email could not be sent. |
UNAUTHENTICATED |
The user is not signed in. |
Accept a project invitation. After inviting a user to a project, the invited user receives an email containing the link to accept the invitation. This call is used to accept that invitation.
Errors
| Error Code | Description |
|---|---|
INVALID_ARGUMENT |
No token was provided. |
NOT_FOUND |
The provided token is invalid, could not be found, or has expired. |
FAILED_PRECONDITION |
The user is not registered or not active (i.e., not in state USER_STATUS_ACTIVE). |
Get a list of all users with a pending invitation to the specified project.
If the id field of the returned user is specified, it is guaranteed that the user exists.
If the field is blank, the user was invited by email and has not yet registered.
Errors
| Error Code | Description |
|---|---|
INVALID_ARGUMENT |
The project ID is not a valid UUID. |
NOT_FOUND |
No project with the provided ID was found. |
PERMISSION_DENIED |
The calling user is neither a server admin nor a member of the project. |
UNAUTHENTICATED |
The user is not signed in. |
Get a list of all members of the specified project. The calling user is included. Pending invitations are excluded.
Errors
| Error Code | Description |
|---|---|
INVALID_ARGUMENT |
The project ID is not a valid UUID. |
NOT_FOUND |
No project with the provided ID was found. |
PERMISSION_DENIED |
The calling user is neither a server admin nor a member of the project. |
UNAUTHENTICATED |
The user is not signed in. |
Remove the specified user or invitee from the specified project. If the user is not part of the project, nothing happens. The calling user is required to be a project admin. If there is only one project admin, then the user cannot be removed from the project.
Errors
| Error Code | Description |
|---|---|
INVALID_ARGUMENT |
The project ID is not a valid UUID or the user's email address is not a valid email address. |
NOT_FOUND |
No project with the provided project ID or user with the provided user ID was found. |
PERMISSION_DENIED |
The calling user is neither a server admin nor a project admin of the project, nor the project member themselves. |
FAILED_PRECONDITION |
The project member to be removed is the last project admin in the project. |
UNAUTHENTICATED |
The user is not signed in. |
Change the role of the user with the provided ID within the specified project. The new role must be specified. The calling user is required to be a project admin.
Errors
| Error Code | Description |
|---|---|
INVALID_ARGUMENT |
The project ID or the user ID is not a valid UUID, or the provided new role is not specified. |
NOT_FOUND |
No project with the provided ID or user with the provided ID was found. |
PERMISSION_DENIED |
The calling user is neither a server admin nor a project admin of the project. |
FAILED_PRECONDITION |
The user to be updated is not a member of the specified project or is the last project admin and should be demoted to a project member. |
UNAUTHENTICATED |
The user is not signed in. |
Get a list of all active projects.
Errors
| Error Code | Description |
|---|---|
PERMISSION_DENIED |
The calling user is not a server admin. |
UNAUTHENTICATED |
The user is not signed in. |
Get a list of all projects that are marked as deleted.
Errors
| Error Code | Description |
|---|---|
PERMISSION_DENIED |
The calling user is not a server admin. |
UNAUTHENTICATED |
The user is not signed in. |
Get a list of all projects the specified user is a member of and that are marked as deleted.
Errors
| Error Code | Description |
|---|---|
INVALID_ARGUMENT |
The user ID is not a valid UUID. |
NOT_FOUND |
No user with the provided ID was found. |
PERMISSION_DENIED |
The calling user is neither a server admin nor the calling user. |
UNAUTHENTICATED |
The user is not signed in. |
Get a list of all projects that are marked as archived.
Errors
| Error Code | Description |
|---|---|
PERMISSION_DENIED |
The calling user is not a server admin. |
UNAUTHENTICATED |
The user is not signed in. |
Get a list of all active projects the specified user is a member of. Projects that the user is invited to are excluded.
Errors
| Error Code | Description |
|---|---|
INVALID_ARGUMENT |
The user ID is not a valid UUID. |
NOT_FOUND |
No user with the provided ID was found. |
PERMISSION_DENIED |
The calling user is neither a server admin nor the calling user. |
UNAUTHENTICATED |
The user is not signed in. |
Get a list of all projects the specified user is a member of and that are marked as archived.
Errors
| Error Code | Description |
|---|---|
INVALID_ARGUMENT |
The user ID is not a valid UUID. |
NOT_FOUND |
No user with the provided ID was found. |
PERMISSION_DENIED |
The calling user is neither a server admin nor the calling user. |
UNAUTHENTICATED |
The user is not signed in. |
Create a new project. All fields must be specified and non-blank.
The calling user is automatically a member of that project with the
project admin role (MEMBER_ROLE_ADMIN).
The project is created with the initial settings defined in the
user settings of the calling user.
If the project was successfully created, it is returned and guaranteed to be specified.
Errors
| Error Code | Description |
|---|---|
INVALID_ARGUMENT |
The provided project name was blank. |
NOT_FOUND |
No user settings were found for the calling user. |
UNAUTHENTICATED |
The user is not signed in. |
Get a project by its ID.
Errors
| Error Code | Description |
|---|---|
INVALID_ARGUMENT |
The project ID is not a valid UUID. |
NOT_FOUND |
No project with the provided ID was found. |
PERMISSION_DENIED |
The calling user is neither a server admin nor a member of the project. |
UNAUTHENTICATED |
The user is not signed in. |
Update all attributes specified in the field mask for the project with the provided ID,
except the fields current_stage and max_stage. The updated project
is returned and guaranteed to be specified. The calling user is
required to be a project admin.
The following rules apply:
- If
status=PROJECT_STATUS_DELETED: No updates are allowed. - If
status=PROJECT_STATUS_ARCHIVED: Only update of thestatusfield is allowed. - If
status=PROJECT_STATUS_ACTIVE: All non-immutable fields may be updated. - If
status=PROJECT_STATUS_ACTIVE_LOCKED: All non-immutable fields, except the slr (project) settings, may be updated. - The value
PROJECT_STATUS_DELETEDis not allowed when updating a project, as the SoftDeleteProject call must be used instead.
Note: If the project is locked and the request sets
statustoPROJECT_STATUS_ACTIVE, no error is returned and the server keeps the state asPROJECT_STATUS_ACTIVE_LOCKED. Similarly, if the project is active and the request setsstatustoPROJECT_STATUS_ACTIVE_LOCKED, no error is returned and the server keeps the state asPROJECT_STATUS_ACTIVE.
Errors
| Error Code | Description |
|---|---|
INVALID_ARGUMENT |
At least one (updated) project detail did not meet the requirements: The id must be a valid UUID, the name must not be left blank, the status must be specified and the project settings must be valid. The status needs to follow the rules outlined above. |
NOT_FOUND |
No project with the provided ID was found. |
PERMISSION_DENIED |
The calling user is neither a server admin nor a project admin of the project. |
FAILED_PRECONDITION |
The project is not in the appropriate state for the requested change. |
UNAUTHENTICATED |
The user is not signed in. |
Get all available export formats that the backend supports. Each export format is identified by a unique string and can be used to specify the format for the ExportProject call. The list is guaranteed to be non-empty but may change at any time.
Export the specified project in the specified format. A blob and a file name is returned. This includes everything necessary for the project to be reimported and remain indistinguishable from the original.
The filename includes the file extension so that the client doesn't have to figure out the file format. This could be e.g. "demo_project-2025-11-10-00-25-31.json".
Errors
| Error Code | Description |
|---|---|
INVALID_ARGUMENT |
The project ID is not a valid UUID or the format is not a valid export format. |
NOT_FOUND |
No project with the provided ID was found. |
PERMISSION_DENIED |
The calling user is neither a server admin nor a member of the project. |
UNAUTHENTICATED |
The user is not signed in. |
Mark the specified project as deleted. It is not permanently removed from the database and can be restored later. The calling user is required to be a project admin.
Errors
| Error Code | Description |
|---|---|
INVALID_ARGUMENT |
The project ID is not a valid UUID. |
NOT_FOUND |
No project with the provided ID was found. |
PERMISSION_DENIED |
The calling user is neither a server admin nor a project admin of the project. |
UNAUTHENTICATED |
The user is not signed in. |
Restore a previously deleted project to the active state. The calling user is required to be a project admin.
Errors
| Error Code | Description |
|---|---|
INVALID_ARGUMENT |
The project ID is not a valid UUID. |
NOT_FOUND |
No project with the provided ID was found. |
PERMISSION_DENIED |
The calling user is neither a server admin nor a project admin of the project. |
FAILED_PRECONDITION |
The project to be restored is not deleted (i.e., not in state PROJECT_STATUS_DELETED). |
UNAUTHENTICATED |
The user is not signed in. |
Get information about the specified project. The response only includes attributes specified in the field mask or all attributes when the field mask is not specified or has an empty path list.
Errors
| Error Code | Description |
|---|---|
INVALID_ARGUMENT |
The project ID is not a valid UUID. |
NOT_FOUND |
No project with the provided ID was found. |
PERMISSION_DENIED |
The calling user is neither a server admin nor a member of the project. |
UNAUTHENTICATED |
The user is not signed in. |
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 |
|---|---|
INVALID_ARGUMENT |
The project ID is not a valid UUID. |
NOT_FOUND |
No project with the provided ID was found or the specified stage does not exist. |
PERMISSION_DENIED |
The calling user is neither a server admin nor a member of the project. |
UNAUTHENTICATED |
The user is not signed in. |
Get a criterion by its ID.
Errors
| Error Code | Description |
|---|---|
INVALID_ARGUMENT |
The criterion ID is not a valid UUID. |
NOT_FOUND |
No criterion with the provided ID was found. |
PERMISSION_DENIED |
If the criterion is a user-criterion, the calling user is not the original creator of the criterion. If the criterion is a project-criterion, the user is not a member of the project the criterion belongs to. |
UNAUTHENTICATED |
The user is not signed in. |
Get all criteria associated with a given project.
Errors
| Error Code | Description |
|---|---|
INVALID_ARGUMENT |
The project ID is not a valid UUID. |
NOT_FOUND |
No project with the provided ID was found. |
PERMISSION_DENIED |
The calling user is neither a server admin nor a member of the project. |
UNAUTHENTICATED |
The user is not signed in. |
Create a new criterion. All fields must be specified and non-blank. If the criterion is successfully created, it is returned and guaranteed to be specified.
A user-criterion is created by leaving the project_id empty. For a project-criterion,
this field must be set and refer to a valid project in the active state.
When creating a project-criterion, the calling user is required to be a project admin.
Errors
| Error Code | Description |
|---|---|
INVALID_ARGUMENT |
At least one input did not meet the requirements: All fields (except project_id) must not be blank and if the project_id is given, it must be a valid UUID. |
NOT_FOUND |
A project ID is given but does not refer to an existing project. |
PERMISSION_DENIED |
A project ID is given but the calling user is neither a server admin nor a project admin of the project the criterion should belong to. |
FAILED_PRECONDITION |
A project ID is given but does not refer to an active project (i.e., it is archived or deleted). |
UNAUTHENTICATED |
The user is not signed in. |
Update all attributes specified in the field mask for the criterion with the given ID. 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, the calling user is required to be a project admin.
Errors
| Error Code | Description |
|---|---|
INVALID_ARGUMENT |
At least one (updated) criterion detail did not meet the requirements: All fields (except project_id) must not be blank and if the project_id is given, it must be a valid UUID. |
NOT_FOUND |
No criterion with the provided ID was found or a project ID is given but does not refer to an existing project. |
PERMISSION_DENIED |
If the criterion is a user-criterion, the calling user is not the original creator of the criterion. If the criterion is a project-criterion, the calling user is neither a server admin nor a project admin of the project the criterion belongs to. |
FAILED_PRECONDITION |
A project ID is given but does not refer to an active project (i.e., it is archived or deleted). |
UNAUTHENTICATED |
The user is not signed in. |
Permanently delete the specified criterion. All references to it will also be removed. This cannot be undone. If the deleted criterion is a user-criterion, the calling user is required to be the creator of the criterion. If it is a project-criterion, the calling user is required to be a project admin.
Errors
| Error Code | Description |
|---|---|
INVALID_ARGUMENT |
If the criterion is a project-criterion, the project ID is not a valid UUID. |
NOT_FOUND |
No criterion with the provided ID was found. |
PERMISSION_DENIED |
If the criterion is a user-criterion, the calling user is not the original creator of the criterion. If the criterion is a project-criterion, the calling user is neither a server admin nor a project admin of the project the criterion belongs to. |
UNAUTHENTICATED |
The user is not signed in. |
Get a project paper by its ID.
Errors
| Error Code | Description |
|---|---|
INVALID_ARGUMENT |
The project paper ID is not a valid UUID. |
NOT_FOUND |
No project paper with the provided ID was found. |
PERMISSION_DENIED |
The calling user is neither a server admin nor a member of the project the project paper belongs to. |
UNAUTHENTICATED |
The user is not signed in. |
Get a project paper using the project ID and the relative ID (local_id) within that
project. The relative ID is only unique within its project, not globally.
Prefer GetProjectPaperById wherever possible.
Errors
| Error Code | Description |
|---|---|
INVALID_ARGUMENT |
The project ID is not a valid UUID or the relative ID is not a non-negative Long number. |
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 calling user is neither a server admin nor a member of the project the project paper belongs to. |
UNAUTHENTICATED |
The user is not signed in. |
Get all project papers associated with the given project.
Errors
| Error Code | Description |
|---|---|
INVALID_ARGUMENT |
The project ID is not a valid UUID. |
NOT_FOUND |
No project with the provided ID was found. |
PERMISSION_DENIED |
The calling user is neither a server admin nor a member of the project. |
UNAUTHENTICATED |
The user is not signed in. |
Add the provided paper to the given project at the specified stage.
The stage must be non-negative and less than or equal to the project's max_stage.
The calling user is required to be a project admin.
Errors
| Error Code | Description |
|---|---|
INVALID_ARGUMENT |
The project ID or paper ID is not a valid UUID, or the provided stage either is not a valid number or does not exist in the project, i.e., the stage was less than zero or greater than max_stage. |
NOT_FOUND |
No project with the provided project ID or paper with the provided paper ID was found. |
ALREADY_EXISTS |
The provided paper already exists within the project. |
PERMISSION_DENIED |
The calling user is neither a server admin nor a project admin of the project. |
FAILED_PRECONDITION |
The project is not active (i.e., archived or deleted). |
UNAUTHENTICATED |
The user is not signed in. |
Update all attributes specified in the field mask for the project paper with the provided ID,
except the fields local_id, decision, stage, and reviews. Furthermore, the underlying paper
cannot be modified; use the UpdatePaper call for this. The updated
project paper is returned and guaranteed to be specified.
The calling user is required to be a project admin.
Errors
| Error Code | Description |
|---|---|
INVALID_ARGUMENT |
The project paper ID or paper ID is not a valid UUID. |
NOT_FOUND |
No project paper with the provided ID or paper with the provided ID was found. |
PERMISSION_DENIED |
The calling user is neither a server admin nor a project admin of the project the project paper belongs to. |
UNAUTHENTICATED |
The user is not signed in. |
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 |
|---|---|
INVALID_ARGUMENT |
The project paper ID is not a valid UUID. |
NOT_FOUND |
No project paper with the provided ID was found. |
PERMISSION_DENIED |
The calling user is neither a server admin nor a project admin of the project the project paper belongs to. |
UNAUTHENTICATED |
The user is not signed in. |
Get a review by its ID.
Errors
| Error Code | Description |
|---|---|
INVALID_ARGUMENT |
The review ID is not a valid UUID. |
NOT_FOUND |
No review with the provided ID was found. |
PERMISSION_DENIED |
The calling user is neither a server admin nor a member of the project the review belongs to. |
UNAUTHENTICATED |
The user is not signed in. |
Get all reviews for the specific project paper.
Errors
| Error Code | Description |
|---|---|
INVALID_ARGUMENT |
The project paper ID is not a valid UUID. |
NOT_FOUND |
No project paper with the provided ID was found. |
PERMISSION_DENIED |
The calling user is neither a server admin nor a member of the project the project paper belongs to. |
UNAUTHENTICATED |
The user is not signed in. |
Create a new review for the specific project paper. All fields must be
specified and non-blank. The field 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, i.e., not finally decided. The user also
has to be a member of the same project the project paper belongs to. If the review is successfully created,
it is returned and guaranteed to be specified.
Errors
| Error Code | Description |
|---|---|
INVALID_ARGUMENT |
At least one input did not meet the requirements: The project paper ID must be a valid UUID, the decision must be specified, and if given, the selected criteria IDs must be a list of valid UUIDs. |
NOT_FOUND |
No project paper with the provided ID was found. |
ALREADY_EXISTS |
The user has already created a review for the specified project paper. |
PERMISSION_DENIED |
The calling user is neither a server admin nor a member of the project the project paper belongs to. |
FAILED_PRECONDITION |
The project paper is not in the PAPER_DECISION_UNREVIEWED or PAPER_DECISION_IN_REVIEW state, or the project is not active (i.e., it is archived or deleted). |
UNAUTHENTICATED |
The user is not signed in. |
Update all attributes specified in the field mask for the review with the given ID, except the user_id field.
The updated review is returned and guaranteed to be specified. Only the
owner of a review is allowed to update a review and must be a member of the project the review is in.
A user is the owner of a review if the review's user_id matches the user's id.
Errors
| Error Code | Description |
|---|---|
INVALID_ARGUMENT |
At least one (updated) review detail did not meet the requirements: The review ID must be a valid UUID, the decision must be specified, and if given, the selected criteria IDs must be a list of valid UUIDs. |
NOT_FOUND |
No review with the provided ID was found. |
PERMISSION_DENIED |
The calling user is neither a server admin, the owner of the review, nor in the same project as the review. |
FAILED_PRECONDITION |
The project paper is in a state in which no further modifications to the review are allowed, or the project is not active (i.e., it is archived or deleted). |
UNAUTHENTICATED |
The user is not signed in. |
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 must 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 |
|---|---|
INVALID_ARGUMENT |
The review ID is not a valid UUID. |
NOT_FOUND |
No review with the provided ID was found. |
PERMISSION_DENIED |
The calling user is neither a server admin, the owner of the review, nor in the same project as the review. |
FAILED_PRECONDITION |
The project paper is in a state in which no deletions of reviews are allowed anymore, or the project is not active (i.e., it is archived or deleted). |
UNAUTHENTICATED |
The user is not signed in. |
Get a paper by its ID.
Errors
| Error Code | Description |
|---|---|
INVALID_ARGUMENT |
The paper ID is not a valid UUID. |
NOT_FOUND |
No paper with the provided ID was found. |
UNAUTHENTICATED |
The user is not signed in. |
Search the local database for papers using a search string.
Errors
| Error Code | Description |
|---|---|
UNAUTHENTICATED |
The user is not signed in. |
Search for papers that match the search query using all available fetchers of the specified project.
Errors
| Error Code | Description |
|---|---|
INVALID_ARGUMENT |
The project ID is not a valid UUID. |
NOT_FOUND |
No project with the provided id was found. |
PERMISSION_DENIED |
The calling user is neither a server admin nor a member of the specified project. |
UNAUTHENTICATED |
The user is not signed in. |
Create a new paper. The id field will be ignored and set by
the server. The created paper is returned and guaranteed to be specified.
Validation details:
- only the
titleis required, in the sense that it must not be blank - text fields:
external_id,title,abstrakt,publisher,publication_nameandpublication_type - valid year range: 0 to this year + 1, i.e., if this year is 2025, the maximum year value is 2026
- valid author list: each author must be valid and the list must not exceed its maximum length
- valid author:
first_nameandlast_namemust both be non-blank and must not exceed their maximum length.
Errors
| Error Code | Description |
|---|---|
INVALID_ARGUMENT |
At least one of the text fields exceeds its maximum length, the title is blank, the year is invalid, or the author list is invalid. For more details, see above. |
ALREADY_EXISTS |
The paper with the provided information already exists or is too similar to an existing paper. |
UNAUTHENTICATED |
The user is not signed in. |
Update all attributes specified in the field mask for the paper with the given ID, except the field has_pdf.
The updated paper is returned and guaranteed to be specified.
For validation details, see CreatePaper.
Errors
| Error Code | Description |
|---|---|
INVALID_ARGUMENT |
At least one of the text fields exceeds its maximum length, the title is blank, the paper ID is not a valid UUID, the year is invalid, or the author list is invalid. For more details, see CreatePaper. |
NOT_FOUND |
No paper with the provided ID was found. |
ALREADY_EXISTS |
The paper with the provided information already exists or is too similar to an existing paper. |
UNAUTHENTICATED |
The user is not signed in. |
Get a list of papers that are referring to the provided paper, i.e., the papers that cite this paper.
Errors
| Error Code | Description |
|---|---|
INVALID_ARGUMENT |
The paper ID is not a valid UUID. |
NOT_FOUND |
No paper with the provided ID was found. |
UNAUTHENTICATED |
The user is not signed in. |
Get a list of papers that are referred to by the provided paper, i.e., the references of this paper.
Errors
| Error Code | Description |
|---|---|
INVALID_ARGUMENT |
The paper ID is not a valid UUID. |
NOT_FOUND |
No paper with the provided ID was found. |
UNAUTHENTICATED |
The user is not signed in. |
Get a paper's PDF as a blob.
Errors
| Error Code | Description |
|---|---|
INVALID_ARGUMENT |
The paper ID is not a valid UUID. |
NOT_FOUND |
No paper with the provided ID was found. |
FAILED_PRECONDITION |
The paper has no attached PDF (see Paper.has_pdf). |
UNAUTHENTICATED |
The user is not signed in. |
Set or overwrite the PDF for the specified paper. This call may also be
used to remove the PDF of a paper by omitting the pdf field.
The paper's has_pdf field is automatically updated by the server.
Errors
| Error Code | Description |
|---|---|
INVALID_ARGUMENT |
The PDF is not in the correct format, or the paper ID is not a valid UUID. |
NOT_FOUND |
No paper with the provided ID was found. |
RESOURCE_EXHAUSTED |
The PDF was rejected by the server, e.g., because it is too large. |
UNAUTHENTICATED |
The user is not signed in. |
Messages
message AuthenticationStatusResponse authentication.proto
Response on whether the user is authenticated.
| Field | Type | Description | |
|---|---|---|---|
| 1 | authentication_status |
AuthenticationStatus
|
message Author paper.proto
An author of a paper.
| Field | Type | Description | |
|---|---|---|---|
| 1 | first_name |
string
|
|
| 2 | last_name |
string
|
message AvailableExportFormatsResponse export.proto
Response of available export formats.
| Field | Type | Description | |
|---|---|---|---|
| 1 | formats |
repeated
string
|
message AvailableFetchers fetcher.proto
Response of available fetchers.
| Field | Type | Description | |
|---|---|---|---|
| 1 | fetcher_names |
repeated
string
|
message Criterion criterion.proto
There are two types of criteria that must be differentiated: user- and project-criteria. A user-criterion has a user but no project attached to it and can be used for the creation of default criteria for a project in the user settings. A project-criterion on the other hand is associated with a project and provide the basis for justifying reviews.
| Field | Type | Description | |
|---|---|---|---|
| 1 | id |
string
|
|
| 2 | tag |
string
|
|
| 3 | name |
string
|
|
| 4 | description |
string
|
|
| 5 | category |
CriterionCategory
|
message Criterion.Create criterion.proto
Request to create a criterion.
| Field | Type | Description | |
|---|---|---|---|
| 1 | project_id |
string
|
|
| 2 | tag |
string
|
|
| 3 | name |
string
|
|
| 4 | description |
string
|
|
| 5 | category |
CriterionCategory
|
message Criterion.List criterion.proto
List of criteria.
| Field | Type | Description | |
|---|---|---|---|
| 1 | criteria |
repeated
Criterion
|
message Criterion.Update criterion.proto
Request to update a criterion.
| Field | Type | Description | |
|---|---|---|---|
| 1 | criterion |
Criterion
|
|
| 2 | mask |
google.protobuf.FieldMask
|
message ExportRequest export.proto
Request to export a project.
| Field | Type | Description | |
|---|---|---|---|
| 1 | id |
string
|
|
| 3 | format |
string
|
message ExportResponse export.proto
Response of the exported project.
| Field | Type | Description | |
|---|---|---|---|
| 1 | data |
bytes
|
|
| 2 | file_name |
string
|
message FetcherOptions fetcher.proto
Options that are used by a fetcher to control behavior.
| Field | Type | Description | |
|---|---|---|---|
| 1 | options |
map<string, string>
|
Map the option name to a (default) value |
message GetAvailableFetcherOptionsRequest fetcher.proto
Request to get all available fetchers.
| Field | Type | Description | |
|---|---|---|---|
| 1 | fetcher_name |
string
|
message Id base.proto
An arbitrary ID. Use for RPCs related to single entities.
| Field | Type | Description | |
|---|---|---|---|
| 1 | id |
string
|
message LoginRequest authentication.proto
Request to log in.
| Field | Type | Description | |
|---|---|---|---|
| 1 |
string
|
||
| 2 | password |
string
|
message Nothing base.proto
Just an empty object. Use when there's no parameter or return value.
| Field | Type | Description |
|---|
message Paper paper.proto
A scientific paper with it's references and other metadata.
| 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
|
|
| 12 | fetcher_metadata |
map<string, string>
|
A key-value map to store arbitrary metadata about the paper. This could for example be a fetcher specific id. |
message Paper.PdfUpdate paper.proto
Request to update the PDF of a paper.
| Field | Type | Description | |
|---|---|---|---|
| 1 | paper_id |
string
|
|
| 2 |
Blob
|
message Paper.SearchQuery paper.proto
Request to search for papers according to a query.
| Field | Type | Description | |
|---|---|---|---|
| 2 | query |
string
|
There are no restrictions on this search query in terms of valid values. The backend is fully responsible for deciding which paper attributes this query is matched against and is supposed to provide the best results for the given query. |
message Paper.Update paper.proto
Request to update a paper.
| Field | Type | Description | |
|---|---|---|---|
| 1 | paper |
Paper
|
|
| 2 | mask |
google.protobuf.FieldMask
|
message PasswordChangeRequest authentication.proto
Request to reset the password of the user while being logged in.
| Field | Type | Description | |
|---|---|---|---|
| 1 | old_password |
string
|
|
| 2 | new_password |
string
|
message PasswordResetRequest authentication.proto
Request to actually reset the user's password.
| Field | Type | Description | |
|---|---|---|---|
| 1 | token |
string
|
|
| 2 | new_password |
string
|
message Project project.proto
The project response object.
| 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.Create project.proto
Request to create a project.
| Field | Type | Description | |
|---|---|---|---|
| 1 | name |
string
|
message Project.Information project.proto
Response of relevant project metadata.
| 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
Response of decision statistics containing the number of decisions made in the project.
| Field | Type | Description | |
|---|---|---|---|
| 1 | statistics |
repeated
Project.Information.DecisionStatistics.Statistic
|
message Project.Information.DecisionStatistics.Get project.proto
Request to get the decision statistics for a specific stage of a project.
| Field | Type | Description | |
|---|---|---|---|
| 1 | project_id |
string
|
|
| 2 | stage |
uint64
|
message Project.Information.DecisionStatistics.Statistic project.proto
The number of decisions made for a specific decision, e.g. accepted.
| Field | Type | Description | |
|---|---|---|---|
| 1 | decision |
PaperDecision
|
|
| 2 | count |
uint64
|
message Project.Information.Get project.proto
Request to get relevant project metadata.
| Field | Type | Description | |
|---|---|---|---|
| 1 | project_id |
string
|
|
| 2 | mask |
google.protobuf.FieldMask
|
message Project.InviteCandidatesRequest project.proto
Response of candidates to invite to a project.
| 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.List project.proto
A list of projects.
| Field | Type | Description | |
|---|---|---|---|
| 1 | projects |
repeated
Project
|
message Project.Member project.proto
A project member.
| Field | Type | Description | |
|---|---|---|---|
| 1 | user |
User
|
|
| 2 | role |
MemberRole
|
message Project.Member.Accept project.proto
Request to accept a project invitation.
| Field | Type | Description | |
|---|---|---|---|
| 1 | token |
string
|
message Project.Member.Invite project.proto
Request to invite somebody to join the project.
| Field | Type | Description | |
|---|---|---|---|
| 1 | project_id |
string
|
|
| 2 | user_email |
string
|
message Project.Member.List project.proto
A list of project members.
| Field | Type | Description | |
|---|---|---|---|
| 1 | members |
repeated
Project.Member
|
message Project.Member.Remove project.proto
Request to remove an invitee or project member from a project.
| Field | Type | Description | |
|---|---|---|---|
| 1 | project_id |
string
|
|
| 3 | user_email |
string
|
message Project.Member.Update project.proto
Request to update a project member.
| Field | Type | Description | |
|---|---|---|---|
| 1 | project_id |
string
|
|
| 2 | user_id |
string
|
|
| 3 | new_role |
MemberRole
|
message Project.Paper project.proto
The project paper connecting a project to a paper with additional information.
| 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
Request to add a paper to a project.
| Field | Type | Description | |
|---|---|---|---|
| 1 | project_id |
string
|
|
| 2 | stage |
uint64
|
|
| 3 | paper_id |
string
|
message Project.Paper.Get project.proto
Request to get a project paper.
| Field | Type | Description | |
|---|---|---|---|
| 1 | project_id |
string
|
|
| 2 | relative_project_paper_id |
string
|
message Project.Paper.List project.proto
A list of project papers.
| Field | Type | Description | |
|---|---|---|---|
| 1 | project_papers |
repeated
Project.Paper
|
message Project.Paper.SearchQuery project.proto
Request to search for project papers according to a query.
| Field | Type | Description | |
|---|---|---|---|
| 1 | project_id |
string
|
|
| 2 | query |
string
|
There are no restrictions on this search query in terms of valid values. The backend is fully responsible for deciding which paper attributes this query is matched against and is supposed to provide the best results for the given query. |
message Project.Paper.Update project.proto
Request to update a project paper.
| Field | Type | Description | |
|---|---|---|---|
| 1 | project_paper |
Project.Paper
|
|
| 2 | mask |
google.protobuf.FieldMask
|
message Project.Settings project.proto
Project related settings.
| 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
Request to update a project.
| Field | Type | Description | |
|---|---|---|---|
| 1 | project |
Project
|
|
| 2 | mask |
google.protobuf.FieldMask
|
message RegisterRequest authentication.proto
Request to register an account.
| Field | Type | Description | |
|---|---|---|---|
| 1 | first_name |
string
|
|
| 2 | last_name |
string
|
|
| 3 |
string
|
||
| 4 | password |
string
|
message RequestPasswordResetRequest authentication.proto
Request to request the reset of the user's password.
| Field | Type | Description | |
|---|---|---|---|
| 1 |
string
|
message Review review.proto
A review of a paper made by a user (project member).
| Field | Type | Description | |
|---|---|---|---|
| 1 | id |
string
|
|
| 2 | user_id |
string
|
|
| 3 | decision |
ReviewDecision
|
|
| 4 | selected_criteria_ids |
repeated
string
|
message Review.Create review.proto
Request to create a review.
| Field | Type | Description | |
|---|---|---|---|
| 1 | project_paper_id |
string
|
|
| 2 | decision |
ReviewDecision
|
|
| 3 | selected_criteria_ids |
repeated
string
|
message Review.Update review.proto
Request to update a review.
| Field | Type | Description | |
|---|---|---|---|
| 1 | review |
Review
|
|
| 2 | mask |
google.protobuf.FieldMask
|
message ReviewDecisionMatrix project.proto
Matrix containing the paper decision based on reviews made for a paper. This matrix defines how a paper is decided based on its reviews. For this to work, the entries need to be unique and the patterns exhaustive.
| Field | Type | Description | |
|---|---|---|---|
| 1 | number_of_reviewers |
uint32
|
|
| 2 | patterns |
repeated
ReviewDecisionMatrix.Pattern
|
message ReviewDecisionMatrix.Pattern project.proto
The actual matrix of the ReviewDecisionMatrix.
| Field | Type | Description | |
|---|---|---|---|
| 1 | entries |
repeated
ReviewDecisionMatrix.Pattern.Entry
|
|
| 2 | decision |
PaperDecision
|
message ReviewDecisionMatrix.Pattern.Entry project.proto
An entry in the ReviewDecisionMatrix containing the decision and the number of occurrences.
| Field | Type | Description | |
|---|---|---|---|
| 1 | review_decision |
ReviewDecision
|
|
| 2 | count |
uint64
|
message User user.proto
A SnowballR user.
| Field | Type | Description | |
|---|---|---|---|
| 1 | id |
string
|
|
| 2 |
string
|
||
| 3 | first_name |
string
|
|
| 4 | last_name |
string
|
|
| 5 | role |
UserRole
|
|
| 6 | status |
UserStatus
|
message User.Update user.proto
Request to update a user.
| Field | Type | Description | |
|---|---|---|---|
| 1 | user |
User
|
|
| 2 | mask |
google.protobuf.FieldMask
|
message UserSettings user_settings.proto
Settings related to a user.
| 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
Request to update the user settings.
| Field | Type | Description | |
|---|---|---|---|
| 1 | user_settings |
UserSettings
|
|
| 2 | mask |
google.protobuf.FieldMask
|
message VerifyEmailRequest authentication.proto
Request to verify a user's email after registering.
| Field | Type | Description | |
|---|---|---|---|
| 1 | token |
string
|
Enums
enum AuthenticationStatus authentication.proto
The status of the user's authentication. It is required to be authenticated to use the SnowballR app.
| Name | Number | Description |
|---|---|---|
AUTHENTICATION_STATUS_UNSPECIFIED |
0 | Unspecified authentication status. |
AUTHENTICATION_STATUS_UNAUTHENTICATED |
1 | The user is unauthenticated. They have to sign into the app. |
AUTHENTICATION_STATUS_ACCESS_TOKEN_EXPIRED |
2 | The user's access token is expired. They have to use the refresh token to get a new access token. |
AUTHENTICATION_STATUS_AUTHENTICATED |
3 | The user is authenticated. They are signed in. |
enum CriterionCategory criterion.proto
Category of a criterion, it can only be ever one of it.
| Name | Number | Description |
|---|---|---|
CRITERION_CATEGORY_UNSPECIFIED |
0 | Unspecified criterion category. |
CRITERION_CATEGORY_INCLUSION |
1 | If this criterion is fulfilled, the paper should be accepted. |
CRITERION_CATEGORY_EXCLUSION |
2 | If this criterion is fulfilled, the paper should be declined. |
CRITERION_CATEGORY_HARD_EXCLUSION |
3 | If this criterion is fulfilled, the paper is definitely declined. |
enum MemberRole project.proto
Role of a user inside a project.
| Name | Number | Description |
|---|---|---|
MEMBER_ROLE_UNSPECIFIED |
0 | Unspecified member role. |
MEMBER_ROLE_DEFAULT |
1 | Default project member role. No elevated rights. |
MEMBER_ROLE_ADMIN |
2 | Admin project member role. Can do everything that a default project member can do and more. |
enum PaperDecision project.proto
The decision on how the paper is treated in respect to the SLR.
| Name | Number | Description |
|---|---|---|
PAPER_DECISION_UNSPECIFIED |
0 | Unspecified paper decision. |
PAPER_DECISION_UNREVIEWED |
1 | The paper has not been reviewed yet. |
PAPER_DECISION_IN_REVIEW |
2 | The paper is currently in review. |
PAPER_DECISION_DECLINED |
3 | The paper was declined and is not considered part of the final SLR paper set. |
PAPER_DECISION_ACCEPTED |
4 | The paper was accepted and is considered part of the final SLR paper set. |
enum ProjectStatus project.proto
Status of the project. Can be considered the stage in the lifecycle of a project.
| Name | Number | Description |
|---|---|---|
PROJECT_STATUS_UNSPECIFIED |
0 | Unspecified project status. |
PROJECT_STATUS_ACTIVE |
1 | Project is active and fully editable, including settings. |
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. |
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. |
enum ReviewDecision review.proto
The decision based on the review of a paper.
| Name | Number | Description |
|---|---|---|
REVIEW_DECISION_UNSPECIFIED |
0 | Unspecified review decision. |
REVIEW_DECISION_DECLINED |
1 | The reviewer declined the paper. |
REVIEW_DECISION_MAYBE |
2 | The reviewer was not sure in their decision. |
REVIEW_DECISION_ACCEPTED |
3 | The reviewer accepted the paper. |
enum SnowballingType project.proto
The type of snowballing, according to Wohlin (2014). It defines which references (forward or backward) are fetched when a paper is accepted. A backward reference is defined as a paper that is cited by the paper in question. A forward reference is defined as a paper that cites the paper in question, i.e., a paper where the paper in question is a backward reference. Roughly speaking, one could say that "backward" and "forward" are an analogy to the order of the publication dates of two papers, i.e., a backward reference was most probably published before the paper in question and a forward reference afterward.
| Name | Number | Description |
|---|---|---|
SNOWBALLING_TYPE_UNSPECIFIED |
0 | Unspecified snowballing type. |
SNOWBALLING_TYPE_FORWARD |
1 | All forward references are fetched. |
SNOWBALLING_TYPE_BACKWARD |
2 | All backward references are fetched. |
SNOWBALLING_TYPE_BOTH |
3 | All forward and backward references are fetched. |
enum UserRole user.proto
Role of a user inside the SnowballR app.
| Name | Number | Description |
|---|---|---|
USER_ROLE_UNSPECIFIED |
0 | Unspecified user role. |
USER_ROLE_DEFAULT |
1 | Default user role. No elevated rights. |
USER_ROLE_ADMIN |
2 | (SnowballR instance) Admin user role. Can do everything that a default user can do and more. |
enum UserStatus user.proto
Status of the user. Can be considered the stage in the lifecycle of a user.
| Name | Number | Description |
|---|---|---|
USER_STATUS_UNSPECIFIED |
0 | Unspecified user status. |
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. |