Notifications

Create queue jobs to send notifications.

post

Claim-based access control: Identity_Issuer_Api, Identity_Verifier_Api

Authorizations
Body
recipientCognitoSubstringOptional

User identifier for the notification recipient, typically the Cognito UUID.

notificationTypeall ofRequired
string · enumOptionalPossible values:
notificationIconall ofRequired
string · enumOptionalPossible values:
notificationRecordIdstring · max: 255Optional
notificationRecordTypeall ofOptional
string · enumOptionalPossible values:
serviceall ofRequired
string · enumOptionalPossible values:
notificationTitlestring · min: 4 · max: 50Required
notificationSubtitlestring · min: 1 · max: 100Optional
notificationDescriptionstring · min: 1 · max: 255Required
Responses
201

Notification creation is queued

application/json
post
POST /api/v1/notifications/queue-notification HTTP/1.1
Host: {PORTAL_API_BASE_URL}
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 272

{
  "recipientCognitoSub": "text",
  "notificationType": "expired_vc",
  "notificationIcon": "error",
  "notificationRecordId": "text",
  "notificationRecordType": "credential_offer",
  "service": "issuer",
  "notificationTitle": "text",
  "notificationSubtitle": "text",
  "notificationDescription": "text"
}
{
  "message": "text",
  "scheduledJobId": "text"
}

Mark notification as read.

post

Claim-based access control: Issuer_Admin, Issuer_Auditor, Issuer_User, Verifier_Admin, Verifier_Auditor, Verifier_User

Authorizations
Path parameters
idstringRequired
Responses
200Success
application/json
post
POST /api/v1/notifications/{id}/read HTTP/1.1
Host: {PORTAL_API_BASE_URL}
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
  "id": "text",
  "createdAt": "2025-10-09T12:08:22.259Z",
  "notification": {
    "id": "text",
    "createdAt": "2025-10-09T12:08:22.259Z",
    "recipientCognitoSub": "text",
    "notificationType": "expired_vc",
    "notificationIcon": "error",
    "notificationRecordId": "text",
    "notificationRecordType": "credential_offer",
    "service": "issuer",
    "notificationTitle": "text",
    "notificationSubtitle": "text",
    "notificationDescription": "text"
  }
}

Mark all notifications as read.

post

Claim-based access control: Issuer_Admin, Issuer_Auditor, Issuer_User, Verifier_Admin, Verifier_Auditor, Verifier_User

Authorizations
Body
serviceall ofRequired

The service for which notifications are being marked as read.

string · enumOptionalPossible values:
Responses
201Success
application/json
post
POST /api/v1/notifications/mark-all-read HTTP/1.1
Host: {PORTAL_API_BASE_URL}
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 20

{
  "service": "issuer"
}
{
  "message": "text"
}

Get list of notifications

get

Claim-based access control: Issuer_Admin, Issuer_Auditor, Issuer_User, Verifier_Admin, Verifier_Auditor, Verifier_User

Authorizations
Query parameters
pagenumberOptional

Page number to retrieve.If you provide invalid value the default page number will applied Example: 1 Default Value: 1

limitnumberOptional

Number of records per page. Example: 20 Default Value: 20 Max Value: 100

  If provided value is greater than max value, max value will be applied.
filter.readstring[]Optional

Filter by read query param. Format: filter.read={$not}:OPERATION:VALUE Example: filter.read=$not:$like:John Doe&filter.read=like:John Available Operations$eq

filter.servicestring[]Optional

Filter by service query param. Format: filter.service={$not}:OPERATION:VALUE Example: filter.service=$not:$like:John Doe&filter.service=like:John Available Operations$eq

Responses
200Success
application/json
Responseall of
and
get
GET /api/v1/notifications HTTP/1.1
Host: {PORTAL_API_BASE_URL}
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
  "data": [
    {
      "id": "text",
      "createdAt": "2025-10-09T12:08:22.259Z",
      "recipientCognitoSub": "text",
      "notificationType": "expired_vc",
      "notificationIcon": "error",
      "notificationRecordId": "text",
      "notificationRecordType": "credential_offer",
      "service": "issuer",
      "notificationTitle": "text",
      "notificationSubtitle": "text",
      "notificationDescription": "text",
      "userRead": true
    }
  ],
  "meta": {
    "select": [
      "text"
    ],
    "filter": {
      "read": "text",
      "service": "text"
    }
  },
  "links": {
    "first": "text",
    "previous": "text",
    "current": "text",
    "next": "text",
    "last": "text"
  }
}

Get notification preferences of the request user.

get

Claim-based access control: Issuer_Admin, Issuer_Auditor, Issuer_User, Verifier_Admin, Verifier_Auditor, Verifier_User

Authorizations
Responses
200Success
application/json
get
GET /api/v1/notifications/preferences HTTP/1.1
Host: {PORTAL_API_BASE_URL}
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
  "credentialStatus": {
    "claimed_vc": true,
    "expired_vc": true,
    "expiring_vc": true
  },
  "userActivity": {
    "new_user": true,
    "role_changed": true,
    "user_removed": true
  },
  "verificationStatus": {
    "verification_error": true,
    "verification_failed": true,
    "verification_valid": true
  }
}

Create or update notification preferences of the request user.

patch

Claim-based access control: Issuer_Admin, Issuer_Auditor, Issuer_User, Verifier_Admin, Verifier_Auditor, Verifier_User

Authorizations
Body
Responses
200Success
application/json
patch
PATCH /api/v1/notifications/preferences HTTP/1.1
Host: {PORTAL_API_BASE_URL}
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 207

{
  "preferences": {
    "expired_vc": true,
    "expiring_vc": true,
    "claimed_vc": true,
    "new_user": true,
    "user_removed": true,
    "role_changed": true,
    "verification_error": true,
    "verification_failed": true,
    "verification_valid": true
  }
}
{
  "credentialStatus": {
    "claimed_vc": true,
    "expired_vc": true,
    "expiring_vc": true
  },
  "userActivity": {
    "new_user": true,
    "role_changed": true,
    "user_removed": true
  },
  "verificationStatus": {
    "verification_error": true,
    "verification_failed": true,
    "verification_valid": true
  }
}