{
"openapi": "3.0.0",
"info": {
"title": "cheqd Studio API for cheqd network",
"version": "2.0.0",
"description": "REST API service for creating and managing Decentralized Identfiers (DIDs), DID-Linked Resources (DLRs), Trust Registries, Status Lists and Verifiable Credentials.",
"contact": {
"name": "cheqd",
"url": "https://github.com/cheqd/studio",
"email": "support-github@cheqd.io"
},
"license": {
"name": "Apache 2.0",
"url": "https://github.com/cheqd/studio/blob/main/LICENSE"
}
},
"servers": [
{
"url": "https://studio-api.cheqd.net",
"description": "Main (production) server"
},
{
"url": "https://studio-api-staging.cheqd.net",
"description": "Staging server for testing"
},
{
"url": "http://localhost:3000",
"description": "Local server for testing"
}
],
"tags": [
{
"name": "Account"
},
{
"name": "Keys"
},
{
"name": "Decentralized Identifiers (DIDs)"
},
{
"name": "DID-Linked Resources (DLRs)"
},
{
"name": "Trust Registries"
},
{
"name": "Verifiable Credentials"
},
{
"name": "Status Lists"
},
{
"name": "Verifiable Presentations"
}
],
"externalDocs": {
"description": "cheqd Studio API Documentation",
"url": "https://docs.cheqd.io/product"
},
"components": {
"securitySchemes": {
"ApiKeyAuth": {
"type": "apiKey",
"name": "x-api-key",
"in": "header"
}
},
"schemas": {
"AlsoKnownAs": {
"type": "object",
"properties": {
"alsoKnownAs": {
"type": "array",
"description": "Optional field to assign a set of alternative URIs where the DID-Linked Resource can be fetched from.",
"items": {
"type": "object",
"properties": {
"uri": {
"type": "string",
"format": "uri",
"description": "URI where the DID-Linked Resource can be fetched from. Can be any type of URI (e.g., DID, HTTPS, IPFS, etc.)"
},
"description": {
"type": "string",
"description": "Optional description of the URI."
}
}
}
}
}
},
"CredentialRequest": {
"description": "Input fields for the creating a Verifiable Credential.",
"type": "object",
"additionalProperties": false,
"properties": {
"issuerDid": {
"description": "DID of the Verifiable Credential issuer. This needs to be a `did:cheqd` DID.",
"type": "string",
"example": "did:cheqd:testnet:7bf81a20-633c-4cc7-bc4a-5a45801005e0"
},
"subjectDid": {
"description": "DID of the Verifiable Credential holder/subject. This needs to be a `did:key` DID.",
"type": "string",
"example": "did:key:z6MkhaXgBZDvotDkL5257faiztiGiC2QtKLGpbnnEGta2doK"
},
"attributes": {
"description": "JSON object containing the attributes to be included in the credential.",
"type": "object",
"example": {
"name": "Bob",
"gender": "male"
}
},
"@context": {
"description": "Optional properties to be included in the `@context` property of the credential.",
"type": "array",
"items": {
"type": "string"
},
"example": [
"https://schema.org/schema.jsonld",
"https://veramo.io/contexts/profile/v1"
]
},
"type": {
"description": "Optional properties to be included in the `type` property of the credential.",
"type": "array",
"items": {
"type": "string"
},
"example": [
"Person"
]
},
"expirationDate": {
"description": "Optional expiration date according to the VC Data Model specification.",
"type": "string",
"format": "date-time",
"example": "2023-06-08T13:49:28.000Z"
},
"format": {
"description": "Format of the Verifiable Credential. Defaults to VC-JWT.",
"type": "string",
"enum": [
"jwt",
"jsonld"
],
"example": "jwt"
},
"credentialStatus": {
"description": "Optional `credentialStatus` properties for VC revocation or suspension. Takes `statusListName` and `statusListPurpose` as inputs.",
"type": "object",
"required": [
"statusPurpose",
"statusListName",
"statusListType"
],
"properties": {
"statusPurpose": {
"type": "string",
"enum": [
"revocation",
"suspension"
]
},
"statusListName": {
"type": "string"
},
"statusListType": {
"type": "string",
"enum": [
"StatusList2021",
"BitstringStatusList"
]
},
"statusListIndex": {
"type": "number"
},
"statusListVersion": {
"type": "string",
"format": "date-time"
},
"statusListRangeStart": {
"type": "number"
},
"statusListRangeEnd": {
"type": "number"
},
"indexNotIn": {
"type": "number"
}
},
"example": {
"statusPurpose": "revocation",
"statusListName": "employee-credentials",
"statusListType": "StatusList2021"
}
},
"termsOfUse": {
"description": "Terms of use can be utilized by an issuer or a holder to communicate the terms under which a verifiable credential was issued.",
"type": "array",
"items": {
"type": "object",
"example": {
"type": "IssuerPolicy",
"id": "http://example.com/policies/credential/4",
"profile": "http://example.com/profiles/credential",
"prohibition": [
{
"assigner": "https://example.edu/issuers/14",
"assignee": "AllVerifiers",
"target": "http://example.edu/credentials/3732",
"action": [
"Archival"
]
}
]
}
}
},
"refreshService": {
"description": "RefreshService property MUST be one or more refresh services that provides enough information to the recipient's software such that the recipient can refresh the verifiable credential.",
"type": "array",
"items": {
"type": "object",
"example": {
"type": "ManualRefreshService2018",
"id": "https://example.edu/refresh/3732"
}
}
},
"evidence": {
"description": "Evidence property MUST be one or more evidence schemes providing enough information for a verifier to determine whether the evidence gathered by the issuer meets its confidence requirements for relying on the credential.",
"type": "array",
"items": {
"type": "object",
"example": {
"type": [
"DocumentVerification"
],
"id": "https://example.edu/evidence/f2aeec97-fc0d-42bf-8ca7-0548192d4231",
"verifier": "https://example.edu/issuers/14",
"evidenceDocument": "DriversLicense",
"subjectPresence": "Physical",
"documentPresence": "Physical",
"licenseNumber": "123AB4567"
}
}
}
},
"connector": {
"type": "string",
"enum": [
"verida",
"resource"
]
},
"required": [
"issuerDid",
"subjectDid",
"attributes"
],
"example": {
"issuerDid": "did:cheqd:testnet:7bf81a20-633c-4cc7-bc4a-5a45801005e0",
"subjectDid": "did:key:z6MkhaXgBZDvotDkL5257faiztiGiC2QtKLGpbnnEGta2doK",
"attributes": {
"gender": "male",
"name": "Bob"
},
"@context": [
"https://schema.org"
],
"type": [
"Person"
],
"format": "jwt",
"credentialStatus": {
"statusPurpose": "revocation",
"statusListName": "employee-credentials",
"statusListIndex": 10,
"statusListType": "StatusList2021"
}
}
},
"Credential": {
"description": "Input fields for revoking/suspending a Verifiable Credential.",
"type": "object",
"additionalProperties": false,
"properties": {
"@context": {
"type": "array",
"items": {
"type": "string"
},
"example": [
"https://www.w3.org/2018/credentials/v1",
"https://schema.org",
"https://veramo.io/contexts/profile/v1"
]
},
"type": {
"type": "array",
"items": {
"type": "string"
},
"example": [
"VerifiableCredential",
"Person"
]
},
"expirationDate": {
"type": "string",
"format": "date-time",
"example": "2023-06-08T13:49:28.000Z"
},
"issuer": {
"type": "object",
"properties": {
"id": {
"type": "string",
"format": "DID",
"example": "did:cheqd:testnet:7bf81a20-633c-4cc7-bc4a-5a45801005e0"
}
}
},
"credentialSubject": {
"type": "object",
"properties": {
"id": {
"type": "string",
"format": "DID",
"example": "did:key:z6MkhaXgBZDvotDkL5257faiztiGiC2QtKLGpbnnEGta2doK"
}
}
},
"credentialStatus": {
"type": "object",
"properties": {
"id": {
"type": "string",
"example": "https://resolver.cheqd.net/1.0/identifiers/did:cheqd:testnet:7c2b990c-3d05-4ebf-91af-f4f4d0091d2e?resourceName=cheqd-suspension-1&resourceType=StatusList2021Suspension#20"
},
"statusListIndex": {
"type": "number",
"example": 20
},
"statusPurpose": {
"type": "string",
"enum": [
"revocation",
"suspension"
],
"example": "suspension"
},
"type": {
"type": "string",
"enum": [
"StatusList2021Entry",
"BitstringStatusListEntry"
]
}
}
},
"issuanceDate": {
"type": "string",
"format": "date-time",
"example": "2023-06-08T13:49:28.000Z"
},
"proof": {
"type": "object",
"properties": {
"type": {
"type": "string"
},
"jwt": {
"type": "string"
}
},
"example": {
"type": "JwtProof2020",
"jwt": "eyJhbGciOiJFZERTQSIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJkaWQ6Y2hlcWQ6dGVzdG5ldDo3YmY4MWEyMC02MzNjLTRjYzctYmM0YS01YTQ1ODAxMDA1ZTAiLCJuYmYiOjE2ODYyMzIxNjgsInN1YiI6ImRpZDprZXk6ejZNa2hhWGdCWkR2b3REa0w1MjU3ZmFpenRpR2lDMlF0S0xHcGJubkVHdGEyZG9LIiwidmMiOnsiQGNvbnRleHQiOlsiaHR0cHM6Ly93d3cudzMub3JnLzIwMTgvY3JlZGVudGlhbHMvdjEiLCJodHRwczovL3NjaGVtYS5vcmciLCJodHRwczovL3ZlcmFtby5pby9jb250ZXh0cy9wcm9maWxlL3YxIl0sImNyZWRlbnRpYWxTdWJqZWN0Ijp7ImdlbmRlciI6Im1hbGUiLCJuYW1lIjoiQm9iIn0sInR5cGUiOlsiVmVyaWZpYWJsZUNyZWRlbnRpYWwiLCJQZXJzb24iXX19.wMfdR6RtyAZA4eoWya5Aw97wwER2Cm5Guk780Xw8H9fA3sfudIJeLRLboqixpTchqSbYeA7KbuCTAnLgXTD_Cg"
}
}
},
"example": {
"@context": [
"https://www.w3.org/2018/credentials/v1",
"https://schema.org",
"https://veramo.io/contexts/profile/v1"
],
"credentialSubject": {
"gender": "male",
"id": "did:key:z6MkhaXgBZDvotDkL5257faiztiGiC2QtKLGpbnnEGta2doK",
"name": "Bob"
},
"credentialStatus": {
"id": "https://resolver.cheqd.net/1.0/identifiers/did:cheqd:testnet:7c2b990c-3d05-4ebf-91af-f4f4d0091d2e?resourceName=cheqd-suspension-1&resourceType=StatusList2021Suspension#20",
"statusIndex": 20,
"statusPurpose": "suspension",
"type": "StatusList2021Entry"
},
"issuanceDate": "2023-06-08T13:49:28.000Z",
"issuer": {
"id": "did:cheqd:testnet:7bf81a20-633c-4cc7-bc4a-5a45801005e0"
},
"proof": {
"jwt": "eyJhbGciOiJFZERTQSIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJkaWQ6Y2hlcWQ6dGVzdG5ldDo3YmY4MWEyMC02MzNjLTRjYzctYmM0YS01YTQ1ODAxMDA1ZTAiLCJuYmYiOjE2ODYyMzIxNjgsInN1YiI6ImRpZDprZXk6ejZNa2hhWGdCWkR2b3REa0w1MjU3ZmFpenRpR2lDMlF0S0xHcGJubkVHdGEyZG9LIiwidmMiOnsiQGNvbnRleHQiOlsiaHR0cHM6Ly93d3cudzMub3JnLzIwMTgvY3JlZGVudGlhbHMvdjEiLCJodHRwczovL3NjaGVtYS5vcmciLCJodHRwczovL3ZlcmFtby5pby9jb250ZXh0cy9wcm9maWxlL3YxIl0sImNyZWRlbnRpYWxTdWJqZWN0Ijp7ImdlbmRlciI6Im1hbGUiLCJuYW1lIjoiQm9iIn0sInR5cGUiOlsiVmVyaWZpYWJsZUNyZWRlbnRpYWwiLCJQZXJzb24iXX19.wMfdR6RtyAZA4eoWya5Aw97wwER2Cm5Guk780Xw8H9fA3sfudIJeLRLboqixpTchqSbYeA7KbuCTAnLgXTD_Cg",
"type": "JwtProof2020"
},
"type": [
"VerifiableCredential",
"Person"
]
}
},
"VerifiableCredential": {
"type": "object",
"required": [
"@context",
"type",
"issuer",
"issuanceDate",
"credentialSubject"
],
"properties": {
"@context": {
"oneOf": [
{
"type": "string"
},
{
"type": "array",
"items": {
"type": "string"
}
}
],
"description": "JSON-LD context"
},
"id": {
"type": "string",
"description": "Credential identifier"
},
"type": {
"type": "array",
"items": {
"type": "string"
},
"description": "Credential types"
},
"issuer": {
"oneOf": [
{
"type": "string"
},
{
"type": "object",
"properties": {
"id": {
"type": "string"
}
}
}
],
"description": "Credential issuer"
},
"issuanceDate": {
"type": "string",
"format": "date-time",
"description": "Issuance date"
},
"expirationDate": {
"type": "string",
"format": "date-time",
"description": "Expiration date"
},
"credentialSubject": {
"type": "object",
"additionalProperties": true,
"description": "Credential subject claims"
},
"proof": {
"type": "object",
"additionalProperties": true,
"description": "Cryptographic proof"
},
"credentialStatus": {
"type": "object",
"additionalProperties": true,
"description": "Credential status information"
}
}
},
"IssuedCredentialResponse": {
"type": "object",
"required": [
"issuedCredentialId",
"providerId",
"format",
"type",
"status",
"issuedAt"
],
"properties": {
"issuedCredentialId": {
"type": "string",
"description": "Unique identifier for the issued credential"
},
"providerId": {
"type": "string",
"description": "Provider identifier"
},
"providerCredentialId": {
"type": "string",
"description": "Provider-specific credential ID"
},
"issuerId": {
"type": "string",
"description": "DID or identifier of the credential issuer"
},
"subjectId": {
"type": "string",
"description": "DID or identifier of the credential subject"
},
"format": {
"type": "string",
"description": "Credential format (e.g., jwt_vc, jsonld)",
"example": "jwt_vc"
},
"category": {
"type": "string",
"description": "Credential category",
"enum": [
"credential",
"accreditation"
]
},
"type": {
"type": "array",
"items": {
"type": "string"
},
"description": "Array of credential types",
"example": [
"VerifiableCredential"
]
},
"status": {
"type": "string",
"description": "Current status of the credential",
"enum": [
"active",
"revoked",
"suspended",
"expired"
]
},
"statusUpdatedAt": {
"type": "string",
"format": "date-time",
"description": "Timestamp when status was last updated"
},
"issuedAt": {
"type": "string",
"format": "date-time",
"description": "Timestamp when credential was issued"
},
"expiresAt": {
"type": "string",
"format": "date-time",
"description": "Timestamp when credential expires"
},
"credentialStatus": {
"type": "object",
"additionalProperties": true,
"description": "Credential status configuration"
},
"statusRegistryId": {
"type": "string",
"description": "UUID of the Status Registry"
},
"statusIndex": {
"type": "number",
"description": "Allocated Index of the Status Registry"
},
"retryCount": {
"type": "number",
"description": "Retry Count in case of failures"
},
"lastError": {
"type": "string",
"description": "Last error message in case of failure"
},
"providerMetadata": {
"type": "object",
"additionalProperties": true,
"description": "Provider-specific metadata"
},
"credential": {
"$ref": "#/components/schemas/VerifiableCredential"
},
"createdAt": {
"type": "string",
"format": "date-time",
"description": "Timestamp when record was created"
},
"updatedAt": {
"type": "string",
"format": "date-time",
"description": "Timestamp when record was last updated"
}
}
},
"ListCredentialResult": {
"type": "object",
"properties": {
"total": {
"type": "number"
},
"credentials": {
"type": "array",
"items": {
"$ref": "#/components/schemas/IssuedCredentialResponse"
}
}
}
},
"CredentialRevokeRequest": {
"type": "object",
"properties": {
"credential": {
"description": "Verifiable Credential to be revoked as a VC-JWT string or a JSON object.",
"oneOf": [
{
"type": "object"
},
{
"type": "string"
}
]
},
"symmetricKey": {
"description": "The symmetric key used to encrypt the StatusList2021 DID-Linked Resource. Required if the StatusList2021 DID-Linked Resource is encrypted.",
"type": "string"
}
}
},
"RevocationResult": {
"properties": {
"revoked": {
"type": "boolean",
"example": true
}
}
},
"SuspensionResult": {
"properties": {
"suspended": {
"type": "boolean",
"example": true
}
}
},
"UnsuspensionResult": {
"properties": {
"unsuspended": {
"type": "boolean",
"example": true
}
}
},
"CredentialVerifyRequest": {
"type": "object",
"properties": {
"credential": {
"description": "Verifiable Credential to be verified as a VC-JWT string or a JSON object.",
"type": "object"
},
"policies": {
"description": "Custom verification policies to execute when verifying credential.",
"type": "object",
"properties": {
"issuanceDate": {
"description": "Policy to skip the `issuanceDate` (`nbf`) timestamp check when set to `false`.",
"type": "boolean",
"default": true
},
"expirationDate": {
"description": "Policy to skip the `expirationDate` (`exp`) timestamp check when set to `false`.",
"type": "boolean",
"default": true
},
"audience": {
"description": "Policy to skip the audience check when set to `false`.",
"type": "boolean",
"default": false
}
}
}
}
},
"RetryCredentialRequest": {
"type": "object",
"properties": {
"attributes": {
"description": "JSON object containing the attributes to be included in the credential.",
"type": "object",
"example": {
"name": "Bob",
"gender": "male"
}
},
"@context": {
"description": "Optional properties to be included in the `@context` property of the credential.",
"type": "array",
"items": {
"type": "string"
},
"example": [
"https://schema.org/schema.jsonld",
"https://veramo.io/contexts/profile/v1"
]
},
"type": {
"description": "Optional properties to be included in the `type` property of the credential.",
"type": "array",
"items": {
"type": "string"
},
"example": [
"Person"
]
},
"expirationDate": {
"description": "Optional expiration date according to the VC Data Model specification.",
"type": "string",
"format": "date-time",
"example": "2023-06-08T13:49:28.000Z"
},
"termsOfUse": {
"description": "Terms of use can be utilized by an issuer or a holder to communicate the terms under which a verifiable credential was issued.",
"type": "array",
"items": {
"type": "object",
"example": {
"type": "IssuerPolicy",
"id": "http://example.com/policies/credential/4",
"profile": "http://example.com/profiles/credential",
"prohibition": [
{
"assigner": "https://example.edu/issuers/14",
"assignee": "AllVerifiers",
"target": "http://example.edu/credentials/3732",
"action": [
"Archival"
]
}
]
}
}
},
"refreshService": {
"description": "RefreshService property MUST be one or more refresh services that provides enough information to the recipient's software such that the recipient can refresh the verifiable credential.",
"type": "array",
"items": {
"type": "object",
"example": {
"type": "ManualRefreshService2018",
"id": "https://example.edu/refresh/3732"
}
}
},
"evidence": {
"description": "Evidence property MUST be one or more evidence schemes providing enough information for a verifier to determine whether the evidence gathered by the issuer meets its confidence requirements for relying on the credential.",
"type": "array",
"items": {
"type": "object",
"example": {
"type": [
"DocumentVerification"
],
"id": "https://example.edu/evidence/f2aeec97-fc0d-42bf-8ca7-0548192d4231",
"verifier": "https://example.edu/issuers/14",
"evidenceDocument": "DriversLicense",
"subjectPresence": "Physical",
"documentPresence": "Physical",
"licenseNumber": "123AB4567"
}
}
}
},
"required": [
"attributes"
]
},
"VerifyPresentationResult": {
"type": "object",
"properties": {
"verified": {
"type": "boolean"
},
"issuer": {
"type": "string"
},
"signer": {
"type": "object"
},
"jwt": {
"type": "string"
},
"verifiableCredential": {
"type": "object"
}
}
},
"VerifyCredentialResult": {
"type": "object",
"properties": {
"verified": {
"type": "boolean"
},
"issuer": {
"type": "string"
},
"signer": {
"type": "object"
},
"jwt": {
"type": "string"
},
"verifiableCredential": {
"type": "object"
}
},
"example": {
"verified": true,
"polices": {},
"issuer": "did:cheqd:testnet:7bf81a20-633c-4cc7-bc4a-5a45801005e0",
"signer": {
"controller": "did:cheqd:testnet:7bf81a20-633c-4cc7-bc4a-5a45801005e0",
"id": "did:cheqd:testnet:7bf81a20-633c-4cc7-bc4a-5a45801005e0#key-1",
"publicKeyBase58": "BTJiso1S4iSiReP6wGksSneGfiKHxz9SYcm2KknpqBJt",
"type": "Ed25519VerificationKey2018"
}
}
},
"AccreditationIssueRequest": {
"description": "Input fields for the creating a Verifiable Accreditation.",
"type": "object",
"additionalProperties": false,
"properties": {
"issuerDid": {
"description": "DID of the Verifiable Accreditation issuer. This needs to be a `did:cheqd` DID.",
"type": "string",
"example": "did:cheqd:testnet:7bf81a20-633c-4cc7-bc4a-5a45801005e0"
},
"subjectDid": {
"description": "DID of the Verifiable Accreditation holder/subject. This needs to be a `did:cheqd` DID.",
"type": "string",
"example": "did:cheqd:testnet:z6MkhaXgBZDvotDkL5257faiztiGiC2QtKLGpbnnEGta2doK"
},
"schemas": {
"description": "The list of schemas the subject DID is accredited for.",
"type": "array",
"items": {
"$ref": "#/components/schemas/SchemaUrl"
}
},
"accreditationName": {
"description": "Unique name of the Verifiable Accreditation.",
"type": "string"
},
"attributes": {
"description": "JSON object containing the attributes to be included in the Accreditation.",
"type": "object"
},
"@context": {
"description": "Optional properties to be included in the `@context` property of the Accreditation.",
"type": "array",
"items": {
"type": "string"
},
"example": [
"https://schema.org/schema.jsonld",
"https://veramo.io/contexts/profile/v1"
]
},
"parentAccreditation": {
"description": "DID URL of the parent Verifiable Accreditation, required for accredit/attest operation.",
"type": "string"
},
"rootAuthorization": {
"description": "DID URL of the root Verifiable Accreditation, required for accredit/attest operation.",
"type": "string"
},
"trustFramework": {
"description": "Name or Type of the Trust Framework, required for authorize operation.",
"type": "string"
},
"trustFrameworkId": {
"description": "Url of the Trust Framework, required for authorize operation.",
"type": "string"
},
"type": {
"description": "Optional properties to be included in the `type` property of the Accreditation.",
"type": "array",
"items": {
"type": "string"
},
"example": [
"Person"
]
},
"expirationDate": {
"description": "Optional expiration date according to the VC Data Model specification.",
"type": "string",
"format": "date-time",
"example": "2023-06-08T13:49:28.000Z"
},
"format": {
"description": "Format of the Verifiable Accreditation. Defaults to VC-JWT.",
"type": "string",
"enum": [
"jwt",
"jsonld"
],
"example": "jwt"
},
"credentialStatus": {
"description": "Optional `credentialStatus` properties for VC revocation or suspension. Takes `statusListName` and `statusListPurpose` as inputs.",
"type": "object",
"required": [
"statusPurpose",
"statusListName"
],
"properties": {
"statusPurpose": {
"type": "string",
"enum": [
"revocation",
"suspension"
]
},
"statusListName": {
"type": "string"
},
"statusListIndex": {
"type": "number"
},
"statusListVersion": {
"type": "string",
"format": "date-time"
},
"statusListRangeStart": {
"type": "number"
},
"statusListRangeEnd": {
"type": "number"
},
"indexNotIn": {
"type": "number"
}
},
"example": {
"statusPurpose": "revocation",
"statusListName": "employee-credentials"
}
},
"termsOfUse": {
"description": "Terms of use can be utilized by an issuer or a holder to communicate the terms under which a verifiable credential was issued.",
"type": "array",
"items": {
"type": "object",
"example": {
"type": "IssuerPolicy",
"id": "http://example.com/policies/credential/4",
"profile": "http://example.com/profiles/credential",
"prohibition": [
{
"assigner": "https://example.edu/issuers/14",
"assignee": "AllVerifiers",
"target": "http://example.edu/credentials/3732",
"action": [
"Archival"
]
}
]
}
}
},
"refreshService": {
"description": "RefreshService property MUST be one or more refresh services that provides enough information to the recipient's software such that the recipient can refresh the verifiable credential.",
"type": "array",
"items": {
"type": "object",
"example": {
"type": "ManualRefreshService2018",
"id": "https://example.edu/refresh/3732"
}
}
},
"evidence": {
"description": "Evidence property MUST be one or more evidence schemes providing enough information for a verifier to determine whether the evidence gathered by the issuer meets its confidence requirements for relying on the credential.",
"type": "array",
"items": {
"type": "object",
"example": {
"type": [
"DocumentVerification"
],
"id": "https://example.edu/evidence/f2aeec97-fc0d-42bf-8ca7-0548192d4231",
"verifier": "https://example.edu/issuers/14",
"evidenceDocument": "DriversLicense",
"subjectPresence": "Physical",
"documentPresence": "Physical",
"licenseNumber": "123AB4567"
}
}
}
},
"required": [
"issuerDid",
"subjectDid",
"schemas",
"accreditationName"
],
"example": {
"issuerDid": "did:cheqd:testnet:7bf81a20-633c-4cc7-bc4a-5a45801005e0",
"subjectDid": "did:cheqd:testnet:2582fe17-9b25-45e4-8104-1cfca430f0c3",
"schemas": [
{
"type": "MuseumPassCredential",
"url": "https://resolver.cheqd.net/1.0/identifiers/did:cheqd:testnet:0a5b94d0-a417-48ed-a6f5-4abc9e95888d?resourceName=MuseumPassCredentialSchema&resourceType=JsonSchemaValidator2018"
}
],
"format": "jwt",
"accreditationName": "authorizeAccreditation",
"trustFramework": "https://learn.cheqd.io/governance/start",
"trustFrameworkId": "cheqd Governance Framework",
"parentAccreditation": "did:cheqd:testnet:15b74787-6e48-4fd5-8020-eab24e990578?resourceName=accreditAccreditation&resourceType=VerifiableAccreditationToAccredit",
"rootAuthorization": "did:cheqd:testnet:5RpEg66jhhbmASWPXJRWrA?resourceName=authorizeAccreditation&resourceType=VerifiableAuthorizationForTrustChain",
"credentialStatus": {
"statusPurpose": "revocation",
"statusListName": "employee-credentials",
"statusListIndex": 10
}
}
},
"AccreditationVerifyRequest": {
"type": "object",
"properties": {
"subjectDid": {
"description": "DID of the Verifiable Accreditation holder/subject. This needs to be a `did:key` DID.",
"type": "string",
"example": "did:cheqd:testnet:5efa5126-c070-420f-a9c2-d22ae6eefb92"
},
"didUrl": {
"description": "DID URL of the Verifiable Accreditation to be verified as a VC-JWT string or a JSON object.",
"type": "string",
"example": "did:cheqd:testnet:7c2b990c-3d05-4ebf-91af-f4f4d0091d2e?resourceName=cheqd-issuer-logo&resourceType=CredentialArtwork"
},
"did": {
"description": "DID of the Verifiable Accreditation holder/subject",
"type": "string",
"example": "did:cheqd:testnet:7c2b990c-3d05-4ebf-91af-f4f4d0091d2e"
},
"resourceId": {
"description": "Unique resource identifier of the Verifiable Accreditation",
"type": "string",
"example": "398cee0a-efac-4643-9f4c-74c48c72a14b"
},
"resourceName": {
"description": "Resource name of the Verifiable Accreditation",
"type": "string",
"example": "cheqd-issuer-logo"
},
"resourceType": {
"description": "Resource type of the Verifiable Accreditation",
"type": "string",
"example": "CredentialArtwork"
},
"schemas": {
"description": "The list of schemas the subject DID is accredited for.",
"type": "array",
"items": {
"$ref": "#/components/schemas/SchemaUrl"
}
},
"policies": {
"description": "Custom verification policies to execute when verifying Accreditation.",
"type": "object",
"properties": {
"issuanceDate": {
"description": "Policy to skip the `issuanceDate` (`nbf`) timestamp check when set to `false`.",
"type": "boolean",
"default": true
},
"expirationDate": {
"description": "Policy to skip the `expirationDate` (`exp`) timestamp check when set to `false`.",
"type": "boolean",
"default": true
},
"audience": {
"description": "Policy to skip the audience check when set to `false`.",
"type": "boolean",
"default": false
}
}
}
},
"required": [
"subjectDid"
]
},
"AccreditationRevokeRequest": {
"type": "object",
"properties": {
"didUrl": {
"description": "Verifiable Accreditation to be verified as a VC-JWT string or a JSON object.",
"type": "string",
"example": "did:cheqd:testnet:7c2b990c-3d05-4ebf-91af-f4f4d0091d2e?resourceName=cheqd-issuer-logo&resourceType=CredentialArtwork"
},
"did": {
"type": "string",
"example": "did:cheqd:testnet:7c2b990c-3d05-4ebf-91af-f4f4d0091d2e"
},
"resourceId": {
"type": "string",
"example": "398cee0a-efac-4643-9f4c-74c48c72a14b"
},
"resourceName": {
"type": "string",
"example": "cheqd-issuer-logo"
},
"resourceType": {
"type": "string",
"example": "CredentialArtwork"
},
"symmetricKey": {
"description": "The symmetric key used to encrypt the StatusList2021 DID-Linked Resource. Required if the StatusList2021 DID-Linked Resource is encrypted.",
"type": "string"
}
}
},
"PresentationCreateRequest": {
"type": "object",
"required": [
"credentials"
],
"properties": {
"credentials": {
"description": "Verifiable Credentials to be used for VP-JWT creation as a VP-JWT strings or a JSON objectsf.",
"type": "array",
"items": {
"type": "object"
}
},
"holderDid": {
"description": "DID of holder",
"type": "string"
},
"verifierDid": {
"description": "DID of verifier",
"type": "string"
}
}
},
"PresentationVerifyRequest": {
"type": "object",
"required": [
"presentation"
],
"properties": {
"presentation": {
"description": "Verifiable Presentation to be verified as a VP-JWT string or a JSON object.",
"type": "object"
},
"verifierDid": {
"description": "Provide an optional verifier DID (also known as 'domain' parameter), if the verifier DID in the presentation is not managed in the wallet.",
"type": "string"
},
"makeFeePayment": {
"description": "Automatically make fee payment (if required) based on payment conditions to unlock encrypted StatusList2021 or BitstringStatusList DID-Linked Resource.",
"type": "boolean",
"default": false
},
"policies": {
"description": "Custom verification policies to execute when verifying presentation.",
"type": "object",
"properties": {
"issuanceDate": {
"description": "Policy to skip the `issuanceDate` (`nbf`) timestamp check when set to `false`.",
"type": "boolean",
"default": true
},
"expirationDate": {
"description": "Policy to skip the `expirationDate` (`exp`) timestamp check when set to `false`.",
"type": "boolean",
"default": true
},
"audience": {
"description": "Policy to skip the audience check when set to `false`.",
"type": "boolean",
"default": false
}
}
}
}
},
"CredentialStatusRecordResult": {
"type": "object",
"properties": {
"statusListId": {
"type": "string",
"description": "Unique identifier for the status registry"
},
"statusListName": {
"type": "string",
"description": "Name of the status list resource"
},
"uri": {
"type": "string",
"description": "DID URL of the status list resource"
},
"issuerId": {
"type": "string",
"format": "uri",
"description": "DID of the issuer"
},
"previousUri": {
"type": "string",
"nullable": true,
"description": "Link to previous registry in the chain (for FULL registries)"
},
"nextUri": {
"type": "string",
"nullable": true,
"description": "Link to next registry in the chain (STANDBY registry)"
},
"listType": {
"type": "string",
"description": "Type of status list (StatusList2021Revocation, StatusList2021Suspension, BitstringStatusListCredential)"
},
"storageType": {
"type": "string",
"enum": [
"cheqd",
"ipfs",
"dock",
"paradym"
],
"description": "Storage provider for the status list"
},
"encrypted": {
"type": "boolean",
"description": "Whether the status list is encrypted"
},
"credentialCategory": {
"type": "string",
"enum": [
"credential",
"accreditation"
],
"description": "Category of credentials this status list is for"
},
"size": {
"type": "integer",
"description": "Maximum capacity of the status list (total number of indices)"
},
"writeCursor": {
"type": "integer",
"description": "Current write cursor position (last assigned index)"
},
"state": {
"type": "string",
"enum": [
"ACTIVE",
"STANDBY",
"FULL"
],
"description": "Current state of the registry"
},
"createdAt": {
"type": "string",
"format": "date-time",
"description": "Timestamp when the registry was created"
},
"updatedAt": {
"type": "string",
"format": "date-time",
"description": "Timestamp when the registry was last updated"
},
"sealedAt": {
"type": "string",
"format": "date-time",
"nullable": true,
"description": "Timestamp when the registry was sealed (marked as FULL)"
},
"statusPurpose": {
"oneOf": [
{
"type": "string"
},
{
"type": "array",
"items": {
"type": "string"
}
}
],
"description": "Status purpose or list of status purposes"
},
"deprecated": {
"type": "boolean",
"description": "Whether the registry is deprecated"
}
},
"example": {
"statusListId": "5945233a-a4b5-422b-b893-eaed5cedd2dc",
"statusListName": "cheqd-employee-credentials",
"uri": "did:cheqd:testnet:7c2b990c-3d05-4ebf-91af-f4f4d0091d2e?resourceName=cheqd-employee-credentials&resourceType=StatusList2021Revocation",
"issuerId": "did:cheqd:testnet:7c2b990c-3d05-4ebf-91af-f4f4d0091d2e",
"previousUri": null,
"nextUri": "did:cheqd:testnet:7c2b990c-3d05-4ebf-91af-f4f4d0091d2e?resourceName=cheqd-employee-credentials-ext1&resourceType=StatusList2021Revocation",
"listType": "StatusList2021Revocation",
"storageType": "cheqd",
"encrypted": false,
"credentialCategory": "credential",
"size": 131072,
"writeCursor": 105432,
"state": "ACTIVE",
"createdAt": "2023-06-26T11:45:19.349Z",
"updatedAt": "2023-06-26T11:45:20.000Z",
"statusPurpose": [
"revocation"
],
"sealedAt": null,
"deprecated": false
}
},
"ListCredentialStatusRecordsResult": {
"type": "object",
"properties": {
"total": {
"type": "number"
},
"records": {
"type": "array",
"items": {
"$ref": "#/components/schemas/CredentialStatusRecordResult"
}
}
},
"example": {
"total": 1,
"records": [
{
"statusListId": "5945233a-a4b5-422b-b893-eaed5cedd2dc",
"statusListName": "cheqd-employee-credentials",
"uri": "did:cheqd:testnet:7c2b990c-3d05-4ebf-91af-f4f4d0091d2e?resourceName=cheqd-employee-credentials&resourceType=StatusList2021Revocation",
"issuerId": "did:cheqd:testnet:7c2b990c-3d05-4ebf-91af-f4f4d0091d2e",
"previousUri": null,
"nextUri": "did:cheqd:testnet:7c2b990c-3d05-4ebf-91af-f4f4d0091d2e?resourceName=cheqd-employee-credentials-ext1&resourceType=StatusList2021Revocation",
"listType": "StatusList2021Revocation",
"storageType": "cheqd",
"encrypted": false,
"credentialCategory": "credential",
"size": 131072,
"writeCursor": 105432,
"state": "ACTIVE",
"createdAt": "2023-06-26T11:45:19.349Z",
"updatedAt": "2023-06-26T11:45:20.000Z",
"sealedAt": null,
"deprecated": false
}
]
}
},
"CredentialStatusCreateBody": {
"allOf": [
{
"type": "object",
"required": [
"did",
"statusListName"
],
"properties": {
"did": {
"description": "DID of the StatusList2021 or BitstringStatusList publisher.",
"type": "string",
"format": "uri"
},
"statusListName": {
"description": "The name of the StatusList2021 or BitstringStatusList DID-Linked Resource to be created.",
"type": "string"
},
"length": {
"description": "The length of the status list to be created. The default and minimum length is 131072 which is 16kb.",
"type": "integer",
"minimum": 0,
"exclusiveMinimum": true,
"default": 131072
},
"encoding": {
"description": "The encoding format of the StatusList2021 or BitstringStatusList (only base64url supported) DiD-Linked Resource to be created.",
"type": "string",
"default": "base64url",
"enum": [
"base64url",
"hex"
]
},
"statusListVersion": {
"description": "Optional field to assign a human-readable version in the StatusList2021 or BitstringStatusList DID-Linked Resource.",
"type": "string"
},
"statusSize": {
"description": "Only for BitstringStatusList: bits per credential, used to support multiple status in same list.",
"type": "integer",
"minimum": 1
},
"credentialCategory": {
"description": "Category of credentials this status list is for.",
"type": "string",
"enum": [
"credential",
"accreditation"
]
},
"statusMessages": {
"description": "Only for BitstringStatusList (Mandatory if statusSize > 1): Message explaining each bit",
"type": "array",
"items": {
"type": "object",
"properties": {
"status": {
"type": "string",
"example": "0x0"
},
"message": {
"type": "string",
"example": "valid"
}
}
}
},
"ttl": {
"description": "Only for BitstringStatusList: Time to Live in Miliseconds (not expiry).",
"type": "integer",
"minimum": 1000
}
}
},
{
"$ref": "#/components/schemas/AlsoKnownAs"
}
]
},
"CredentialStatusCreateUnencryptedRequest": {
"allOf": [
{
"$ref": "#/components/schemas/CredentialStatusCreateBody"
}
],
"example": {
"did": "did:cheqd:testnet:7c2b990c-3d05-4ebf-91af-f4f4d0091d2e",
"statusListName": "cheqd-employee-credentials",
"length": 140000,
"encoding": "base64url"
}
},
"CredentialStatusUnencryptedResult": {
"type": "object",
"properties": {
"resource": {
"type": "object",
"properties": {
"StatusList2021": {
"type": "object",
"properties": {
"encodedList": {
"type": "string",
"example": "H4sIAAAAAAAAA-3BAQ0AAADCoPdPbQ8HFAAAAAAAAAAAAAAAAAAAAADwaDhDr_xcRAAA"
},
"type": {
"type": "string",
"example": "StatusList2021Revocation"
},
"validFrom": {
"type": "string",
"format": "date-time",
"example": "2023-06-26T11:45:19.349Z"
}
}
},
"metadata": {
"type": "object",
"properties": {
"type": {
"type": "string",
"example": "StatusList2021Revocation"
},
"encoding": {
"type": "string",
"example": "base64url"
},
"encrypted": {
"type": "boolean",
"example": false
}
}
}
}
},
"resourceMetadata": {
"type": "object",
"example": {
"resourceURI": "did:cheqd:testnet:7c2b990c-3d05-4ebf-91af-f4f4d0091d2e/resources/5945233a-a4b5-422b-b893-eaed5cedd2dc",
"resourceCollectionId": "7c2b990c-3d05-4ebf-91af-f4f4d0091d2e",
"resourceId": "5945233a-a4b5-422b-b893-eaed5cedd2dc",
"resourceName": "cheqd-employee-credentials",
"resourceType": "StatusList2021Revocation",
"mediaType": "application/json",
"resourceVersion": "1.0.0",
"created": "2023-06-26T11:45:20Z",
"checksum": "909e22e371a41afbb96c330a97752cf7c8856088f1f937f87decbef06cbe9ca2",
"previousVersionId": null,
"nextVersionId": null
}
}
}
},
"CredentialStatusCreateUnencryptedResult": {
"allOf": [
{
"type": "object",
"properties": {
"created": {
"type": "boolean",
"example": true
}
}
},
{
"$ref": "#/components/schemas/CredentialStatusUnencryptedResult"
}
]
},
"CredentialStatusEncryptedPaymentConditionsBody": {
"type": "object",
"properties": {
"feePaymentAddress": {
"description": "The cheqd/Cosmos payment address where payments to unlock the encrypted StatusList2021 or BitstringStatusList DID-Linked Resource need to be sent.",
"type": "string",
"example": "cheqd1qs0nhyk868c246defezhz5eymlt0dmajna2csg"
},
"feePaymentAmount": {
"description": "Amount in CHEQ tokens to unlock the encrypted StatusList2021 or BitstringStatusList DID-Linked Resource.",
"type": "number",
"minimum": 0,
"exclusiveMinimum": true,
"default": 20
},
"feePaymentWindow": {
"description": "Time window (in minutes) within which the payment to unlock the encrypted StatusList2021 or BitstringStatusList DID-Linked Resource is considered valid.",
"type": "number",
"minimum": 0,
"exclusiveMinimum": true,
"default": 10
}
}
},
"CredentialStatusEncryptedPaymentConditionsJson": {
"type": "object",
"properties": {
"paymentConditions": {
"allOf": [
{
"$ref": "#/components/schemas/CredentialStatusEncryptedPaymentConditionsBody"
}
]
}
}
},
"CredentialStatusCreateEncryptedFormRequest": {
"allOf": [
{
"$ref": "#/components/schemas/CredentialStatusCreateBody"
},
{
"$ref": "#/components/schemas/CredentialStatusEncryptedPaymentConditionsBody"
},
{
"type": "object",
"required": [
"feePaymentAddress",
"feePaymentAmount",
"feePaymentWindow"
]
}
]
},
"CredentialStatusCreateEncryptedJsonRequest": {
"allOf": [
{
"$ref": "#/components/schemas/CredentialStatusCreateBody"
},
{
"$ref": "#/components/schemas/CredentialStatusEncryptedPaymentConditionsJson"
},
{
"type": "object",
"required": [
"paymentConditions"
]
}
],
"example": {
"did": "did:cheqd:testnet:7c2b990c-3d05-4ebf-91af-f4f4d0091d2e",
"statusListName": "cheqd-employee-credentials-encrypted",
"paymentConditions": [
{
"feePaymentAddress": "cheqd1qs0nhyk868c246defezhz5eymlt0dmajna2csg",
"feePaymentAmount": 20,
"feePaymentWindow": 10
}
]
}
},
"CredentialStatusEncryptedResult": {
"type": "object",
"properties": {
"resource": {
"type": "object",
"properties": {
"StatusList2021": {
"type": "object",
"properties": {
"encodedList": {
"type": "string",
"example": "496fdfbeb745b4db03fcdb40566f9c4c4a1c0f184b31255e641b6e7bdfb9b6946c12be87ca3763be0393c00b67ac1e8737c106b32f46ef59c765754415b5e8cc7c65fccaa3374620430ea476301a5e0dd63340e7a27a68bc627518471f22e4a2"
},
"type": {
"type": "string",
"example": "StatusList2021Revocation"
},
"validFrom": {
"type": "string",
"format": "date-time",
"example": "2023-06-26T11:45:19.349Z"
}
}
},
"metadata": {
"type": "object",
"properties": {
"type": {
"type": "string",
"example": "StatusList2021Revocation"
},
"encoding": {
"type": "string",
"example": "base64url"
},
"encrypted": {
"type": "boolean",
"example": true
},
"encryptedSymmetricKey": {
"type": "string",
"example": "b11182dc524b8181f9a6aef4c4ad0a1c14e40033b9112dffd8d1bcf6cc3b85abc07ded2205ee94068a99f4202502cb0855f322583fa6ce1534d3a05bf36891766ea2c5f90a982b3040680762977d404d758a2370224a239c8279aa7d21e980931c42055b17ca4c7dbffa4782480a8b6279cf989b2f166d5fdb4b2c1b5a63927200000000000000203018dcaba26df45a415bb599218b27ca853a70289d7a3ed3ed0e3730452e8f8d9af91b6e71312565d2c069341f6660ab"
},
"paymentConditions": {
"type": "array",
"items": {
"type": "object",
"properties": {
"feePaymentAddress": {
"type": "string",
"example": "cheqd1qs0nhyk868c246defezhz5eymlt0dmajna2csg"
},
"feePaymentAmount": {
"type": "string",
"example": "20000000000ncheq"
},
"intervalInSeconds": {
"type": "number",
"example": 600
},
"type": {
"type": "string",
"example": "timelockPayment"
}
}
}
}
}
},
"resourceMetadata": {
"type": "object",
"example": {
"resourceURI": "did:cheqd:testnet:7c2b990c-3d05-4ebf-91af-f4f4d0091d2e/resources/5945233a-a4b5-422b-b893-eaed5cedd2dc",
"resourceCollectionId": "7c2b990c-3d05-4ebf-91af-f4f4d0091d2e",
"resourceId": "5945233a-a4b5-422b-b893-eaed5cedd2dc",
"resourceName": "cheqd-revocation-encrypted-1",
"resourceType": "StatusList2021Revocation",
"mediaType": "application/json",
"resourceVersion": "2023-06-26T11:45:19.349Z",
"created": "2023-06-26T11:45:20Z",
"checksum": "909e22e371a41afbb96c330a97752cf7c8856088f1f937f87decbef06cbe9ca2",
"previousVersionId": null,
"nextVersionId": null
}
},
"symmetricKey": {
"type": "string",
"example": "dfe204ee95ae74ea5d74b94c3d8ff782273905b07fbc9f8c3d961c3b43849f18"
}
}
}
}
},
"CredentialStatusCreateEncryptedResult": {
"allOf": [
{
"type": "object",
"properties": {
"created": {
"type": "boolean",
"example": true
}
}
},
{
"$ref": "#/components/schemas/CredentialStatusEncryptedResult"
}
]
},
"CredentialStatusUpdateBody": {
"type": "object",
"required": [
"did",
"statusListName",
"indices"
],
"properties": {
"did": {
"description": "DID of the StatusList2021 publisher.",
"type": "string",
"format": "uri"
},
"statusListName": {
"description": "The name of the StatusList2021 DID-Linked Resource to be updated.",
"type": "string"
},
"indices": {
"description": "List of credential status indices to be updated. The indices must be in the range of the status list.",
"type": "array",
"items": {
"type": "integer",
"minimum": 0,
"exclusiveMinimum": false
}
},
"statusListVersion": {
"description": "Optional field to assign a human-readable version in the StatusList2021 DID-Linked Resource.",
"type": "string"
}
}
},
"CredentialStatusUpdateUnencryptedRequest": {
"allOf": [
{
"$ref": "#/components/schemas/CredentialStatusUpdateBody"
}
],
"example": {
"did": "did:cheqd:testnet:7c2b990c-3d05-4ebf-91af-f4f4d0091d2e",
"statusListName": "cheqd-employee-credentials",
"indices": [
10,
3199,
12109,
130999
]
}
},
"CredentialStatusUpdateUnencryptedResult": {
"allOf": [
{
"type": "object",
"properties": {
"updated": {
"type": "boolean",
"example": true
}
}
},
{
"oneOf": [
{
"$ref": "#/components/schemas/RevocationResult"
},
{
"$ref": "#/components/schemas/SuspensionResult"
},
{
"$ref": "#/components/schemas/UnsuspensionResult"
}
]
},
{
"$ref": "#/components/schemas/CredentialStatusUnencryptedResult"
}
]
},
"CredentialStatusUpdateEncryptedFormRequest": {
"allOf": [
{
"$ref": "#/components/schemas/CredentialStatusUpdateBody"
},
{
"type": "object",
"required": [
"symmetricKey"
],
"properties": {
"symmetricKey": {
"description": "The symmetric key used to encrypt the StatusList2021 DID-Linked Resource.",
"type": "string"
}
}
},
{
"$ref": "#/components/schemas/CredentialStatusEncryptedPaymentConditionsBody"
}
]
},
"CredentialStatusUpdateEncryptedJsonRequest": {
"allOf": [
{
"$ref": "#/components/schemas/CredentialStatusUpdateBody"
},
{
"type": "object",
"required": [
"symmetricKey"
],
"properties": {
"symmetricKey": {
"description": "The symmetric key used to encrypt the StatusList2021 DID-Linked Resource.",
"type": "string"
}
}
},
{
"$ref": "#/components/schemas/CredentialStatusEncryptedPaymentConditionsJson"
}
],
"example": {
"did": "did:cheqd:testnet:7c2b990c-3d05-4ebf-91af-f4f4d0091d2e",
"statusListName": "cheqd-employee-credentials-encrypted",
"indices": [
10,
3199,
12109,
130999
],
"symmetricKey": "dfe204ee95ae74ea5d74b94c3d8ff782273905b07fbc9f8c3d961c3b43849f18"
}
},
"CredentialStatusUpdateEncryptedResult": {
"allOf": [
{
"type": "object",
"properties": {
"updated": {
"type": "boolean",
"example": true
}
}
},
{
"oneOf": [
{
"$ref": "#/components/schemas/RevocationResult"
},
{
"$ref": "#/components/schemas/SuspensionResult"
},
{
"$ref": "#/components/schemas/UnsuspensionResult"
}
]
},
{
"$ref": "#/components/schemas/CredentialStatusEncryptedResult"
}
]
},
"CredentialStatusCheckRequest": {
"type": "object",
"required": [
"did",
"statusListName",
"index"
],
"properties": {
"did": {
"description": "DID of the StatusList2021 publisher.",
"type": "string",
"format": "uri"
},
"statusListName": {
"description": "The name of the StatusList2021 DID-Linked Resource to be checked.",
"type": "string"
},
"index": {
"description": "Credential status index to be checked for revocation or suspension.",
"type": "integer",
"minimum": 0,
"exclusiveMinimum": false
},
"statusListCredential": {
"description": "Optional Resolvable DID URL of the BitstringStatusList credential to be checked.",
"type": "string"
},
"statusSize": {
"description": "Optional size of the BitstringStatusList.",
"type": "number",
"default": 2
},
"statusMessage": {
"description": "Array of status messages for each bit in the BitstringStatusList.",
"type": "array"
},
"makeFeePayment": {
"description": "Automatically make fee payment (if required) based on payment conditions to unlock encrypted StatusList2021 or BitstringStatusList DID-Linked Resource.",
"type": "boolean",
"default": true
}
}
},
"CredentialStatusCheckResult": {
"oneOf": [
{
"$ref": "#/components/schemas/CredentialStatusCheckRevocationResult"
},
{
"$ref": "#/components/schemas/CredentialStatusCheckSuspensionResult"
}
]
},
"CredentialStatusCheckRevocationResult": {
"type": "object",
"properties": {
"checked": {
"type": "boolean",
"example": true
},
"revoked": {
"type": "boolean",
"example": false
}
}
},
"CredentialStatusCheckSuspensionResult": {
"type": "object",
"properties": {
"checked": {
"type": "boolean",
"example": true
},
"suspended": {
"type": "boolean",
"example": false
}
}
},
"CredentialStatusListSearchResult": {
"allOf": [
{
"type": "object",
"properties": {
"found": {
"type": "boolean",
"example": true
}
}
},
{
"oneOf": [
{
"$ref": "#/components/schemas/CredentialStatusUnencryptedResult"
},
{
"$ref": "#/components/schemas/CredentialStatusEncryptedResult"
}
]
}
]
},
"KeyImportRequest": {
"type": "object",
"properties": {
"alias": {
"type": "string"
},
"type": {
"type": "string",
"enum": [
"Ed25519",
"Secp256k1"
]
},
"privateKeyHex": {
"type": "string"
}
}
},
"KeyResult": {
"type": "object",
"properties": {
"kid": {
"type": "string"
},
"type": {
"type": "string",
"enum": [
"Ed25519",
"Secp256k1"
]
},
"publicKeyHex": {
"type": "string"
}
}
},
"DidDocument": {
"description": "This input field contains either a complete DID document, or an incremental change (diff) to a DID document. See Universal DID Registrar specification.",
"type": "object",
"properties": {
"@context": {
"type": "array",
"items": {
"type": "string"
}
},
"id": {
"type": "string"
},
"controllers": {
"type": "array",
"items": {
"type": "string"
}
},
"verificationMethod": {
"type": "array",
"items": {
"$ref": "#/components/schemas/VerificationMethod"
}
},
"service": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Service"
}
},
"authentication": {
"type": "array",
"items": {
"type": "string"
}
},
"assertionMethod": {
"type": "array",
"items": {
"type": "string"
}
},
"capabilityInvocation": {
"type": "array",
"items": {
"type": "string"
}
},
"capabilityDelegation": {
"type": "array",
"items": {
"type": "string"
}
},
"keyAgreement": {
"type": "array",
"items": {
"type": "string"
}
}
},
"example": {
"@context": [
"https://www.w3.org/ns/did/v1"
],
"id": "did:cheqd:testnet:7bf81a20-633c-4cc7-bc4a-5a45801005e0",
"controller": [
"did:cheqd:testnet:7bf81a20-633c-4cc7-bc4a-5a45801005e0"
],
"verificationMethod": [
{
"id": "did:cheqd:testnet:7bf81a20-633c-4cc7-bc4a-5a45801005e0#key-1",
"type": "Ed25519VerificationKey2018",
"controller": "did:cheqd:testnet:7bf81a20-633c-4cc7-bc4a-5a45801005e0",
"publicKeyBase58": "z6MkkVbyHJLLjdjU5B62DaJ4mkdMdUkttf9UqySSkA9bVTeZ"
}
],
"authentication": [
"did:cheqd:testnet:7bf81a20-633c-4cc7-bc4a-5a45801005e0#key-1"
],
"service": [
{
"id": "did:cheqd:testnet:7bf81a20-633c-4cc7-bc4a-5a45801005e0#service-1",
"type": "LinkedDomains",
"serviceEndpoint": [
"https://example.com"
]
}
]
}
},
"DidDocumentWithoutVerificationMethod": {
"type": "object",
"properties": {
"@context": {
"type": "array",
"items": {
"type": "string"
}
},
"id": {
"type": "string"
},
"controllers": {
"type": "array",
"items": {
"type": "string"
}
},
"service": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Service"
}
},
"authentication": {
"type": "array",
"items": {
"type": "string"
}
},
"assertionMethod": {
"type": "array",
"items": {
"type": "string"
}
},
"capabilityInvocation": {
"type": "array",
"items": {
"type": "string"
}
},
"capabilityDelegation": {
"type": "array",
"items": {
"type": "string"
}
},
"keyAgreement": {
"type": "array",
"items": {
"type": "string"
}
}
},
"example": {
"@context": [
"https://www.w3.org/ns/did/v1"
],
"id": "did:cheqd:testnet:7bf81a20-633c-4cc7-bc4a-5a45801005e0",
"controller": [
"did:cheqd:testnet:7bf81a20-633c-4cc7-bc4a-5a45801005e0"
],
"authentication": [
"did:cheqd:testnet:7bf81a20-633c-4cc7-bc4a-5a45801005e0#key-1"
],
"service": [
{
"id": "did:cheqd:testnet:7bf81a20-633c-4cc7-bc4a-5a45801005e0#service-1",
"type": "LinkedDomains",
"serviceEndpoint": [
"https://example.com"
]
}
]
}
},
"DidCreateRequestFormBased": {
"type": "object",
"properties": {
"network": {
"description": "Network to create the DID on (testnet or mainnet)",
"type": "string",
"enum": [
"testnet",
"mainnet"
]
},
"providerId": {
"description": "Identity Provider to create the DID",
"type": "string",
"required": false
},
"identifierFormatType": {
"description": "Algorithm to use for generating the method-specific ID. The two styles supported are UUIDs and Indy-style Base58. See cheqd DID method documentation for more details.",
"type": "string",
"enum": [
"uuid",
"base58btc"
]
},
"verificationMethodType": {
"description": "Type of verification method to use for the DID. See DID Core specification for more details. Only the types listed below are supported.",
"type": "string",
"enum": [
"Ed25519VerificationKey2018",
"JsonWebKey2020",
"Ed25519VerificationKey2020"
]
},
"service": {
"description": "It's a list of special objects which are designed to build the actual service. It's almost the same as in DID Core specification, but instead of `id` it utilises `idFragment` field for making the right `id` for each service. !!! WARN. Cause swagger-ui does not handle x-ww-form based arrays correctly, please frame all your services in brackets while using swagger UI. !!!",
"type": "array",
"items": {
"type": "object",
"properties": {
"idFragment": {
"type": "string"
},
"type": {
"type": "string"
},
"serviceEndpoint": {
"type": "array",
"items": {
"type": "string"
}
}
}
},
"example": [
{
"idFragment": "service-1",
"type": "LinkedDomains",
"serviceEndpoint": [
"https://example.com"
]
}
]
},
"key": {
"description": "The unique identifier in hexadecimal public key format used in the verification method to create the DID.",
"type": "string"
},
"@context": {
"type": "array",
"items": {
"type": "string"
},
"example": [
"https://www.w3.org/ns/did/v1"
]
}
}
},
"DidCreateRequestJson": {
"type": "object",
"properties": {
"network": {
"description": "Network to create the DID on (testnet or mainnet)",
"type": "string",
"enum": [
"testnet",
"mainnet"
]
},
"providerId": {
"description": "Identity Provider to create the DID",
"type": "string",
"required": false
},
"identifierFormatType": {
"description": "Algorithm to use for generating the method-specific ID. The two styles supported are UUIDs and Indy-style Base58. See cheqd DID method documentation for more details.",
"type": "string",
"enum": [
"uuid",
"base58btc"
]
},
"options": {
"type": "object",
"properties": {
"key": {
"type": "string",
"example": "8255ddadd75695e01f3d98fcec8ccc7861a030b317d4326b0e48a4d579ddc43a"
},
"verificationMethodType": {
"description": "Type of verification method to use for the DID. See DID Core specification for more details. Only the types listed below are supported.",
"type": "string",
"enum": [
"Ed25519VerificationKey2018",
"JsonWebKey2020",
"Ed25519VerificationKey2020"
]
}
}
},
"didDocument": {
"$ref": "#/components/schemas/DidDocumentWithoutVerificationMethod"
}
}
},
"DidImportRequest": {
"type": "object",
"properties": {
"did": {
"type": "string",
"description": "DID to be imported",
"format": "uri"
},
"keys": {
"type": "array",
"description": "List of keys required to import the DID",
"items": {
"$ref": "#/components/schemas/KeyImportRequest"
}
}
},
"required": [
"did",
"keys"
]
},
"PresentationCreateResult": {
"type": "object",
"properties": {
"vp": {
"type": "object",
"description": "Verifiable Presentation which could be provided to the verifier."
},
"nbf": {
"type": "integer",
"description": "Unix timestamp of the earliest time that the Verifiable Presentation is valid."
},
"iss": {
"type": "string",
"description": "DID of the issuer of the Verifiable Presentation. (Here it's supposed to be a holder DID)"
},
"aud": {
"type": "array",
"items": {
"type": "string"
},
"description": "DID of the verifier of the Verifiable Presentation."
}
},
"example": {
"vp": {
"@context": [
"https://www.w3.org/2018/credentials/v1"
],
"type": [
"VerifiablePresentation"
],
"verifiableCredential": [
"eyJhbGciOiJFZERTQSIsInR5cCI6IkpXVCJ9.eyJ2YyI6eyJAY29udGV4dCI6WyJodHRwczovL3d3dy53My5vcmcvMjAxOC9jcmVkZW50aWFscy92MSIsImh0dHBzOi8vc2NoZW1hLm9yZy9zY2hlbWEuanNvbmxkIiwiaHR0cHM6Ly92ZXJhbW8uaW8vY29udGV4dHMvcHJvZmlsZS92MSIsImh0dHBzOi8vdzNpZC5vcmcvdmMtc3RhdHVzLWxpc3QtMjAyMS92MSJdLCJ0eXBlIjpbIlZlcmlmaWFibGVDcmVkZW50aWFsIiwiUGVyc29uIl0sImNyZWRlbnRpYWxTdWJqZWN0Ijp7Im5hbWUiOiJCb2IiLCJnZW5kZXIiOiJtYWxlIn0sImNyZWRlbnRpYWxTdGF0dXMiOnsiaWQiOiJodHRwczovL3Jlc29sdmVyLmNoZXFkLm5ldC8xLjAvaWRlbnRpZmllcnMvZGlkOmNoZXFkOnRlc3RuZXQ6OTBkNWMxNDEtNzI0Zi00N2FkLTlhZTctYTdjMzNhOWU1NjQzP3Jlc291cmNlTmFtZT1zdXNwZW5zaW9uRW4mcmVzb3VyY2VUeXBlPVN0YXR1c0xpc3QyMDIxU3VzcGVuc2lvbiMxMzMzOCIsInR5cGUiOiJTdGF0dXNMaXN0MjAyMUVudHJ5Iiwic3RhdHVzUHVycG9zZSI6InN1c3BlbnNpb24iLCJzdGF0dXNMaXN0SW5kZXgiOiIxMzMzOCJ9fSwic3ViIjoiZGlkOmtleTp6Nk1raGFYZ0JaRHZvdERrTDUyNTdmYWl6dGlHaUMyUXRLTEdwYm5uRUd0YTJkb0siLCJuYmYiOjE3MDA0NzM0MTYsImlzcyI6ImRpZDpjaGVxZDp0ZXN0bmV0OjkwZDVjMTQxLTcyNGYtNDdhZC05YWU3LWE3YzMzYTllNTY0MyJ9.-14Ril1pZEy2HEEo48gTJr2yOtGxBhUGTFmzVdjAtyhFRsW5zZg9onHt6V9JQ8BaiYBlTkP9GzTnJ-O6hdiyCw"
]
},
"nbf": 1700744275,
"iss": "did:cheqd:testnet:4b846d0f-2f6c-4ab6-9fe2-5b8db301c83c",
"aud": [
"did:cheqd:testnet:8c71e9b6-c5a3-4250-8c58-fa591533cd22"
]
}
},
"DidResult": {
"type": "object",
"properties": {
"did": {
"type": "string"
},
"controllerKeyId": {
"type": "string"
},
"keys": {
"type": "array",
"items": {
"type": "object"
}
},
"services": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Service"
}
}
}
},
"ListDidResult": {
"type": "object",
"properties": {
"total": {
"type": "number"
},
"dids": {
"type": "array",
"items": {
"type": "string"
}
}
}
},
"ExportDidResult": {
"type": "object",
"properties": {
"@context": {
"type": "array",
"items": {
"type": "string"
},
"example": [
"https://w3id.org/wallet/v1",
"https://w3id.org/did-resolution/v1"
]
},
"id": {
"type": "string",
"example": "did:cheqd:testnet:f5101dd8-447f-40a7-a9b8-700abeba389a"
},
"type": {
"type": "array",
"items": {
"type": "string"
},
"example": [
"DIDResolutionResponse"
]
},
"didDidResolutionMetadata": {
"$ref": "#/components/schemas/DidResolutionMetadata"
},
"didDocument": {
"$ref": "#/components/schemas/DidDocument"
},
"didDocumentMetadata": {
"$ref": "#/components/schemas/DeactivatedDidDocumentMetadata"
},
"keys": {
"type": "array",
"items": {
"type": "object",
"properties": {
"@context": {
"type": "array",
"items": {
"type": "string"
}
},
"id": {
"type": "string"
},
"type": {
"type": "array",
"items": {
"type": "string"
}
},
"controller": {
"type": "string"
},
"name": {
"type": "string"
},
"correlation": {
"type": "array",
"items": {
"type": "string"
}
},
"created": {
"type": "string"
},
"publicKeyMultibase": {
"type": "string"
},
"privateKeyMultibase": {
"type": "string"
},
"publicKeyBase58": {
"type": "string"
},
"privateKeyBase58": {
"type": "string"
}
}
}
}
}
},
"DidUpdateResponse": {
"type": "object",
"properties": {
"did": {
"type": "string"
},
"controllerKeyId": {
"type": "string",
"description": "The default key id of which is the key associated with the first verificationMethod"
},
"keys": {
"type": "array",
"description": "The list of keys associated with the list of verificationMethod's of DIDDocument",
"items": {
"type": "object"
}
},
"services": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Service"
}
},
"controllerKeyRefs": {
"type": "array",
"description": "The list of keyRefs which were used for signing the transaction",
"items": {
"type": "string"
}
},
"controllerKeys": {
"type": "array",
"description": "The list of all possible keys, inlcuding all controller's keys",
"items": {
"type": "string"
}
}
}
},
"VerificationMethod": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"type": {
"type": "string"
},
"controller": {
"type": "string"
},
"publicKeyMultibase": {
"type": "string"
},
"publicKeyJwk": {
"type": "array",
"items": {
"type": "string"
}
}
},
"example": {
"controller": "did:cheqd:testnet:7bf81a20-633c-4cc7-bc4a-5a45801005e0",
"id": "did:cheqd:testnet :7bf81a20-633c-4cc7-bc4a-5a45801005e0#key-1",
"publicKeyBase58": "BTJiso1S4iSiReP6wGksSneGfiKHxz9SYcm2KknpqBJt",
"type": "Ed25519VerificationKey2018"
}
},
"Service": {
"description": "Communicating or interacting with the DID subject or associated entities via one or more service endpoints. See DID Core specification for more details.",
"type": "object",
"properties": {
"id": {
"description": "DID appended with Service fragment ID (e.g., `#service-1` in `did:cheqd:mainnet:7bf81a20-633c-4cc7-bc4a-5a45801005e0#service-1`)",
"type": "string",
"example": "did:cheqd:mainnet:7bf81a20-633c-4cc7-bc4a-5a45801005e0#service-1"
},
"type": {
"description": "Service type as defined in DID Specification Registries.",
"type": "string",
"example": "LinkedDomains"
},
"serviceEndpoint": {
"description": "Service endpoint as defined in DID Core Specification.",
"type": "array",
"items": {
"type": "string",
"example": "https://example.com"
}
},
"priority": {
"description": "(Optional) Priority of the service endpoint, used for distinction when multiple did-communication service endpoints are present in a single DID document.",
"type": "integer",
"example": 0
},
"recipientKeys": {
"description": "(Optional) List of recipient keys used to denote the default recipients of an endpoint.",
"type": "array",
"items": {
"type": "string",
"example": "did:cheqd:mainnet:7bf81a20-633c-4cc7-bc4a-5a45801005e0#key-1"
}
},
"routingKeys": {
"description": "(Optional) List of routing keys used to used to denote the individual routing hops in between the sender and recipients.",
"type": "array",
"items": {
"type": "string",
"example": "did:cheqd:mainnet:7bf81a20-633c-4cc7-bc4a-5a45801005e0#key-2"
}
},
"accept": {
"description": "(Optional) List of media types that the service endpoint accepts.",
"type": "array",
"items": {
"type": "string",
"example": "didcomm/aip2;env=rfc587"
}
}
}
},
"DidUpdateRequest": {
"type": "object",
"properties": {
"did": {
"description": "DID identifier to be updated.",
"type": "string",
"example": "did:cheqd:testnet:7bf81a20-633c-4cc7-bc4a-5a45801005e0"
},
"service": {
"type": "array",
"description": "Service section of the DID Document.",
"items": {
"$ref": "#/components/schemas/Service"
}
},
"verificationMethod": {
"type": "array",
"description": "Verification Method section of the DID Document.",
"items": {
"$ref": "#/components/schemas/VerificationMethod"
}
},
"authentication": {
"description": "Authentication section of the DID Document.",
"type": "array",
"items": {
"type": "string"
}
},
"publicKeyHexs": {
"description": "List of key references (publicKeys) which will be used for signing the message. The should be in hexadecimal format and placed in the wallet of current user.",
"type": "array",
"items": {
"type": "string"
}
},
"didDocument": {
"$ref": "#/components/schemas/DidDocument"
}
}
},
"DidDeactivateRequest": {
"type": "object",
"properties": {
"publicKeyHexs": {
"description": "List of key references (publicKeys) which will be used for signing the message. The should be in hexadecimal format and placed in the wallet of current user.",
"type": "array",
"items": {
"type": "string"
}
}
}
},
"CreateResourceRequest": {
"description": "Input fields for DID-Linked Resource creation.",
"type": "object",
"additionalProperties": false,
"required": [
"name",
"type",
"data",
"encoding"
],
"properties": {
"data": {
"description": "Encoded string containing the data to be stored in the DID-Linked Resource.",
"type": "string"
},
"encoding": {
"description": "Encoding format used to encode the data.",
"type": "string",
"enum": [
"base64url",
"base64",
"hex"
]
},
"name": {
"description": "Name of DID-Linked Resource.",
"type": "string"
},
"type": {
"description": "Type of DID-Linked Resource. This is NOT the same as the media type, which is calculated automatically ledger-side.",
"type": "string"
},
"alsoKnownAs": {
"description": "Optional field to assign a set of alternative URIs where the DID-Linked Resource can be fetched from.",
"type": "array",
"items": {
"type": "object",
"properties": {
"uri": {
"type": "string"
},
"description": {
"type": "string"
}
}
}
},
"version": {
"description": "Optional field to assign a human-readable version in the DID-Linked Resource.",
"type": "string"
},
"publicKeyHexs": {
"description": "List of key references (publicKeys) which will be used for signing the message. The should be in hexadecimal format and placed in the wallet of current user.",
"type": "array",
"items": {
"type": "string"
}
}
},
"example": {
"data": "SGVsbG8gV29ybGQ=",
"encoding": "base64url",
"name": "ResourceName",
"type": "TextDocument"
}
},
"ResourceList": {
"type": "object",
"properties": {
"@context": {
"type": "string",
"example": "https://w3id.org/did-resolution/v1"
},
"contentMetadata": {
"type": "object"
},
"contentStream": {
"type": "object"
},
"dereferencingMetadata": {
"$ref": "#/components/schemas/DereferencingMetadata"
}
}
},
"ListResourceResult": {
"type": "object",
"properties": {
"total": {
"type": "number"
},
"resources": {
"type": "array",
"items": {
"$ref": "#/components/schemas/ResourceMetadata"
}
}
}
},
"DereferencingMetadata": {
"type": "object",
"properties": {
"contentType": {
"type": "string",
"example": "application/did+ld+json"
},
"did": {
"$ref": "#/components/schemas/DidProperties"
},
"retrieved": {
"type": "string",
"example": "2021-09-01T12:00:00Z"
}
}
},
"DidResolution": {
"type": "object",
"properties": {
"@context": {
"type": "string",
"example": "https://w3id.org/did-resolution/v1"
},
"didDidResolutionMetadata": {
"$ref": "#/components/schemas/DidResolutionMetadata"
},
"didDocument": {
"$ref": "#/components/schemas/DidDocument"
},
"didDocumentMetadata": {
"$ref": "#/components/schemas/DidDocumentMetadata"
}
}
},
"DeactivatedDidResolution": {
"type": "object",
"properties": {
"@context": {
"type": "string",
"example": "https://w3id.org/did-resolution/v1"
},
"didDidResolutionMetadata": {
"$ref": "#/components/schemas/DidResolutionMetadata"
},
"didDocument": {
"$ref": "#/components/schemas/DidDocument"
},
"didDocumentMetadata": {
"$ref": "#/components/schemas/DeactivatedDidDocumentMetadata"
}
}
},
"DidDocumentMetadata": {
"type": "object",
"properties": {
"created": {
"type": "string",
"example": "2021-09-01T12:00:00Z"
},
"deactivated": {
"type": "boolean",
"example": false
},
"updated": {
"type": "string",
"example": "2021-09-10T12:00:00Z"
},
"versionId": {
"type": "string",
"example": "3ccde6ba-6ba5-56f2-9f4f-8825561a9860"
},
"linkedResourceMetadata": {
"type": "array",
"items": {
"$ref": "#/components/schemas/ResourceMetadata"
}
}
}
},
"DeactivatedDidDocumentMetadata": {
"type": "object",
"properties": {
"created": {
"type": "string",
"example": "2021-09-01T12:00:00Z"
},
"deactivated": {
"type": "boolean",
"example": true
},
"updated": {
"type": "string",
"example": "2021-09-10T12:00:00Z"
},
"versionId": {
"type": "string",
"example": "3ccde6ba-6ba5-56f2-9f4f-8825561a9860"
},
"linkedResourceMetadata": {
"type": "array",
"items": {
"$ref": "#/components/schemas/ResourceMetadata"
}
}
}
},
"ResourceMetadata": {
"type": "object",
"properties": {
"resourceURI": {
"type": "string",
"example": "did:cheqd:testnet:55dbc8bf-fba3-4117-855c-1e0dc1d3bb47/resources/398cee0a-efac-4643-9f4c-74c48c72a14b"
},
"resourceCollectionId": {
"type": "string",
"example": "55dbc8bf-fba3-4117-855c-1e0dc1d3bb47"
},
"resourceId": {
"type": "string",
"example": "398cee0a-efac-4643-9f4c-74c48c72a14b"
},
"resourceName": {
"type": "string",
"example": "cheqd-issuer-logo"
},
"resourceType": {
"type": "string",
"example": "CredentialArtwork"
},
"mediaType": {
"type": "string",
"example": "image/png"
},
"resourceVersion": {
"type": "string",
"example": "1.0"
},
"checksum": {
"type": "string",
"example": "a95380f460e63ad939541a57aecbfd795fcd37c6d78ee86c885340e33a91b559"
},
"created": {
"type": "string",
"example": "2021-09-01T12:00:00Z"
},
"nextVersionId": {
"type": "string",
"example": "d4829ac7-4566-478c-a408-b44767eddadc"
},
"previousVersionId": {
"type": "string",
"example": "ad7a8442-3531-46eb-a024-53953ec6e4ff"
}
}
},
"DidResolutionMetadata": {
"type": "object",
"properties": {
"contentType": {
"allOf": [
{
"$ref": "#/components/schemas/ContentType"
}
],
"example": "application/did+ld+json"
},
"retrieved": {
"type": "string",
"example": "2021-09-01T12:00:00Z"
},
"did": {
"$ref": "#/components/schemas/DidProperties"
}
}
},
"ContentType": {
"type": "string",
"enum": [
"application/did+json",
"application/did+ld+json",
"application/ld+json",
"application/json"
]
},
"DidProperties": {
"type": "object",
"properties": {
"didString": {
"type": "string",
"example": "did:cheqd:testnet:55dbc8bf-fba3-4117-855c-1e0dc1d3bb47"
},
"method": {
"type": "string",
"example": "cheqd"
},
"methodSpecificId": {
"type": "string",
"example": "55dbc8bf-fba3-4117-855c-1e0dc1d3bb47"
}
}
},
"Customer": {
"type": "object",
"properties": {
"customer": {
"type": "object",
"properties": {
"customerId": {
"type": "string"
},
"name": {
"type": "string"
}
}
},
"paymentAccount": {
"type": "object",
"properties": {
"mainnet": {
"type": "string"
},
"testnet": {
"type": "string"
}
}
}
}
},
"QueryIdTokenResponseBody": {
"type": "object",
"properties": {
"idToken": {
"type": "string"
}
}
},
"AccountCreateRequest": {
"type": "object",
"required": [
"primaryEmail"
],
"properties": {
"name": {
"type": "string"
},
"primaryEmail": {
"type": "string"
}
}
},
"AccountCreateResponse": {
"type": "object",
"properties": {
"customerId": {
"type": "string"
},
"name": {
"type": "string"
},
"email": {
"type": "string"
},
"description": {
"type": "string"
},
"createdAt": {
"type": "string"
},
"updatedAt": {
"type": "string"
},
"paymentProviderId": {
"type": "string"
}
}
},
"SchemaUrl": {
"type": "object",
"properties": {
"types": {
"type": "array",
"items": {
"type": "string"
}
},
"url": {
"type": "string"
}
}
},
"InvalidRequest": {
"description": "A problem with the input fields has occurred. Additional state information plus metadata may be available in the response body.",
"type": "object",
"properties": {
"error": {
"type": "string",
"example": "InvalidRequest"
}
}
},
"InternalError": {
"description": "An internal error has occurred. Additional state information plus metadata may be available in the response body.",
"type": "object",
"properties": {
"error": {
"type": "string",
"example": "Internal Error"
}
}
},
"UnauthorizedError": {
"description": "Access token is missing or invalid",
"type": "object",
"properties": {
"error": {
"type": "string",
"example": "Unauthorized Error"
}
}
},
"ListAccreditationResult": {
"type": "object",
"properties": {
"total": {
"type": "number",
"description": "Total number of accreditations.",
"example": 5
},
"accreditations": {
"type": "array",
"description": "List of accreditations with credential data and tracking metadata.",
"items": {
"allOf": [
{
"$ref": "#/components/schemas/VerifiableCredential"
},
{
"type": "object",
"properties": {
"metadata": {
"type": "object",
"description": "Tracking metadata from the issued credential database record",
"properties": {
"issuedCredentialId": {
"type": "string",
"description": "Unique identifier for the issued credential"
},
"providerId": {
"type": "string",
"description": "Provider identifier"
},
"providerCredentialId": {
"type": "string",
"description": "Provider-specific credential ID (resourceId)"
},
"status": {
"type": "string",
"description": "Current status of the credential",
"enum": [
"issued",
"suspended",
"revoked"
]
},
"statusUpdatedAt": {
"type": "string",
"format": "date-time",
"description": "Timestamp when status was last updated"
}
}
}
}
}
]
}
}
}
}
}
},
"security": [
{
"ApiKeyAuth": []
}
],
"paths": {
"/account": {
"get": {
"tags": [
"Account"
],
"summary": "Fetch custodian-mode client details.",
"description": "This endpoint returns the custodian-mode client details for authenticated users.",
"responses": {
"200": {
"description": "The request was successful.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Customer"
}
}
}
},
"400": {
"$ref": "#/components/schemas/InvalidRequest"
},
"401": {
"$ref": "#/components/schemas/UnauthorizedError"
},
"500": {
"$ref": "#/components/schemas/InternalError"
}
}
}
},
"/account/idtoken": {
"get": {
"tags": [
"Account"
],
"summary": "Fetch IdToken.",
"description": "This endpoint returns IdToken as JWT with list of user roles inside",
"deprecated": true,
"responses": {
"200": {
"description": "The request was successful.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/QueryIdTokenResponseBody"
}
}
}
},
"400": {
"$ref": "#/components/schemas/InvalidRequest"
},
"401": {
"$ref": "#/components/schemas/UnauthorizedError"
},
"500": {
"$ref": "#/components/schemas/InternalError"
}
}
}
},
"/account/create": {
"post": {
"tags": [
"Account"
],
"summary": "Create an client for an authenticated user.",
"description": "This endpoint creates a client in the custodian-mode for an authenticated user",
"requestBody": {
"content": {
"application/x-www-form-urlencoded": {
"schema": {
"$ref": "#/components/schemas/AccountCreateRequest"
}
},
"application/json": {
"schema": {
"$ref": "#/components/schemas/AccountCreateRequest"
}
}
}
},
"responses": {
"201": {
"description": "The request was successful.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/AccountCreateResponse"
}
}
}
},
"400": {
"$ref": "#/components/schemas/InvalidRequest"
},
"401": {
"$ref": "#/components/schemas/UnauthorizedError"
},
"500": {
"$ref": "#/components/schemas/InternalError"
}
}
}
},
"/trust-registry/accreditation/issue": {
"post": {
"tags": [
"Trust Registries"
],
"summary": "Publish a verifiable accreditation for a DID.",
"description": "Generate and publish a Verifiable Accreditation for a subject DID as a DID Linked resource.",
"operationId": "accredit-issue",
"parameters": [
{
"in": "query",
"name": "accreditationType",
"description": "Select the type of accreditation to be issued.",
"schema": {
"type": "string",
"enum": [
"authorize",
"accredit",
"attest"
]
},
"required": true
}
],
"requestBody": {
"content": {
"application/x-www-form-urlencoded": {
"schema": {
"$ref": "#/components/schemas/AccreditationIssueRequest"
}
},
"application/json": {
"schema": {
"$ref": "#/components/schemas/AccreditationIssueRequest"
}
}
}
},
"responses": {
"200": {
"description": "The request was successful.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Credential"
}
}
}
},
"400": {
"$ref": "#/components/schemas/InvalidRequest"
},
"401": {
"$ref": "#/components/schemas/UnauthorizedError"
},
"500": {
"$ref": "#/components/schemas/InternalError"
}
}
}
},
"/trust-registry/accreditation/verify": {
"post": {
"tags": [
"Trust Registries"
],
"summary": "Verify a verifiable accreditation for a DID.",
"description": "Generate and publish a Verifiable Accreditation for a subject DID as a DID Linked resource.",
"operationId": "accredit-verify",
"parameters": [
{
"in": "query",
"name": "verifyStatus",
"description": "If set to `true` the verification will also check the status of the accreditation. Requires the VC to have a `credentialStatus` property.",
"schema": {
"type": "boolean",
"default": false
}
},
{
"in": "query",
"name": "allowDeactivatedDid",
"description": "If set to `true` allow to verify accreditation which based on deactivated DID.",
"schema": {
"type": "boolean",
"default": false
}
}
],
"requestBody": {
"content": {
"application/x-www-form-urlencoded": {
"schema": {
"$ref": "#/components/schemas/AccreditationVerifyRequest"
}
},
"application/json": {
"schema": {
"$ref": "#/components/schemas/AccreditationVerifyRequest"
}
}
}
},
"responses": {
"200": {
"description": "The request was successful.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Credential"
}
}
}
},
"400": {
"$ref": "#/components/schemas/InvalidRequest"
},
"401": {
"$ref": "#/components/schemas/UnauthorizedError"
},
"500": {
"$ref": "#/components/schemas/InternalError"
}
}
}
},
"/trust-registry/accreditation/revoke": {
"post": {
"tags": [
"Trust Registries"
],
"summary": "Revoke a Verifiable Accreditation.",
"description": "This endpoint revokes a given Verifiable Accreditation. As input, it can take the didUrl as a string. The StatusList2021 or BitstringStatusList resource should already be setup in the VC and `credentialStatus` property present in the VC.",
"operationId": "accredit-revoke",
"parameters": [
{
"in": "query",
"name": "publish",
"description": "Set whether the StatusList2021 or BitstringStatusList resource should be published to the ledger or not. If set to `false`, the StatusList2021 or BitstringStatusList publisher should manually publish the resource.",
"required": true,
"schema": {
"type": "boolean",
"default": true
}
}
],
"requestBody": {
"content": {
"application/x-www-form-urlencoded": {
"schema": {
"$ref": "#/components/schemas/AccreditationRevokeRequest"
}
},
"application/json": {
"schema": {
"$ref": "#/components/schemas/AccreditationRevokeRequest"
}
}
}
},
"responses": {
"200": {
"description": "The request was successful.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/RevocationResult"
}
}
}
},
"400": {
"$ref": "#/components/schemas/InvalidRequest"
},
"401": {
"$ref": "#/components/schemas/UnauthorizedError"
},
"500": {
"$ref": "#/components/schemas/InternalError"
}
}
}
},
"/trust-registry/accreditation/suspend": {
"post": {
"tags": [
"Trust Registries"
],
"summary": "Suspend a Verifiable Accreditation.",
"description": "This endpoint suspends a given Verifiable Accreditation. As input, it can take the didUrl as a string. The StatusList2021 or BitstringStatusList resource should already be setup in the VC and `credentialStatus` property present in the VC.",
"operationId": "accredit-suspend",
"parameters": [
{
"in": "query",
"name": "publish",
"description": "Set whether the StatusList2021 or BitstringStatusList resource should be published to the ledger or not. If set to `false`, the StatusList2021 or BitstringStatusList publisher should manually publish the resource.",
"required": true,
"schema": {
"type": "boolean",
"default": true
}
}
],
"requestBody": {
"content": {
"application/x-www-form-urlencoded": {
"schema": {
"$ref": "#/components/schemas/AccreditationRevokeRequest"
}
},
"application/json": {
"schema": {
"$ref": "#/components/schemas/AccreditationRevokeRequest"
}
}
}
},
"responses": {
"200": {
"description": "The request was successful.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/RevocationResult"
}
}
}
},
"400": {
"$ref": "#/components/schemas/InvalidRequest"
},
"401": {
"$ref": "#/components/schemas/UnauthorizedError"
},
"500": {
"$ref": "#/components/schemas/InternalError"
}
}
}
},
"/trust-registry/accreditation/reinstate": {
"post": {
"tags": [
"Trust Registries"
],
"summary": "Reinstate a Verifiable Accreditation.",
"description": "This endpoint reinstates a given Verifiable Accreditation. As input, it can take the didUrl as a string. The StatusList2021 or BitstringStatusList resource should already be setup in the VC and `credentialStatus` property present in the VC.",
"operationId": "accredit-reinstate",
"parameters": [
{
"in": "query",
"name": "publish",
"description": "Set whether the StatusList2021 or BitstringStatusList resource should be published to the ledger or not. If set to `false`, the StatusList2021 or BitstringStatusList publisher should manually publish the resource.",
"required": true,
"schema": {
"type": "boolean",
"default": true
}
}
],
"requestBody": {
"content": {
"application/x-www-form-urlencoded": {
"schema": {
"$ref": "#/components/schemas/AccreditationRevokeRequest"
}
},
"application/json": {
"schema": {
"$ref": "#/components/schemas/AccreditationRevokeRequest"
}
}
}
},
"responses": {
"200": {
"description": "The request was successful.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/RevocationResult"
}
}
}
},
"400": {
"$ref": "#/components/schemas/InvalidRequest"
},
"401": {
"$ref": "#/components/schemas/UnauthorizedError"
},
"500": {
"$ref": "#/components/schemas/InternalError"
}
}
}
},
"/trust-registry/accreditation/list": {
"get": {
"tags": [
"Trust Registries"
],
"summary": "Fetch Verifiable Accreditations for DIDs associated with an account.",
"description": "This endpoint returns the list of Verifiable Accreditations created by the account.",
"parameters": [
{
"in": "query",
"name": "network",
"description": "Filter Accreditations by the network published.",
"schema": {
"type": "string",
"enum": [
"mainnet",
"testnet"
]
},
"required": false
},
{
"in": "query",
"name": "accreditationType",
"description": "Select the type of accreditation to be issued.",
"schema": {
"type": "string",
"enum": [
"authorize",
"accredit",
"attest"
]
},
"required": true
},
{
"in": "query",
"name": "did",
"description": "Filter accreditations published by a DID",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "The request was successful.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ListAccreditationResult"
}
}
}
},
"400": {
"$ref": "#/components/schemas/InvalidRequest"
},
"401": {
"$ref": "#/components/schemas/UnauthorizedError"
},
"500": {
"$ref": "#/components/schemas/InternalError"
}
}
}
},
"/credential-status/create/unencrypted": {
"post": {
"tags": [
"Status Lists"
],
"summary": "Create an unencrypted StatusList2021 or BitstringStatusList credential status list.",
"description": "This endpoint creates an unencrypted StatusList2021 or BitstringStatusList credential status list. The StatusList is published as a DID-Linked Resource on ledger. As input, it can can take input parameters needed to create the status list via a form, or a pre-assembled status list in JSON format. Status lists can be created as either encrypted or unencrypted.",
"parameters": [
{
"in": "query",
"name": "listType",
"description": "The type of Status List.",
"required": true,
"schema": {
"type": "string",
"enum": [
"StatusList2021",
"BitstringStatusList"
]
}
},
{
"in": "query",
"name": "statusPurpose",
"description": "The purpose of the status list.\n- For StatusList2021: Single value (revocation or suspension)\n- For BitstringStatusList: Can accept multiple values as array of strings\n\nOnce this is set, it cannot be changed. A new status list must be created to change the purpose.\n",
"required": true,
"schema": {
"oneOf": [
{
"type": "string",
"enum": [
"revocation",
"suspension"
]
},
{
"type": "array",
"items": {
"type": "string",
"enum": [
"revocation",
"suspension",
"message",
"refresh"
]
}
}
]
},
"examples": {
"single_value": {
"summary": "Single purpose (StatusList2021)",
"value": "revocation"
},
"multiple_values_array": {
"summary": "Multiple purposes as array (BitstringStatusList)",
"value": [
"revocation",
"suspension",
"message"
]
},
"with_message": {
"summary": "Including message purpose",
"value": [
"revocation",
"message"
]
}
}
}
],
"requestBody": {
"content": {
"application/x-www-form-urlencoded": {
"schema": {
"$ref": "#/components/schemas/CredentialStatusCreateUnencryptedRequest"
}
},
"application/json": {
"schema": {
"$ref": "#/components/schemas/CredentialStatusCreateUnencryptedRequest"
}
}
}
},
"responses": {
"200": {
"description": "The request was successful.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CredentialStatusCreateUnencryptedResult"
}
}
}
},
"400": {
"$ref": "#/components/schemas/InvalidRequest"
},
"401": {
"$ref": "#/components/schemas/UnauthorizedError"
},
"500": {
"$ref": "#/components/schemas/InternalError"
}
}
}
},
"/credential-status/create/encrypted": {
"post": {
"tags": [
"Status Lists"
],
"summary": "Create an encrypted StatusList2021 or BitstringStatusList credential status list.",
"description": "This endpoint creates an encrypted StatusList2021 or BitstringStatusList credential status list. The StatusList is published as a DID-Linked Resource on ledger. As input, it can can take input parameters needed to create the status list via a form, or a pre-assembled status list in JSON format. Status lists can be created as either encrypted or unencrypted.",
"parameters": [
{
"in": "query",
"name": "listType",
"description": "The type of Status List.",
"required": true,
"schema": {
"type": "string",
"enum": [
"StatusList2021",
"BitstringStatusList"
]
}
},
{
"in": "query",
"name": "statusPurpose",
"description": "The purpose of the status list.\n- For StatusList2021: Single value (revocation or suspension)\n- For BitstringStatusList: Can accept multiple values as array of strings\n\nOnce this is set, it cannot be changed. A new status list must be created to change the purpose.\n",
"required": true,
"schema": {
"oneOf": [
{
"type": "string",
"enum": [
"revocation",
"suspension"
]
},
{
"type": "array",
"items": {
"type": "string",
"enum": [
"revocation",
"suspension",
"message",
"refresh"
]
}
}
]
},
"examples": {
"single_value": {
"summary": "Single purpose (StatusList2021)",
"value": "revocation"
},
"multiple_values_array": {
"summary": "Multiple purposes as array (BitstringStatusList)",
"value": [
"revocation",
"suspension",
"message"
]
},
"with_message": {
"summary": "Including message purpose",
"value": [
"revocation",
"message"
]
}
}
}
],
"requestBody": {
"content": {
"application/x-www-form-urlencoded": {
"schema": {
"$ref": "#/components/schemas/CredentialStatusCreateEncryptedFormRequest"
}
},
"application/json": {
"schema": {
"$ref": "#/components/schemas/CredentialStatusCreateEncryptedJsonRequest"
}
}
}
},
"responses": {
"200": {
"description": "The request was successful.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CredentialStatusCreateEncryptedResult"
}
}
}
},
"400": {
"$ref": "#/components/schemas/InvalidRequest"
},
"401": {
"$ref": "#/components/schemas/UnauthorizedError"
},
"500": {
"$ref": "#/components/schemas/InternalError"
}
}
}
},
"/credential-status/update/unencrypted": {
"post": {
"tags": [
"Status Lists"
],
"summary": "Update an existing unencrypted StatusList2021 or BitstringStatusList credential status list.",
"parameters": [
{
"in": "query",
"name": "listType",
"description": "The type of Status List.",
"required": true,
"schema": {
"type": "string",
"enum": [
"StatusList2021",
"BitstringStatusList"
]
}
},
{
"in": "query",
"name": "statusAction",
"description": "The update action to be performed on the unencrypted status list, can be revoke, suspend or reinstate",
"required": true,
"schema": {
"type": "string",
"enum": [
"revoke",
"suspend",
"reinstate"
]
}
}
],
"requestBody": {
"content": {
"application/x-www-form-urlencoded": {
"schema": {
"$ref": "#/components/schemas/CredentialStatusUpdateUnencryptedRequest"
}
},
"application/json": {
"schema": {
"$ref": "#/components/schemas/CredentialStatusUpdateUnencryptedRequest"
}
}
}
},
"responses": {
"200": {
"description": "The request was successful.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CredentialStatusUpdateUnencryptedResult"
}
}
}
},
"400": {
"$ref": "#/components/schemas/InvalidRequest"
},
"401": {
"$ref": "#/components/schemas/UnauthorizedError"
},
"500": {
"$ref": "#/components/schemas/InternalError"
}
}
}
},
"/credential-status/update/encrypted": {
"post": {
"tags": [
"Status Lists"
],
"summary": "Update an existing encrypted StatusList2021 or BitstringStatusList credential status list.",
"parameters": [
{
"in": "query",
"name": "listType",
"description": "The type of Status List.",
"required": true,
"schema": {
"type": "string",
"enum": [
"StatusList2021",
"BitstringStatusList"
]
}
},
{
"in": "query",
"name": "statusAction",
"description": "The update action to be performed on the encrypted status list, can be revoke, suspend or reinstate",
"required": true,
"schema": {
"type": "string",
"enum": [
"revoke",
"suspend",
"reinstate"
]
}
}
],
"requestBody": {
"content": {
"application/x-www-form-urlencoded": {
"schema": {
"$ref": "#/components/schemas/CredentialStatusUpdateEncryptedFormRequest"
}
},
"application/json": {
"schema": {
"$ref": "#/components/schemas/CredentialStatusUpdateEncryptedJsonRequest"
}
}
}
},
"responses": {
"200": {
"description": "The request was successful.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CredentialStatusUpdateEncryptedResult"
}
}
}
},
"400": {
"$ref": "#/components/schemas/InvalidRequest"
},
"401": {
"$ref": "#/components/schemas/UnauthorizedError"
},
"500": {
"$ref": "#/components/schemas/InternalError"
}
}
}
},
"/credential-status/check": {
"post": {
"tags": [
"Status Lists"
],
"summary": "Check a StatusList2021 or BitstringStatusList index for a given Verifiable Credential.",
"description": "This endpoint checks a StatusList2021 or BitstringStatusList index for a given Verifiable Credential and reports whether it is revoked or suspended. It offers a standalone method for checking an index without passing the entire Verifiable Credential or Verifiable Presentation.",
"parameters": [
{
"in": "query",
"name": "listType",
"description": "The type of Status List.",
"required": true,
"schema": {
"type": "string",
"enum": [
"StatusList2021",
"BitstringStatusList"
]
}
},
{
"in": "query",
"name": "statusPurpose",
"description": "The purpose of the status list. Can be either revocation or suspension.",
"required": true,
"schema": {
"type": "string",
"enum": [
"revocation",
"suspension",
"message",
"refresh"
]
}
}
],
"requestBody": {
"content": {
"application/x-www-form-urlencoded": {
"schema": {
"$ref": "#/components/schemas/CredentialStatusCheckRequest"
}
},
"application/json": {
"schema": {
"$ref": "#/components/schemas/CredentialStatusCheckRequest"
}
}
}
},
"responses": {
"200": {
"description": "The request was successful.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CredentialStatusCheckResult"
}
}
}
},
"400": {
"$ref": "#/components/schemas/InvalidRequest"
},
"401": {
"$ref": "#/components/schemas/UnauthorizedError"
},
"500": {
"$ref": "#/components/schemas/InternalError"
}
}
}
},
"/credential-status/search": {
"get": {
"tags": [
"Status Lists"
],
"summary": "Fetch StatusList2021 or BitstringStatusList DID-Linked Resource based on search criteria.",
"parameters": [
{
"in": "query",
"name": "did",
"description": "The DID of the issuer of the status list.",
"required": true,
"schema": {
"type": "string"
}
},
{
"in": "query",
"name": "listType",
"description": "The type of Status List.",
"required": true,
"schema": {
"type": "string",
"enum": [
"StatusList2021",
"BitstringStatusList"
]
}
},
{
"in": "query",
"name": "statusPurpose",
"description": "The purpose of the status list. Can be either revocation or suspension.",
"required": true,
"schema": {
"type": "string",
"enum": [
"revocation",
"suspension"
]
}
},
{
"in": "query",
"name": "statusListName",
"description": "The name of the Status List DID-Linked Resource.",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "The request was successful.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CredentialStatusListSearchResult"
}
}
}
},
"400": {
"$ref": "#/components/schemas/InvalidRequest"
},
"401": {
"$ref": "#/components/schemas/UnauthorizedError"
},
"500": {
"$ref": "#/components/schemas/InternalError"
}
}
}
},
"/credential-status/list": {
"get": {
"tags": [
"Status Lists"
],
"summary": "List StatusList2021 or BitstringStatusList DID-Linked Resources created by the customer.",
"parameters": [
{
"in": "query",
"name": "did",
"description": "The DID of the issuer of the status list.",
"schema": {
"type": "string"
}
},
{
"in": "query",
"name": "listType",
"description": "The type of Status List.",
"schema": {
"type": "string",
"enum": [
"StatusList2021",
"BitstringStatusList"
]
}
},
{
"in": "query",
"name": "statusListName",
"description": "The name of the Status List DID-Linked Resource.",
"schema": {
"type": "string"
}
},
{
"in": "query",
"name": "state",
"description": "The state of the Status List DID-Linked Resource.",
"schema": {
"type": "string",
"enum": [
"ACTIVE",
"STANDBY",
"FULL"
]
}
},
{
"in": "query",
"name": "credentialCategory",
"description": "Filter status lists by credential category assigned for.",
"schema": {
"type": "string",
"enum": [
"credential",
"accreditation"
]
}
},
{
"in": "query",
"name": "deprecated",
"description": "Filter status lists by deprecated status.",
"schema": {
"type": "boolean"
}
}
],
"responses": {
"200": {
"description": "The request was successful.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ListCredentialStatusRecordsResult"
}
}
}
},
"400": {
"$ref": "#/components/schemas/InvalidRequest"
},
"401": {
"$ref": "#/components/schemas/UnauthorizedError"
},
"500": {
"$ref": "#/components/schemas/InternalError"
}
}
}
},
"/credential-status/list/{statusListId}": {
"get": {
"tags": [
"Status Lists"
],
"summary": "Fetch StatusList2021 or BitstringStatusList DID-Linked Resource based on search criteria.",
"parameters": [
{
"in": "path",
"name": "statusListId",
"description": "The statusListId of the status list.",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "The request was successful.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CredentialStatusRecordResult"
}
}
}
},
"400": {
"$ref": "#/components/schemas/InvalidRequest"
},
"401": {
"$ref": "#/components/schemas/UnauthorizedError"
},
"500": {
"$ref": "#/components/schemas/InternalError"
}
}
}
},
"/credential/issue": {
"post": {
"tags": [
"Verifiable Credentials"
],
"summary": "Issue a Verifiable Credential",
"description": "This endpoint issues a Verifiable Credential. As input it takes the list of issuerDid, subjectDid, attributes, and other parameters of the credential to be issued.",
"requestBody": {
"content": {
"application/x-www-form-urlencoded": {
"schema": {
"$ref": "#/components/schemas/CredentialRequest"
}
},
"application/json": {
"schema": {
"$ref": "#/components/schemas/CredentialRequest"
}
}
}
},
"responses": {
"200": {
"description": "The request was successful.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Credential"
}
}
}
},
"400": {
"$ref": "#/components/schemas/InvalidRequest"
},
"401": {
"$ref": "#/components/schemas/UnauthorizedError"
},
"500": {
"$ref": "#/components/schemas/InternalError"
}
}
}
},
"/credential/verify": {
"post": {
"tags": [
"Verifiable Credentials"
],
"summary": "Verify a Verifiable Credential.",
"description": "This endpoint verifies a Verifiable Credential passed to it. As input, it can take the VC-JWT as a string or the entire credential itself.",
"operationId": "verify",
"parameters": [
{
"in": "query",
"name": "verifyStatus",
"description": "If set to `true` the verification will also check the status of the credential. Requires the VC to have a `credentialStatus` property.",
"schema": {
"type": "boolean",
"default": false
}
},
{
"in": "query",
"name": "fetchRemoteContexts",
"description": "When dealing with JSON-LD you also MUST provide the proper contexts. Set this to `true` ONLY if you want the `@context` URLs to be fetched in case they are a custom context.",
"schema": {
"type": "boolean",
"default": false
}
},
{
"in": "query",
"name": "allowDeactivatedDid",
"description": "If set to `true` allow to verify credential which based on deactivated DID.",
"schema": {
"type": "boolean",
"default": false
}
}
],
"requestBody": {
"content": {
"application/x-www-form-urlencoded": {
"schema": {
"$ref": "#/components/schemas/CredentialVerifyRequest"
}
},
"application/json": {
"schema": {
"$ref": "#/components/schemas/CredentialVerifyRequest"
}
}
}
},
"responses": {
"200": {
"description": "The request was successful.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/VerifyCredentialResult"
}
}
}
},
"400": {
"$ref": "#/components/schemas/InvalidRequest"
},
"401": {
"$ref": "#/components/schemas/UnauthorizedError"
},
"500": {
"$ref": "#/components/schemas/InternalError"
}
}
}
},
"/credential/revoke": {
"post": {
"tags": [
"Verifiable Credentials"
],
"summary": "Revoke a Verifiable Credential.",
"description": "This endpoint revokes a given Verifiable Credential. As input, it can take the VC-JWT as a string or the entire credential itself. The StatusList2021 or BitstringStatusList resource should already be setup in the VC and `credentialStatus` property present in the VC.",
"operationId": "revoke",
"parameters": [
{
"in": "query",
"name": "listType",
"description": "The type of Status List.",
"required": true,
"schema": {
"type": "string",
"enum": [
"StatusList2021",
"BitstringStatusList"
]
}
},
{
"in": "query",
"name": "publish",
"description": "Set whether the StatusList2021 or BitstringStatusList resource should be published to the ledger or not. If set to `false`, the StatusList2021 or BitstringStatusList publisher should manually publish the resource.",
"required": true,
"schema": {
"type": "boolean",
"default": true
}
}
],
"requestBody": {
"content": {
"application/x-www-form-urlencoded": {
"schema": {
"$ref": "#/components/schemas/CredentialRevokeRequest"
}
},
"application/json": {
"schema": {
"$ref": "#/components/schemas/CredentialRevokeRequest"
}
}
}
},
"responses": {
"200": {
"description": "The request was successful.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/RevocationResult"
}
}
}
},
"400": {
"$ref": "#/components/schemas/InvalidRequest"
},
"401": {
"$ref": "#/components/schemas/UnauthorizedError"
},
"500": {
"$ref": "#/components/schemas/InternalError"
}
}
}
},
"/credential/suspend": {
"post": {
"tags": [
"Verifiable Credentials"
],
"summary": "Suspend a Verifiable Credential.",
"description": "This endpoint suspends a given Verifiable Credential. As input, it can take the VC-JWT as a string or the entire credential itself.",
"operationId": "suspend",
"parameters": [
{
"in": "query",
"name": "listType",
"description": "The type of Status List.",
"required": true,
"schema": {
"type": "string",
"enum": [
"StatusList2021",
"BitstringStatusList"
]
}
},
{
"in": "query",
"name": "publish",
"description": "Set whether the StatusList2021 or BitstringStatusList resource should be published to the ledger or not. If set to `false`, the StatusList2021 or BitstringStatusList publisher should manually publish the resource.",
"schema": {
"type": "boolean"
}
}
],
"requestBody": {
"content": {
"application/x-www-form-urlencoded": {
"schema": {
"$ref": "#/components/schemas/CredentialRevokeRequest"
}
},
"application/json": {
"schema": {
"$ref": "#/components/schemas/CredentialRevokeRequest"
}
}
}
},
"responses": {
"200": {
"description": "The request was successful.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/SuspensionResult"
}
}
}
},
"400": {
"$ref": "#/components/schemas/InvalidRequest"
},
"401": {
"$ref": "#/components/schemas/UnauthorizedError"
},
"500": {
"$ref": "#/components/schemas/InternalError"
}
}
}
},
"/credential/reinstate": {
"post": {
"tags": [
"Verifiable Credentials"
],
"summary": "Reinstate a suspended Verifiable Credential.",
"description": "Set whether the StatusList2021 or BitstringStatusList resource should be published to the ledger or not. If set to `false`, the StatusList2021 or BitstringStatusList publisher should manually publish the resource.",
"operationId": "reinstate",
"parameters": [
{
"in": "query",
"name": "listType",
"description": "The type of Status List.",
"required": true,
"schema": {
"type": "string",
"enum": [
"StatusList2021",
"BitstringStatusList"
]
}
},
{
"in": "query",
"name": "publish",
"description": "Set whether the StatusList2021 or BitstringStatusList resource should be published to the ledger or not. If set to `false`, the StatusList2021 or BitstringStatusList publisher should manually publish the resource.",
"schema": {
"type": "boolean"
}
}
],
"requestBody": {
"content": {
"application/x-www-form-urlencoded": {
"schema": {
"$ref": "#/components/schemas/CredentialRevokeRequest"
}
},
"application/json": {
"schema": {
"$ref": "#/components/schemas/CredentialRevokeRequest"
}
}
}
},
"responses": {
"200": {
"description": "The request was successful.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UnsuspensionResult"
}
}
}
},
"400": {
"$ref": "#/components/schemas/InvalidRequest"
},
"401": {
"$ref": "#/components/schemas/UnauthorizedError"
},
"500": {
"$ref": "#/components/schemas/InternalError"
}
}
}
},
"/credentials/issued": {
"get": {
"tags": [
"Verifiable Credentials"
],
"summary": "List credentials issued from an associated account.",
"description": "This endpoint returns the list of issued credentials controlled by the account. It provides a unified view across all providers with filtering and pagination.",
"parameters": [
{
"in": "query",
"name": "page",
"description": "Page number for pagination.",
"schema": {
"type": "number",
"default": 1
},
"required": false
},
{
"in": "query",
"name": "limit",
"description": "Number of items per page.",
"schema": {
"type": "number",
"default": 10
},
"required": false
},
{
"in": "query",
"name": "providerId",
"description": "Filter credentials by provider ID (e.g., 'studio', 'dock').",
"schema": {
"type": "string"
},
"required": false
},
{
"in": "query",
"name": "issuerId",
"description": "Filter credentials by issuer DID or ID.",
"schema": {
"type": "string"
},
"required": false
},
{
"in": "query",
"name": "subjectId",
"description": "Filter credentials by subject DID or ID.",
"schema": {
"type": "string"
},
"required": false
},
{
"in": "query",
"name": "status",
"description": "Filter credentials by status.",
"schema": {
"type": "string",
"enum": [
"issued",
"suspended",
"revoked"
]
},
"required": false
},
{
"in": "query",
"name": "format",
"description": "Filter credentials by format.",
"schema": {
"type": "string",
"enum": [
"jwt",
"jsonld",
"sd-jwt-vc",
"anoncreds"
]
},
"required": false
},
{
"in": "query",
"name": "category",
"description": "Filter credentials by category.",
"schema": {
"type": "string",
"enum": [
"credential",
"accreditation"
]
},
"required": false
},
{
"in": "query",
"name": "createdAt",
"description": "Filter credentials created before or on this date.",
"schema": {
"type": "string",
"format": "date-time"
},
"required": false
},
{
"in": "query",
"name": "credentialType",
"description": "Filter credentials by type (e.g., 'VerifiableCredential', 'UniversityDegreeCredential').",
"schema": {
"type": "string"
},
"required": false
},
{
"in": "query",
"name": "statusRegistryId",
"description": "Filter issued credentials using status registry ID.",
"schema": {
"type": "string"
},
"required": false
}
],
"responses": {
"200": {
"description": "The request was successful.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ListCredentialResult"
}
}
}
},
"400": {
"$ref": "#/components/schemas/InvalidRequest"
},
"401": {
"$ref": "#/components/schemas/UnauthorizedError"
},
"500": {
"$ref": "#/components/schemas/InternalError"
}
}
}
},
"/credentials/issued/{id}": {
"get": {
"tags": [
"Verifiable Credentials"
],
"summary": "Get a single issued credential by ID.",
"description": "This endpoint retrieves a single issued credential using multi-strategy lookup. It can search by UUID (issuedCredentialId) or provider-specific credential ID (providerCredentialId).",
"parameters": [
{
"in": "path",
"name": "id",
"description": "Credential identifier (UUID or provider-specific ID).",
"required": true,
"schema": {
"type": "string"
}
},
{
"in": "query",
"name": "includeCredential",
"description": "If true, fetch and include the full credential payload from the provider.",
"schema": {
"type": "boolean",
"default": false
},
"required": false
},
{
"in": "query",
"name": "syncStatus",
"description": "If true, synchronize credential status from the provider API before returning.",
"schema": {
"type": "boolean",
"default": false
},
"required": false
},
{
"in": "query",
"name": "providerId",
"description": "Provider hint to optimize lookup when using provider-specific credential ID.",
"schema": {
"type": "string"
},
"required": false
}
],
"responses": {
"200": {
"description": "The request was successful.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/IssuedCredentialResponse"
}
}
}
},
"400": {
"$ref": "#/components/schemas/InvalidRequest"
},
"401": {
"$ref": "#/components/schemas/UnauthorizedError"
},
"404": {
"description": "Credential not found.",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"error": {
"type": "string"
}
}
}
}
}
},
"500": {
"$ref": "#/components/schemas/InternalError"
}
}
},
"put": {
"tags": [
"Verifiable Credentials"
],
"summary": "Update an issued credential metadata.",
"description": "This endpoint updates metadata for an issued credential. It allows updating providerCredentialId, status, and providerMetadata fields.",
"parameters": [
{
"in": "path",
"name": "id",
"description": "Credential identifier (issuedCredentialId).",
"required": true,
"schema": {
"type": "string"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"providerCredentialId": {
"type": "string",
"description": "Provider-specific credential ID (e.g., resource ID for studio provider)."
},
"status": {
"type": "string",
"enum": [
"issued",
"suspended",
"revoked"
],
"description": "Credential status."
},
"providerMetadata": {
"type": "object",
"description": "Additional provider-specific metadata."
}
}
}
}
}
},
"responses": {
"200": {
"description": "The request was successful.",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"success": {
"type": "boolean"
},
"data": {
"$ref": "#/components/schemas/IssuedCredentialResponse"
}
}
}
}
}
},
"400": {
"$ref": "#/components/schemas/InvalidRequest"
},
"401": {
"$ref": "#/components/schemas/UnauthorizedError"
},
"404": {
"description": "Credential not found.",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"success": {
"type": "boolean"
},
"error": {
"type": "string"
}
}
}
}
}
},
"500": {
"$ref": "#/components/schemas/InternalError"
}
}
}
},
"/credentials/issued/{id}/re-issue": {
"post": {
"tags": [
"Verifiable Credentials"
],
"summary": "Reissue an issued credential with failed state.",
"description": "This endpoint re-issues the issued credential record in failed state.",
"parameters": [
{
"in": "path",
"name": "id",
"description": "Credential identifier (issuedCredentialId).",
"required": true,
"schema": {
"type": "string"
}
}
],
"requestBody": {
"content": {
"application/x-www-form-urlencoded": {
"schema": {
"$ref": "#/components/schemas/RetryCredentialRequest"
}
},
"application/json": {
"schema": {
"$ref": "#/components/schemas/RetryCredentialRequest"
}
}
}
},
"responses": {
"200": {
"description": "The request was successful.",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"success": {
"type": "boolean"
},
"data": {
"$ref": "#/components/schemas/IssuedCredentialResponse"
}
}
}
}
}
},
"400": {
"$ref": "#/components/schemas/InvalidRequest"
},
"401": {
"$ref": "#/components/schemas/UnauthorizedError"
},
"404": {
"description": "Credential not found.",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"success": {
"type": "boolean"
},
"error": {
"type": "string"
}
}
}
}
}
},
"500": {
"$ref": "#/components/schemas/InternalError"
}
}
}
},
"/did/create": {
"post": {
"tags": [
"Decentralized Identifiers (DIDs)"
],
"summary": "Create a DID Document.",
"description": "This endpoint creates a DID and associated DID Document. As input, it can take the DID Document parameters via a form, or the fully-assembled DID Document itself.",
"requestBody": {
"content": {
"application/x-www-form-urlencoded": {
"schema": {
"$ref": "#/components/schemas/DidCreateRequestFormBased"
}
},
"application/json": {
"schema": {
"$ref": "#/components/schemas/DidCreateRequestJson"
}
}
}
},
"responses": {
"200": {
"description": "The request was successful.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/DidResult"
}
}
}
},
"400": {
"description": "A problem with the input fields has occurred. Additional state information plus metadata may be available in the response body.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InvalidRequest"
},
"example": {
"error": "InvalidRequest"
}
}
}
},
"401": {
"$ref": "#/components/schemas/UnauthorizedError"
},
"500": {
"description": "An internal error has occurred. Additional state information plus metadata may be available in the response body.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InvalidRequest"
},
"example": {
"error": "Internal Error"
}
}
}
}
}
}
},
"/did/update": {
"post": {
"tags": [
"Decentralized Identifiers (DIDs)"
],
"summary": "Update a DID Document.",
"description": "This endpoint updates a DID Document. As an input, it can take JUST the sections/parameters that need to be updated in the DID Document (in this scenario, it fetches the current DID Document and applies the updated section). Alternatively, it take the fully-assembled DID Document with updated sections as well as unchanged sections.",
"requestBody": {
"content": {
"application/x-www-form-urlencoded": {
"schema": {
"$ref": "#/components/schemas/DidUpdateRequest"
}
},
"application/json": {
"schema": {
"$ref": "#/components/schemas/DidUpdateRequest"
}
}
}
},
"responses": {
"200": {
"description": "The request was successful.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/DidUpdateResponse"
}
}
}
},
"400": {
"$ref": "#/components/schemas/InvalidRequest"
},
"401": {
"$ref": "#/components/schemas/UnauthorizedError"
},
"500": {
"$ref": "#/components/schemas/InternalError"
}
}
}
},
"/did/import": {
"post": {
"tags": [
"Decentralized Identifiers (DIDs)"
],
"summary": "Import a DID Document.",
"description": "This endpoint imports a decentralized identifier associated with the user's account for custodian-mode clients.",
"requestBody": {
"content": {
"application/x-www-form-urlencoded": {
"schema": {
"$ref": "#/components/schemas/DidImportRequest"
}
},
"application/json": {
"schema": {
"$ref": "#/components/schemas/DidImportRequest"
}
}
}
},
"responses": {
"200": {
"description": "The request was successful.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/DidResult"
}
}
}
},
"400": {
"description": "A problem with the input fields has occurred. Additional state information plus metadata may be available in the response body.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InvalidRequest"
},
"example": {
"error": "InvalidRequest"
}
}
}
},
"401": {
"$ref": "#/components/schemas/UnauthorizedError"
},
"500": {
"description": "An internal error has occurred. Additional state information plus metadata may be available in the response body.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InvalidRequest"
},
"example": {
"error": "Internal Error"
}
}
}
}
}
}
},
"/did/deactivate/{did}": {
"post": {
"tags": [
"Decentralized Identifiers (DIDs)"
],
"summary": "Deactivate a DID Document.",
"description": "This endpoint deactivates a DID Document by taking the DID identifier as input. Must be called and signed by the DID owner.",
"parameters": [
{
"in": "path",
"name": "did",
"description": "DID identifier to deactivate.",
"schema": {
"type": "string"
},
"required": true
}
],
"requestBody": {
"content": {
"application/x-www-form-urlencoded": {
"schema": {
"$ref": "#/components/schemas/DidDeactivateRequest"
}
},
"application/json": {
"schema": {
"$ref": "#/components/schemas/DidDeactivateRequest"
}
}
}
},
"responses": {
"200": {
"description": "The request was successful.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/DeactivatedDidResolution"
}
}
}
},
"400": {
"$ref": "#/components/schemas/InvalidRequest"
},
"401": {
"$ref": "#/components/schemas/UnauthorizedError"
},
"500": {
"$ref": "#/components/schemas/InternalError"
}
}
}
},
"/did/list": {
"get": {
"tags": [
"Decentralized Identifiers (DIDs)"
],
"summary": "Fetch DIDs associated with an account.",
"description": "This endpoint returns the list of DIDs controlled by the account.",
"parameters": [
{
"in": "query",
"name": "network",
"description": "Filter DID by the network published.",
"schema": {
"type": "string",
"enum": [
"mainnet",
"testnet"
]
},
"required": false
},
{
"in": "query",
"name": "providerId",
"description": "Filter DID by the provider.",
"schema": {
"type": "string"
},
"required": false
},
{
"in": "query",
"name": "metadata",
"description": "Include metadata in response.",
"schema": {
"type": "boolean"
},
"required": false
},
{
"in": "query",
"name": "createdAt",
"description": "Filter resource by created date",
"schema": {
"type": "string",
"format": "date"
},
"required": false
},
{
"in": "query",
"name": "page",
"description": "Page number.",
"schema": {
"type": "number"
},
"required": false
},
{
"in": "query",
"name": "limit",
"description": "Number of items to be listed in a single page.",
"schema": {
"type": "number"
},
"required": false
}
],
"responses": {
"200": {
"description": "The request was successful.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ListDidResult"
}
}
}
},
"400": {
"$ref": "#/components/schemas/InvalidRequest"
},
"401": {
"$ref": "#/components/schemas/UnauthorizedError"
},
"500": {
"$ref": "#/components/schemas/InternalError"
}
}
}
},
"/did/search/{did}": {
"get": {
"tags": [
"Decentralized Identifiers (DIDs)"
],
"summary": "Resolve a DID Document.",
"description": "Resolve a DID Document by DID identifier. Also supports DID Resolution Queries as defined in the W3C DID Resolution specification.",
"parameters": [
{
"in": "path",
"name": "did",
"description": "DID identifier to resolve.",
"schema": {
"type": "string"
},
"required": true,
"example": "did:cheqd:mainnet:7bf81a20-633c-4cc7-bc4a-5a45801005e0"
},
{
"in": "query",
"name": "metadata",
"description": "Return only metadata of DID Document instead of actual DID Document.",
"schema": {
"type": "boolean"
}
},
{
"in": "query",
"name": "versionId",
"description": "Unique UUID version identifier of DID Document. Allows for fetching a specific version of the DID Document. See cheqd DID Method Specification for more details.",
"schema": {
"type": "string",
"format": "uuid"
},
"example": "3ccde6ba-6ba5-56f2-9f4f-8825561a9860"
},
{
"in": "query",
"name": "versionTime",
"description": "Returns the closest version of the DID Document *at* or *before* specified time. See DID Resolution handling for `did:cheqd` for more details.",
"schema": {
"type": "string",
"format": "date-time"
},
"example": "1970-01-01T00:00:00Z"
},
{
"in": "query",
"name": "transformKeys",
"description": "This directive transforms the Verification Method key format from the version in the DID Document to the specified format chosen below.",
"schema": {
"type": "string",
"enum": [
"Ed25519VerificationKey2018",
"Ed25519VerificationKey2020",
"JsonWebKey2020"
]
}
},
{
"in": "query",
"name": "service",
"description": "Query DID Document for a specific Service Endpoint by Service ID (e.g., `service-1` in `did:cheqd:mainnet:7bf81a20-633c-4cc7-bc4a-5a45801005e0#service-1`). This will typically redirect to the Service Endpoint based on DID Resolution specification algorithm.",
"schema": {
"type": "string"
},
"example": "service-1"
},
{
"in": "query",
"name": "relativeRef",
"description": "Relative reference is a query fragment appended to the Service Endpoint URL. **Must** be used along with the `service` query property above. See DID Resolution specification algorithm for more details.",
"schema": {
"type": "string"
},
"example": "/path/to/file"
}
],
"responses": {
"200": {
"description": "The request was successful.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/DidResolution"
}
}
}
},
"400": {
"$ref": "#/components/schemas/InvalidRequest"
},
"401": {
"$ref": "#/components/schemas/UnauthorizedError"
},
"500": {
"$ref": "#/components/schemas/InternalError"
}
}
}
},
"/did/export/{did}": {
"post": {
"tags": [
"Decentralized Identifiers (DIDs)"
],
"summary": "Export a DID Document.",
"description": "This endpoint exports a decentralized identifier associated with the user's account with the custodied keys.",
"parameters": [
{
"in": "path",
"name": "did",
"description": "DID identifier to resolve.",
"schema": {
"type": "string"
},
"required": true
}
],
"requestBody": {
"content": {
"application/x-www-form-urlencoded": {
"schema": {
"type": "object",
"properties": {
"password": {
"type": "string",
"required": false
},
"providerId": {
"type": "string",
"required": false
}
}
}
},
"application/json": {
"schema": {
"type": "object",
"properties": {
"password": {
"type": "string",
"required": false
},
"providerId": {
"type": "string",
"required": false
}
}
}
}
}
},
"responses": {
"200": {
"description": "The request was successful.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ExportDidResult"
}
}
}
},
"400": {
"description": "A problem with the input fields has occurred. Additional state information plus metadata may be available in the response body.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InvalidRequest"
},
"example": {
"error": "InvalidRequest"
}
}
}
},
"401": {
"$ref": "#/components/schemas/UnauthorizedError"
},
"500": {
"description": "An internal error has occurred. Additional state information plus metadata may be available in the response body.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InvalidRequest"
},
"example": {
"error": "Internal Error"
}
}
}
}
}
}
},
"/key/create": {
"post": {
"tags": [
"Keys"
],
"summary": "Create an identity key pair.",
"description": "This endpoint creates an identity key pair associated with the user's account for custodian-mode clients.",
"parameters": [
{
"name": "type",
"description": "Key type of the identity key pair to create.",
"in": "query",
"schema": {
"type": "string",
"enum": [
"Ed25519"
]
}
}
],
"responses": {
"200": {
"description": "The request was successful.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/KeyResult"
}
}
}
},
"400": {
"description": "A problem with the input fields has occurred. Additional state information plus metadata may be available in the response body.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InvalidRequest"
},
"example": {
"error": "InvalidRequest"
}
}
}
},
"401": {
"$ref": "#/components/schemas/UnauthorizedError"
},
"500": {
"description": "An internal error has occurred. Additional state information plus metadata may be available in the response body.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InvalidRequest"
},
"example": {
"error": "Internal Error"
}
}
}
}
}
}
},
"/key/import": {
"post": {
"tags": [
"Keys"
],
"summary": "Import an identity key pair.",
"description": "This endpoint imports an identity key pair associated with the user's account for custodian-mode clients.",
"requestBody": {
"content": {
"application/x-www-form-urlencoded": {
"schema": {
"$ref": "#/components/schemas/KeyImportRequest"
}
},
"application/json": {
"schema": {
"$ref": "#/components/schemas/KeyImportRequest"
}
}
}
},
"responses": {
"200": {
"description": "The request was successful.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/KeyResult"
}
}
}
},
"400": {
"description": "A problem with the input fields has occurred. Additional state information plus metadata may be available in the response body.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InvalidRequest"
},
"example": {
"error": "InvalidRequest"
}
}
}
},
"401": {
"$ref": "#/components/schemas/UnauthorizedError"
},
"500": {
"description": "An internal error has occurred. Additional state information plus metadata may be available in the response body.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InvalidRequest"
},
"example": {
"error": "Internal Error"
}
}
}
}
}
}
},
"/key/read/{kid}": {
"get": {
"tags": [
"Keys"
],
"summary": "Fetch an identity key pair.",
"description": "This endpoint fetches an identity key pair's details for a given key ID. Only the user account associated with the custodian-mode client can fetch the key pair.",
"parameters": [
{
"name": "kid",
"description": "Key ID of the identity key pair to fetch.",
"in": "path",
"schema": {
"type": "string"
},
"required": true
}
],
"responses": {
"200": {
"description": "The request was successful.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/KeyResult"
}
}
}
},
"400": {
"description": "A problem with the input fields has occurred. Additional state information plus metadata may be available in the response body.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InvalidRequest"
},
"example": {
"error": "InvalidRequest"
}
}
}
},
"401": {
"$ref": "#/components/schemas/UnauthorizedError"
},
"500": {
"description": "An internal error has occurred. Additional state information plus metadata may be available in the response body.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InvalidRequest"
},
"example": {
"error": "Internal Error"
}
}
}
}
}
}
},
"/key/{kid}/verification-method": {
"get": {
"tags": [
"Keys"
],
"summary": "Convert a key to a W3C Verification Method.",
"description": "This endpoint converts a stored key (by key ID) into a [W3C Verification Method](https://www.w3.org/TR/did-core/#verification-methods) format.",
"parameters": [
{
"name": "kid",
"description": "Key ID of the identity key pair to convert.",
"in": "path",
"schema": {
"type": "string"
},
"required": true
},
{
"name": "verificationMethodType",
"description": "Type of verification method to use for the DID. See DID Core specification for more details. Only the types listed below are supported.",
"in": "query",
"schema": {
"type": "string",
"enum": [
"Ed25519VerificationKey2018",
"Ed25519VerificationKey2020",
"JsonWebKey2020"
]
},
"required": true
},
{
"name": "controller",
"description": "Controller DID of the verification method",
"in": "query",
"schema": {
"type": "string"
}
},
{
"name": "id",
"description": "Verification Method Id Fragment",
"in": "query",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "The request was successful.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/VerificationMethod"
}
}
}
},
"400": {
"description": "A problem with the input fields has occurred. Additional state information plus metadata may be available in the response body.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InvalidRequest"
},
"example": {
"error": "InvalidRequest"
}
}
}
},
"401": {
"$ref": "#/components/schemas/UnauthorizedError"
},
"404": {
"description": "The key was not found.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InvalidRequest"
},
"example": {
"error": "Key not found"
}
}
}
},
"500": {
"description": "An internal error has occurred. Additional state information plus metadata may be available in the response body.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InvalidRequest"
},
"example": {
"error": "Internal Error"
}
}
}
}
}
}
},
"/event/list": {
"get": {
"tags": [
"Event"
],
"summary": "Fetch Credential event's triggered by the user.",
"description": "This endpoint returns the list of Credential Events controlled by the account.",
"parameters": [
{
"in": "query",
"name": "network",
"description": "Filter events by the network published.",
"schema": {
"type": "string",
"enum": [
"mainnet",
"testnet"
]
},
"required": false
},
{
"in": "query",
"name": "category",
"description": "Filter events by the category.",
"schema": {
"type": "string",
"enum": [
"did",
"resource",
"credential",
"credential-status",
"presentation"
]
},
"required": false
},
{
"in": "query",
"name": "name",
"description": "Filter events by the name.",
"schema": {
"type": "string"
},
"required": false
},
{
"in": "query",
"name": "deprecated",
"description": "Filter events by the deprecated type",
"schema": {
"type": "boolean"
},
"required": false
},
{
"in": "query",
"name": "successful",
"description": "Filter events by the status",
"schema": {
"type": "boolean"
},
"required": false
},
{
"in": "query",
"name": "createdAt",
"description": "Filter resource by created date",
"schema": {
"type": "string",
"format": "date"
},
"required": false
},
{
"in": "query",
"name": "page",
"description": "Page number.",
"schema": {
"type": "number"
},
"required": false
},
{
"in": "query",
"name": "limit",
"description": "Number of items to be listed in a single page.",
"schema": {
"type": "number"
},
"required": false
}
],
"responses": {
"200": {
"description": "The request was successful.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ListResourceResult"
}
}
}
},
"400": {
"$ref": "#/components/schemas/InvalidRequest"
},
"401": {
"$ref": "#/components/schemas/UnauthorizedError"
},
"500": {
"$ref": "#/components/schemas/InternalError"
}
}
}
},
"/presentation/create": {
"post": {
"tags": [
"Verifiable Presentations"
],
"summary": "!!! WARN. Such endpoint is made mostly for testing purposes and it is not supposed to be used in production !!! Create a Verifiable Presentation from credential(s).",
"description": "This endpoint creates a Verifiable Presentation from credential(s). As input, it can take the credential(s) as a string or the entire credential(s) itself. \n !!! WARN. Such endpoint is made only for testing purposes !!!",
"requestBody": {
"content": {
"application/x-www-form-urlencoded": {
"schema": {
"$ref": "#/components/schemas/PresentationCreateRequest"
}
},
"application/json": {
"schema": {
"$ref": "#/components/schemas/PresentationCreateRequest"
}
}
}
},
"responses": {
"200": {
"description": "The request was successful.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/PresentationCreateResult"
}
}
}
},
"400": {
"$ref": "#/components/schemas/InvalidRequest"
},
"401": {
"$ref": "#/components/schemas/UnauthorizedError"
},
"500": {
"$ref": "#/components/schemas/InternalError"
}
}
}
},
"/presentation/verify": {
"post": {
"tags": [
"Verifiable Presentations"
],
"summary": "Verify a Verifiable Presentation generated from credential(s).",
"description": "This endpoint verifies the Verifiable Presentation generated from credential(s). As input, it can take the Verifiable Presentation JWT as a string or the entire Verifiable Presentation itself.",
"parameters": [
{
"in": "query",
"name": "verifyStatus",
"description": "If set to `true` the verification will also check the status of the presentation. Requires the VP to have a `credentialStatus` property.",
"schema": {
"type": "boolean",
"default": false
}
},
{
"in": "query",
"name": "fetchRemoteContexts",
"description": "When dealing with JSON-LD you also MUST provide the proper contexts. * Set this to `true` ONLY if you want the `@context` URLs to be fetched in case they are a custom context.",
"schema": {
"type": "boolean",
"default": false
}
},
{
"in": "query",
"name": "allowDeactivatedDid",
"description": "If set to `true` allow to verify credential which based on deactivated DID.",
"schema": {
"type": "boolean",
"default": false
}
}
],
"requestBody": {
"content": {
"application/x-www-form-urlencoded": {
"schema": {
"$ref": "#/components/schemas/PresentationVerifyRequest"
}
},
"application/json": {
"schema": {
"$ref": "#/components/schemas/PresentationVerifyRequest"
}
}
}
},
"responses": {
"200": {
"description": "The request was successful.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/VerifyPresentationResult"
}
}
}
},
"400": {
"$ref": "#/components/schemas/InvalidRequest"
},
"401": {
"$ref": "#/components/schemas/UnauthorizedError"
},
"500": {
"$ref": "#/components/schemas/InternalError"
}
}
}
},
"/providers": {
"get": {
"tags": [
"Providers"
],
"summary": "Get all available credential providers",
"description": "Returns list of available credential providers",
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"providers": {
"type": "array",
"items": {
"type": "object"
}
}
}
}
}
}
}
}
}
},
"/providers/activated": {
"get": {
"tags": [
"Providers"
],
"summary": "Get customer's activated providers",
"description": "Returns list of providers activated by the customer",
"responses": {
"200": {
"description": "Successful response"
}
}
}
},
"/providers/{providerId}/configuration": {
"get": {
"tags": [
"Providers"
],
"summary": "Get provider configuration",
"parameters": [
{
"name": "providerId",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Provider configuration"
}
}
},
"put": {
"tags": [
"Providers"
],
"summary": "Update provider configuration",
"parameters": [
{
"name": "providerId",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"apiEndpoint": {
"type": "string",
"format": "uri",
"description": "API endpoint URL"
},
"webhookUrl": {
"type": "string",
"format": "uri",
"description": "Webhook URL for notifications"
},
"defaultSettings": {
"type": "object",
"description": "Provider-specific default settings"
}
}
}
}
}
},
"responses": {
"200": {
"description": "Configuration updated successfully"
},
"400": {
"description": "Invalid configuration data"
},
"404": {
"description": "Provider configuration not found"
}
}
}
},
"/providers/{providerId}/activate": {
"post": {
"tags": [
"Providers"
],
"summary": "Activate a provider for the customer",
"parameters": [
{
"name": "providerId",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Provider activated successfully"
},
"400": {
"description": "Invalid provider or already activated"
},
"404": {
"description": "Provider not found"
}
}
}
},
"/providers/{providerId}/test": {
"post": {
"tags": [
"Providers"
],
"summary": "Test connection to a provider",
"parameters": [
{
"name": "providerId",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "newAPIUrl",
"in": "query",
"required": false,
"default": null,
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Connection test completed"
},
"400": {
"description": "Connection test failed"
},
"404": {
"description": "Provider configuration not found"
}
}
}
},
"/providers/{providerId}": {
"delete": {
"tags": [
"Providers"
],
"summary": "Remove provider configuration",
"parameters": [
{
"name": "providerId",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Configuration removed successfully"
}
}
}
},
"/providers/{providerId}/did/import": {
"post": {
"tags": [
"Providers"
],
"summary": "Import a DID into a Provider.",
"description": "This endpoint imports a decentralized identifier associated with the user's account with the custodied keys into a provider.",
"parameters": [
{
"name": "providerId",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
],
"requestBody": {
"content": {
"application/x-www-form-urlencoded": {
"schema": {
"type": "object",
"required": [
"did"
],
"properties": {
"did": {
"description": "DID identifier to resolve.",
"type": "string"
}
}
}
},
"application/json": {
"schema": {
"type": "object",
"required": [
"did"
],
"properties": {
"did": {
"description": "DID identifier to resolve.",
"type": "string"
}
}
}
}
}
},
"responses": {
"200": {
"description": "The request was successful.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/DidResult"
}
}
}
},
"400": {
"description": "A problem with the input fields has occurred. Additional state information plus metadata may be available in the response body.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InvalidRequest"
},
"example": {
"error": "InvalidRequest"
}
}
}
},
"401": {
"$ref": "#/components/schemas/UnauthorizedError"
},
"500": {
"description": "An internal error has occurred. Additional state information plus metadata may be available in the response body.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InvalidRequest"
},
"example": {
"error": "Internal Error"
}
}
}
}
}
}
},
"/resource/create/{did}": {
"post": {
"tags": [
"DID-Linked Resources (DLRs)"
],
"summary": "Create a DID-Linked Resource.",
"description": "This endpoint creates a DID-Linked Resource. As input, it can take the DID identifier and the resource parameters via a form, or the fully-assembled resource itself.",
"parameters": [
{
"in": "path",
"name": "did",
"description": "DID identifier to link the resource to.",
"schema": {
"type": "string"
},
"required": true
}
],
"requestBody": {
"content": {
"application/x-www-form-urlencoded": {
"schema": {
"$ref": "#/components/schemas/CreateResourceRequest"
}
},
"application/json": {
"schema": {
"$ref": "#/components/schemas/CreateResourceRequest"
}
}
}
},
"responses": {
"200": {
"description": "The request was successful.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ResourceMetadata"
}
}
}
},
"400": {
"$ref": "#/components/schemas/InvalidRequest"
},
"401": {
"$ref": "#/components/schemas/UnauthorizedError"
},
"500": {
"$ref": "#/components/schemas/InternalError"
}
}
}
},
"/resource/search/{did}": {
"get": {
"tags": [
"DID-Linked Resources (DLRs)"
],
"summary": "Get a DID-Linked Resource.",
"description": "This endpoint returns the DID-Linked Resource for a given DID identifier and resource identifier.",
"parameters": [
{
"in": "path",
"name": "did",
"description": "DID identifier",
"schema": {
"type": "string"
},
"required": true,
"example": "did:cheqd:mainnet:7bf81a20-633c-4cc7-bc4a-5a45801005e0"
},
{
"in": "query",
"name": "resourceId",
"description": "Fetch a DID-Linked Resource by Resource ID unique identifier. Since this is a unique identifier, other Resource query parameters are not required. See DID-Linked Resources for more details.",
"schema": {
"type": "string",
"format": "uuid"
},
"example": "3ccde6ba-6ba5-56f2-9f4f-8825561a9860"
},
{
"in": "query",
"name": "resourceName",
"description": "Filter a DID-Linked Resource query by Resource Name. See DID-Linked Resources for more details.",
"schema": {
"type": "string"
},
"example": "cheqd-issuer-logo"
},
{
"in": "query",
"name": "resourceType",
"description": "Filter a DID-Linked Resource query by Resource Type. See DID-Linked Resources for more details.",
"schema": {
"type": "string"
},
"example": "CredentialArtwork"
},
{
"in": "query",
"name": "resourceVersion",
"description": "Filter a DID-Linked Resource query by Resource Version, which is an optional free-text field used by issuers (e.g., \"v1\", \"Final Version\", \"1st January 1970\" etc). See DID-Linked Resources for more details.",
"schema": {
"type": "string"
},
"example": "v1"
},
{
"in": "query",
"name": "resourceVersionTime",
"description": "Filter a DID-Linked Resource query which returns the closest version of the Resource *at* or *before* specified time. See DID-Linked Resources for more details.",
"schema": {
"type": "string",
"format": "date-time"
},
"example": "1970-01-01T00:00:00Z"
},
{
"in": "query",
"name": "checksum",
"description": "Request integrity check against a given DID-Linked Resource by providing a SHA-256 checksum hash. See DID-Linked Resources for more details.",
"schema": {
"type": "string"
},
"example": "dc64474d062ed750a66bad58cb609928de55ed0d81defd231a4a4bf97358e9ed"
},
{
"in": "query",
"name": "resourceMetadata",
"description": "Return only metadata of DID-Linked Resource instead of actual DID-Linked Resource. Mutually exclusive with some of the other parameters.",
"schema": {
"type": "boolean"
}
}
],
"responses": {
"200": {
"description": "The request was successful.",
"content": {
"any": {
"schema": {
"type": "object"
}
}
}
},
"400": {
"$ref": "#/components/schemas/InvalidRequest"
},
"401": {
"$ref": "#/components/schemas/UnauthorizedError"
},
"500": {
"$ref": "#/components/schemas/InternalError"
}
}
}
},
"/resource/list": {
"get": {
"tags": [
"Resource"
],
"summary": "Fetch Resources created by the user.",
"description": "This endpoint returns the list of DID Linked Resources controlled by the account.",
"parameters": [
{
"in": "query",
"name": "network",
"description": "Filter resources by the network published.",
"schema": {
"type": "string",
"enum": [
"mainnet",
"testnet"
]
},
"required": false
},
{
"in": "query",
"name": "resourceName",
"description": "Filter resources by the resource name",
"schema": {
"type": "string"
},
"required": false
},
{
"in": "query",
"name": "resourceType",
"description": "Filter resources by the resource type",
"schema": {
"type": "string"
},
"required": false
},
{
"in": "query",
"name": "did",
"description": "Filter resources published by a DID",
"schema": {
"type": "string"
},
"required": false
},
{
"in": "query",
"name": "encrypted",
"description": "Filter resource by encryption type",
"schema": {
"type": "boolean"
},
"required": false
},
{
"in": "query",
"name": "createdAt",
"description": "Filter resource by created date",
"schema": {
"type": "string",
"format": "date"
},
"required": false
},
{
"in": "query",
"name": "page",
"description": "Page number.",
"schema": {
"type": "number"
},
"required": false
},
{
"in": "query",
"name": "limit",
"description": "Number of items to be listed in a single page.",
"schema": {
"type": "number"
},
"required": false
}
],
"responses": {
"200": {
"description": "The request was successful.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ListResourceResult"
}
}
}
},
"400": {
"$ref": "#/components/schemas/InvalidRequest"
},
"401": {
"$ref": "#/components/schemas/UnauthorizedError"
},
"500": {
"$ref": "#/components/schemas/InternalError"
}
}
}
}
}
}