Extend Postbox message authoring contract
This commit is contained in:
@@ -172,6 +172,8 @@ class PostboxDirectoryEntryRef:
|
||||
holder_count: int = 0
|
||||
vacant: bool = True
|
||||
access: PostboxAccessDecisionRef | None = None
|
||||
resource_revision: int = 1
|
||||
etag: str | None = None
|
||||
|
||||
|
||||
@dataclass(frozen=True, slots=True)
|
||||
@@ -213,6 +215,8 @@ class PostboxMessageRef:
|
||||
producer_module: str | None = None
|
||||
producer_resource_type: str | None = None
|
||||
producer_resource_id: str | None = None
|
||||
in_reply_to_message_id: str | None = None
|
||||
replaces_message_id: str | None = None
|
||||
encryption_profile: str = "plaintext_v1"
|
||||
key_epoch: int = 1
|
||||
ciphertext_ref: str | None = None
|
||||
@@ -222,6 +226,17 @@ class PostboxMessageRef:
|
||||
metadata: Mapping[str, object] = field(default_factory=dict)
|
||||
|
||||
|
||||
@dataclass(frozen=True, slots=True)
|
||||
class PostboxMessageAuthoringRequest:
|
||||
idempotency_key: str
|
||||
subject: str
|
||||
body_text: str | None = None
|
||||
classification: str = "internal"
|
||||
participants: tuple[PostboxParticipantRef, ...] = ()
|
||||
attachments: tuple[PostboxAttachmentRef, ...] = ()
|
||||
metadata: Mapping[str, object] = field(default_factory=dict)
|
||||
|
||||
|
||||
@dataclass(frozen=True, slots=True)
|
||||
class PostboxDeliveryReceiptSummaryRef:
|
||||
delivery_id: str
|
||||
@@ -380,6 +395,28 @@ class PostboxMessagesProvider(Protocol):
|
||||
) -> PostboxMessageRef:
|
||||
...
|
||||
|
||||
def create_message(
|
||||
self,
|
||||
session: object,
|
||||
*,
|
||||
tenant_id: str,
|
||||
postbox_id: str,
|
||||
actor: PostboxActorRef,
|
||||
request: PostboxMessageAuthoringRequest,
|
||||
) -> PostboxMessageRef:
|
||||
...
|
||||
|
||||
def reply_to_message(
|
||||
self,
|
||||
session: object,
|
||||
*,
|
||||
tenant_id: str,
|
||||
message_id: str,
|
||||
actor: PostboxActorRef,
|
||||
request: PostboxMessageAuthoringRequest,
|
||||
) -> PostboxMessageRef:
|
||||
...
|
||||
|
||||
|
||||
@runtime_checkable
|
||||
class PostboxDeliveryProvider(Protocol):
|
||||
|
||||
@@ -63,6 +63,14 @@ class _PostboxProvider:
|
||||
del session, tenant_id, message_id, actor, state
|
||||
return None
|
||||
|
||||
def create_message(self, session, *, tenant_id, postbox_id, actor, request):
|
||||
del session, tenant_id, postbox_id, actor, request
|
||||
return None
|
||||
|
||||
def reply_to_message(self, session, *, tenant_id, message_id, actor, request):
|
||||
del session, tenant_id, message_id, actor, request
|
||||
return None
|
||||
|
||||
def deliver(self, session, request):
|
||||
del session, request
|
||||
return None
|
||||
|
||||
Reference in New Issue
Block a user