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.
A POST request whose :method: query parameter is set to GET is treated as
if it were a GET request. This can help work around web server URL length
limits.
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 required | integer (pid) >= 1 Examples:
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"
}
}Delete the submission specified by p, a submission ID.
| p required | integer (pid) >= 1 Examples:
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 |
| valid required | boolean True if the delete request was valid |
| change_list required | Array of strings
|
{- "ok": true,
- "message_list": [ ],
- "dry_run": true,
- "valid": true,
- "change_list": [
- "string"
]
}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_lists.
The paper response property is 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 Examples:
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 | integer ID of modified submission |
object (paper) JSON of modified submission |
{- "ok": true,
- "message_list": [ ],
- "dry_run": true,
- "change_list": [
- "string"
], - "valid": true,
- "pid": 0,
- "paper": {
- "object": "paper",
- "pid": 1,
- "status": "draft"
}
}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
}
]
}These endpoints query documents associated with HotCRP submissions, reviews,
and comments. The /upload endpoint can be used to upload a large file using
multiple requests; this file can be a document or a temporary file intended
for input to another API.
Fetch a document and return it in the response body. Specify the document to
return either with the doc parameter, which names the document using a pattern
like testconf-paper1.pdf, or the p, dt, and optionally attachment
parameters, which define the submission ID, submission field, and attachment
name.
The hash and docid parameters let administrators and authors select a
specific version of a document. hash selects a document by hash, and docid
by internal document ID. Responses to requests with hash or docid are
usually cacheable.
Successful requests (HTTP status code 200) return the requested document as the
response, without any JSON wrapper. Find the document’s MIME type using the
response’s Content-Type header. Unsuccessful requests (HTTP status code 300 or
higher) usually return a JSON object with ok set to false and a
message_list describing the error.
This API understands conditional requests with HTTP headers If-Match,
If-None-Match, If-Modified-Since, and If-Unmodified-Since, and many
responses include ETag and Last-Modified HTTP headers. It also understands
range requests.
| p | integer (pid) >= 1 Examples:
Submission ID |
| doc | string (document_name) Examples:
Document name |
| dt | integer (document_type) Examples:
Document type |
| attachment | string Examples:
Filename of document within multi-document field |
| hash | string (document_hash) >= 40 characters ^(\w+-)?[0-9a-f]{40,}$ Examples:
Hash of document |
| docid | integer (document_id) >= 1 Examples:
Document ID |
| ok required | boolean |
Array of objects (message_list) Diagnostic list |
{- "ok": true,
- "message_list": [ ]
}Fetch information about all versions of a document accessible to the requesting
user. Use the doc parameter to specify a document by name, or p and dt to
specify it by type.
| p | integer (pid) >= 1 Examples:
Submission ID |
| doc | string (document_name) Examples:
Document name |
| dt | integer (document_type) Examples:
Document type |
| ok required | boolean |
Array of objects (message_list) Diagnostic list | |
| dt required | integer (document_type) Type of document |
required | Array of objects (document_history_entry) |
{- "ok": true,
- "message_list": [ ],
- "dt": 0,
- "document_history": [
- {
- "hash": "sha2-f4640a0c20c9797f625a4071c9b53c633d2eb9347695c83228adfeddc516c656",
- "at": 1760706447,
- "mimetype": "application/pdf",
- "size": 187698,
- "filename": "relationship-between-interrupts.pdf",
- "active": true,
}
]
}Run HotCRP’s PDF format checker on a specified document. A human-readable
response is returned in message_list. The problem_fields response property
lists the names of any PDF checks that failed; examples include "papersize",
"pagelimit", "columns", "textblock", "bodyfontsize", "bodylineheight",
and "wordlimit".
| p | integer (pid) >= 1 Examples:
Submission ID |
| doc | string (document_name) Examples:
Document name |
| dt | integer (document_type) Examples:
Document type |
| docid | integer (document_id) >= 1 Examples:
Document ID |
| soft | boolean |
| attachment | string Examples:
Filename of document within multi-document field |
| hash | string (document_hash) >= 40 characters ^(\w+-)?[0-9a-f]{40,}$ Examples:
Hash of document |
| ok required | boolean |
Array of objects (message_list) Diagnostic list | |
required | null or integer (nullable_int) |
required | null or integer (nullable_int) |
| problem_fields required | Array of strings |
| has_error required | boolean |
| docid required | integer (document_id) >= 1 Document ID |
{- "ok": true,
- "message_list": [ ],
- "npages": 2,
- "nwords": 2,
- "problem_fields": [
- "string"
], - "has_error": true,
- "docid": 1
}Fetch the contents of a ZIP, .tar, .tar.gz, .tar.bz2, or .tar.xz archive. The
contents are returned as a list of string filenames. The consolidated=1
parameter requests an additional consolidated_listing, which returns a
preformatted string that uses {} notation to represent subdirectories; for
instance, subdir/{file1.txt, file2.txt}.
| p | integer (pid) >= 1 Examples:
Submission ID |
| consolidated | boolean True requests a |
| doc | string (document_name) Examples:
Document name |
| dt | integer (document_type) Examples:
Document type |
| docid | integer (document_id) >= 1 Examples:
Document ID |
| attachment | string Examples:
Filename of document within multi-document field |
| version | any |
| ok required | boolean |
Array of objects (message_list) Diagnostic list | |
| listing required | Array of strings List of archive elements |
| consolidated_listing | string Parsed contents of archive |
{- "ok": true,
- "message_list": [ ],
- "listing": [
- "string"
], - "consolidated_listing": "string"
}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 Examples:
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 |
| dt | 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 |
| dt | integer (document_type) Type of document |
| filename | string |
| mimetype | string (mimetype) MIME type |
| size | integer >= 0 |
Array of items (offset_range) [ items = 2 items ] | |
| hash | string |
| crc32 | string |
| progress_value | integer |
| progress_max | integer |
{- "ok": true,
- "message_list": [ ],
- "token": "hcupwhvGDVmHNYyDKdqeqA",
- "dt": 0,
- "filename": "string",
- "mimetype": "application/pdf",
- "size": 0,
- "ranges": [
- [
- 0,
- 0
]
], - "hash": "string",
- "crc32": "string",
- "progress_value": 0,
- "progress_max": 0
}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.
f defines the display fields to return. An example is title authors[full].
Obtain the available display fields with the /displayfields API. format is
either csv or html, and requests CSV or HTML format for the response data.
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 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 |
| session | 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": [
- {
- "name": "edit",
- "type": "bool"
}
], - "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 Examples:
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 Examples:
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": [ ]
}Return a list of all supported display fields. Display fields can be requested
in the web UI (search for show:FIELDNAME) or in the API (supply f=FIELDNAME
to the /search endpoint).
| ok required | boolean |
Array of objects (message_list) Diagnostic list | |
required | Array of objects (display_field) |
{- "ok": true,
- "message_list": [ ],
- "fields": [
- {
- "name": "abstract",
- "description": "<0>Abstract"
}
]
}| 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 Examples:
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 Examples:
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 Examples:
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 Examples:
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
}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. /assign lets users perform any
assignment for which they have permission. /autoassign lets administrators
compute assignments automatically.
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 assignments 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. CSV assignments must contain a header, which
should specify at least pid and action columns. (The /assigners endpoint
lists the available actions.)
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 output property, which is an array of the specific
assignments performed (or, for dry-run requests, the specific assignments that
would have been performed). Each entry represents a single action applied to a
single submission. (This differs from input assignments entries, each of which
might apply to many submissions.) If you’re not interested in the output
property, supply either summary=1 (to get summary assigned_actions and
assigned_pids properties) or quiet=1 (to get nothing).
If the optional p request parameter is set, HotCRP will only implement
assignments that affect that submission.
| p | integer (pid) >= 1 Examples:
Submission ID |
| dry_run | boolean True checks input for errors, but does not save changes |
| upload | string (upload_token) Examples: upload=hcupwhvGDVmHNYyDKdqeqA Upload token for JSON or CSV assignments |
| quiet | boolean True omits assignment information from response |
| summary | boolean True omits complete assignment from response |
| csv | boolean True uses CSV format in response |
| forceShow | boolean Explicit false means chair conflicts are not overridden |
encoded_search_parameters (string) or search_parameters (object) (search_parameter_specification) Examples: search=q= search={"q":"hello","t":"all"} |
| assignments | string JSON or CSV assignments |
| ok required | boolean |
Array of objects (message_list) Diagnostic list | |
| dry_run | boolean True if request was a dry run |
| valid required | boolean True if the assignments were valid |
| assigned_actions | Array of strings List of action names included in eventual assignment |
| assigned_pids | Array of integers (pid) [ items >= 1 ] List of submission IDs changed by assignment |
| output | any Resulting assignments, as JSON list or CSV |
| output_header | Array of strings CSV header if |
| papers | any |
| ids | any |
| groups | any |
| search_params | any |
{- "ok": true,
- "message_list": [ ],
- "dry_run": true,
- "valid": true,
- "assigned_actions": [
- "string"
], - "assigned_pids": [
- 1
], - "output": null,
- "output_header": [
- "string"
], - "papers": null,
- "ids": null,
- "groups": null,
- "search_params": null
}List all assignment actions understood by this HotCRP, including their parameters.
| ok required | boolean |
Array of objects (message_list) Diagnostic list | |
required | Array of objects (assignment_action) |
{- "ok": true,
- "message_list": [ ],
- "assigners": [
- {
- "name": "review",
- "description": "<0>Assign review",
- "parameters": [
- {
- "name": "user",
- "type": "user",
- "required": true
}, - {
- "name": "review_type",
- "type": "rtype",
- "required": true
}, - {
- "name": "review_round",
- "type": "round"
}
]
}
]
}Compute and optionally perform an automatic assignment.
Specify the autoassignment action with the autoassigner parameter, and the
submissions to assign with the q parameter. The /autoassigners endpoint
lists the available autoassignment actions.
Most autoassignment actions take additional parameters and a set of PC members
to assign. Supply these in the u, disjoint, and param parameters. u
defines the assignable PC members; disjoint defines the classes of PC
members that should not be co-assigned; and param defines additional
autoassigner parameters, such as the number of assignments to make or the type
of review to create.
The u, disjoint, and param parameters may be supplied multiple times,
either as a single JSON-formatted array string named PNAME or as multiple
strings named PNAME[]. For instance, /autoassign?u=%5B1,2%5D and
/autoassign?u%5B%5D=1&u%5B%5D=2 each supply two u arguments, 1 and 2.
Each u argument is a search string defining a set of users. Valid strings
are user IDs (1), emails (kohler@g.harvard.edu), or tags (#heavy).
Prefix a string with a hyphen - to remove matching users from the assignable
set.
Each disjoint argument is a comma-separated list of users that should not be
coassigned. Again, users can be defined using IDs, emails, or tags.
Each param argument defines a parameter for the autoassignment action, and
should be a string with the format NAME=VALUE. The parameters required or
understood by each action are listed by the /autoassigners endpoint.
To test an assignment, supply the dry_run=1 parameter. This will create an
assignment and test it, reporting any errors, but will make no changes to the
database. Supply minimal_dry_run=1 to obtain the autoassignment output
without additional testing. For instance, dry_run=1 will report warnings for
potential conflicts, but minimal_dry_run=1 will not.
Autoassignment is often time consuming, so a successful /autoassign may return
early, before the autoassignment completes. The response will list a job ID for
the autoassigner. Query the /job endpoint with output=1 to monitor the job
and obtain its eventual output.
| autoassigner required | string Name of autoassignment action to run |
| 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 |
| dry_run | boolean True computes the assignment, but does not perform it |
| minimal_dry_run | boolean True computes an initial assignment, but does not validate it |
| u | Array of strings Array of users to consider for assignment |
| disjoint | Array of strings Array of user sets that should not be coassigned |
| param | Array of strings Array of |
| ok required | boolean |
Array of objects (message_list) Diagnostic list | |
| dry_run | boolean True if request was a dry run |
| job | string (job_id) Job ID of autoassignment job |
| job_url | string URL to monitor autoassignment job |
| status | string |
| exit_status | integer |
| progress | string |
| assigned_pids | Array of integers |
| output | string CSV of computed assignment |
{- "ok": true,
- "message_list": [ ],
- "dry_run": true,
- "job": "hcj_PHkMnDMRkMuBydyCSBQCymPTqaqmsGWaftV",
- "job_url": "string",
- "status": "string",
- "exit_status": 0,
- "progress": "string",
- "assigned_pids": [
- 0
], - "output": "string"
}List all autoassignment actions understood by this HotCRP, including their parameters.
| ok required | boolean |
Array of objects (message_list) Diagnostic list | |
required | Array of objects (autoassignment_action) |
{- "ok": true,
- "message_list": [ ],
- "autoassigners": [
- {
- "name": "string",
- "description": "string",
- "group": "string",
- "parameters": [
- {
- "name": "edit",
- "type": "bool"
}
]
}
]
}These endpoints perform specific kinds of assignment, such as decision,
discussion lead, and shepherd, for one submission at a time. They are provided
for the HotCRP web application’s convenience; external users should prefer the
general-purpose /assign endpoint.
| p required | integer (pid) >= 1 Examples:
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 Examples:
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 Examples:
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 Examples:
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 Examples:
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 Examples:
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 Examples:
Submission ID |
| ok required | boolean |
Array of objects (message_list) Diagnostic list |
{- "ok": true,
- "message_list": [ ]
}| p required | integer (pid) >= 1 Examples:
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 Examples:
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
}| p required | integer (pid) >= 1 Examples:
Submission ID |
| ok required | boolean |
Array of objects (message_list) Diagnostic list |
{- "ok": true,
- "message_list": [ ]
}| p required | integer (pid) >= 1 Examples:
Submission ID |
| ok required | boolean |
Array of objects (message_list) Diagnostic list |
{- "ok": true,
- "message_list": [ ]
}| p required | integer (pid) >= 1 Examples:
Submission ID |
required | integer or string (rid) Examples:
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 Examples:
Submission ID |
required | integer or string (rid) Examples:
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 Examples:
Submission ID |
required | integer or string (rid) Examples:
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 Examples:
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 Examples:
Submission ID |
required | integer or string (rid) Examples:
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 Examples:
Submission ID |
required | integer or string (rid) Examples:
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 Examples:
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 newattachment: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 Examples:
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 Examples:
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 Examples:
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 Examples:
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 Examples:
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": [ ]
}| 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
}| 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 Examples:
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
}Some HotCRP tasks, such as autoassignment, can take too long for a single API
request. Such tasks start a job and return its unique identifier. The /job
endpoint monitors the job’s progress and can return its output upon
completion.
The listed response properties are common to all job types, but specific jobs
may return other response properties. For example, a running autoassignment
job will return a string progress property that describes the current phase
of autoassignment, and a completed autoassignment job will report
assigned_pids and incomplete_pids properties.
| job required | string (job_id) Examples: job=hcj_PHkMnDMRkMuBydyCSBQCymPTqaqmsGWaftV Job ID |
| output | boolean True to return job output |
| ok required | boolean |
Array of objects (message_list) Diagnostic list | |
| status required | string
|
| update_at required | integer UNIX time that job was last updated (if this time is far in the past, the job likely crashed) |
| output | any Job output, either as a JSON object or a UTF-8 string |
| output_base64 | string Base64-encoded job output (if job output isn’t a UTF-8 string) |
{- "ok": true,
- "message_list": [ ],
- "status": "string",
- "update_at": 0,
- "output": null,
- "output_base64": "string"
}| p | integer (pid) >= 1 Examples:
Submission ID |
| template | any |
integer or string (rid) Examples:
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
}This endpoint returns a JSON object defining all site settings. The result can be used to examine settings offline, change settings otherwise unavailable through the settings UI, or transfer settings to another site.
The filter and exclude parameters can filter the returned settings to a
subset. For example, when exporting one site’s settings for use by another, you
might set exclude to #id OR #deadline; this excludes settings relevant to a
conference’s identity (conference_name, site_contact_email, etc.) or
deadlines.
| reset | boolean |
| filter | string Search expression defining settings to include |
| exclude | string Search expression defining settings to exclude |
| ok required | boolean |
Array of objects (message_list) Diagnostic list | |
| settings required | object |
{- "ok": true,
- "message_list": [ ],
- "settings": { }
}This endpoint modifies site settings according to a JSON object. This object may
define a full complement of settings or a subset. It may be provided as a
request body with type application/json, or as a body parameter with name
settings.
The filter and exclude parameters can filter the modifications that are
applied; for example, uploading a settings object with filter set to #rf
will only change settings relevant to the review form.
For more information on JSON settings, see Help > Advanced settings.
| dry_run | boolean True checks input for errors, but does not save changes |
| reset | boolean |
| filter | string Search expression defining settings to include |
| exclude | string Search expression defining settings to exclude |
| filename | string File name for |
| settings | object Settings to change |
| ok required | boolean |
Array of objects (message_list) Diagnostic list | |
| dry_run | boolean True for dry-run requests |
| valid required | boolean True if the modification was valid |
| change_list required | Array of strings List of modified top-level settings |
| settings required | object New settings |
{- "ok": true,
- "message_list": [ ],
- "dry_run": true,
- "valid": true,
- "change_list": [
- "string"
], - "settings": { }
}| 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
}| 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
}