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-like 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
.
Parameters are provided in query strings or the request body, typically using
form encoding.
Some parameters are formatted as JSON. Some complex requests define logical
objects using structured keys, such as named_search/1/q
. 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; ok
is
true
if the request succeeded and false
otherwise. 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.
Return a submission object specified by p
, a submission ID.
All visible information about submission fields, tags, and overall status are
returned in the paper
response property, which defines a submission object.
Error messages—for instance, about permission errors or nonexistent
submissions—are returned in message_list
.
Submission objects are formatted based on the submission form. They have an
object
property set to "paper"
, a pid
, and a status
. Other properties
are provided based on which submission fields exist and whether the accessing
user can see them.
p | integer (pid) >= 1 Submission ID |
forceShow | boolean False to not override administrator conflict |
ok required | boolean |
Array of objects (message_list) Diagnostic list | |
object (paper) |
{- "ok": true,
- "message_list": [ ],
- "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, however, 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
If the modification succeeds, the response’s paper
property contains the
modified submission object.
The change_list
property is a list of names of the modified fields. 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 valid
property is true
if and only if the modification was valid. In
non-dry-run requests, valid: true
indicates that database changes were
committed.
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; just set 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 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 | |
object (paper) JSON version of modified paper | |
dry_run | boolean True for |
change_list | Array of strings List of changed fields |
valid | boolean True if the modification was valid |
{- "ok": true,
- "message_list": [ ],
- "paper": {
- "object": "paper",
- "pid": 1,
- "status": "draft"
}, - "dry_run": true,
- "change_list": [
- "string"
], - "valid": true
}
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 |
{- "ok": true,
- "message_list": [ ]
}
Retrieve submission objects matching a search.
The search is specified in the q
parameter; all matching visible papers are
returned. Other search parameters (t
, qt
) are accepted too. The response
property papers
is an array of matching submission objects.
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. Response
properties papers
, change_lists
, and valid
are arrays with the same
number of elements as the input JSON; component i of each response property
contains the result for the ith submission object in the input JSON.
Alternately, you can provide a q
search query parameter and a single JSON
object. The JSON object must not have a pid
property. The JSON modification
will be applied to all papers returned by the q
search query.
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.
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 |
change_lists | Array of strings[ items ] List of lists of changed fields |
valid | Array of booleans List of validity checks |
{- "ok": true,
- "message_list": [ ],
- "papers": [
- {
- "object": "paper",
- "pid": 1,
- "status": "draft"
}
], - "dry_run": true,
- "change_lists": [
- [
- "string"
]
], - "valid": [
- 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
}
redirect | string |
p | integer (pid) >= 1 Submission ID |
assignments required | any |
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 | |
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 of submissions that match a search.
Pass the search query in the q
parameter. The list of matching IDs is
returned in the ids
response property.
The t
, qt
, reviewer
, sort
, and scoresort
parameters can also affect
the search. t
defines the collection of submissions to search. t=viewable
checks all submissions the user can view; the default collection is often
narrower (a typical default is t=s
, which searches complete submissions).
The groups
response property is an array of annotations that apply to the
search, and is returned for THEN
searches, LEGEND
searches, and searches
on tags with annotations. Each annotation contains a position pos
, and may
also have a legend
, a search
, an annoid
, and other properties. pos
is
an integer index into the ids
array; it ranges from 0 to the number of items
in that array. Annotations with a given pos
should appear before the paper
at that index in the ids
array. For instance, this response might be
returned for the search 10-12 THEN 15-18
:
{
"ok": true,
"message_list": [],
"ids": [10, 12, 18],
"groups": [
{
"pos": 0,
"legend": "10-12",
"search": "10-12"
},
{
"pos": 2,
"legend": "15-18",
"search": "15-18"
}
]
}
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 |
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 | any |
warn_missing | 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) |
required | object (hotlist) Properties of submission list or user list |
search_params required | string (encoded_search_parameters) URL-encoded search parameters |
{- "ok": true,
- "message_list": [ ],
- "ids": [
- 1
], - "groups": [
- {
- "pos": 0,
- "annoid": 0,
- "tag": "discuss",
- "tagval": 0,
- "blank": true,
- "legend": "string"
}
], - "hotlist": {
- "listid": "p/s/1-40",
- "description": "1-40 in Submitted",
- "urlbase": "search?t=s",
- "ids": "Q3ihaiilFkB"
}, - "search_params": "q=&t=s&sort=id&forceShow=&report=pl"
}
f required | any |
session | any |
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 |
reviewer | string (search_reviewer) Examples: reviewer=pcmember@uhcrp.edu Email of designated reviewer for search |
sort | string (search_sort) Examples: sort=id sort=-title Sort order |
scoresort | string (search_scoresort) Examples: scoresort=counts scoresort=average Sort order for scores |
ok required | boolean |
Array of objects (message_list) Diagnostic list | |
fields required | any |
data required | any |
stat | any |
classes | any |
attr | any |
{- "ok": true,
- "message_list": [ ],
- "fields": null,
- "data": null,
- "stat": null,
- "classes": null,
- "attr": null
}
p | integer (pid) >= 1 Submission ID |
action | any |
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) |
required | object (hotlist) Properties of submission list or user list |
search_params required | string (encoded_search_parameters) URL-encoded search parameters |
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"
}
], - "hotlist": {
- "listid": "p/s/1-40",
- "description": "1-40 in Submitted",
- "urlbase": "search?t=s",
- "ids": "Q3ihaiilFkB"
}, - "search_params": "q=&t=s&sort=id&forceShow=&report=pl",
- "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) |
required | object (hotlist) Properties of submission list or user list |
search_params required | string (encoded_search_parameters) URL-encoded search parameters |
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"
}
], - "hotlist": {
- "listid": "p/s/1-40",
- "description": "1-40 in Submitted",
- "urlbase": "search?t=s",
- "ids": "Q3ihaiilFkB"
}, - "search_params": "q=&t=s&sort=id&forceShow=&report=pl",
- "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 | |
tag required | any |
report required | any |
{- "ok": true,
- "message_list": [ ],
- "tag": null,
- "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 | |
found required | any |
any | |
given_name | any |
family_name | any |
affiliation | any |
potential_conflict | any |
orcid | any |
country | any |
{- "ok": true,
- "message_list": [ ],
- "found": 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
}
dry_run | any |
reset | any |
filename | 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": [ ]
}
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
}