Credential Offers

Credential offer pagination

get

Endpoint returns a paginated result of credential offers.


Claim-based access control: Issuer_Admin, Issuer_User, Issuer_Auditor

Authorizations
AuthorizationstringRequired
Bearer authentication header of the form Bearer <token>.
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
chevron-right
200Success
application/json
get
/api/v1/credential-offers

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
AuthorizationstringRequired
Bearer authentication header of the form Bearer <token>.
Body
correlationIdstringRequired

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

Example: teranode
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
chevron-right
200Success
application/json
post
/api/v1/credential-offers

Fetch working correlation ids

get

Fetches the working correlation ids from the agent service.


Claim-based access control: Issuer_Admin, Issuer_User, Issuer_Auditor

Authorizations
AuthorizationstringRequired
Bearer authentication header of the form Bearer <token>.
Responses
chevron-right
200

Returns an array of working correlation IDs.

application/json
correlationIdsstring[]Required

List of all working correlation IDs

get
/api/v1/credential-offers/correlation-ids

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
AuthorizationstringRequired
Bearer authentication header of the form Bearer <token>.
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
chevron-right
200Success
application/json
get
/api/v1/credential-offers/search-history

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
AuthorizationstringRequired
Bearer authentication header of the form Bearer <token>.
Responses
chevron-right
200Success
application/json
credentialTypestringRequired
latestCreatedAtstringRequired
get
/api/v1/credential-offers/type-usage

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
AuthorizationstringRequired
Bearer authentication header of the form Bearer <token>.
Body
credentialOfferIdsstring[]Required
Responses
post
/api/v1/credential-offers/share-with-email

Re-send email about credential offer revocation.

post

Claim-based access control: Issuer_Admin, Issuer_User

Authorizations
AuthorizationstringRequired
Bearer authentication header of the form Bearer <token>.
Body
credentialOfferIdstringRequired
Responses
post
/api/v1/credential-offers/resend-revocation-email

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
AuthorizationstringRequired
Bearer authentication header of the form Bearer <token>.
Body
imagestring · binaryOptional
Responses
post
/api/v1/credential-offers/image-upload

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
AuthorizationstringRequired
Bearer authentication header of the form Bearer <token>.
Body
Responses
chevron-right
200Success
application/json
patch
/api/v1/credential-offers/revoke

Fetch one credential offer

get

Fetch one credential offer from issuer


Claim-based access control: Issuer_Admin, Issuer_User, Issuer_Auditor

Authorizations
AuthorizationstringRequired
Bearer authentication header of the form Bearer <token>.
Path parameters
idstring · uuidRequired
Responses
chevron-right
200Success
application/json
idstring · uuidRequired
createdBystring · uuidOptional

UUID of the user that created the record

updatedBystring · uuidOptional

UUID of the user that updated the record

createdAtstring · date-timeOptional
updatedAtstring · date-timeOptional
correlationIdstringRequired

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

Example: teranode
emailstring · emailOptional

The recipient email address

Example: [email protected]
organisationProfileIdstring · uuidRequired

The organisation profile the credential is associated to.

credentialNamesstring[]Optional

Credential names to be defined in the credential once issued

Example: ["Example Credential"]
credentialTypesstring[]Optional

Credential types to be defined in the credential once issued.

Example: ["ExampleCredential","VerifiableCredential"]
credentialIdstringRequired

Credential id to be used when issuing a credential

Example: exampleCredential
statusstring · enumOptional

Status of the credential offer

Example: ready_to_claimPossible values:
issuerstringOptional

Issuer DID. Is set once claimed!

Example: did:bsv:1234
subjectstringOptional

Subject DID. Is set once claimed!

Example: did:bsv:4321
issuedAtstring · date-timeOptional

Date in ISO8601 when claimed

referenceIdstringOptional

Client defined referenceId as string. Is not stored and is only for client references

Example: 439c355a-9d79-4ab6-88cd-d4a44edbb08c
revocationIdstringOptional

The revocation transaction bound to the credential

Example: fbc77ba90ba20d98ac94c86fc0f6031452ac697327ac9ca
revocationReasonstringOptional

Reason for revocation provided by the user requesting this.

Example: Credential compromised
revokedAtstring · date-timeOptional

Date of revocation in ISO8601

revokedBystringOptional

User that revoked the credential

Example: 439c355a-9d79-4ab6-88cd-d4a44edbb08c
expirationDatestring · date-timeOptional

Expiration date of the credential in ISO8601 format. Must be set in the future or today. If not defined the credential will never expire.

emailSentbooleanOptional

When true the recipient received the credential issued email

revocationEmailSentbooleanOptional

