sidequest_common.schemas.gm#

GM console schemas: member management, moderation cases, and the merged activity log.

See local://gm-console-contract.md.

Classes#

GmCase

One moderation case, with Discord ids resolved to display names when known on the site.

GmCaseReasonUpdate

Body for PATCH /api/gm/cases/{case_number}.

GmMember

One member as shown in the GM console's member list/detail.

GmMemberDetail

A member's full GM console profile.

GmSignup

One of a member's event sign-ups, as shown on their GM console detail page.

LogActor

Who performed a logged action, when known (officer-sourced entries only).

LogEntry

One row of the GM console's unified activity log.

LogPage

A page of the activity log, newest first.

RoleTag

A Discord role, as last reported by the bot's PUT /api/guilds/{guild_id}/roles.

Module Contents#

class sidequest_common.schemas.gm.GmCase#

Bases: pydantic.BaseModel

One moderation case, with Discord ids resolved to display names when known on the site.

action: str#
case_number: int#
created_at: datetime.datetime#
duration_seconds: int | None#
moderator_id: str#
moderator_name: str | None#
reason: str | None#
user_id: str#
user_name: str | None#
class sidequest_common.schemas.gm.GmCaseReasonUpdate#

Bases: pydantic.BaseModel

Body for PATCH /api/gm/cases/{case_number}.

reason: str#
class sidequest_common.schemas.gm.GmMember#

Bases: pydantic.BaseModel

One member as shown in the GM console’s member list/detail.

avatar_url: str | None#
battlenet_linked_at: datetime.datetime | None#
battletag: str | None#
case_count: int#
discord_id: str#
display_name: str#
first_seen_at: datetime.datetime#
id: int#
is_gm: bool#
is_guild_member: bool#
is_officer: bool#
last_login_at: datetime.datetime | None#
level: int | None#
roles: list[RoleTag]#
roster_confirmed_at: datetime.datetime | None#
signup_count: int#
username: str#
class sidequest_common.schemas.gm.GmMemberDetail#

Bases: pydantic.BaseModel

A member’s full GM console profile.

cases: list[GmCase]#
member: GmMember#
message_count: int | None#
signups: list[GmSignup]#
xp: int | None#
class sidequest_common.schemas.gm.GmSignup#

Bases: pydantic.BaseModel

One of a member’s event sign-ups, as shown on their GM console detail page.

character: str | None#
comment: str | None#
event_id: uuid.UUID#
event_status: str#
kind: str#
model_config#
role: str | None#
starts_at: datetime.datetime#
status: str#
title: str#
wow_class: str | None#
class sidequest_common.schemas.gm.LogActor#

Bases: pydantic.BaseModel

Who performed a logged action, when known (officer-sourced entries only).

avatar_url: str | None#
display_name: str#
class sidequest_common.schemas.gm.LogEntry#

Bases: pydantic.BaseModel

One row of the GM console’s unified activity log.

actor: LogActor | None#
at: datetime.datetime#
case_number: int | None#
detail: str | None#
event_id: uuid.UUID | None#
id: str#
kind: str#
member_id: int | None#
summary: str#
class sidequest_common.schemas.gm.LogPage#

Bases: pydantic.BaseModel

A page of the activity log, newest first.

entries: list[LogEntry]#
next_before: datetime.datetime | None#
class sidequest_common.schemas.gm.RoleTag#

Bases: pydantic.BaseModel

A Discord role, as last reported by the bot’s PUT /api/guilds/{guild_id}/roles.

color: str | None#

#rrggbb, None when the role has no color (Discord color 0).

id: str#
name: str#