Extend Postbox message authoring contract
This commit is contained in:
@@ -172,6 +172,8 @@ class PostboxDirectoryEntryRef:
|
|||||||
holder_count: int = 0
|
holder_count: int = 0
|
||||||
vacant: bool = True
|
vacant: bool = True
|
||||||
access: PostboxAccessDecisionRef | None = None
|
access: PostboxAccessDecisionRef | None = None
|
||||||
|
resource_revision: int = 1
|
||||||
|
etag: str | None = None
|
||||||
|
|
||||||
|
|
||||||
@dataclass(frozen=True, slots=True)
|
@dataclass(frozen=True, slots=True)
|
||||||
@@ -213,6 +215,8 @@ class PostboxMessageRef:
|
|||||||
producer_module: str | None = None
|
producer_module: str | None = None
|
||||||
producer_resource_type: str | None = None
|
producer_resource_type: str | None = None
|
||||||
producer_resource_id: 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"
|
encryption_profile: str = "plaintext_v1"
|
||||||
key_epoch: int = 1
|
key_epoch: int = 1
|
||||||
ciphertext_ref: str | None = None
|
ciphertext_ref: str | None = None
|
||||||
@@ -222,6 +226,17 @@ class PostboxMessageRef:
|
|||||||
metadata: Mapping[str, object] = field(default_factory=dict)
|
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)
|
@dataclass(frozen=True, slots=True)
|
||||||
class PostboxDeliveryReceiptSummaryRef:
|
class PostboxDeliveryReceiptSummaryRef:
|
||||||
delivery_id: str
|
delivery_id: str
|
||||||
@@ -380,6 +395,28 @@ class PostboxMessagesProvider(Protocol):
|
|||||||
) -> PostboxMessageRef:
|
) -> 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
|
@runtime_checkable
|
||||||
class PostboxDeliveryProvider(Protocol):
|
class PostboxDeliveryProvider(Protocol):
|
||||||
|
|||||||
@@ -63,6 +63,14 @@ class _PostboxProvider:
|
|||||||
del session, tenant_id, message_id, actor, state
|
del session, tenant_id, message_id, actor, state
|
||||||
return None
|
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):
|
def deliver(self, session, request):
|
||||||
del session, request
|
del session, request
|
||||||
return None
|
return None
|
||||||
|
|||||||
Reference in New Issue
Block a user