LogoLogo
Back to All
  • TNG Identity user documentation
  • ๐Ÿ“‘INTRODUCTION
    • Introduction to TNG Identity
    • Why choose TNG Identity?
      • DID differentiators
    • How does TNG Identity work?
      • Data flows
      • Use cases and applications
    • Standards and regulations
    • Portal API
      • Overview
      • Getting Started
      • API Documentation
        • App
        • Auth
        • Mail
        • Organisation Profiles
        • User Profiles
        • PSP > Product Manager > Customer User Api Key
        • PSP > Product Manager > User Manager
  • ๐Ÿ“„TNG Identity Issuers
    • What is an issuer?
    • How to become an issuer?
    • Operating an issuer
    • What do issuers do?
    • Issuer API
      • Overview
      • Getting Started
      • Examples
        • Issue an email credential
        • Revoke a claimed email credential
      • API Documentation
        • Info
        • Auth
        • Media
        • Credential Offer Claims
        • Credential Offer Collections
        • Credential Offers
        • Credential Templates
        • Claim
        • Agent
  • ๐Ÿ“‘TNG IDENTITY VERIFIER
    • What is a Verifier?
    • Operating a verifier
    • How to become a verifier?
    • Verifier API
      • Overview
      • Getting Started
      • Examples
        • Verify an email credential
      • API Documentation
        • Info
        • Auth
        • Verifiable Presentation
        • Agent
        • SIOP
        • Templates
  • ๐Ÿ“„TNG IDENTITY WALLET
    • What is the wallet for?
    • How to receive a Verifiable Credential?
    • How to share a Verifiable Credential?
  • ๐Ÿ“‘Privacy and Security
    • Privacy and Security Measures: TNG Identity Services
    • Revocation and data deletion
  • ๐Ÿ—ƒ๏ธSELF-SOVEREIGN IDENTITY KNOWLEDGE
    • Self-Sovereign Identity
    • Actors
    • Decentralized vs Self-Sovereign Identity
    • Key Principles of Self-Sovereign Identity
    • Self-Sovereign Identity โ€“ Use Cases
    • Digital Trust
    • Some of the critical components of Self Sovereign Identity
      • Trust over IP
    • Some of the critical components of Decentralise ID
      • A Blockchain Tailored for Decentralized Identity
      • Decentralise Identifiers (DID)
      • Verifiable Credentials
      • Verifiable Presentations
  • ๐Ÿ“‘GLOSSARY
    • Glossary
  • ๐Ÿ“„FAQs / HELP
    • Help & FAQs
      • What is a digital identity?
      • What is TNG Identity, and how does it work?
      • How is blockchain used in TNG Identity?
      • Compatible Blockchains for TNG Identity.
      • How can my business sign up for TNG Identity?
      • How is TNG Identity different to other identity solutions in the market?
      • Can TNG Identity communicate with other identity solutions?
      • What is TNG Identity doing with my data, and does it act as a data processor or controller?
      • What measures does TNG Identity take to protect user data?
      • What support is available for TNG Identity?
      • Can TNG Identity be integrated into our existing systems?
      • How can I get started with TNG Identity?
      • What countries is TNG Identity available in?
Powered by GitBook
On this page
  1. ๐Ÿ“„TNG Identity Issuers
  2. Issuer API
  3. API Documentation

Credential Offers

PreviousCredential Offer CollectionsNextCredential Templates

Copyright ยฉ nChain Licensing AG 2024

Credential offer search history audit log pagination

get

Endpoint returns history of credential offers search requests


Claim-based access control: Issuer_Admin, Issuer_Auditor, Issuer_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.createdBystring[]Optional

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

filter.updatedBystring[]Optional

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

filter.createdAtstring[]Optional

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

filter.updatedAtstring[]Optional

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

