Notification module API (1.0.0)

Download OpenAPI specification:

The notification module's HTTP API. All paths live under /api/notification with the major version in the path (/v1). Outbound delivery (webhook POST, SMTP) is at-least-once, never exactly-once or at-most-once. Every outbound delivery carries a stable per-job idempotency key (X-Kiban-Delivery-Id on webhook POSTs; Message-Id on SMTP) so receivers can dedupe a redelivery of the same job.

Liveness probe. Served on the service's own listener, not under `/api/<module>`.

Authorizations:
bearerAuth

Responses

Readiness probe (database ping). Served on the service's own listener, not under `/api/<module>`.

Authorizations:
bearerAuth

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

List notification channels for a company

Authorizations:
bearerAuth
path Parameters
companyId
required
string <uuid>
query Parameters
page
integer >= 1
Default: 1
pageSize
integer [ 1 .. 100 ]
Default: 25

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

Create a notification channel (notification.channels.manage)

Authorizations:
bearerAuth
path Parameters
companyId
required
string <uuid>
Request Body schema: application/json
required
key
required
string
label
required
string
kind
required
string
Enum: "in_app" "email" "webhook"
target
string or null

Responses

Request samples

Content type
application/json
{
  • "key": "string",
  • "label": "string",
  • "kind": "in_app",
  • "target": "string"
}

Response samples

Content type
application/json
{
  • "data": {
    }
}

getChannel

Authorizations:
bearerAuth
path Parameters
companyId
required
string <uuid>
channelId
required
string <uuid>

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

deleteChannel

Authorizations:
bearerAuth
path Parameters
companyId
required
string <uuid>
channelId
required
string <uuid>

Responses

Response samples

Content type
application/json
{
  • "error": {
    }
}

Subscribe the caller to a channel

Authorizations:
bearerAuth
path Parameters
companyId
required
string <uuid>
channelId
required
string <uuid>
Request Body schema: application/json
email
string or null

Responses

Request samples

Content type
application/json
{
  • "email": "string"
}

Response samples

Content type
application/json
{
  • "error": {
    }
}

unsubscribeSelf

Authorizations:
bearerAuth
path Parameters
companyId
required
string <uuid>
channelId
required
string <uuid>

Responses

Response samples

Content type
application/json
{
  • "error": {
    }
}

Poll the caller's inbox (v1 has no realtime push)

Authorizations:
bearerAuth
path Parameters
companyId
required
string <uuid>
query Parameters
page
integer >= 1
Default: 1
pageSize
integer [ 1 .. 100 ]
Default: 25

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

Send a message to a channel (fan-out to subscribers + delivery jobs)

Authorizations:
bearerAuth
path Parameters
companyId
required
string <uuid>
header Parameters
Idempotency-Key
string <= 200 characters
Request Body schema: application/json
required
channelId
required
string <uuid>
subjectLine
required
string [ 1 .. 200 ] characters

1..200 characters; must not contain control characters.

body
required
string

Responses

Request samples

Content type
application/json
{
  • "channelId": "5f6d08bc-455a-4532-98b8-19e2cee51160",
  • "subjectLine": "string",
  • "body": "string"
}

Response samples

Content type
application/json
{
  • "data": {
    }
}

markMessageRead

Authorizations:
bearerAuth
path Parameters
companyId
required
string <uuid>
messageId
required
string <uuid>

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

S2S entry point another module calls to notify a company member of something that happened in ITS domain (docs: "your doc was shared"; helpdesk: "ticket assigned to you"). Requires a valid bearer AND active company membership for the acting caller (company_module inbox.view). Recipients with no confirmed active membership are skipped, not errored.

Authorizations:
bearerAuth
path Parameters
companyId
required
string <uuid>

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}