Documentation

Tenant Types

Organization/tenant management types

TenantSettings

Tenant configuration and usage information

@dataclass(frozen=True)
class TenantSettings:
id: str
name: str
owner_user_id: str
created_at: datetime
updated_at: datetime
is_active: bool
webhook_url: Optional[str]
allowed_vlm_providers: list[str]
allowed_domains: list[str]
max_monthly_credits: int
max_requests_per_minute: int
custom_config: dict[str, Any]
subscription_tier: str # "free" | "starter" | "professional" | "enterprise"
subscription_expires_at: Optional[datetime]
current_month_credits: int
current_month_cost: float
total_credits: int
total_cost: float

TenantLimits

Tenant limits and usage quotas

@dataclass(frozen=True)
class TenantLimits:
limits: dict[str, int] # Maximum allowed values
usage: dict[str, int] # Current usage values
remaining: dict[str, int] # Remaining quota
# Helper methods
def get_limit(self, name: str) -> Optional[int]: ...
def get_usage(self, name: str) -> Optional[int]: ...
def get_remaining(self, name: str) -> Optional[int]: ...

TenantMember

Tenant member information

@dataclass(frozen=True)
class TenantMember:
id: str
email: str
name: str
role: str # "owner" | "admin" | "editor" | "viewer"
joined_at: datetime
last_active_at: Optional[datetime]
@property
def role_enum(self) -> MemberRole: ...

MemberRole (Enum)

Tenant member role levels

class MemberRole(str, Enum):
OWNER = "owner" # Full control, billing, member management
ADMIN = "admin" # Settings, audit logs, but not billing
EDITOR = "editor" # Create/edit content
VIEWER = "viewer" # Read-only access