Responses
200Success
application/json
Responseall of
and
400
Invalid request parameters
401
Invalid authentication credentials.
403
User does not have a required claim to perform this operation.
500
Internal server error
get
GET /products/web/$IDENTITY_ENV_ID/issuer/api/private/credential-offers/search-history HTTP/1.1
Host: identity.nchainplatform.com
X-API-KEY: YOUR_API_KEY
Accept: */*
{
  "data": [
    {
      "id": "123e4567-e89b-12d3-a456-426614174000",
      "createdBy": "123e4567-e89b-12d3-a456-426614174000",
      "updatedBy": "123e4567-e89b-12d3-a456-426614174000",
      "deletedBy": "123e4567-e89b-12d3-a456-426614174000",
      "createdAt": "2025-06-20T06:44:22.629Z",
      "updatedAt": "2025-06-20T06:44:22.629Z",
      "deletedAt": "2025-06-20T06:44:22.629Z",
      "searchQuery": {
        "filter": {},
        "sortBy": [
          "text"
        ],
        "page": 1,
        "limit": 1,
        "path": "text"
      },
      "recordsFound": 1
    }
  ],
  "meta": {
    "select": [
      "text"
    ],
    "filter": {
      "createdBy": "text",
      "updatedBy": "text",
      "createdAt": "text",
      "updatedAt": "text"
    }
  },
  "links": {
    "first": "text",
    "previous": "text",
    "current": "text",
    "next": "text",
    "last": "text"
  }
}

Retrieve latest usage date of each credential type

get

Returns an array of objects with the latest usage date of each credential type.


Claim-based access control: Issuer_User, Issuer_Admin, Issuer_Auditor

Authorizations
Responses
200Success
application/json
401
Invalid authentication credentials.
403
User does not have a required claim to perform this operation.
get
GET /products/web/$IDENTITY_ENV_ID/issuer/api/private/credential-offers/type-usage HTTP/1.1
Host: identity.nchainplatform.com
X-API-KEY: YOUR_API_KEY
Accept: */*
[
  {
    "credentialType": "text",
    "latestCreatedAt": "text"
  }
]

Fetch one credential offer

get

Fetch one credential offer from issuer


Claim-based access control: Issuer_Admin, Issuer_User, Issuer_Auditor

Authorizations
Path parameters
idstring ยท uuidRequired
Responses
200Success
application/json
400Error
401
Invalid authentication credentials.
403
User does not have a required claim to perform this operation.
500Error
get
GET /products/web/$IDENTITY_ENV_ID/issuer/api/private/credential-offers/{id} HTTP/1.1
Host: identity.nchainplatform.com
X-API-KEY: YOUR_API_KEY
Accept: */*
{
  "id": "123e4567-e89b-12d3-a456-426614174000",
  "createdBy": "123e4567-e89b-12d3-a456-426614174000",
  "updatedBy": "123e4567-e89b-12d3-a456-426614174000",
  "deletedBy": "123e4567-e89b-12d3-a456-426614174000",
  "createdAt": "2025-06-20T06:44:22.629Z",
  "updatedAt": "2025-06-20T06:44:22.629Z",
  "deletedAt": "2025-06-20T06:44:22.629Z",
  "organisationProfile": {
    "id": "123e4567-e89b-12d3-a456-426614174000",
    "createdAt": "2025-06-20T06:44:22.629Z",
    "updatedAt": "2025-06-20T06:44:22.629Z",
    "deletedAt": "2025-06-20T06:44:22.629Z",
    "createdBy": "123e4567-e89b-12d3-a456-426614174000",
    "updatedBy": "123e4567-e89b-12d3-a456-426614174000",
    "deletedBy": "123e4567-e89b-12d3-a456-426614174000",
    "name": "text",
    "isDefault": true,
    "pspEnvironmentId": "text",
    "image": {
      "id": "123e4567-e89b-12d3-a456-426614174000",
      "mimeType": "image/jpeg",
      "keyUrl": "text",
      "filename": "text"
    }
  },
  "correlationId": "nchain",
  "claims": [
    {
      "id": "123e4567-e89b-12d3-a456-426614174000",
      "dataType": "string",
      "claimName": "fullName",
      "claimValue": "John Doe"
    }
  ],
  "email": "example@example.com",
  "organisationProfileId": "123e4567-e89b-12d3-a456-426614174000",
  "credentialNames": [
    "Example Credential"
  ],
  "credentialTypes": [
    "ExampleCredential",
    "VerifiableCredential"
  ],
  "credentialId": "exampleCredential",
  "status": "ready_to_claim",
  "issuer": "did:bsv:1234",
  "subject": "did:bsv:4321",
  "issuedAt": "2025-06-20T06:44:22.629Z",
  "referenceId": "439c355a-9d79-4ab6-88cd-d4a44edbb08c",
  "revocationId": "fbc77ba90ba20d98ac94c86fc0f6031452ac697327ac9ca",
  "revocationReason": "Credential compromised",
  "revokedAt": "2025-06-20T06:44:22.629Z",
  "revokedBy": "439c355a-9d79-4ab6-88cd-d4a44edbb08c",
  "expirationDate": "2025-06-20T06:44:22.629Z",
  "emailSent": true,
  "revocationEmailSent": true,
  "credentialOfferCollection": {
    "id": "123e4567-e89b-12d3-a456-426614174000",
    "createdBy": "123e4567-e89b-12d3-a456-426614174000",
    "createdAt": "2025-06-20T06:44:22.629Z",
    "name": "text"
  }
}

Delete a credential offer

delete

Deletes a credential offer if it has not yet been claimed otherwise it is not deletable.


Claim-based access control: Issuer_Admin, Issuer_User

Authorizations
Path parameters
idstring ยท uuidRequired
Responses
204
Successfully deleted credential offer
401
Invalid authentication credentials.
403
User does not have a required claim to perform this operation.
404
Credential offer not found
500
Internal server error
delete
DELETE /products/web/$IDENTITY_ENV_ID/issuer/api/private/credential-offers/{id} HTTP/1.1
Host: identity.nchainplatform.com
X-API-KEY: YOUR_API_KEY
Accept: */*

