Add encrypted envelope recipient state

This commit is contained in:
2026-07-31 22:48:07 +02:00
parent dc6f81dd33
commit e3daf400f3
10 changed files with 272 additions and 2 deletions
+30
View File
@@ -75,6 +75,26 @@ class PostboxAttachmentPayload(BaseModel):
metadata: dict[str, Any] = Field(default_factory=dict)
class PostboxWrappedKeyPayload(BaseModel):
recipient_type: str = Field(min_length=1, max_length=50)
recipient_id: str = Field(min_length=1, max_length=255)
key_epoch: int = Field(ge=1)
wrapped_key_ref: str = Field(min_length=1, max_length=2000)
algorithm: str | None = Field(default=None, max_length=100)
metadata: dict[str, Any] = Field(default_factory=dict)
class PostboxExternalRecipientTokenPayload(BaseModel):
token_id: str = Field(min_length=1, max_length=255)
state: Literal["pending", "available", "fetched", "expired", "revoked"]
expires_at: datetime | None = None
one_time: bool = False
key_fetched_at: datetime | None = None
revoked_at: datetime | None = None
assurance_profile: str | None = Field(default=None, max_length=100)
metadata: dict[str, Any] = Field(default_factory=dict)
class PostboxMessageItem(BaseModel):
id: str
tenant_id: str
@@ -99,6 +119,10 @@ class PostboxMessageItem(BaseModel):
key_epoch: int
ciphertext_ref: str | None = None
signed_manifest_ref: str | None = None
wrapped_keys: list[PostboxWrappedKeyPayload] = Field(default_factory=list)
external_recipient_tokens: list[PostboxExternalRecipientTokenPayload] = Field(
default_factory=list
)
participants: list[PostboxParticipantPayload] = Field(default_factory=list)
attachments: list[PostboxAttachmentPayload] = Field(default_factory=list)
metadata: dict[str, Any] = Field(default_factory=dict)
@@ -165,6 +189,12 @@ class PostboxDeliveryCreateRequest(BaseModel):
participants: list[PostboxParticipantPayload] = Field(default_factory=list)
attachments: list[PostboxAttachmentPayload] = Field(default_factory=list)
expires_at: datetime | None = None
ciphertext_ref: str | None = Field(default=None, max_length=1000)
signed_manifest_ref: str | None = Field(default=None, max_length=1000)
wrapped_keys: list[PostboxWrappedKeyPayload] = Field(default_factory=list)
external_recipient_tokens: list[PostboxExternalRecipientTokenPayload] = Field(
default_factory=list
)
metadata: dict[str, Any] = Field(default_factory=dict)