82 lines
2.4 KiB
Python
82 lines
2.4 KiB
Python
from __future__ import annotations
|
|
|
|
from datetime import datetime
|
|
from typing import Any, Literal
|
|
|
|
from pydantic import BaseModel, ConfigDict, Field
|
|
|
|
|
|
class IdentityAccountLinkItem(BaseModel):
|
|
id: str
|
|
identity_id: str
|
|
account_id: str
|
|
is_primary: bool
|
|
source: str
|
|
created_at: datetime
|
|
updated_at: datetime
|
|
|
|
|
|
class IdentityItem(BaseModel):
|
|
id: str
|
|
display_name: str | None = None
|
|
external_subject: str | None = None
|
|
source: str
|
|
primary_account_id: str | None = None
|
|
account_ids: list[str]
|
|
account_links: list[IdentityAccountLinkItem] = Field(default_factory=list)
|
|
status: Literal["active", "inactive"]
|
|
is_active: bool
|
|
settings: dict[str, Any] = Field(default_factory=dict)
|
|
management_scope: Literal["system"] = "system"
|
|
created_at: datetime
|
|
updated_at: datetime
|
|
|
|
|
|
class IdentityListResponse(BaseModel):
|
|
identities: list[IdentityItem]
|
|
management_scope: Literal["system"] = "system"
|
|
tenant_context_id: str | None = None
|
|
|
|
|
|
class IdentityCreateRequest(BaseModel):
|
|
model_config = ConfigDict(extra="forbid")
|
|
|
|
display_name: str | None = Field(default=None, max_length=255)
|
|
external_subject: str | None = Field(default=None, max_length=255)
|
|
source: str = Field(default="local", min_length=1, max_length=50)
|
|
is_active: bool = True
|
|
settings: dict[str, Any] = Field(default_factory=dict)
|
|
|
|
|
|
class IdentityUpdateRequest(BaseModel):
|
|
model_config = ConfigDict(extra="forbid")
|
|
|
|
display_name: str | None = Field(default=None, max_length=255)
|
|
external_subject: str | None = Field(default=None, max_length=255)
|
|
source: str | None = Field(default=None, min_length=1, max_length=50)
|
|
is_active: bool | None = None
|
|
settings: dict[str, Any] | None = None
|
|
reason: str | None = Field(default=None, max_length=500)
|
|
|
|
|
|
class IdentityLifecycleRequest(BaseModel):
|
|
model_config = ConfigDict(extra="forbid")
|
|
|
|
reason: str | None = Field(default=None, max_length=500)
|
|
|
|
|
|
class IdentityAccountLinkCreateRequest(BaseModel):
|
|
model_config = ConfigDict(extra="forbid")
|
|
|
|
account_id: str = Field(min_length=1, max_length=36)
|
|
source: str = Field(default="local", min_length=1, max_length=50)
|
|
make_primary: bool = False
|
|
reason: str | None = Field(default=None, max_length=500)
|
|
|
|
|
|
class IdentityAccountLinkUpdateRequest(BaseModel):
|
|
model_config = ConfigDict(extra="forbid")
|
|
|
|
is_primary: bool
|
|
reason: str | None = Field(default=None, max_length=500)
|