No content

Retrieve claim code for credential offer.

get

Retrieves a claim code for a given credential offer ID. Claim code can be rendered as QR code and scanned with wallet app.

Path parameters
idstring ยท uuidRequired
Responses
200Success
application/json
400Error
500Error
get
GET /products/web/$IDENTITY_ENV_ID/issuer/api/private/credential-offers/{id}/claim HTTP/1.1
Host: identity.nchainplatform.com
Accept: */*
{
  "uri": "openid-credential-offer://?credential_offer={\\\"grants\\\":{\\\"urn:ietf:params:oauth:grant-type:pre-authorized_code\\\":{\\\"pre-authorized_code\\\":\\\"sWoSmJM9vnD2yL3Ruot3ps\\\",\\\"user_pin_required\\\":false}},\\\"credentials\\\":[\\\"CharacterCredential\\\"],\\\"credential_issuer\\\":\\\"https://1c13-213-172-234-81.ngrok-free.app/nchain\\",
  "userPinRequired": false,
  "credentialNames": [
    "Example Credential"
  ],
  "credentialTypes": [
    "ExampleCredential",
    "VerifiableCredential"
  ],
  "organisationProfile": {
    "name": "text",
    "image": {
      "id": "123e4567-e89b-12d3-a456-426614174000",
      "mimeType": "image/jpeg",
      "keyUrl": "text",
      "filename": "text"
    }
  }
}

Retrieve the status of the credential offer from the issuer

get

Returns the status of the credential by calling the issuer api and returning the result of the operation back

Path parameters
idstringRequired
Responses
200Success
application/json
404
Credential offer not found.
503
Error retrieving credential offer status.
get
GET /products/web/$IDENTITY_ENV_ID/issuer/api/private/credential-offers/{id}/status HTTP/1.1
Host: identity.nchainplatform.com
Accept: */*
{
  "createdAt": 1702632883012,
  "lastUpdatedAt": 1702632883012,
  "status": "OFFER_CREATED"
}
  • GETCredential offer pagination
  • POSTCreate credential offers
  • GETCredential offer search history audit log pagination
  • GETRetrieve latest usage date of each credential type
  • GETFetch one credential offer
  • DELETEDelete a credential offer
  • GETRetrieve claim code for credential offer.
  • POSTCreate and send emails about credential offers.
  • POSTRe-send email about credential offer revocation.
  • POSTUpload credential offer claim image.
  • PATCHRevoke credential offers
  • GETRetrieve the status of the credential offer from the issuer

