Skip to content

Re-send a notification

POST
/api/sessions/{sessionId}/notification
curl --request POST \
--url https://example.com/api/sessions/0193f6c1-7a2e-7b4d-9f01-2c3d4e5f6a7b/notification \
--header 'Authorization: Bearer <token>'

The ops replay. The ending must be told again — because they never heard it, or because they heard it and their own processing broke afterwards: an acknowledged notification is replayable, since a 2xx only ever meant their endpoint answered. Re-arms the WHOLE retry calendar rather than firing once — same notificationId on the wire, so the merchant’s idempotency reads the replay as the retry it is. A human’s gesture: contact tokens only, never client_credentials.

sessionId
required
string format: uuid
/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/

The session, as a search returned it. A lowercase UUID — the ones we mint are v7.

Example
0193f6c1-7a2e-7b4d-9f01-2c3d4e5f6a7b

The calendar, re-armed and fresh — the first delivery is imminent.

Media typeapplication/json
object
url
required

Where the replay will be delivered — the address the session recorded.

string
failures
required

How many attempts had failed before this replay was armed.

integer
abandoned
required

Whether the calendar was spent when you asked — a replay re-arms it either way.

boolean
Example
{
"url": "https://shop.example/payplug/notifications",
"failures": 6,
"abandoned": true
}

InvalidRequest — the request could not be read: a missing or malformed field, a bad pattern, or a property this door does not declare (the message names it). Every door with a schema can answer this, before any business rule is consulted.

Media typeapplication/json
object
code
required

Stable machine-readable code — the one thing to branch on. Never parse the message.

string
message
required

English sentence for logs and operators. Wording may change; the code will not.

string
Example
{
"code": "InvalidRequest",
"message": "body/<field> failed validation"
}

Unauthorized — the only code this response carries: no usable access token (absent, malformed, expired). One answer for every failure shape, so nothing can be learned by watching which one comes back.

Media typeapplication/json
object
code
required

Stable machine-readable code — the one thing to branch on. Never parse the message.

string
message
required

English sentence for logs and operators. Wording may change; the code will not.

string
Example
{
"code": "Unauthorized",
"message": "a valid access token is required"
}

NotFound — the only code this response carries: unknown, or belonging to another merchant. The two are deliberately indistinguishable.

Media typeapplication/json
object
code
required

Stable machine-readable code — the one thing to branch on. Never parse the message.

string
message
required

English sentence for logs and operators. Wording may change; the code will not.

string
Example
{
"code": "NotFound",
"message": "no such resource"
}

Nothing to replay NOW: the calendar is still running on its own (NotificationNotAbandoned), or the session has not ended (SessionNotEnded). An acknowledged notification IS replayable — an integrator whose processing broke after answering 2xx has nothing else to ask for.

Media typeapplication/json
object
code
required

Stable machine-readable code — the one thing to branch on. Never parse the message.

string
message
required

English sentence for logs and operators. Wording may change; the code will not.

string
Example
{
"code": "NotificationNotAbandoned",
"message": "the calendar is still running — a retry is already coming"
}

The session declares no notification address (NoNotificationUrl).

Media typeapplication/json
object
code
required

Stable machine-readable code — the one thing to branch on. Never parse the message.

string
message
required

English sentence for logs and operators. Wording may change; the code will not.

string
Example
{
"code": "NoNotificationUrl",
"message": "this session declares no notification address — there is nothing to deliver"
}