Extend calendar invitation capability contract
This commit is contained in:
@@ -91,6 +91,16 @@ class CalendarInvitationRef:
|
||||
degraded_reasons: tuple[str, ...] = ()
|
||||
|
||||
|
||||
@dataclass(frozen=True, slots=True)
|
||||
class CalendarInvitationCalendarRef:
|
||||
id: str
|
||||
name: str
|
||||
color: str | None = None
|
||||
timezone: str = "UTC"
|
||||
source_kind: str = "local"
|
||||
writable: bool = True
|
||||
|
||||
|
||||
@dataclass(frozen=True, slots=True)
|
||||
class CalendarExternalProfileRequest:
|
||||
"""Connector-neutral request for a Calendar-owned external profile."""
|
||||
@@ -165,6 +175,20 @@ class CalendarOutboxProvider(Protocol):
|
||||
class CalendarInvitationProvider(Protocol):
|
||||
"""Correlation-aware invitation boundary for Campaign and Mail adapters."""
|
||||
|
||||
def list_calendars(
|
||||
self,
|
||||
session: object,
|
||||
*,
|
||||
tenant_id: str,
|
||||
user_id: str | None = None,
|
||||
group_ids: Sequence[str] = (),
|
||||
can_admin: bool = False,
|
||||
) -> Sequence[CalendarInvitationCalendarRef]:
|
||||
...
|
||||
|
||||
def render_invitation(self, request: CalendarInvitationRequest) -> str:
|
||||
...
|
||||
|
||||
def upsert_invitation(
|
||||
self,
|
||||
session: object,
|
||||
@@ -184,6 +208,26 @@ class CalendarInvitationProvider(Protocol):
|
||||
) -> CalendarInvitationRef | None:
|
||||
...
|
||||
|
||||
def get_invitations(
|
||||
self,
|
||||
session: object,
|
||||
*,
|
||||
tenant_id: str,
|
||||
correlation_ids: Sequence[str],
|
||||
) -> Mapping[str, CalendarInvitationRef]:
|
||||
...
|
||||
|
||||
def summarize_invitations(
|
||||
self,
|
||||
session: object,
|
||||
*,
|
||||
tenant_id: str,
|
||||
source_module: str,
|
||||
source_resource_type: str,
|
||||
source_resource_id: str | None,
|
||||
) -> Mapping[str, object]:
|
||||
...
|
||||
|
||||
def record_response(
|
||||
self,
|
||||
session: object,
|
||||
@@ -198,6 +242,17 @@ class CalendarInvitationProvider(Protocol):
|
||||
) -> CalendarInvitationRef:
|
||||
...
|
||||
|
||||
def record_icalendar_reply(
|
||||
self,
|
||||
session: object,
|
||||
*,
|
||||
tenant_id: str,
|
||||
icalendar: str,
|
||||
received_at: datetime | None = None,
|
||||
evidence: Mapping[str, object] | None = None,
|
||||
) -> Sequence[CalendarInvitationRef]:
|
||||
...
|
||||
|
||||
|
||||
@runtime_checkable
|
||||
class CalendarExternalProfileProvider(Protocol):
|
||||
|
||||
Reference in New Issue
Block a user