Credential offer pagination

get

Endpoint returns a paginated result of credential offers.


Claim-based access control: Issuer_Admin, Issuer_User, Issuer_Auditor

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.idstring[]Optional

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

filter.emailstring[]Optional

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

filter.credentialIdstring[]Optional

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

filter.credentialNamesstring[]Optional

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

filter.credentialTypesstring[]Optional

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

filter.correlationIdstring[]Optional

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

filter.searchstring[]Optional

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

filter.subjectstring[]Optional

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

filter.issuerstring[]Optional

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

filter.statusstring[]Optional

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

filter.createdBystring[]Optional

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

filter.updatedBystring[]Optional

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

filter.createdAtstring[]Optional

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

filter.updatedAtstring[]Optional

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

filter.issuedAtstring[]Optional

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

filter.revokedAtstring[]Optional

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

filter.expirationDatestring[]Optional

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

filter.credentialOfferCollection.idstring[]Optional

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

Responses
200Success
application/json
Responseall of
and
400
Invalid request parameters
401
Invalid authentication credentials.
403
User does not have a required claim to perform this operation.
500Error
get
GET /products/web/$IDENTITY_ENV_ID/issuer/api/private/credential-offers HTTP/1.1
Host: identity.nchainplatform.com
X-API-KEY: YOUR_API_KEY
Accept: */*
{
  "data": [
    {
      "id": "123e4567-e89b-12d3-a456-426614174000",
      "createdBy": "123e4567-e89b-12d3-a456-426614174000",
      "updatedBy": "123e4567-e89b-12d3-a456-426614174000",
      "deletedBy": "123e4567-e89b-12d3-a456-426614174000",
      "createdAt": "2025-06-20T06:44:22.629Z",
      "updatedAt": "2025-06-20T06:44:22.629Z",
      "deletedAt": "2025-06-20T06:44:22.629Z",
      "correlationId": "nchain",
      "claims": [
        {
          "id": "123e4567-e89b-12d3-a456-426614174000",
          "dataType": "string",
          "claimName": "fullName",
          "claimValue": "John Doe"
        }
      ],
      "email": "example@example.com",
      "organisationProfileId": "123e4567-e89b-12d3-a456-426614174000",
      "credentialNames": [
        "Example Credential"
      ],
      "credentialTypes": [
        "ExampleCredential",
        "VerifiableCredential"
      ],
      "credentialId": "exampleCredential",
      "status": "ready_to_claim",
      "issuer": "did:bsv:1234",
      "subject": "did:bsv:4321",
      "issuedAt": "2025-06-20T06:44:22.629Z",
      "referenceId": "439c355a-9d79-4ab6-88cd-d4a44edbb08c",
      "revocationId": "fbc77ba90ba20d98ac94c86fc0f6031452ac697327ac9ca",
      "revocationReason": "Credential compromised",
      "revokedAt": "2025-06-20T06:44:22.629Z",
      "revokedBy": "439c355a-9d79-4ab6-88cd-d4a44edbb08c",
      "expirationDate": "2025-06-20T06:44:22.629Z",
      "emailSent": true,
      "revocationEmailSent": true,
      "credentialOfferCollection": {
        "id": "123e4567-e89b-12d3-a456-426614174000",
        "createdBy": "123e4567-e89b-12d3-a456-426614174000",
        "createdAt": "2025-06-20T06:44:22.629Z",
        "name": "text"
      },
      "organisationProfile": {
        "id": "123e4567-e89b-12d3-a456-426614174000",
        "name": "text"
      }
    }
  ],
  "meta": {
    "select": [
      "text"
    ],
    "filter": {
      "id": "text",
      "email": "text",
      "credentialId": "text",
      "credentialNames": "text",
      "credentialTypes": "text",
      "correlationId": "text",
      "search": "text",
      "subject": "text",
      "issuer": "text",
      "status": "text",
      "createdBy": "text",
      "updatedBy": "text",
      "createdAt": "text",
      "updatedAt": "text",
      "issuedAt": "text",
      "revokedAt": "text",
      "expirationDate": "text",
      "credentialOfferCollection.id": "text"
    }
  },
  "links": {
    "first": "text",
    "previous": "text",
    "current": "text",
    "next": "text",
    "last": "text"
  }
}

Create credential offers

post

Endpoint supports bulk credential offers records handling. Once created you are be able to issue a credential offer from agent using /webapp endpoints. If the agent returns error that the action cannot be completed because it is missing credential offer you must first create the resource here and then try again.


**Claim-based access control:** Issuer_Admin, Issuer_User

Authorizations
Body
correlationIdstringRequired

Defines a organisation which is defined as a correlationId. Must be a value the Issuer is working with!

Example: nchain
organisationProfileIdstring ยท uuidRequired

The organisation profile the credential is associated to.

credentialOfferCollectionIdstring ยท uuidOptional

ID of the collection you want to add the credential offers to

Responses
200Success
application/json
400Error
401
Invalid authentication credentials.
403
User does not have a required claim to perform this operation.
404
Resource not found
500Error
post
POST /products/web/$IDENTITY_ENV_ID/issuer/api/private/credential-offers HTTP/1.1
Host: identity.nchainplatform.com
X-API-KEY: YOUR_API_KEY
Content-Type: application/json
Accept: */*
Content-Length: 423

