Implement family dataspace onboarding
This commit is contained in:
parent
af6d82038e
commit
531c2193a4
13 changed files with 1400 additions and 1 deletions
|
|
@ -16,6 +16,11 @@ from user_engine.domain.models import (
|
|||
Catalog,
|
||||
CatalogLifecycle,
|
||||
ExternalIdentity,
|
||||
FamilyDataspaceRequest,
|
||||
FamilyInvitation,
|
||||
FamilyMemberSpec,
|
||||
FamilyRole,
|
||||
InvitationStatus,
|
||||
ManagementMode,
|
||||
Membership,
|
||||
Mutability,
|
||||
|
|
@ -48,6 +53,11 @@ __all__ = [
|
|||
"Catalog",
|
||||
"CatalogLifecycle",
|
||||
"ExternalIdentity",
|
||||
"FamilyDataspaceRequest",
|
||||
"FamilyInvitation",
|
||||
"FamilyMemberSpec",
|
||||
"FamilyRole",
|
||||
"InvitationStatus",
|
||||
"ManagementMode",
|
||||
"Membership",
|
||||
"Mutability",
|
||||
|
|
|
|||
|
|
@ -45,6 +45,20 @@ class ManagementMode(StrEnum):
|
|||
SERVICE_MANAGED = "service_managed"
|
||||
|
||||
|
||||
class FamilyRole(StrEnum):
|
||||
OWNER = "owner"
|
||||
ADULT = "adult"
|
||||
CHILD = "child"
|
||||
GUEST = "guest"
|
||||
DELEGATED_CARETAKER = "delegated-caretaker"
|
||||
|
||||
|
||||
class InvitationStatus(StrEnum):
|
||||
PENDING = "pending"
|
||||
ACCEPTED = "accepted"
|
||||
REVOKED = "revoked"
|
||||
|
||||
|
||||
class ProfileScope(StrEnum):
|
||||
GLOBAL = "global"
|
||||
TENANT = "tenant"
|
||||
|
|
@ -252,6 +266,53 @@ class Membership:
|
|||
created_at: datetime = field(default_factory=utc_now)
|
||||
|
||||
|
||||
@dataclass(frozen=True)
|
||||
class FamilyMemberSpec:
|
||||
primary_email: str
|
||||
role: FamilyRole | str = FamilyRole.ADULT
|
||||
display_name: str | None = None
|
||||
issuer: str | None = None
|
||||
subject: str | None = None
|
||||
provider: str | None = None
|
||||
profile_defaults: Mapping[str, Any] = field(default_factory=dict)
|
||||
|
||||
|
||||
@dataclass(frozen=True)
|
||||
class FamilyDataspaceRequest:
|
||||
tenant: str
|
||||
family_scope_id: str
|
||||
family_display_name: str
|
||||
application_id: str = "app.personal-dataspace"
|
||||
application_display_name: str = "Personal Dataspace"
|
||||
oidc_client_id: str | None = None
|
||||
protected_system_id: str | None = None
|
||||
catalog_namespace: str = "dataspace"
|
||||
event_source: str | None = None
|
||||
deployment_ref: str | None = None
|
||||
member_specs: tuple[FamilyMemberSpec, ...] = ()
|
||||
owner_profile_defaults: Mapping[str, Any] = field(default_factory=dict)
|
||||
|
||||
|
||||
@dataclass(frozen=True)
|
||||
class FamilyInvitation:
|
||||
invitation_id: str
|
||||
tenant: str
|
||||
family_scope_id: str
|
||||
application_id: str
|
||||
user_id: str
|
||||
primary_email: str
|
||||
role: str
|
||||
status: InvitationStatus = InvitationStatus.PENDING
|
||||
invited_by: str | None = None
|
||||
correlation_id: str | None = None
|
||||
resend_count: int = 0
|
||||
last_sent_correlation_id: str | None = None
|
||||
created_at: datetime = field(default_factory=utc_now)
|
||||
updated_at: datetime = field(default_factory=utc_now)
|
||||
accepted_at: datetime | None = None
|
||||
revoked_at: datetime | None = None
|
||||
|
||||
|
||||
@dataclass(frozen=True)
|
||||
class AuthorizationRequest:
|
||||
actor: Actor
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue