Download OpenAPI specification:
HotCRP conference management software API
HotCRP is conference review software. It is open source; a supported version runs on hotcrp.com. This documentation is for the HotCRP REST API.
To request documentation for an API method, please open a GitHub issue. We also welcome pull requests.
API calls use paths under api
. For instance, to call the paper
endpoint on
a server at https://example.hotcrp.org/funconf25
, you might use a URL like
https://example.hotcrp.org/funconf25/api/paper?p=1
.
Provide parameters in query strings or the request body, typically using form
encoding. Some
requests use groups of parameters to define logical objects using structured
keys, such as named_search/1/q
; other parameters define objects using JSON
format. Use multipart/form-data
encoding for requests that include uploaded
files. Since servers limit upload size, you may need to use the upload API to
upload a large file before processing it with another call.
Responses are formatted as JSON. Every response has an ok
property, which is
true
if the request format succeeded and false
otherwise. Typically "ok": false
indicates a serious error with the request that prevented proper
processing. Messages about the request, if any, are expressed in a
message_list
property.
GET
operations retrieve system state and POST
operations modify system
state. Other operations are occasionally used when semantically meaningful—for
example, the /paper
endpoint supports DELETE
.
The p
parameter defines a submission ID. It can appear either in the query
string or immediately following api/
in the query path: api/comment?p=1
and api/1/comment
are the same API call. p
is a positive decimal integer,
but some API calls accept p=new
when defining a new submission.
The forceShow
boolean parameter allows administrators to override their
conflicts when that is possible.
External applications should authenticate to HotCRP’s API using bearer tokens
(an Authorization: bearer
HTTP header). Obtain API tokens using Account
settings > Developer. HotCRP Javascript makes API calls using session cookies
for authentication.
These endpoints query and modify HotCRP submissions. They deal with submission objects, which are JSON representations of submissions.
Each submission object has an object
property (set to the constant string
"paper"
), a pid
property, and a status
property. Complete submission
objects also have one property per submission field, such as title
,
abstract
, authors
, topics
, and pc_conflicts
. However, methods that fetch
submissions only fill in fields that exist and that the accessing user is
allowed to see.
Submission endpoints always return complete submission objects. To select
specific properties of submissions, or to fetch computed properties, use the
/search
or /searchaction
endpoints.
Fetch a submission object specified by p
, a submission ID. The submission
object is returned in the paper
response property. Error messages—for
instance, about permission errors or nonexistent submissions—are returned in
message_list
.
p | integer (pid) >= 1 Submission ID |
forceShow | boolean False to not override administrator conflict |
ok required | boolean |
Array of objects (message_list) Diagnostic list | |
dry_run | any |
change_list | any |
valid | any |
pid | any |
object (paper) |
{- "ok": true,
- "message_list": [ ],
- "dry_run": null,
- "change_list": null,
- "valid": null,
- "pid": null,
- "paper": {
- "object": "paper",
- "pid": 1,
- "status": "draft"
}
}
Create or modify a submission specified by p
, a submission ID.
Setting p=new
will create a new submission; the response will contain the
chosen submission ID.
The modification may be specified:
application/json
).application/zip
). The archive must contain a file named data.json
; it
may contain other files too.json
(when the request body
has content-type application/x-www-form-urlencoded
or
multipart/form-data
).upload
parameter.In all of these, the modification is defined by a JSON submission object. The properties of this object define the modifications applied to the submission. The object need not specify all submission properties; absent properties remain unchanged.
The p
request parameter is optional. If it is unset, HotCRP uses the pid
from the supplied JSON. If both the p
parameter and the JSON pid
property
are present, then they must match.
To test a modification, supply a dry_run=1
parameter. This will test the
uploaded JSON but make no changes to the database.
A ZIP upload should contain a file named data.json
(PREFIX-data.json
is
also acceptable). This file’s content is parsed as JSON. Submission fields in
the JSON can refer to other files in the ZIP. For instance, this shell session
uploads a new submission with content paper.pdf
:
$ cat data.json
{
"object": "paper",
"pid": "new",
"title": "Aught: A Methodology for the Visualization of Scheme",
"authors": [{"name": "Nevaeh Gomez", "email": "ngomez@example.edu"}],
"submission": {"content_file": "paper.pdf"},
"status": "submitted"
}
$ zip upload.zip data.json paper.pdf
$ curl -H "Authorization: bearer hct_XXX" --data-binary @upload.zip -H "Content-Type: application/zip" SITEURL/api/paper
This shell session does the same, but using multipart/form-data
.
$ curl -H "Authorization: bearer hct_XXX" -F "json=<data.json" -F paper.pdf=@paper.pdf SITEURL/api/paper
The valid
response property is true
if and only if the modification was
valid. In non-dry-run requests, "valid": true
indicates that database changes
were committed.
The change_list
response property lists any modified field names. New
submissions have "pid"
as the first item in the list. change_list
contains
fields that the request attempted to modify; successful requests, erroneous
requests, and dry-run requests can all return nonempty change_list
s.
The response returns the modified submission object paper
property contains
the modified submission object.
Dry-run requests return change_list
and valid
properties, but not paper
properties, since no modifications are performed.
Administrators can use this endpoint to set some submission properties, such
as decision
, that have other endpoints as well.
Administrators can choose specific IDs for new submissions by setting p
(or
JSON pid
) to the chosen ID. Such a request will either modify an existing
submission or create a new submission with that ID. To avoid overwriting an
existing submission, set the submission JSON’s status
.if_unmodified_since
to 0
.
p | integer (pid) >= 1 Submission ID |
dry_run | boolean True checks input for errors, but does not save changes |
disable_users | boolean True disables any newly-created users (site administrators only) |
add_topics | boolean True automatically adds topics from input papers (site administrators only) |
notify | boolean False disables all email notifications (site administrators only) |
notify_authors | boolean False disables email notifications to authors (paper administrators only) |
reason | string Optional text included in notification emails |
json | string |
upload | string (upload_token) Examples: upload=hcupwhvGDVmHNYyDKdqeqA Upload token for large input file |
forceShow | boolean |
ok required | boolean |
Array of objects (message_list) Diagnostic list | |
dry_run | boolean True for |
change_list | Array of strings List of changed fields |
valid | boolean True if the modification was valid |
pid | any |
object (paper) JSON version of modified paper |
{- "ok": true,
- "message_list": [ ],
- "dry_run": true,
- "change_list": [
- "string"
], - "valid": true,
- "pid": null,
- "paper": {
- "object": "paper",
- "pid": 1,
- "status": "draft"
}
}
Delete the submission specified by p
, a submission ID.
p required | integer (pid) >= 1 Submission ID |
dry_run | boolean True checks input for errors, but does not save changes |
notify | boolean False disables all email notifications (site administrators only) |
notify_authors | boolean False disables email notifications to authors (paper administrators only) |
reason | string Optional text included in notification emails |
if_unmodified_since | string Don’t delete if modified since this time |
forceShow | boolean |
ok required | boolean |
Array of objects (message_list) Diagnostic list | |
dry_run | boolean True for |
change_list required | Array of strings
|
valid required | boolean True if the delete request was valid |
{- "ok": true,
- "message_list": [ ],
- "dry_run": true,
- "change_list": [
- "string"
], - "valid": true
}
Fetch submission objects matching a search.
The search is specified in the q
parameter (and other search parameters,
such as t
and qt
). All matching visible submissions are returned, as an
array of submission objects, in the response property papers
.
Since searches silently filter out non-viewable submissions, /papers?q=1010
and /paper?p=1010
can return different error messages. The /paper
request
might return an error like “Submission #1010 does not exist” or “You aren’t
allowed to view submission #1010”, whereas the /papers
request will return
no errors. To obtain warnings for missing submissions that were explicitly
listed in a query, supply a warn_missing=1
parameter.
warn_missing | boolean Get warnings for missing submissions |
q required | string (search_string) Examples: q=1-10 OR #ready Search query |
t | string (search_collection) Examples: t=s t=all Collection to search |
qt | string (search_qt) Search fields |
scoresort | string (search_scoresort) Examples: scoresort=counts scoresort=average Sort order for scores |
sort | string (search_sort) Examples: sort=id sort=-title Sort order |
reviewer | string (search_reviewer) Examples: reviewer=pcmember@uhcrp.edu Email of designated reviewer for search |
forceShow | boolean |
ok required | boolean |
Array of objects (message_list) Diagnostic list | |
Array of objects (paper) |
{- "ok": true,
- "message_list": [ ],
- "papers": [
- {
- "object": "paper",
- "pid": 1,
- "status": "draft"
}
]
}
Create or modify multiple submissions.
This administrator-only endpoint modifies multiple submissions at once. Its
request formats are similar to that of POST /{p}/paper
: it can accept a
JSON, ZIP, or form-encoded request body with a json
parameter, and ZIP and
form-encoded requests can also include attached files.
The JSON provided for /papers
should be an array of JSON objects. The
status_list
response property is an array with the same number of elements
as the input JSON. Component i of status_list
reports the status of update
i as an object with valid
, change_list
, and pid
properties; these
report the validity of the update, the list of changed fields, and the
submission ID of the modified submission.
The response message_list
contains messages relating to all modified
submissions. To filter out the messages for a single submission, use the
messages’ landmark
properties. landmark
is set to the integer index of the
relevant submission in the input JSON.
Alternately, you can provide a q
search query parameter and a single JSON
modification object lacking the pid
property. The JSON modification will be
applied to all papers returned by the q
search query.
dry_run | boolean True checks input for errors, but does not save changes |
disable_users | boolean True disables any newly-created users (administrators only) |
add_topics | boolean True automatically adds topics from input papers (administrators only) |
notify | boolean False does not notify contacts of changes (administrators only) |
json | string |
upload | string (upload_token) Examples: upload=hcupwhvGDVmHNYyDKdqeqA Defines upload token for large input file |
q | string (search_string) Examples: q=1-10 OR #ready Search query for match requests |
t | string (search_collection) Examples: t=s t=all Collection to search; defaults to |
qt | string (search_qt) Search fields |
sort | string (search_sort) Examples: sort=id sort=-title Sort order |
scoresort | string (search_scoresort) Examples: scoresort=counts scoresort=average Sort order for scores |
reviewer | string (search_reviewer) Examples: reviewer=pcmember@uhcrp.edu Email of designated reviewer for search |
notify_authors | any |
reason | any |
forceShow | boolean |
ok required | boolean |
Array of objects (message_list) Diagnostic list | |
Array of objects (paper) List of JSON versions of modified papers | |
dry_run | boolean True for |
Array of objects (update_status) List of lists of changed fields |
{- "ok": true,
- "message_list": [ ],
- "papers": [
- {
- "object": "paper",
- "pid": 1,
- "status": "draft"
}
], - "dry_run": true,
- "status_list": [
- {
- "valid": true,
- "change_list": [
- "string"
], - "pid": 1,
- "dry_run": true
}
]
}
p | integer (pid) >= 1 Submission ID |
doc | string (document_name) Examples: doc=testconf-paper1.pdf |
dt | integer (document_type) |
docid | integer (document_id) >= 1 Document ID |
soft | boolean |
ok required | boolean |
Array of objects (message_list) Diagnostic list | |
npages required | any |
nwords required | any |
problem_fields required | any |
has_error required | any |
docid required | any |
{- "ok": true,
- "message_list": [ ],
- "npages": null,
- "nwords": null,
- "problem_fields": null,
- "has_error": null,
- "docid": null
}
Upload large files to HotCRP for later use.
Servers limit how much data they will accept in a single request. The upload API uploads larger files over multiple requests. When an upload is complete, later requests can refer to that file using an upload token.
The lifecycle of an upload is as follows.
start=1
begins a new upload. This request should also
include a size
parameter to define the size of the uploaded file, if that
is known.token
field. This is a string like hcupwhvGDVmHNYyDKdqeqA
.
All subsequent requests relating to the upload must include this token as a
token
parameter.blob
parameter (which can be an attached file) contains the chunk itself; the
offset
parameter defines the offset of chunk relative to the file.finish=1
completes the upload. The server seals the upload
and responds with the file’s content hash. A finish=1
request will fail
unless all expected chunks have been received.start=1
and finish=1
requests can also include a chunk. The ranges
response field represents the ranges of bytes received so far.
The upload API is only available on sites that have enabled the document store.
p | integer (pid) >= 1 Submission ID |
start | boolean |
finish | boolean |
cancel | boolean |
token | string (upload_token) Examples: token=hcupwhvGDVmHNYyDKdqeqA Token for file upload |
offset | integer >= 0 Offset of |
length | integer >= 0 Length of |
size | integer >= 0 Size of uploaded file in bytes |
dtype | integer (document_type) (start only) Purpose of uploaded document; typically corresponds to a submission field ID |
temp | boolean (start only) If true, the uploaded file is expected to be temporary |
blob | any |
mimetype | string (mimetype) MIME type |
filename | string (start only) Name of uploaded file |
ok required | boolean |
Array of objects (message_list) Diagnostic list | |
token required | string (upload_token) Token for file upload |
dtype | integer (document_type) |
filename | string |
mimetype | string (mimetype) MIME type |
size | integer >= 0 |
Array of items (offset_range) | |
hash | string |
crc32 | string |
server_progress_loaded | integer |
server_progress_max | integer |
{- "ok": true,
- "message_list": [ ],
- "token": "hcupwhvGDVmHNYyDKdqeqA",
- "dtype": 0,
- "filename": "string",
- "mimetype": "application/pdf",
- "size": 0,
- "ranges": [
- [
- 0,
- 0
]
], - "hash": "string",
- "crc32": "string",
- "server_progress_loaded": 0,
- "server_progress_max": 0
}
These endpoints perform HotCRP assignments, including review assignments,
review preference settings, tags, and anything else that can be modified by
HotCRP’s bulk assignments interface. The general-purpose /assign
endpoint is
most useful; using /assign
, a user can perform any assignment for which they
have permission. Endpoints for specific kinds of assignment, such as decision,
discussion lead, and shepherd, are provided for the HotCRP web application’s
convenience.
Perform assignments, specified either as a JSON array or as an uploaded CSV file.
The assignments should be compatible with HotCRP’s bulk assignments format. They may be specified:
application/json
).text/csv
).assignments
(when the request
body has content-type application/x-www-form-urlencoded
or
multipart/form-data
).upload
parameter.JSON requests should parse to arrays of objects. Each object should contain at
least a pid
property and an action
property, where action
determines
what kind of assignment to run. Similarly, CSV uploads should contain at least
pid
and action
columns.
If the optional p
request parameter is set, HotCRP will only implement
assignments that affect that submission.
To test an assignment, supply a dry_run=1
parameter. This will parse the
uploaded assignment and report any errors, but make no changes to the
database.
The valid
response property is true
if and only if the assignments were
valid (had no errors). In non-dry-run requests, "valid": true
indicates that
any database changes were committed.
The response includes an assignments
property, which is an array of the
specific assignments performed (or, for dry-run requests, the specific
assignments that would be performed). Each entry in assignments
represents a
single action applied to a single submission. (This differs from input
assignments
entries, each of which might apply to many submissions specified
by a search.) If you’re not interested in the assignments
property, supply a
parameter of either summary=1
(to get summary assignment_actions
and
assignment_pids
properties) or quiet=1
(to get nothing).
p | integer (pid) >= 1 Submission ID |
dry_run | boolean True checks input for errors, but does not save changes |
assignments | string JSON |
upload | string (upload_token) Examples: upload=hcupwhvGDVmHNYyDKdqeqA Upload token for large input file |
quiet | any |
summary | any |
forceShow | boolean |
search | any |
ok required | boolean |
Array of objects (message_list) Diagnostic list | |
dry_run | any |
valid required | any |
assignments_header | any |
assignments | any |
assignment_actions | any |
assignment_pids | any |
papers | any |
ids | any |
groups | any |
search_params | any |
{- "ok": true,
- "message_list": [ ],
- "dry_run": null,
- "valid": null,
- "assignments_header": null,
- "assignments": null,
- "assignment_actions": null,
- "assignment_pids": null,
- "papers": null,
- "ids": null,
- "groups": null,
- "search_params": null
}
p required | integer (pid) >= 1 Submission ID |
ok required | boolean |
Array of objects (message_list) Diagnostic list | |
decision required | any |
decision_html required | any |
editable | any |
{- "ok": true,
- "message_list": [ ],
- "decision": null,
- "decision_html": null,
- "editable": null
}
p required | integer (pid) >= 1 Submission ID |
decision required | any |
ok required | boolean |
Array of objects (message_list) Diagnostic list | |
decision required | any |
decision_html required | any |
editable | any |
{- "ok": true,
- "message_list": [ ],
- "decision": null,
- "decision_html": null,
- "editable": null
}
p required | integer (pid) >= 1 Submission ID |
ok required | boolean |
Array of objects (message_list) Diagnostic list | |
lead required | any |
lead_html required | any |
color_classes | any |
{- "ok": true,
- "message_list": [ ],
- "lead": null,
- "lead_html": null,
- "color_classes": null
}
p required | integer (pid) >= 1 Submission ID |
lead required | any |
ok required | boolean |
Array of objects (message_list) Diagnostic list | |
lead required | any |
lead_html required | any |
color_classes | any |
{- "ok": true,
- "message_list": [ ],
- "lead": null,
- "lead_html": null,
- "color_classes": null
}
p required | integer (pid) >= 1 Submission ID |
ok required | boolean |
Array of objects (message_list) Diagnostic list | |
manager required | any |
manager_html required | any |
color_classes | any |
{- "ok": true,
- "message_list": [ ],
- "manager": null,
- "manager_html": null,
- "color_classes": null
}
p required | integer (pid) >= 1 Submission ID |
manager required | any |
ok required | boolean |
Array of objects (message_list) Diagnostic list | |
manager required | any |
manager_html required | any |
color_classes | any |
{- "ok": true,
- "message_list": [ ],
- "manager": null,
- "manager_html": null,
- "color_classes": null
}
p required | integer (pid) >= 1 Submission ID |
ok required | boolean |
Array of objects (message_list) Diagnostic list |
{- "ok": true,
- "message_list": [ ]
}
p required | integer (pid) >= 1 Submission ID |
ok required | boolean |
Array of objects (message_list) Diagnostic list | |
shepherd required | any |
shepherd_html required | any |
color_classes | any |
{- "ok": true,
- "message_list": [ ],
- "shepherd": null,
- "shepherd_html": null,
- "color_classes": null
}
p required | integer (pid) >= 1 Submission ID |
shepherd required | any |
ok required | boolean |
Array of objects (message_list) Diagnostic list | |
shepherd required | any |
shepherd_html required | any |
color_classes | any |
{- "ok": true,
- "message_list": [ ],
- "shepherd": null,
- "shepherd_html": null,
- "color_classes": null
}
Return IDs, and optionally other display fields, of submissions that match a search.
Pass the search query in the q
parameter. The list of matching submission
IDs is returned in the ids
response property, ordered according to the
search.
The t
, qt
, reviewer
, sort
, and scoresort
parameters can also affect
the search. t
defines the collection of submissions to search, where
t=viewable
checks all submissions the user can view. If t
is not provided,
HotCRP picks a default based on the user’s roles and the site’s current
configuration; for PC members and chairs, the typical default is t=s
, which
searches complete submissions.
Pass f
and format
parameters to retrieve display fields for each submission
in the search result.
format
is either csv
or html
, and requests CSV or HTML format for the
response data. f
is a string indicating the display fields to return, such as
title authors[full]
.
The response will contain fields
and papers
properties. fields
is an array
of objects defining the emitted display fields. Typically, each entry in
fields
corresponds to a member of f
, but some field requests can expand into
multiple display fields. papers
is an array of objects defining the exported
fields for each matching submission. Each papers
entry has a pid
property
with the submission ID, and properties corresponding to the fields
. The
papers
entries are in the same order as ids
. In some cases, the response
will additionally have a statistics
property defining overall statistics for
some of the requested fields.
As an example, this response might be returned for the search 10-12
with
format=csv
and f=title
.
{
"ok": true,
"ids": [10, 12],
"fields": [
{
"name": "title",
"title": "Title",
"order": 120,
"sort": "ascending"
}
],
"groups": [],
"papers": [
{
"pid": 10,
"title": "Active Bridging"
},
{
"pid": 12,
"title": "Dynamics of Random Early Detection"
}
]
}
Please note that html
format is unlikely to be useful outside the HotCRP web
application. The returned HTML uses elements, tag structures, and class names
suitable for HotCRP’s internal use, and may change at any time. Furthermore,
in some cases (such as f=allpref
), the returned data is compressed into a
field-specific format that the HotCRP web application expands.
The groups
response property is an array of search annotations, and is
returned for THEN
searches, LEGEND
searches, and searches on annotated
tags. Each groups
entry contains a position pos
, which is an integer index
into the search results. Annotations with pos
P
should appear immediately
before the submission at index P
in the result. A groups
entry may also
have other properties, including legend
(the textual legend corresponding to
the annotation), search
(for THEN
searches, the search string representing
the following results), and annoid
.
As an example, this response might be returned for the search 10-12 THEN 5-8
.
{
"ok": true,
"ids": [10, 12, 8],
"groups": [
{
"pos": 0,
"legend": "10-12",
"search": "10-12"
},
{
"pos": 2,
"legend": "5-8",
"search": "5-8"
}
]
}
The search_params
response property is a URL-encoded string defining all
relevant parameters for the search.
Set the hotlist
parameter to get a hotlist
response property, which is
used by the HotCRP browser Javascript to remember information about a list of
papers.
q required | string (search_string) Examples: q=1-10 OR #ready Search query |
t | string (search_collection) Examples: t=s t=all Collection to search |
f | string Space-separated field definitions |
format | string (search_field_format) Enum: "csv" "html" Format for returned submission fields ( |
qt | string (search_qt) Search fields |
sort | string (search_sort) Examples: sort=id sort=-title Sort order |
scoresort | string (search_scoresort) Examples: scoresort=counts scoresort=average Sort order for scores |
reviewer | string (search_reviewer) Examples: reviewer=pcmember@uhcrp.edu Email of designated reviewer for search |
report | string Report defining default view options |
warn_missing | boolean Get warnings for missing submissions |
hotlist | boolean Get a |
search | any |
ok required | boolean |
Array of objects (message_list) Diagnostic list | |
ids required | Array of integers (pid) [ items >= 1 ] |
required | Array of objects (tag_annotation) |
search_params required | string (encoded_search_parameters) URL-encoded search parameters |
object (hotlist) Properties of submission list or user list | |
fields | Array of objects |
papers | Array of objects |
statistics | any |
{- "ok": true,
- "message_list": [ ],
- "ids": [
- 1
], - "groups": [
- {
- "pos": 0,
- "annoid": 0,
- "tag": "discuss",
- "tagval": 0,
- "blank": true,
- "legend": "string"
}
], - "search_params": "q=&t=s&sort=id&forceShow=&report=pl",
- "hotlist": {
- "listid": "p/s/1-40",
- "description": "1-40 in Submitted",
- "urlbase": "search?t=s",
- "ids": "Q3ihaiilFkB"
}, - "fields": [
- { }
], - "papers": [
- { }
], - "statistics": null
}
Return a list of search actions accessible via HotCRP’s API.
Search actions perform actions on a set of papers specified via search. In the
HotCRP web application, search actions are shown underneath the search list;
examples include “Download > Review forms (zip)” and “Tag > Add to order”. The
/searchactions
API endpoint retrieves the search actions that the current user
can access programmatically via the /searchaction
API.
ok required | boolean |
Array of objects (message_list) Diagnostic list | |
required | Array of objects (search_action) List of available actions |
{- "ok": true,
- "message_list": [ ],
- "actions": [
- {
- "name": "string",
- "title": "string",
- "description": "string",
- "parameters": "string",
- "get": true,
- "post": true
}
]
}
Perform the search action specified by the action
parameter on the papers
defined by the q
and t
search parameters.
The action
parameter must correspond to the name
of a valid search action,
as returned from the /searchactions
API endpoint. Other parameters may be
provided; the /searchactions
response mentions relevant parameters for each
action.
Search action responses do not follow HotCRP’s typical conventions. Successful
responses may not use the JSON content type. For instance, the get/paper
action typically returns a ZIP file containing submission PDFs, and the
get/csv
action returns a CSV-formatted text file. Furthermore, successful JSON
responses may not be objects, or may not contain an ok
property; for example,
a successful response to a get/json
request is an array of objects.
Applications wanting predictable JSON responses should use other API endpoints.
Nevertheless, /searchaction
can be more convenient than using more
standardized APIs.
p | integer (pid) >= 1 Submission ID |
action | string Name of action |
q required | string (search_string) Examples: q=1-10 OR #ready Search query |
t | string (search_collection) Examples: t=s t=all Collection to search |
qt | string (search_qt) Search fields |
sort | string (search_sort) Examples: sort=id sort=-title Sort order |
report | any |
scoresort | string (search_scoresort) Examples: scoresort=counts scoresort=average Sort order for scores |
reviewer | string (search_reviewer) Examples: reviewer=pcmember@uhcrp.edu Email of designated reviewer for search |
ok required | boolean |
Array of objects (message_list) Diagnostic list |
{- "ok": true,
- "message_list": [ ]
}
Perform the search action specified by the action
parameter on the papers
defined by the q
and t
search parameters.
The request format for POST requests is the same as for GET requests.
p | integer (pid) >= 1 Submission ID |
action | string Name of action |
q required | string (search_string) Examples: q=1-10 OR #ready Search query |
t | string (search_collection) Examples: t=s t=all Collection to search |
qt | string (search_qt) Search fields |
sort | string (search_sort) Examples: sort=id sort=-title Sort order |
report | any |
scoresort | string (search_scoresort) Examples: scoresort=counts scoresort=average Sort order for scores |
reviewer | string (search_reviewer) Examples: reviewer=pcmember@uhcrp.edu Email of designated reviewer for search |
ok required | boolean |
Array of objects (message_list) Diagnostic list |
{- "ok": true,
- "message_list": [ ]
}
report | any |
q | string (search_string) Examples: q=1-10 OR #ready Search query |
ok required | boolean |
Array of objects (message_list) Diagnostic list | |
report required | any |
display_current required | any |
display_default required | any |
display_difference required | any |
display_default_message_list required | any |
{- "ok": true,
- "message_list": [ ],
- "report": null,
- "display_current": null,
- "display_default": null,
- "display_difference": null,
- "display_default_message_list": null
}
report | any |
q | string (search_string) Examples: q=1-10 OR #ready Search query |
display required | any |
ok required | boolean |
Array of objects (message_list) Diagnostic list | |
report required | any |
display_current required | any |
display_default required | any |
display_difference required | any |
display_default_message_list required | any |
{- "ok": true,
- "message_list": [ ],
- "report": null,
- "display_current": null,
- "display_default": null,
- "display_difference": null,
- "display_default_message_list": null
}
tag required | string (tag) ^~?~?[a-zA-Z@*_:.][-+a-zA-Z0-9?!@*_:.\/]*$ Examples: tag=discuss tag=For_Evaluation tag=~mine Tag |
encoded_search_parameters (string) or search_parameters (object) (search_parameter_specification) Examples: search=q= search={"q":"hello","t":"all"} |
ok required | boolean |
Array of objects (message_list) Diagnostic list | |
ids required | Array of integers (pid) [ items >= 1 ] |
required | Array of objects (tag_annotation) |
search_params required | string (encoded_search_parameters) URL-encoded search parameters |
object (hotlist) Properties of submission list or user list | |
tag required | string (tag) ^~?~?[a-zA-Z@*_:.][-+a-zA-Z0-9?!@*_:.\/]*$ Tag |
editable required | boolean |
required | Array of objects (tag_annotation) |
{- "ok": true,
- "message_list": [ ],
- "ids": [
- 1
], - "groups": [
- {
- "pos": 0,
- "annoid": 0,
- "tag": "discuss",
- "tagval": 0,
- "blank": true,
- "legend": "string"
}
], - "search_params": "q=&t=s&sort=id&forceShow=&report=pl",
- "hotlist": {
- "listid": "p/s/1-40",
- "description": "1-40 in Submitted",
- "urlbase": "search?t=s",
- "ids": "Q3ihaiilFkB"
}, - "tag": "discuss",
- "editable": true,
- "anno": [
- {
- "pos": 0,
- "annoid": 0,
- "tag": "discuss",
- "tagval": 0,
- "blank": true,
- "legend": "string"
}
]
}
tag required | any |
search | any |
required | Array of objects (tag_annotation) |
ok required | boolean |
Array of objects (message_list) Diagnostic list | |
ids required | Array of integers (pid) [ items >= 1 ] |
required | Array of objects (tag_annotation) |
search_params required | string (encoded_search_parameters) URL-encoded search parameters |
object (hotlist) Properties of submission list or user list | |
tag required | string (tag) ^~?~?[a-zA-Z@*_:.][-+a-zA-Z0-9?!@*_:.\/]*$ Tag |
editable required | boolean |
required | Array of objects (tag_annotation) |
{- "ok": true,
- "message_list": [ ],
- "ids": [
- 1
], - "groups": [
- {
- "pos": 0,
- "annoid": 0,
- "tag": "discuss",
- "tagval": 0,
- "blank": true,
- "legend": "string"
}
], - "search_params": "q=&t=s&sort=id&forceShow=&report=pl",
- "hotlist": {
- "listid": "p/s/1-40",
- "description": "1-40 in Submitted",
- "urlbase": "search?t=s",
- "ids": "Q3ihaiilFkB"
}, - "tag": "discuss",
- "editable": true,
- "anno": [
- {
- "pos": 0,
- "annoid": 0,
- "tag": "discuss",
- "tagval": 0,
- "blank": true,
- "legend": "string"
}
]
}
p required | integer (pid) >= 1 Submission ID |
ok required | boolean |
Array of objects (message_list) Diagnostic list | |
pid required | any |
{- "ok": true,
- "message_list": [ ],
- "pid": null
}
p required | integer (pid) >= 1 Submission ID |
tag required | string (tag) ^~?~?[a-zA-Z@*_:.][-+a-zA-Z0-9?!@*_:.\/]*$ Examples: tag=discuss tag=For_Evaluation tag=~mine Tag |
ok required | boolean |
Array of objects (message_list) Diagnostic list | |
vote_report required | any |
{- "ok": true,
- "message_list": [ ],
- "vote_report": null
}
p required | integer (pid) >= 1 Submission ID |
u | any |
ok required | boolean |
Array of objects (message_list) Diagnostic list | |
value required | any |
pref required | any |
prefexp | any |
topic_score | any |
{- "ok": true,
- "message_list": [ ],
- "value": null,
- "pref": null,
- "prefexp": null,
- "topic_score": null
}
p required | integer (pid) >= 1 Submission ID |
u | any |
pref required | any |
ok required | boolean |
Array of objects (message_list) Diagnostic list | |
value required | any |
pref required | any |
prefexp | any |
topic_score | any |
{- "ok": true,
- "message_list": [ ],
- "value": null,
- "pref": null,
- "prefexp": null,
- "topic_score": null
}
p required | integer (pid) >= 1 Submission ID |
ok required | boolean |
Array of objects (message_list) Diagnostic list |
{- "ok": true,
- "message_list": [ ]
}
p required | integer (pid) >= 1 Submission ID |
required | integer or string (rid) Review ID |
ok required | boolean |
Array of objects (message_list) Diagnostic list | |
action required | any |
review_site_relative required | any |
{- "ok": true,
- "message_list": [ ],
- "action": null,
- "review_site_relative": null
}
p required | integer (pid) >= 1 Submission ID |
required | integer or string (rid) Review ID |
email required | any |
ok required | boolean |
Array of objects (message_list) Diagnostic list | |
action required | any |
review_site_relative required | any |
{- "ok": true,
- "message_list": [ ],
- "action": null,
- "review_site_relative": null
}
p required | integer (pid) >= 1 Submission ID |
required | integer or string (rid) Review ID |
reason | any |
ok required | boolean |
Array of objects (message_list) Diagnostic list | |
action required | any |
reason | any |
review_site_relative required | any |
{- "ok": true,
- "message_list": [ ],
- "action": null,
- "reason": null,
- "review_site_relative": null
}
p required | integer (pid) >= 1 Submission ID |
round | any |
email required | any |
given_name | any |
family_name | any |
name | any |
affiliation | any |
override | any |
reason | any |
ok required | boolean |
Array of objects (message_list) Diagnostic list |
{- "ok": true,
- "message_list": [ ]
}
p required | integer (pid) >= 1 Submission ID |
required | integer or string (rid) Review ID |
ok required | boolean |
Array of objects (message_list) Diagnostic list | |
ratings | any |
user_rating | any |
{- "ok": true,
- "message_list": [ ],
- "ratings": null,
- "user_rating": null
}
p required | integer (pid) >= 1 Submission ID |
required | integer or string (rid) Review ID |
user_rating required | any |
ok required | boolean |
Array of objects (message_list) Diagnostic list | |
ratings | any |
user_rating | any |
{- "ok": true,
- "message_list": [ ],
- "ratings": null,
- "user_rating": null
}
These endpoints query and modify submission comments.
Each comment has a visibility and a topic (which in the UI is called a thread). These values control who can see the comment.
The default comment visibility is "rev"
, which makes the comment visible to
PC and external reviewers. Other values are "admin"
(visible only to
submission administrators and the comment author), "pc"
(visible to PC
reviewers, but not external reviewers), and "au"
(visible to authors and
reviewers).
The default comment topic is "rev"
, the review thread. Comments on the
review thread are visible to users who can see reviews; if you can’t see
reviews, you can’t see the review thread. Other comment topics are "paper"
,
the submission thread (visible to anyone who can see the submission), and
"dec"
, the decision thread (visible to users who can see the submission’s
decision).
Return a comment object specified by ID.
The c
parameter specifies the comment to return. If the comment exists and
the user can view it, it will be returned in the comment
component of the
response. Otherwise, an error response is returned.
If c
is omitted, all viewable comments are returned in a comments
list.
p required | integer (pid) >= 1 Submission ID |
content | boolean False omits comment content from response |
integer or string (cid) Comment ID |
ok required | boolean |
Array of objects (message_list) Diagnostic list | |
object (comment) Comment representation | |
Array of objects (comment) |
{- "ok": true,
- "message_list": [ ],
- "comment": {
- "object": "comment",
- "pid": 1,
- "cid": 1,
- "ordinal": "string",
- "editable": true,
- "viewer_owned": true,
- "visibility": "admin",
- "topic": "paper",
- "blind": true,
- "draft": true,
- "collapsed": true,
- "response": "string",
- "author_editable": true,
- "by_author": true,
- "by_shepherd": true,
- "format": 0,
- "review_token": "string",
- "tags": "string",
- "color_classes": "tag-red tagbg",
- "author": "string",
- "author_email": "string",
- "author_hidden": true,
- "author_pseudonym": "string",
- "author_pseudonymous": true,
- "modified_at": 0,
- "modified_at_obscured": true,
- "modified_at_text": "string",
- "text": "string",
- "docs": [
- null
], - "word_count": 0
}, - "comments": [
- {
- "object": "comment",
- "pid": 1,
- "cid": 1,
- "ordinal": "string",
- "editable": true,
- "viewer_owned": true,
- "visibility": "admin",
- "topic": "paper",
- "blind": true,
- "draft": true,
- "collapsed": true,
- "response": "string",
- "author_editable": true,
- "by_author": true,
- "by_shepherd": true,
- "format": 0,
- "review_token": "string",
- "tags": "string",
- "color_classes": "tag-red tagbg",
- "author": "string",
- "author_email": "string",
- "author_hidden": true,
- "author_pseudonym": "string",
- "author_pseudonymous": true,
- "modified_at": 0,
- "modified_at_obscured": true,
- "modified_at_text": "string",
- "text": "string",
- "docs": [
- null
], - "word_count": 0
}
]
}
Create, modify, or delete a comment specified by ID.
The c
parameter specifies the comment to modify. It can be a numeric comment
ID; new
, to create a new comment; or response
(or a compound like
R2response
), to create or modify a named response.
Setting delete=1
deletes the specified comment, and the response does not
contain a comment
component. Otherwise the comment is created or modified,
and the response comment
component contains the new comment.
Comment attachments may be uploaded as files (requiring a request body in
multipart/form-data
encoding), or using the upload API.
To upload a single new attachment:
attachment:1
body parameter to new
attachment:1:file
as a uploaded file containing the relevant dataattachment:1:upload
body parameterTo upload multiple attachments, number them sequentially (attachment:2
,
attachment:3
, and so forth). To delete an existing attachment, supply its
docid
as an attachment:N
parameter, and set attachment:N:delete
to 1.
p required | integer (pid) >= 1 Submission ID |
override | boolean |
delete | boolean |
required | integer or string (cid) Comment ID |
text | string |
tags | string |
topic | string (comment_topic) Enum: "paper" "rev" "dec" |
visibility | string (comment_visibility) Enum: "admin" "pc" "rev" "au" |
response | string |
ready | boolean |
draft | boolean |
blind | boolean |
by_author | boolean |
review_token | string |
attachment | any |
ok required | boolean |
Array of objects (message_list) Diagnostic list | |
object (comment) Comment representation | |
conflict | any |
{- "ok": true,
- "message_list": [ ],
- "comment": {
- "object": "comment",
- "pid": 1,
- "cid": 1,
- "ordinal": "string",
- "editable": true,
- "viewer_owned": true,
- "visibility": "admin",
- "topic": "paper",
- "blind": true,
- "draft": true,
- "collapsed": true,
- "response": "string",
- "author_editable": true,
- "by_author": true,
- "by_shepherd": true,
- "format": 0,
- "review_token": "string",
- "tags": "string",
- "color_classes": "tag-red tagbg",
- "author": "string",
- "author_email": "string",
- "author_hidden": true,
- "author_pseudonym": "string",
- "author_pseudonymous": true,
- "modified_at": 0,
- "modified_at_obscured": true,
- "modified_at_text": "string",
- "text": "string",
- "docs": [
- null
], - "word_count": 0
}, - "conflict": null
}
p | integer (pid) >= 1 Submission ID |
ok required | boolean |
Array of objects (message_list) Diagnostic list | |
mentioncompletion required | any |
{- "ok": true,
- "message_list": [ ],
- "mentioncompletion": null
}
p | integer (pid) >= 1 Submission ID |
track required | any |
tracker_start_at | any |
hotlist-info | any |
ok required | boolean |
Array of objects (message_list) Diagnostic list |
{- "ok": true,
- "message_list": [ ]
}
stopall | any |
tr | any |
has_tr | any |
ok required | boolean |
Array of objects (message_list) Diagnostic list | |
tracker | any |
tracker_recent | any |
tracker_status | any |
now | any |
tracker_status_at required | any |
tracker_eventid required | any |
new_trackerid | any |
tracker_site | any |
{- "ok": true,
- "message_list": [ ],
- "tracker": null,
- "tracker_recent": null,
- "tracker_status": null,
- "now": null,
- "tracker_status_at": null,
- "tracker_eventid": null,
- "new_trackerid": null,
- "tracker_site": null
}
p | integer (pid) >= 1 Submission ID |
email required | any |
potential_conflict | any |
ok required | boolean |
Array of objects (message_list) Diagnostic list | |
match required | any |
any | |
given_name | any |
family_name | any |
affiliation | any |
potential_conflict | any |
orcid | any |
country | any |
{- "ok": true,
- "message_list": [ ],
- "match": null,
- "email": null,
- "given_name": null,
- "family_name": null,
- "affiliation": null,
- "potential_conflict": null,
- "orcid": null,
- "country": null
}
ui | any |
ok required | boolean |
Array of objects (message_list) Diagnostic list | |
pc required | any |
tags | any |
sort | any |
p | any |
{- "ok": true,
- "message_list": [ ],
- "pc": null,
- "tags": null,
- "sort": null,
- "p": null
}
p | integer (pid) >= 1 Submission ID |
accept | any |
clickthrough_id required | any |
clickthrough_type required | any |
clickthrough_time required | any |
ok required | boolean |
Array of objects (message_list) Diagnostic list |
{- "ok": true,
- "message_list": [ ]
}
from | any |
ok required | boolean |
Array of objects (message_list) Diagnostic list | |
from required | any |
to required | any |
rows required | any |
more required | any |
{- "ok": true,
- "message_list": [ ],
- "from": null,
- "to": null,
- "rows": null,
- "more": null
}
p required | integer (pid) >= 1 Submission ID |
u | any |
following required | any |
ok required | boolean |
Array of objects (message_list) Diagnostic list | |
following required | any |
{- "ok": true,
- "message_list": [ ],
- "following": null
}
p | integer (pid) >= 1 Submission ID |
template | any |
integer or string (rid) Review ID | |
any | |
given_name | any |
family_name | any |
affiliation | any |
reason | any |
width | any |
text | any |
subject | any |
body | any |
ok required | boolean |
Array of objects (message_list) Diagnostic list | |
templates | any |
subject | any |
body | any |
{- "ok": true,
- "message_list": [ ],
- "templates": null,
- "subject": null,
- "body": null
}
email required | any |
ok required | boolean |
Array of objects (message_list) Diagnostic list | |
email required | any |
disabled required | any |
placeholder required | any |
{- "ok": true,
- "message_list": [ ],
- "email": null,
- "disabled": null,
- "placeholder": null
}
email required | any |
disable | any |
enable | any |
sendinfo | any |
ok required | boolean |
Array of objects (message_list) Diagnostic list | |
email required | any |
disabled required | any |
placeholder required | any |
{- "ok": true,
- "message_list": [ ],
- "email": null,
- "disabled": null,
- "placeholder": null
}
formula required | any |
ok required | boolean |
Array of objects (message_list) Diagnostic list | |
formulas required | any |
{- "ok": true,
- "message_list": [ ],
- "formulas": null
}
ok required | boolean |
Array of objects (message_list) Diagnostic list | |
dry_run | any |
change_list | any |
settings required | any |
{- "ok": true,
- "message_list": [ ],
- "dry_run": null,
- "change_list": null,
- "settings": null
}
dry_run | any |
reset | any |
filename | any |
filter | any |
exclude | any |
settings | any |
ok required | boolean |
Array of objects (message_list) Diagnostic list | |
dry_run | any |
change_list | any |
settings required | any |
{- "ok": true,
- "message_list": [ ],
- "dry_run": null,
- "change_list": null,
- "settings": null
}
ok required | boolean |
Array of objects (message_list) Diagnostic list | |
samples required | any |
types required | any |
{- "ok": true,
- "message_list": [ ],
- "samples": null,
- "types": null
}
ok required | boolean |
Array of objects (message_list) Diagnostic list | |
setting_descriptions required | any |
{- "ok": true,
- "message_list": [ ],
- "setting_descriptions": null
}
ok required | boolean |
Array of objects (message_list) Diagnostic list | |
samples required | any |
types required | any |
{- "ok": true,
- "message_list": [ ],
- "samples": null,
- "types": null
}
job required | any |
ok required | boolean |
Array of objects (message_list) Diagnostic list | |
update_at required | any |
status | any |
{- "ok": true,
- "message_list": [ ],
- "update_at": null,
- "status": null
}
error required | any |
url | any |
lineno | any |
colno | any |
stack | any |
ok required | boolean |
Array of objects (message_list) Diagnostic list |
{- "ok": true,
- "message_list": [ ]
}
confirm | any |
reason | any |
any | |
password | any |
totpcode | any |
ok required | boolean |
Array of objects (message_list) Diagnostic list |
{- "ok": true,
- "message_list": [ ]
}
v required | any |
ok required | boolean |
Array of objects (message_list) Diagnostic list | |
sessioninfo required | any |
{- "ok": true,
- "message_list": [ ],
- "sessioninfo": null
}
message_list required | any |
ok required | boolean |
Array of objects (message_list) Diagnostic list | |
smsg required | any |
{- "ok": true,
- "message_list": [ ],
- "smsg": null
}
ok required | boolean |
Array of objects (message_list) Diagnostic list | |
any | |
given_name | any |
family_name | any |
affiliation | any |
{- "ok": true,
- "message_list": [ ],
- "email": null,
- "given_name": null,
- "family_name": null,
- "affiliation": null
}