When true the recipient received the credential revoked credential via email

get
/api/v1/credential-offers/{id}

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
AuthorizationstringRequired
Bearer authentication header of the form Bearer <token>.
Path parameters
idstring · uuidRequired
Responses
delete
/api/v1/credential-offers/{id}

No content

Update credential offer

patch

Updates the credential offer by Id


Claim-based access control: Issuer_Admin, Issuer_User

Authorizations
AuthorizationstringRequired
Bearer authentication header of the form Bearer <token>.
Path parameters
idstring · uuidRequired
Body
emailstring · emailOptional

The recipient email address

Example: [email protected]
Responses
chevron-right
200Success
application/json
idstring · uuidRequired
createdBystring · uuidOptional

UUID of the user that created the record

updatedBystring · uuidOptional

UUID of the user that updated the record

createdAtstring · date-timeOptional
updatedAtstring · date-timeOptional
correlationIdstringRequired

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

Example: teranode
emailstring · emailOptional

The recipient email address

Example: [email protected]
organisationProfileIdstring · uuidRequired

The organisation profile the credential is associated to.

credentialNamesstring[]Optional

Credential names to be defined in the credential once issued

Example: ["Example Credential"]
credentialTypesstring[]Optional

Credential types to be defined in the credential once issued.

Example: ["ExampleCredential","VerifiableCredential"]
credentialIdstringRequired

Credential id to be used when issuing a credential

Example: exampleCredential
statusstring · enumOptional

Status of the credential offer

Example: ready_to_claimPossible values:
issuerstringOptional

Issuer DID. Is set once claimed!

Example: did:bsv:1234
subjectstringOptional

Subject DID. Is set once claimed!

Example: did:bsv:4321
issuedAtstring · date-timeOptional

Date in ISO8601 when claimed

referenceIdstringOptional

Client defined referenceId as string. Is not stored and is only for client references

Example: 439c355a-9d79-4ab6-88cd-d4a44edbb08c
revocationIdstringOptional

The revocation transaction bound to the credential

Example: fbc77ba90ba20d98ac94c86fc0f6031452ac697327ac9ca
revocationReasonstringOptional

Reason for revocation provided by the user requesting this.

Example: Credential compromised
revokedAtstring · date-timeOptional

Date of revocation in ISO8601

revokedBystringOptional

User that revoked the credential

Example: 439c355a-9d79-4ab6-88cd-d4a44edbb08c
expirationDatestring · date-timeOptional

Expiration date of the credential in ISO8601 format. Must be set in the future or today. If not defined the credential will never expire.

emailSentbooleanOptional

When true the recipient received the credential issued email

revocationEmailSentbooleanOptional

When true the recipient received the credential revoked credential via email

patch
/api/v1/credential-offers/{id}

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.


Claim-based access control: Issuer_Admin, Issuer_User

Authorizations
AuthorizationstringRequired
Bearer authentication header of the form Bearer <token>.
Path parameters
idstring · uuidRequired
Responses
chevron-right
200Success
application/json
uristringRequired

URI containing the credential offer (decoded in example).

Example: 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://identity-issuer-api/teranode\
expiresAtstring · date-timeOptional

Date in ISO8601 when credential expires

get
/api/v1/credential-offers/{id}/claim

Retrieve claim code for credential offer using a Magic Link.

get

Retrieves a claim code for a given credential offer ID using a Magic Link token supplied in the email. Claim code can be rendered as QR code and scanned with wallet app.

Authorizations
passstringRequired
Path parameters
idstring · uuidRequired
Responses
chevron-right
200Success
application/json
uristringRequired

URI containing the credential offer (decoded in example).

Example: 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://identity-issuer-api/teranode\
expiresAtstring · date-timeOptional

Date in ISO8601 when credential expires

get
/api/v1/credential-offers/{id}/claim-with-pass

Fetch credential offer activity audit log

get

Fetches the activity audit log for a specific credential offer ID.


Claim-based access control: Issuer_Admin, Issuer_User, Issuer_Auditor

Authorizations
AuthorizationstringRequired
Bearer authentication header of the form Bearer <token>.
Path parameters
idstring · uuidRequired
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.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
chevron-right
200Success
application/json
get
/api/v1/credential-offers/{id}/activity

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
chevron-right
200Success
application/json
createdAtnumberOptional

Timestamp indicating when the offer was created.

Example: 1702632883012
lastUpdatedAtnumberOptional

Timestamp indicating the last update time of the offer.

Example: 1702632883012
statusstring · enumOptional

The status of the offer.

Example: OFFER_CREATEDPossible values:
get
/api/v1/credential-offers/{id}/status

Last updated