{
  "correlationId": "nchain",
  "organisationProfileId": "123e4567-e89b-12d3-a456-426614174000",
  "credentialOffers": [
    {
      "email": "example@example.com",
      "credentialId": "exampleCredential",
      "referenceId": "439c355a-9d79-4ab6-88cd-d4a44edbb08c",
      "claims": [
        {
          "dataType": "string",
          "claimName": "fullName",
          "claimValue": "John Doe"
        }
      ],
      "expirationDate": "2025-06-20T06:44:22.629Z"
    }
  ],
  "credentialOfferCollectionId": "123e4567-e89b-12d3-a456-426614174000"
}
{
  "organisationProfile": {
    "id": "123e4567-e89b-12d3-a456-426614174000",
    "createdAt": "2025-06-20T06:44:22.629Z",
    "updatedAt": "2025-06-20T06:44:22.629Z",
    "deletedAt": "2025-06-20T06:44:22.629Z",
    "createdBy": "123e4567-e89b-12d3-a456-426614174000",
    "updatedBy": "123e4567-e89b-12d3-a456-426614174000",
    "deletedBy": "123e4567-e89b-12d3-a456-426614174000",
    "name": "text",
    "isDefault": true,
    "pspEnvironmentId": "text",
    "image": {
      "id": "123e4567-e89b-12d3-a456-426614174000",
      "mimeType": "image/jpeg",
      "keyUrl": "text",
      "filename": "text"
    }
  },
  "credentialOffers": [
    {
      "id": "123e4567-e89b-12d3-a456-426614174000",
      "createdBy": "123e4567-e89b-12d3-a456-426614174000",
      "updatedBy": "123e4567-e89b-12d3-a456-426614174000",
      "deletedBy": "123e4567-e89b-12d3-a456-426614174000",
      "createdAt": "2025-06-20T06:44:22.629Z",
      "updatedAt": "2025-06-20T06:44:22.629Z",
      "deletedAt": "2025-06-20T06:44:22.629Z",
      "correlationId": "nchain",
      "claims": [
        {
          "id": "123e4567-e89b-12d3-a456-426614174000",
          "dataType": "string",
          "claimName": "fullName",
          "claimValue": "John Doe"
        }
      ],
      "email": "example@example.com",
      "organisationProfileId": "123e4567-e89b-12d3-a456-426614174000",
      "credentialNames": [
        "Example Credential"
      ],
      "credentialTypes": [
        "ExampleCredential",
        "VerifiableCredential"
      ],
      "credentialId": "exampleCredential",
      "status": "ready_to_claim",
      "issuer": "did:bsv:1234",
      "subject": "did:bsv:4321",
      "issuedAt": "2025-06-20T06:44:22.629Z",
      "referenceId": "439c355a-9d79-4ab6-88cd-d4a44edbb08c",
      "revocationId": "fbc77ba90ba20d98ac94c86fc0f6031452ac697327ac9ca",
      "revocationReason": "Credential compromised",
      "revokedAt": "2025-06-20T06:44:22.629Z",
      "revokedBy": "439c355a-9d79-4ab6-88cd-d4a44edbb08c",
      "expirationDate": "2025-06-20T06:44:22.629Z",
      "emailSent": true,
      "revocationEmailSent": true,
      "credentialOfferCollection": {
        "id": "123e4567-e89b-12d3-a456-426614174000",
        "createdBy": "123e4567-e89b-12d3-a456-426614174000",
        "createdAt": "2025-06-20T06:44:22.629Z",
        "name": "text"
      },
      "organisationProfile": {
        "id": "123e4567-e89b-12d3-a456-426614174000",
        "name": "text"
      }
    }
  ],
  "failedCredentialOffers": [
    {
      "email": "example@example.com",
      "credentialId": "exampleCredential",
      "referenceId": "439c355a-9d79-4ab6-88cd-d4a44edbb08c",
      "claims": [
        {
          "dataType": "string",
          "claimName": "fullName",
          "claimValue": "John Doe"
        }
      ],
      "expirationDate": "2025-06-20T06:44:22.629Z",
      "correlationId": "nchain",
      "organisationProfileId": "123e4567-e89b-12d3-a456-426614174000",
      "error": "text",
      "errorCode": "text"
    }
  ]
}

