Skip to content

User Models

Models for users, their Discord profiles, campaign experience, and quickrolls.

User

Field Type Description
id str Unique identifier
date_created datetime Creation timestamp
date_modified datetime Last modified timestamp
name_first str First name
name_last str Last name
username str Username
email str Email address
role UserRole Role (ADMIN, STORYTELLER, PLAYER, UNAPPROVED)
company_id str Company ID
discord_profile DiscordProfile \| None Discord information
google_profile GoogleProfile \| None Google account information
github_profile GitHubProfile \| None GitHub account information
campaign_experience list[CampaignExperience] XP per campaign
asset_ids list[str] Owned asset IDs
lifetime_xp int Lifetime XP earned
lifetime_cool_points int Lifetime cool points earned

CampaignExperience

Field Type Description
campaign_id str Campaign ID
xp_current int Available XP
xp_total int Lifetime XP earned
cool_points int Cool points earned

DiscordProfile

Field Type Description
id str \| None Discord user ID
username str \| None Discord username
global_name str \| None Display name
avatar_url str \| None Avatar URL

GoogleProfile

Field Type Description
id str \| None Google user ID
email str \| None Google email address
verified_email bool \| None Whether email is verified
username str \| None Google username
name_first str \| None First name
name_last str \| None Last name
avatar_url str \| None Avatar URL
locale str \| None Locale setting

GitHubProfile

Field Type Description
id str \| None GitHub user ID
login str \| None GitHub login name
username str \| None GitHub username
avatar_url str \| None Avatar URL
email str \| None GitHub email
profile_url str \| None GitHub profile URL

UserRegisterDTO

Request body for registering a user via SSO onboarding. Unlike UserCreate, no requesting_user_id is required.

Field Type Description
username str Username (required)
email str Email address (required)
name_first str \| None First name
name_last str \| None Last name
discord_profile DiscordProfile \| None Discord information
google_profile GoogleProfile \| None Google account info
github_profile GitHubProfile \| None GitHub account info

UserMergeDTO

Request body for merging an unapproved user into an existing primary user.

Field Type Description
primary_user_id str ID of the primary user to merge into
secondary_user_id str ID of the unapproved user to merge
requesting_user_id str ID of the user making the request

Quickroll

Pre-configured dice pool for frequently used trait combinations. Speed up gameplay by saving common rolls like "Strength + Brawl" or "Wits + Investigation".

Field Type Description
id str Unique identifier
date_created datetime Creation timestamp
date_modified datetime Last modified timestamp
name str Quickroll name
description str \| None Optional description
user_id str Owner user ID
trait_ids list[str] Trait IDs in the dice pool

QuickrollCreate

Request body for creating a new quickroll.

Field Type Description
name str Quickroll name (3-50 characters)
description str \| None Optional description
trait_ids list[str] Trait IDs to include in dice pool

QuickrollUpdate

Request body for updating a quickroll. Only include fields that need to change.

Field Type Description
name str \| None Updated name
description str \| None Updated description
trait_ids list[str] \| None Updated trait IDs

UserApproveDTO

Request body for approving an unapproved user.

Field Type Description
role UserRole Role to assign to the approved user
requesting_user_id str ID of the user making the request

UserDenyDTO

Request body for denying an unapproved user.

Field Type Description
requesting_user_id str ID of the user making the request