Skip to content

Admin API reference

The Admin REST API provides programmatic access to manage uproot experiments. All endpoints are located under /admin/api/v1/ and require Bearer token authentication.

Generated from FastAPI OpenAPI

This page is generated by scripts/generate_admin_api_docs.py from FastAPI's OpenAPI schema. A running uproot server also exposes FastAPI's live schema at /openapi.json and interactive documentation at /docs and /redoc.

Authentication

All requests must include an Authorization header with a valid API token:

Authorization: Bearer YOUR_API_TOKEN

To enable API access, add one or more tokens in your project's main.py:

upd.API_KEYS.add("YOUR_API_TOKEN")

CLI access

The uproot api command calls these endpoints from the command line:

export UPROOT_API_KEY="YOUR_API_TOKEN"
uproot api sessions
uproot api sessions/mysession
uproot api rooms
uproot api rooms/waiting-room
uproot api sessions/mysession/players/online
uproot api -X POST sessions -d '{"config": "myconfig", "n_players": 4}'
uproot api -X PATCH sessions/mysession/active
uproot api -X POST sessions/mysession/players/advance -d '{"unames": ["ABC"]}'

Dashboard and Configurations

GET /admin/api/v1/configs/

List all available configurations and apps.

Responses:

Status Content Description
200 application/json Successful Response

GET /admin/api/v1/configs/{cname}/

Get details for a configuration.

Path parameters:

Parameter Type Required Description
cname string Yes

Responses:

Status Content Description
200 application/json Successful Response

GET /admin/api/v1/dashboard/

Get the same top-level aggregate shown on the admin dashboard.

Responses:

Status Content Description
200 application/json Successful Response

Sessions

GET /admin/api/v1/sessions/

List all sessions with their metadata.

Responses:

Status Content Description
200 application/json Successful Response

POST /admin/api/v1/sessions/

Create a new session with the specified configuration and players.

Request body (SessionCreate):

Field Type Required Description
config string Yes Configuration name
n_players integer Yes Number of players to create (min: 0.0)
sname string or null No Custom session name (auto-generated if omitted)
unames array[string] or null No Custom usernames for players
settings object or null No Session settings
simulate boolean No Enable response simulation (default: False)

Responses:

Status Content Description
201 application/json Successful Response

GET /admin/api/v1/sessions/{sname}/

Get detailed information about a specific session.

Path parameters:

Parameter Type Required Description
sname string Yes

Responses:

Status Content Description
200 application/json Successful Response

PATCH /admin/api/v1/sessions/{sname}/active/

Toggle the active status of a session.

Path parameters:

Parameter Type Required Description
sname string Yes

Responses:

Status Content Description
200 application/json Successful Response

PATCH /admin/api/v1/sessions/{sname}/description/

Update the description of a session.

Path parameters:

Parameter Type Required Description
sname string Yes

Request body (DescriptionUpdate):

Field Type Required Description
description string No New description (empty to clear) (default: ``)

Responses:

Status Content Description
200 application/json Successful Response

POST /admin/api/v1/sessions/{sname}/initialize/

Run new_session callbacks for a session that has not been initialized.

Path parameters:

Parameter Type Required Description
sname string Yes

Responses:

Status Content Description
200 application/json Successful Response

PATCH /admin/api/v1/sessions/{sname}/settings/

Update the settings of a session.

Path parameters:

Parameter Type Required Description
sname string Yes

Request body (SettingsUpdate):

Field Type Required Description
settings object Yes New settings

Responses:

Status Content Description
200 application/json Successful Response

PATCH /admin/api/v1/sessions/{sname}/testing/

Toggle the testing mode of a session.

Path parameters:

Parameter Type Required Description
sname string Yes

Responses:

Status Content Description
200 application/json Successful Response

Players

GET /admin/api/v1/sessions/{sname}/multiview/

Get player metadata needed to reproduce the admin multiview.

Path parameters:

Parameter Type Required Description
sname string Yes

Responses:

Status Content Description
200 application/json Successful Response

GET /admin/api/v1/sessions/{sname}/players/

Get specified fields for all players in a session.

Path parameters:

Parameter Type Required Description
sname string Yes

Query parameters:

Parameter Type Required Description
fields array[string] No

Responses:

Status Content Description
200 application/json Successful Response

POST /admin/api/v1/sessions/{sname}/players/advance/

Advance specified players by one page.

Path parameters:

Parameter Type Required Description
sname string Yes

Request body (PlayersAction):

Field Type Required Description
unames array[string] Yes List of usernames to act on (min items: 1)

Responses:

Status Content Description
200 application/json Successful Response

POST /admin/api/v1/sessions/{sname}/players/dropout/

Mark specified players as manually dropped out.

Path parameters:

Parameter Type Required Description
sname string Yes

Request body (PlayersAction):

Field Type Required Description
unames array[string] Yes List of usernames to act on (min items: 1)

Responses:

Status Content Description
200 application/json Successful Response

POST /admin/api/v1/sessions/{sname}/players/end/

Move specified players to the end of the experiment.

Path parameters:

Parameter Type Required Description
sname string Yes

Request body (PlayersAction):

Field Type Required Description
unames array[string] Yes List of usernames to act on (min items: 1)

Responses:

Status Content Description
200 application/json Successful Response

PATCH /admin/api/v1/sessions/{sname}/players/fields/

Set arbitrary fields on specified players.

Path parameters:

Parameter Type Required Description
sname string Yes

Request body (PlayersFields):

Field Type Required Description
unames array[string] Yes List of usernames (min items: 1)
fields object Yes Fields to set
reload boolean No Whether to trigger page reload (default: False)

Responses:

Status Content Description
200 application/json Successful Response

POST /admin/api/v1/sessions/{sname}/players/group/

Manage group assignments for selected players.

Path parameters:

Parameter Type Required Description
sname string Yes

Request body (PlayersGroup):

Field Type Required Description
unames array[string] Yes List of usernames (min items: 1)
action string Yes Grouping action: same_group, reset, or by_size
group_size integer No Group size for by_size (min: 1.0; default: 1)
shuffle boolean No Shuffle players before grouping (default: False)
reload boolean No Whether to trigger page reload (default: False)

Responses:

Status Content Description
200 application/json Successful Response

POST /admin/api/v1/sessions/{sname}/players/initialize/

Run new_player callbacks for players that have not been initialized.

Path parameters:

Parameter Type Required Description
sname string Yes

Request body (PlayersAction):

Field Type Required Description
unames array[string] Yes List of usernames to act on (min items: 1)

Responses:

Status Content Description
200 application/json Successful Response

POST /admin/api/v1/sessions/{sname}/players/message/

Send an admin message to specified players.

Path parameters:

Parameter Type Required Description
sname string Yes

Request body (PlayerMessage):

Field Type Required Description
unames array[string] Yes List of usernames (min items: 1)
message string Yes Message to send

Responses:

Status Content Description
200 application/json Successful Response

GET /admin/api/v1/sessions/{sname}/players/online/

Get online status and info for all players in a session.

Path parameters:

Parameter Type Required Description
sname string Yes

Responses:

Status Content Description
200 application/json Successful Response

POST /admin/api/v1/sessions/{sname}/players/redirect/

Redirect specified players to an external URL.

Path parameters:

Parameter Type Required Description
sname string Yes

Request body (PlayerRedirect):

