Ingress
Replay the identical publisher transaction
POST/orgs/{orgId}/publisher/callback-deliveries/{deliveryId}/replay
Queue the original transaction and exact immutable payload; deduplicate at the publisher using transactionId. A replay cannot create another ledger entry or claim that a user was credited.
Authentication
sessionCookie / bearerAuth
__Host-krin_session
HttpOnly Secure SameSite=Lax console session. Writes require CSRF token and Origin validation.
bearer
Organization-scoped API access token. Server intersects current membership and token scopes.
Required roles
publisher:ownerpublisher:integration_manager
Human approval required
Getting startedParameters
orgId
path · Required · string
orgId scoped to the authenticated identity and organization.
Inspect JSON schema
{
"type": "string",
"pattern": "^[a-z][a-z0-9]*_[A-Za-z0-9_-]+$",
"maxLength": 128
}deliveryId
path · Required · string
deliveryId scoped to the authenticated identity and organization.
Inspect JSON schema
{
"type": "string",
"pattern": "^[a-z][a-z0-9]*_[A-Za-z0-9_-]+$",
"maxLength": 128
}Idempotency-Key
header · Required · string
UUID per user intent. Retain body/key through retries and unknown outcomes for at least 7 days.
Inspect JSON schema
{
"type": "string",
"format": "uuid"
}Request body
application/json · Required
reasonRequiredstringminLength:
1maxLength:
500
Inspect JSON schema
{
"type": "object",
"additionalProperties": false,
"required": [
"reason"
],
"properties": {
"reason": {
"type": "string",
"minLength": 1,
"maxLength": 500
}
}
}Responses
202Replay the identical publisher transaction
X-Request-Id · Opaque trace reference; never contains user data.
application/json
idRequiredstringmaxLength:
128pattern:
^[a-z][a-z0-9]*_[A-Za-z0-9_-]+$orgIdRequiredstringmaxLength:
128pattern:
^[a-z][a-z0-9]*_[A-Za-z0-9_-]+$transactionIdRequiredstringmaxLength:
128pattern:
^[a-z][a-z0-9]*_[A-Za-z0-9_-]+$payloadRequiredPublisherCallbackstatusRequiredstring"queued" · "retrying" · "delivered" · "dead_letter"attemptsRequiredintegerminimum:
0maximum:
100attemptLogRequiredDeliveryAttempt[]lastHttpStatusRequiredinteger | nullnextAttemptAtRequiredstring | nullpublisherReceivedAtRequiredstring | nulluserCreditedAtRequiredstring | nullsigningKeyIdRequiredstringmaxLength:
128pattern:
^[a-z][a-z0-9]*_[A-Za-z0-9_-]+$
Inspect JSON schema
{
"type": "object",
"additionalProperties": false,
"required": [
"id",
"orgId",
"transactionId",
"payload",
"status",
"attempts",
"attemptLog",
"lastHttpStatus",
"nextAttemptAt",
"publisherReceivedAt",
"userCreditedAt",
"signingKeyId"
],
"properties": {
"id": {
"type": "string",
"pattern": "^[a-z][a-z0-9]*_[A-Za-z0-9_-]+$",
"maxLength": 128
},
"orgId": {
"type": "string",
"pattern": "^[a-z][a-z0-9]*_[A-Za-z0-9_-]+$",
"maxLength": 128
},
"transactionId": {
"type": "string",
"pattern": "^[a-z][a-z0-9]*_[A-Za-z0-9_-]+$",
"maxLength": 128
},
"payload": {
"$ref": "#/components/schemas/PublisherCallback"
},
"status": {
"type": "string",
"enum": [
"queued",
"retrying",
"delivered",
"dead_letter"
]
},
"attempts": {
"type": "integer",
"minimum": 0,
"maximum": 100
},
"attemptLog": {
"type": "array",
"items": {
"$ref": "#/components/schemas/DeliveryAttempt"
},
"minItems": 0,
"maxItems": 100
},
"lastHttpStatus": {
"anyOf": [
{
"type": "integer",
"minimum": 100,
"maximum": 599
},
{
"type": "null"
}
]
},
"nextAttemptAt": {
"anyOf": [
{
"type": "string",
"format": "date-time"
},
{
"type": "null"
}
]
},
"publisherReceivedAt": {
"anyOf": [
{
"type": "string",
"format": "date-time"
},
{
"type": "null"
}
]
},
"userCreditedAt": {
"anyOf": [
{
"type": "string",
"format": "date-time"
},
{
"type": "null"
}
]
},
"signingKeyId": {
"type": "string",
"pattern": "^[a-z][a-z0-9]*_[A-Za-z0-9_-]+$",
"maxLength": 128
}
}
}400Invalid request
X-Request-Id · Opaque trace reference; never contains user data.
application/problem+json
typeRequiredstringformat:
urititleRequiredstringminLength:
1maxLength:
200statusRequiredintegerminimum:
400maximum:
599codeRequiredstringminLength:
1maxLength:
80pattern:
^[a-z][a-z0-9_]+$detailOptionalstringminLength:
1maxLength:
2000instanceOptionalstringminLength:
1maxLength:
512errorsOptionalobject
Inspect JSON schema
{
"type": "object",
"additionalProperties": false,
"required": [
"type",
"title",
"status",
"code"
],
"properties": {
"type": {
"type": "string",
"format": "uri"
},
"title": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"status": {
"type": "integer",
"minimum": 400,
"maximum": 599
},
"code": {
"type": "string",
"minLength": 1,
"maxLength": 80,
"pattern": "^[a-z][a-z0-9_]+$"
},
"detail": {
"type": "string",
"minLength": 1,
"maxLength": 2000
},
"instance": {
"type": "string",
"minLength": 1,
"maxLength": 512
},
"errors": {
"type": "object",
"additionalProperties": {
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 300
},
"minItems": 1,
"maxItems": 10
}
}
}
}401Authentication required
X-Request-Id · Opaque trace reference; never contains user data.
application/problem+json
typeRequiredstringformat:
urititleRequiredstringminLength:
1maxLength:
200statusRequiredintegerminimum:
400maximum:
599codeRequiredstringminLength:
1maxLength:
80pattern:
^[a-z][a-z0-9_]+$detailOptionalstringminLength:
1maxLength:
2000instanceOptionalstringminLength:
1maxLength:
512errorsOptionalobject
Inspect JSON schema
{
"type": "object",
"additionalProperties": false,
"required": [
"type",
"title",
"status",
"code"
],
"properties": {
"type": {
"type": "string",
"format": "uri"
},
"title": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"status": {
"type": "integer",
"minimum": 400,
"maximum": 599
},
"code": {
"type": "string",
"minLength": 1,
"maxLength": 80,
"pattern": "^[a-z][a-z0-9_]+$"
},
"detail": {
"type": "string",
"minLength": 1,
"maxLength": 2000
},
"instance": {
"type": "string",
"minLength": 1,
"maxLength": 512
},
"errors": {
"type": "object",
"additionalProperties": {
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 300
},
"minItems": 1,
"maxItems": 10
}
}
}
}403Insufficient permission
X-Request-Id · Opaque trace reference; never contains user data.
application/problem+json
typeRequiredstringformat:
urititleRequiredstringminLength:
1maxLength:
200statusRequiredintegerminimum:
400maximum:
599codeRequiredstringminLength:
1maxLength:
80pattern:
^[a-z][a-z0-9_]+$detailOptionalstringminLength:
1maxLength:
2000instanceOptionalstringminLength:
1maxLength:
512errorsOptionalobject
Inspect JSON schema
{
"type": "object",
"additionalProperties": false,
"required": [
"type",
"title",
"status",
"code"
],
"properties": {
"type": {
"type": "string",
"format": "uri"
},
"title": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"status": {
"type": "integer",
"minimum": 400,
"maximum": 599
},
"code": {
"type": "string",
"minLength": 1,
"maxLength": 80,
"pattern": "^[a-z][a-z0-9_]+$"
},
"detail": {
"type": "string",
"minLength": 1,
"maxLength": 2000
},
"instance": {
"type": "string",
"minLength": 1,
"maxLength": 512
},
"errors": {
"type": "object",
"additionalProperties": {
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 300
},
"minItems": 1,
"maxItems": 10
}
}
}
}404Resource not found
X-Request-Id · Opaque trace reference; never contains user data.
application/problem+json
typeRequiredstringformat:
urititleRequiredstringminLength:
1maxLength:
200statusRequiredintegerminimum:
400maximum:
599codeRequiredstringminLength:
1maxLength:
80pattern:
^[a-z][a-z0-9_]+$detailOptionalstringminLength:
1maxLength:
2000instanceOptionalstringminLength:
1maxLength:
512errorsOptionalobject
Inspect JSON schema
{
"type": "object",
"additionalProperties": false,
"required": [
"type",
"title",
"status",
"code"
],
"properties": {
"type": {
"type": "string",
"format": "uri"
},
"title": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"status": {
"type": "integer",
"minimum": 400,
"maximum": 599
},
"code": {
"type": "string",
"minLength": 1,
"maxLength": 80,
"pattern": "^[a-z][a-z0-9_]+$"
},
"detail": {
"type": "string",
"minLength": 1,
"maxLength": 2000
},
"instance": {
"type": "string",
"minLength": 1,
"maxLength": 512
},
"errors": {
"type": "object",
"additionalProperties": {
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 300
},
"minItems": 1,
"maxItems": 10
}
}
}
}409State changed
X-Request-Id · Opaque trace reference; never contains user data.
application/problem+json
typeRequiredstringformat:
urititleRequiredstringminLength:
1maxLength:
200statusRequiredintegerminimum:
400maximum:
599codeRequiredstringminLength:
1maxLength:
80pattern:
^[a-z][a-z0-9_]+$detailOptionalstringminLength:
1maxLength:
2000instanceOptionalstringminLength:
1maxLength:
512errorsOptionalobject
Inspect JSON schema
{
"type": "object",
"additionalProperties": false,
"required": [
"type",
"title",
"status",
"code"
],
"properties": {
"type": {
"type": "string",
"format": "uri"
},
"title": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"status": {
"type": "integer",
"minimum": 400,
"maximum": 599
},
"code": {
"type": "string",
"minLength": 1,
"maxLength": 80,
"pattern": "^[a-z][a-z0-9_]+$"
},
"detail": {
"type": "string",
"minLength": 1,
"maxLength": 2000
},
"instance": {
"type": "string",
"minLength": 1,
"maxLength": 512
},
"errors": {
"type": "object",
"additionalProperties": {
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 300
},
"minItems": 1,
"maxItems": 10
}
}
}
}413Payload too large
X-Request-Id · Opaque trace reference; never contains user data.
application/problem+json
typeRequiredstringformat:
urititleRequiredstringminLength:
1maxLength:
200statusRequiredintegerminimum:
400maximum:
599codeRequiredstringminLength:
1maxLength:
80pattern:
^[a-z][a-z0-9_]+$detailOptionalstringminLength:
1maxLength:
2000instanceOptionalstringminLength:
1maxLength:
512errorsOptionalobject
Inspect JSON schema
{
"type": "object",
"additionalProperties": false,
"required": [
"type",
"title",
"status",
"code"
],
"properties": {
"type": {
"type": "string",
"format": "uri"
},
"title": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"status": {
"type": "integer",
"minimum": 400,
"maximum": 599
},
"code": {
"type": "string",
"minLength": 1,
"maxLength": 80,
"pattern": "^[a-z][a-z0-9_]+$"
},
"detail": {
"type": "string",
"minLength": 1,
"maxLength": 2000
},
"instance": {
"type": "string",
"minLength": 1,
"maxLength": 512
},
"errors": {
"type": "object",
"additionalProperties": {
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 300
},
"minItems": 1,
"maxItems": 10
}
}
}
}415Unsupported media type
X-Request-Id · Opaque trace reference; never contains user data.
application/problem+json
typeRequiredstringformat:
urititleRequiredstringminLength:
1maxLength:
200statusRequiredintegerminimum:
400maximum:
599codeRequiredstringminLength:
1maxLength:
80pattern:
^[a-z][a-z0-9_]+$detailOptionalstringminLength:
1maxLength:
2000instanceOptionalstringminLength:
1maxLength:
512errorsOptionalobject
Inspect JSON schema
{
"type": "object",
"additionalProperties": false,
"required": [
"type",
"title",
"status",
"code"
],
"properties": {
"type": {
"type": "string",
"format": "uri"
},
"title": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"status": {
"type": "integer",
"minimum": 400,
"maximum": 599
},
"code": {
"type": "string",
"minLength": 1,
"maxLength": 80,
"pattern": "^[a-z][a-z0-9_]+$"
},
"detail": {
"type": "string",
"minLength": 1,
"maxLength": 2000
},
"instance": {
"type": "string",
"minLength": 1,
"maxLength": 512
},
"errors": {
"type": "object",
"additionalProperties": {
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 300
},
"minItems": 1,
"maxItems": 10
}
}
}
}422Validation failed
X-Request-Id · Opaque trace reference; never contains user data.
application/problem+json
typeRequiredstringformat:
urititleRequiredstringminLength:
1maxLength:
200statusRequiredintegerminimum:
400maximum:
599codeRequiredstringminLength:
1maxLength:
80pattern:
^[a-z][a-z0-9_]+$detailOptionalstringminLength:
1maxLength:
2000instanceOptionalstringminLength:
1maxLength:
512errorsOptionalobject
Inspect JSON schema
{
"type": "object",
"additionalProperties": false,
"required": [
"type",
"title",
"status",
"code"
],
"properties": {
"type": {
"type": "string",
"format": "uri"
},
"title": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"status": {
"type": "integer",
"minimum": 400,
"maximum": 599
},
"code": {
"type": "string",
"minLength": 1,
"maxLength": 80,
"pattern": "^[a-z][a-z0-9_]+$"
},
"detail": {
"type": "string",
"minLength": 1,
"maxLength": 2000
},
"instance": {
"type": "string",
"minLength": 1,
"maxLength": 512
},
"errors": {
"type": "object",
"additionalProperties": {
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 300
},
"minItems": 1,
"maxItems": 10
}
}
}
}429Too many requests
X-Request-Id · Opaque trace reference; never contains user data.
Retry-After · Seconds before retry; do not repeat an unknown write automatically.
application/problem+json
typeRequiredstringformat:
urititleRequiredstringminLength:
1maxLength:
200statusRequiredintegerminimum:
400maximum:
599codeRequiredstringminLength:
1maxLength:
80pattern:
^[a-z][a-z0-9_]+$detailOptionalstringminLength:
1maxLength:
2000instanceOptionalstringminLength:
1maxLength:
512errorsOptionalobject
Inspect JSON schema
{
"type": "object",
"additionalProperties": false,
"required": [
"type",
"title",
"status",
"code"
],
"properties": {
"type": {
"type": "string",
"format": "uri"
},
"title": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"status": {
"type": "integer",
"minimum": 400,
"maximum": 599
},
"code": {
"type": "string",
"minLength": 1,
"maxLength": 80,
"pattern": "^[a-z][a-z0-9_]+$"
},
"detail": {
"type": "string",
"minLength": 1,
"maxLength": 2000
},
"instance": {
"type": "string",
"minLength": 1,
"maxLength": 512
},
"errors": {
"type": "object",
"additionalProperties": {
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 300
},
"minItems": 1,
"maxItems": 10
}
}
}
}500Service failed
X-Request-Id · Opaque trace reference; never contains user data.
application/problem+json
typeRequiredstringformat:
urititleRequiredstringminLength:
1maxLength:
200statusRequiredintegerminimum:
400maximum:
599codeRequiredstringminLength:
1maxLength:
80pattern:
^[a-z][a-z0-9_]+$detailOptionalstringminLength:
1maxLength:
2000instanceOptionalstringminLength:
1maxLength:
512errorsOptionalobject
Inspect JSON schema
{
"type": "object",
"additionalProperties": false,
"required": [
"type",
"title",
"status",
"code"
],
"properties": {
"type": {
"type": "string",
"format": "uri"
},
"title": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"status": {
"type": "integer",
"minimum": 400,
"maximum": 599
},
"code": {
"type": "string",
"minLength": 1,
"maxLength": 80,
"pattern": "^[a-z][a-z0-9_]+$"
},
"detail": {
"type": "string",
"minLength": 1,
"maxLength": 2000
},
"instance": {
"type": "string",
"minLength": 1,
"maxLength": 512
},
"errors": {
"type": "object",
"additionalProperties": {
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 300
},
"minItems": 1,
"maxItems": 10
}
}
}
}503Service unavailable
X-Request-Id · Opaque trace reference; never contains user data.
Retry-After · Seconds before retry; do not repeat an unknown write automatically.
application/problem+json
typeRequiredstringformat:
urititleRequiredstringminLength:
1maxLength:
200statusRequiredintegerminimum:
400maximum:
599codeRequiredstringminLength:
1maxLength:
80pattern:
^[a-z][a-z0-9_]+$detailOptionalstringminLength:
1maxLength:
2000instanceOptionalstringminLength:
1maxLength:
512errorsOptionalobject
Inspect JSON schema
{
"type": "object",
"additionalProperties": false,
"required": [
"type",
"title",
"status",
"code"
],
"properties": {
"type": {
"type": "string",
"format": "uri"
},
"title": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"status": {
"type": "integer",
"minimum": 400,
"maximum": 599
},
"code": {
"type": "string",
"minLength": 1,
"maxLength": 80,
"pattern": "^[a-z][a-z0-9_]+$"
},
"detail": {
"type": "string",
"minLength": 1,
"maxLength": 2000
},
"instance": {
"type": "string",
"minLength": 1,
"maxLength": 512
},
"errors": {
"type": "object",
"additionalProperties": {
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 300
},
"minItems": 1,
"maxItems": 10
}
}
}
}