People¶
octomate.schemas.user ¶
Registered users and the channel profiles they own.
UserProfile ¶
Bases: BaseTransmuter
An observed channel identity and the boundary channel-profile shape.
Persisted profiles belong to a registered User or remain ownerless
visitors. Ephemeral channel snapshots also have no owner; UserManager
stamps their channel id and resolves ownership from the registry row.
Source code in octomate/schemas/user.py
model_config
class-attribute
instance-attribute
¶
model_config = ConfigDict(
validate_by_alias=True,
validate_by_name=True,
extra="ignore",
coerce_numbers_to_str=True,
from_attributes=True,
)
id
class-attribute
instance-attribute
¶
channel_tentacle_id
class-attribute
instance-attribute
¶
channel_tentacle_id: str = Field(
default="",
description="The channel this identity lives on; empty on ephemeral boundary instances, stamped by UserManager at persist time.",
)
channel_user_id
class-attribute
instance-attribute
¶
user_id
class-attribute
instance-attribute
¶
user_id: UUID7 | None = Field(
default=None,
description="The registered owning User; None for ephemeral snapshots and persisted visitor profiles.",
)
user
class-attribute
instance-attribute
¶
user: Relation[User | None] = Field(
default_factory=Relation,
frozen=True,
exclude=True,
description="The optional registered owner, eagerly loaded.",
)
User ¶
Bases: BaseTransmuter
A registered human across channels.
Source code in octomate/schemas/user.py
model_config
class-attribute
instance-attribute
¶
model_config = ConfigDict(
from_attributes=True,
json_schema_serialization_defaults_required=True,
)
id
class-attribute
instance-attribute
¶
username
class-attribute
instance-attribute
¶
username: str = Field(
frozen=True,
description="Stable username naming this human across sign-in and channels.",
)
name
class-attribute
instance-attribute
¶
name: str = Field(
default="",
description="Canonical display name the agent uses for this human.",
)
nickname
class-attribute
instance-attribute
¶
password_hash
class-attribute
instance-attribute
¶
password_hash: SecretStr | None = Field(
default=None,
exclude=True,
repr=False,
description="Argon2id password hash; None until local sign-in is enrolled.",
)
profiles
class-attribute
instance-attribute
¶
ProfileInfo
pydantic-model
¶
Bases: BaseModel
An account with its channel profiles and MCP installations.
Fields:
-
user(User) -
profiles(list[UserProfile]) -
mcps(list[McpServerSummary])
Source code in octomate/schemas/user.py
octomate.schemas.auth ¶
Local account transmuters — invitations, sessions, profile-link tickets, API keys — and the token payloads sign-in returns.
UserInvitation ¶
Bases: BaseTransmuter
A single-use registration invitation, stored by token hash.
Source code in octomate/schemas/auth.py
UserSession ¶
Bases: BaseTransmuter
A signed-in session: hashed access and refresh tokens with their deadlines.
Source code in octomate/schemas/auth.py
id
class-attribute
instance-attribute
¶
access_token_hash
class-attribute
instance-attribute
¶
refresh_token_hash
class-attribute
instance-attribute
¶
refresh_expires_at
class-attribute
instance-attribute
¶
refresh_expires_at: AwareDatetime = Field(
description="Absolute session deadline; refresh does not extend it."
)
created_at
class-attribute
instance-attribute
¶
version
class-attribute
instance-attribute
¶
LinkProfileSession ¶
Bases: BaseTransmuter
One channel profile's pending link ticket, stored by token hash.
Source code in octomate/schemas/auth.py
UserApiKey ¶
Bases: BaseTransmuter
A personal API key: its hash, public prefix, scopes and lifetime.
Source code in octomate/schemas/auth.py
SessionTokens
pydantic-model
¶
Bases: BaseModel
Secrets returned only by successful login or refresh.
Fields:
-
session_id(UUID7) -
user_id(UUID7) -
access_token(SecretStr) -
refresh_token(SecretStr) -
access_expires_at(AwareDatetime) -
refresh_expires_at(AwareDatetime)
Source code in octomate/schemas/auth.py
LinkProfileInfo
pydantic-model
¶
Bases: BaseModel
The profile link an authenticated browser is being asked to confirm.
Fields:
-
profile(UserProfile) -
expires_at(AwareDatetime)
Source code in octomate/schemas/auth.py
LinkProfileAuthorization
pydantic-model
¶
Bases: LinkProfileInfo
The private host authorization request delivered through a channel or OAuth callback.
Fields:
-
profile(UserProfile) -
expires_at(AwareDatetime) -
authorization_uri(AnyHttpUrl)
Source code in octomate/schemas/auth.py
IssuedApiKey
pydantic-model
¶
Bases: BaseModel
A freshly issued key with its one-time plaintext token.
Fields:
-
key(UserApiKey) -
token(SecretStr)