Skip to content

Message Streams

Examples use the postmark client from Usage.

The Message Streams API is available via the message_streams manager. It uses the server token.

List streams, optionally filtered by type and including archived ones:

>>> postmark.message_streams.all()
[<MessageStream: outbound>, <MessageStream: inbound>, ...]
>>> postmark.message_streams.all(
...     MessageStreamType="Broadcasts", IncludeArchivedStreams=True
... )
[<MessageStream: broadcasts>]

Get a stream by its ID:

>>> stream = postmark.message_streams.get("broadcasts")
>>> stream.Name
'Broadcast Stream'

Create a stream. MessageStreamType is Transactional or Broadcasts:

>>> stream = postmark.message_streams.create(
...     ID="transactional-dev",
...     Name="My Dev Transactional Stream",
...     MessageStreamType="Transactional",
...     Description="This is my second transactional stream",
... )

Edit a stream; fields you leave out stay unchanged:

>>> stream.edit(Name="Updated Dev Stream")
>>> stream.edit(
...     SubscriptionManagementConfiguration={
...         "UnsubscribeHandlingType": "Postmark"
...     }
... )

Archive a stream. Postmark deletes it after ExpectedPurgeDate (45 days):

>>> stream.archive()
{
    'ID': 'transactional-dev',
    'ServerID': 123457,
    'ExpectedPurgeDate': '2020-08-30T12:30:00.00-04:00'
}

Restore an archived stream before then:

>>> stream.unarchive()
<MessageStream: transactional-dev>

The manager offers the same operations by stream ID. Its edit and unarchive return a new MessageStream:

postmark.message_streams.edit("transactional-dev", Name="New name")
postmark.message_streams.archive("transactional-dev")
postmark.message_streams.unarchive("transactional-dev")