RestrictionService¶
- class RestrictionService[source]¶
Methods
Create a short-lived entry ticket.
Add a single IP range to a restriction.
Remove a single IP range from a restriction.
List all enrolled students with their entry counts and overrides.
Enter a restricted course, recording an entry event.
Get all IP ranges for a restriction.
Get the full settings for a restriction (admin only).
Update restriction settings.
Set or remove a per-student entry override for a restriction.
Send a heartbeat to keep an isolated exam session alive.
- create_entry_ticket(json_body, *, restriction_id)[source]¶
Create a short-lived entry ticket.
Authenticates the caller via bearer token, validates the password (when set), and pre-checks the entry limit so a dead ticket isn’t issued. Writes an unused ticket to Redis and returns the ticket string.
Rejects when the calling token is itself an exam token for this course, since activating another ticket would kill the active session.
- Parameters:
json_body (
CreateEntryTicketRestrictionData) – The body of the request. SeeCreateEntryTicketRestrictionDatafor information about the possible fields. You can provide this data as aCreateEntryTicketRestrictionDataor as a dictionary.restriction_id (
str) – The id of the restriction.
- Returns:
A tagged response (EntryTicketResponse) carrying the ticket.
- Return type:
- put_allowed_ip(*, restriction_id, ip_range)[source]¶
Add a single IP range to a restriction.
- delete_allowed_ip(*, restriction_id, ip_range)[source]¶
Remove a single IP range from a restriction.
- get_all_entries(*, restriction_id, q='', page_size=50)[source]¶
List all enrolled students with their entry counts and overrides.
- Parameters:
- Returns:
A paginated list of entry overview entries per student.
- Return type:
Response[EntryOverviewEntry]
- enter(json_body, *, restriction_id)[source]¶
Enter a restricted course, recording an entry event.
Two paths, dispatched on which field the body carries:
{password}: legacy entry. Authenticates with the caller’s bearer token and reuses it as the session token. 2. {entry_ticket}: activates a previously created entry ticket. The ticket is the credential, the Authorization header is ignored, and a new session token is created while every previously issued token for the user is invalidated.
- Parameters:
json_body (
TypeAliasType) – The body of the request. SeeEnterRestrictionDatafor information about the possible fields. You can provide this data as aEnterRestrictionDataor as a dictionary.restriction_id (
str) – The ID of the restriction.
- Returns:
A login response containing the (updated) access token.
- Return type:
- get_all_allowed_ips(*, restriction_id, page_size=50)[source]¶
Get all IP ranges for a restriction.
- get(*, restriction_id)[source]¶
Get the full settings for a restriction (admin only).
- Parameters:
restriction_id (
str) – The id of the restriction.
- Returns:
The restriction object including the password.
- Return type:
- patch(json_body, *, restriction_id)[source]¶
Update restriction settings.
The request body mirrors the restriction JSON shape. All fields are optional; omitted fields are left unchanged.
- Parameters:
json_body (
PatchRestrictionData) – The body of the request. SeePatchRestrictionDatafor information about the possible fields. You can provide this data as aPatchRestrictionDataor as a dictionary.restriction_id (
str) – The id of the restriction.
- Returns:
The updated restriction.
- Return type:
- patch_entry_override(json_body, *, restriction_id, user_id)[source]¶
Set or remove a per-student entry override for a restriction.
Sending null removes the override row entirely (the student falls back to the global session_lockdown limit). Sending a positive integer creates or updates the override for this student.
- Parameters:
json_body (
PatchEntryOverrideRestrictionData) – The body of the request. SeePatchEntryOverrideRestrictionDatafor information about the possible fields. You can provide this data as aPatchEntryOverrideRestrictionDataor as a dictionary.restriction_id (
str) – The ID of the restriction.user_id (
int) – The ID of the student.
- Returns:
The updated entry overview for this student.
- Return type:
- heartbeat()[source]¶
Send a heartbeat to keep an isolated exam session alive.
When heartbeat enforcement is active, the session’s expires_at is set to a short window (5 minutes). This endpoint extends it forward, capped by max_expires_at.
If the session is already expired, the auth flow rejects the request before it reaches this endpoint (401).
- Returns:
The session’s expires_at after the refresh.
- Parameters:
- Return type: