Spaces:
Running
Running
File size: 1,224 Bytes
2f1e7ff | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 | """Credential-safe, explicit public contracts for authentication endpoints."""
from datetime import datetime
from typing import Literal
from pydantic import BaseModel, Field
class PrincipalResponse(BaseModel):
authenticated: bool
kind: Literal["system", "access_token"]
is_system: bool
brain_id: str | None
permissions: list[str]
legacy: bool = False
class SessionResponse(PrincipalResponse):
csrf_token: str | None = Field(default=None, description="CSRF proof for unsafe cookie-authenticated requests; never an access credential.")
class LogoutResponse(BaseModel):
authenticated: Literal[False]
class AccessTokenMetadataResponse(BaseModel):
id: str
label: str
brain_id: str
token_prefix: str
permissions: list[str]
created_at: datetime
last_used_at: datetime | None
expires_at: datetime | None
revoked_at: datetime | None
legacy: bool
created_by: str
class IssuedAccessTokenResponse(AccessTokenMetadataResponse):
token: str = Field(repr=False, description="Shown exactly once at creation. Store securely; listing never reveals this value.")
class AccessTokenListResponse(BaseModel):
tokens: list[AccessTokenMetadataResponse]
|