Field Type Required Description
unames array[string] Yes List of usernames (min items: 1)
url string Yes URL to redirect to (must start with http:// or https://)

Responses:

Status Content Description
200 application/json Successful Response

POST /admin/api/v1/sessions/{sname}/players/reload/

Force page reload for specified players.

Path parameters:

Parameter Type Required Description
sname string Yes

Request body (PlayersAction):

Field Type Required Description
unames array[string] Yes List of usernames to act on (min items: 1)

Responses:

Status Content Description
200 application/json Successful Response

POST /admin/api/v1/sessions/{sname}/players/revert/

Revert specified players by one page.

Path parameters:

Parameter Type Required Description
sname string Yes

Request body (PlayersAction):

Field Type Required Description
unames array[string] Yes List of usernames to act on (min items: 1)

Responses:

Status Content Description
200 application/json Successful Response

POST /admin/api/v1/sessions/{sname}/players/timeout/

Adjust the page timeout for specified players.

Path parameters:

Parameter Type Required Description
sname string Yes

Request body (PlayerTimeout):

Field Type Required Description
unames array[string] Yes List of usernames (min items: 1)
delta number No Timeout adjustment in seconds (default: 60.0)

Responses:

Status Content Description
200 application/json Successful Response

Admin Chat

GET /admin/api/v1/sessions/{sname}/admin-chat/

Summarize admin chat state for each player in a session.

Path parameters:

Parameter Type Required Description
sname string Yes

Responses:

Status Content Description
200 application/json Successful Response

POST /admin/api/v1/sessions/{sname}/players/admin-chat/

Send an admin chat message to multiple players at once.

Path parameters:

Parameter Type Required Description
sname string Yes

Request body (AdminchatBroadcast):

Field Type Required Description
unames array[string] Yes List of usernames (min items: 1)
message string Yes Message to send
enable_replies boolean or null No Optionally update whether all recipients may reply

Responses:

Status Content Description
200 application/json Successful Response

PATCH /admin/api/v1/sessions/{sname}/players/admin-chat/replies/

Enable or disable admin chat replies for multiple players.

Path parameters:

Parameter Type Required Description
sname string Yes

Request body (PlayersChatReplies):

Field Type Required Description
unames array[string] Yes List of usernames (min items: 1)
enabled boolean Yes Whether player replies are enabled

Responses:

Status Content Description
200 application/json Successful Response

GET /admin/api/v1/sessions/{sname}/players/{uname}/admin-chat/

Get admin chat metadata and transcript for one player.

Path parameters:

Parameter Type Required Description
sname string Yes
uname string Yes

Responses:

Status Content Description
200 application/json Successful Response

POST /admin/api/v1/sessions/{sname}/players/{uname}/admin-chat/

Send an admin chat message to one player.

Path parameters:

Parameter Type Required Description
sname string Yes
uname string Yes

Request body (AdminchatMessage):

Field Type Required Description
message string Yes Message to send
enable_replies boolean or null No Optionally update whether the player may reply

Responses:

Status Content Description
200 application/json Successful Response

PATCH /admin/api/v1/sessions/{sname}/players/{uname}/admin-chat/replies/

Enable or disable a player's ability to reply in admin chat.

Path parameters:

Parameter Type Required Description
sname string Yes
uname string Yes

Request body (AdminchatReplies):

Field Type Required Description
enabled boolean Yes Whether player replies are enabled

Responses:

Status Content Description
200 application/json Successful Response

Data Export

GET /admin/api/v1/sessions/{sname}/data/

Get all session data in display format, optionally filtered by timestamp.

Path parameters:

Parameter Type Required Description
sname string Yes

Query parameters:

Parameter Type Required Description
since number No Only return data updated since this epoch timestamp

Responses:

Status Content Description
200 application/json Successful Response

GET /admin/api/v1/sessions/{sname}/data/export/

Download a ZIP briefcase of session data, as in the admin UI. The briefcase always contains the ultralong, sparse, and latest formats as per-storage CSV or JSONL files; passing gvar adds a grouped latest format on top.

Path parameters:

Parameter Type Required Description
sname string Yes

Query parameters:

Parameter Type Required Description
filetype string No Export file type: csv or jsonl
gvar array[string] No Group-by variables for the optional grouped latest format
filters boolean No Apply reasonable filters

Responses:

Status Content Description
200 application/json Successful Response

GET /admin/api/v1/sessions/{sname}/data/jsonl/

Download session data as JSONL (streaming).

Path parameters:

Parameter Type Required Description
sname string Yes

Query parameters:

Parameter Type Required Description
format string No Export format: ultralong, sparse, or latest
gvar array[string] No Group-by variables
filters boolean No Apply reasonable filters

Responses:

Status Content Description
200 application/json Successful Response

GET /admin/api/v1/sessions/{sname}/page-times/

Download page visit times as CSV.

Path parameters:

Parameter Type Required Description
sname string Yes

Responses:

Status Content Description
200 application/json Successful Response

Digests and Pipelines

GET /admin/api/v1/sessions/{sname}/digests/

Run all available app digests for a session.

Path parameters:

Parameter Type Required Description
sname string Yes

Responses:

Status Content Description
200 application/json Successful Response

GET /admin/api/v1/sessions/{sname}/digests/html/

Render the app-authored AdminDigest.html fragments shown by the admin UI.

Path parameters:

Parameter Type Required Description
sname string Yes

Responses:

Status Content Description
200 application/json Successful Response

GET /admin/api/v1/sessions/{sname}/digests/{appname}/

Run one app digest for a session.

Path parameters:

Parameter Type Required Description
sname string Yes
appname string Yes

Responses:

Status Content Description
200 application/json Successful Response

GET /admin/api/v1/sessions/{sname}/digests/{appname}/html/

Render one app-authored AdminDigest.html fragment.

Path parameters:

Parameter Type Required Description
sname string Yes
appname string Yes

Responses:

Status Content Description
200 application/json Successful Response

GET /admin/api/v1/sessions/{sname}/pipelines/

List apps that provide a pipeline for a session.

Path parameters:

Parameter Type Required Description
sname string Yes

Responses:

Status Content Description
200 application/json Successful Response

GET /admin/api/v1/sessions/{sname}/pipelines/html/

Render app-authored AdminPipeline.html fragments shown by the admin UI.

Path parameters:

Parameter Type Required Description
sname string Yes

Responses:

Status Content Description
200 application/json Successful Response

GET /admin/api/v1/sessions/{sname}/pipelines/{appname}/html/

Render one app-authored AdminPipeline.html fragment.

Path parameters:

Parameter Type Required Description
sname string Yes
appname string Yes

Responses:

Status Content Description
200 application/json Successful Response

GET /admin/api/v1/sessions/{sname}/pipelines/{appname}/runs/

Run an app pipeline without custom JSON data, matching the admin UI button.

Note

This endpoint accepts an optional JSON request body. If the app's pipeline() callable declares a data parameter, the decoded body is passed as data.

Path parameters:

Parameter Type Required Description
sname string Yes
appname string Yes

Query parameters:

Parameter Type Required Description
filetype string No Export file type: csv or jsonl

Responses:

Status Content Description
200 application/json Successful Response

POST /admin/api/v1/sessions/{sname}/pipelines/{appname}/runs/

Run an app pipeline, optionally passing a JSON request body.

Note

This endpoint accepts an optional JSON request body. If the app's pipeline() callable declares a data parameter, the decoded body is passed as data.

Path parameters:

Parameter Type Required Description
sname string Yes
appname string Yes

Query parameters:

Parameter Type Required Description
filetype string No Export file type: csv or jsonl

Responses:

Status Content Description
200 application/json Successful Response

Rooms

GET /admin/api/v1/rooms/

List all rooms with their configuration.

Responses:

Status Content Description
200 application/json Successful Response

POST /admin/api/v1/rooms/

Create a new room.

Request body (RoomCreate):

Field Type Required Description
name string Yes Room name (min length: 1)
config string or null No Default configuration for sessions
labels array[string] or null No Allowed labels for participants
capacity integer or null No Maximum capacity
open boolean or null No Whether the room is open for joining (defaults to true if sname is given, false otherwise)
sname string or null No Associated session name

Responses:

Status Content Description
201 application/json Successful Response

GET /admin/api/v1/rooms/{roomname}/

Get detailed information about a specific room.

Path parameters:

Parameter Type Required Description
roomname string Yes

Responses:

Status Content Description
200 application/json Successful Response

PATCH /admin/api/v1/rooms/{roomname}/

Update room settings, optionally associating an existing session (only when no session is currently associated).

Path parameters:

Parameter Type Required Description
roomname string Yes

Request body (RoomUpdate):

Field Type Required Description
config string or null No Default configuration
labels array[string] or null No Allowed labels
capacity integer or null No Maximum capacity
open boolean or null No Whether the room is open (defaults to true if sname is given, otherwise unchanged)
sname string or null No Existing session to associate with the room

Responses:

Status Content Description
200 application/json Successful Response

DELETE /admin/api/v1/rooms/{roomname}/

Delete a room (only when no session is associated).

Path parameters:

Parameter Type Required Description
roomname string Yes

Responses:

Status Content Description
200 application/json Successful Response

PATCH /admin/api/v1/rooms/{roomname}/capacity/

Set a room's capacity, even while a session is associated.

Path parameters:

Parameter Type Required Description
roomname string Yes

Request body (RoomCapacity):

Field Type Required Description
capacity integer or null Yes Maximum capacity (null for unlimited)

Responses:

Status Content Description
200 application/json Successful Response

POST /admin/api/v1/rooms/{roomname}/close/

Close a room, optionally disassociating its session first.

Path parameters:

Parameter Type Required Description
roomname string Yes

Request body (RoomClose):

Field Type Required Description
disassociate boolean No If true, disassociate the session before closing (default: False)

Responses:

Status Content Description
200 application/json Successful Response

GET /admin/api/v1/rooms/{roomname}/online/

Get online status for a room's waiting area.

Path parameters:

Parameter Type Required Description
roomname string Yes

Responses:

Status Content Description
200 application/json Successful Response

PATCH /admin/api/v1/rooms/{roomname}/open/

Set a room's open status without requiring disassociation.

Path parameters:

Parameter Type Required Description
roomname string Yes

Request body (RoomOpen):

Field Type Required Description
open boolean Yes Whether the room should be open

Responses:

Status Content Description
200 application/json Successful Response

POST /admin/api/v1/rooms/{roomname}/sessions/

Create a new session within a room.

Path parameters:

Parameter Type Required Description
roomname string Yes

Request body (RoomSessionCreate):

Field Type Required Description
config string Yes Configuration name
n_players integer Yes Number of players (min: 0.0)
assignees array[string] or null No Labels to assign to players
settings object or null No Session settings
sname string or null No Custom session name
unames array[string] or null No Custom usernames
no_grow boolean No Lock capacity to n_players (default: False)
simulate boolean No Enable response simulation (default: False)

Responses:

Status Content Description
201 application/json Successful Response

DELETE /admin/api/v1/rooms/{roomname}/sessions/

Disassociate a room from its current session.

Path parameters:

Parameter Type Required Description
roomname string Yes

Responses:

Status Content Description
200 application/json Successful Response

System

GET /admin/api/v1/announcements/

Fetch announcements from upstream.

Responses:

Status Content Description
200 application/json Successful Response

GET /admin/api/v1/auth/challenge/

Issue the same login proof-of-work challenge used by the admin UI.

Responses:

Status Content Description
200 application/json Successful Response

POST /admin/api/v1/auth/login/

Create the same browser admin session token as submitting /admin/login/.

Request body (AuthLogin):

Field Type Required Description
user string No Admin username (default: admin)
pw string No Admin password (default: ``)
token string No Auto-login token (default: ``)
pow_challenge string No Proof-of-work challenge (default: ``)
pow_solution string No Proof-of-work solution (default: ``)

Responses:

Status Content Description
201 application/json Successful Response

GET /admin/api/v1/auth/sessions/

Get information about active authentication sessions.

Responses:

Status Content Description
200 application/json Successful Response

DELETE /admin/api/v1/auth/sessions/{user}/

Revoke all browser admin sessions for one user.

Note

This revokes browser admin-login sessions for the named user. It does not revoke API keys.

Path parameters:

Parameter Type Required Description
user string Yes

Responses:

Status Content Description
200 application/json Successful Response

DELETE /admin/api/v1/auth/tokens/

Revoke all browser admin sessions for the user named by one token.

Request body (AuthToken):

Field Type Required Description
auth_token string Yes Value of the uauth browser cookie

Responses:

Status Content Description
200 application/json Successful Response

DELETE /admin/api/v1/auth/tokens/current/

Revoke one browser admin session token, matching /admin/logout/.

Request body (AuthToken):

Field Type Required Description
auth_token string Yes Value of the uauth browser cookie

Responses:

Status Content Description
200 application/json Successful Response

GET /admin/api/v1/database/dump/

Download a complete machine-readable database dump.

Note

The response is a binary MessagePack dump intended for uproot restore, not JSON.

Responses:

Status Content Description
200 application/json Successful Response

GET /admin/api/v1/praise/

Fetch the same praise text shown by the admin UI.

Responses:

Status Content Description
200 application/json Successful Response

GET /admin/api/v1/status/

Get status information.

Responses:

Status Content Description
200 application/json Successful Response