Create and send emails about credential offers.

post

Limited to 2 requests per minute per user.


Claim-based access control: Issuer_Admin, Issuer_User

Authorizations
Body
credentialOfferIdsstring[]Required
Responses
201Success
application/json
400
Invalid request body.
401
Invalid authentication credentials.
403
User does not have a required claim to perform this operation.
post
POST /products/web/$IDENTITY_ENV_ID/issuer/api/private/credential-offers/share-with-email HTTP/1.1
Host: identity.nchainplatform.com
X-API-KEY: YOUR_API_KEY
Content-Type: application/json
Accept: */*
Content-Length: 31

{
  "credentialOfferIds": [
    "text"
  ]
}
[
  {
    "credentialOfferId": "text",
    "status": "ENQUEUED"
  }
]

Re-send email about credential offer revocation.

post

Claim-based access control: Issuer_Admin, Issuer_User

Authorizations
Body
credentialOfferIdstringRequired
Responses
201Success
application/json
400
Invalid request body.
401
Invalid authentication credentials.
403
User does not have a required claim to perform this operation.
post
POST /products/web/$IDENTITY_ENV_ID/issuer/api/private/credential-offers/resend-revocation-email HTTP/1.1
Host: identity.nchainplatform.com
X-API-KEY: YOUR_API_KEY
Content-Type: application/json
Accept: */*
Content-Length: 28

{
  "credentialOfferId": "text"
}
{
  "message": "text"
}

Upload credential offer claim image.

post

Accepts the next image formats: image/jpeg, image/png, image/webp. Max size is: 5242880 bytes.


Claim-based access control: Issuer_Admin, Issuer_User

