dify/api/services/entities/account_access_entities.py

53 lines
1.1 KiB
Python

"""Framework-neutral data contracts for account identity and access sessions."""
from __future__ import annotations
from dataclasses import dataclass
from datetime import datetime
from services.entities.account_entities import AccountSnapshot
@dataclass(frozen=True, slots=True)
class AccountWorkspaceSnapshot:
id: str
name: str
role: str
current: bool
@dataclass(frozen=True, slots=True)
class AccountAccessSnapshot:
account: AccountSnapshot
workspaces: tuple[AccountWorkspaceSnapshot, ...]
default_workspace_id: str | None
@dataclass(frozen=True, slots=True)
class AccountSessionSnapshot:
id: str
prefix: str
client_id: str
device_label: str
created_at: datetime | None
last_used_at: datetime | None
expires_at: datetime | None
@dataclass(frozen=True, slots=True)
class AccountSessionPage:
page: int
limit: int
total: int
items: tuple[AccountSessionSnapshot, ...]
@property
def has_more(self) -> bool:
return self.page * self.limit < self.total
@dataclass(frozen=True, slots=True)
class AccountSessionRevocation:
owned: bool
token_hash: str | None = None