Authorizations
Body
imagestring ยท binaryOptional
Responses
201Success
application/json
400
Invalid request body.
401
Invalid authentication credentials.
403
User does not have a required claim to perform this operation.
413
Image exceeds the allowed size.
415
Unsupported media type.
500
Internal server error.
post
POST /products/web/$IDENTITY_ENV_ID/issuer/api/private/credential-offers/image-upload HTTP/1.1
Host: identity.nchainplatform.com
X-API-KEY: YOUR_API_KEY
Content-Type: multipart/form-data
Accept: */*
Content-Length: 18

{
  "image": "binary"
}
{
  "id": "123e4567-e89b-12d3-a456-426614174000",
  "mimeType": "image/jpeg",
  "keyUrl": "text",
  "filename": "text",
  "type": "cover_image"
}

Revoke credential offers

patch

Revokes the credential offer using the credential revocation txId stored. You will need to supply the revocation reason to be stored alongside it. When completed the credential will display revoked on the users wallet and also the verifier will return revoked status if user tries to verify with it.


Claim-based access control: Issuer_Admin, Issuer_User

Authorizations
Body
Responses
200Success
application/json
400Error
401
Invalid authentication credentials.
403
User does not have a required claim to perform this operation.
500Error
patch
PATCH /products/web/$IDENTITY_ENV_ID/issuer/api/private/credential-offers/revoke HTTP/1.1
Host: identity.nchainplatform.com
X-API-KEY: YOUR_API_KEY
Content-Type: application/json
Accept: */*
Content-Length: 84

{
  "revoke": [
    {
      "id": "123e4567-e89b-12d3-a456-426614174000",
      "revocationReason": "text"
    }
  ]
}
{
  "revocations": [
    {
      "id": "123e4567-e89b-12d3-a456-426614174000",
      "createdBy": "123e4567-e89b-12d3-a456-426614174000",
      "updatedBy": "123e4567-e89b-12d3-a456-426614174000",
      "deletedBy": "123e4567-e89b-12d3-a456-426614174000",
      "createdAt": "2025-06-20T06:44:22.629Z",
      "updatedAt": "2025-06-20T06:44:22.629Z",
      "deletedAt": "2025-06-20T06:44:22.629Z",
      "organisationProfile": {
        "id": "123e4567-e89b-12d3-a456-426614174000",
        "createdAt": "2025-06-20T06:44:22.629Z",
        "updatedAt": "2025-06-20T06:44:22.629Z",
        "deletedAt": "2025-06-20T06:44:22.629Z",
        "createdBy": "123e4567-e89b-12d3-a456-426614174000",
        "updatedBy": "123e4567-e89b-12d3-a456-426614174000",
        "deletedBy": "123e4567-e89b-12d3-a456-426614174000",
        "name": "text",
        "isDefault": true,
        "pspEnvironmentId": "text",
        "image": {
          "id": "123e4567-e89b-12d3-a456-426614174000",
          "mimeType": "image/jpeg",
          "keyUrl": "text",
          "filename": "text"
        }
      },
      "correlationId": "nchain",
      "claims": [
        {
          "id": "123e4567-e89b-12d3-a456-426614174000",
          "dataType": "string",
          "claimName": "fullName",
          "claimValue": "John Doe"
        }
      ],
      "email": "example@example.com",
      "organisationProfileId": "123e4567-e89b-12d3-a456-426614174000",
      "credentialNames": [
        "Example Credential"
      ],
      "credentialTypes": [
        "ExampleCredential",
        "VerifiableCredential"
      ],
      "credentialId": "exampleCredential",
      "status": "ready_to_claim",
      "issuer": "did:bsv:1234",
      "subject": "did:bsv:4321",
      "issuedAt": "2025-06-20T06:44:22.629Z",
      "referenceId": "439c355a-9d79-4ab6-88cd-d4a44edbb08c",
      "revocationId": "fbc77ba90ba20d98ac94c86fc0f6031452ac697327ac9ca",
      "revocationReason": "Credential compromised",
      "revokedAt": "2025-06-20T06:44:22.629Z",
      "revokedBy": "439c355a-9d79-4ab6-88cd-d4a44edbb08c",
      "expirationDate": "2025-06-20T06:44:22.629Z",
      "emailSent": true,
      "revocationEmailSent": true,
      "credentialOfferCollection": {
        "id": "123e4567-e89b-12d3-a456-426614174000",
        "createdBy": "123e4567-e89b-12d3-a456-426614174000",
        "createdAt": "2025-06-20T06:44:22.629Z",
        "name": "text"
      }
    }
  ],
  "failed": [
    {
      "id": "123e4567-e89b-12d3-a456-426614174000",
      "error": "text",
      "code": "credential_offer_already_revoked"
    }
  ]
}