@cef-ebsi/vcdm2.0-trust-model-schema
v1.2.0
Published
EBSI Verifiable Trust Model (VCDM 2.0)
Downloads
14
Keywords
Readme
@cef-ebsi/vcdm2.0-trust-model-schema
EBSI Verifiable Trust Model
Base schema to manage trust model
The schema is published to the Trusted Schemas Registry with the IDs:
0x9a6a3b2fef60f9baa1fb04ac60392d2617a88e999f416130c8a236e4dfaf27ac
(hexadecimal)zBPmjjpdi2dvoXYH9oRpMSGRP4aSd6TyRjRDhxSXgLRZd
(multibase base58btc)
Table of Contents
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"title": "EBSI Verifiable Trust Model",
"description": "Base schema to manage trust model",
"type": "object",
"allOf": [
{
"$ref": "./node_modules/@cef-ebsi/vcdm2.0-attestation-schema/schema.json"
},
{
"properties": {
"type": {
"description": "Defines the Verifiable Credential type. MUST contain VerifiableTrustModel",
"type": "array",
"contains": {
"type": "string",
"const": "VerifiableTrustModel"
}
},
"credentialSubject": {
"description": "Defines additional information about the subject that is described by the Verifiable Accreditation",
"type": "object",
"properties": {
"id": {
"description": "Defines the DID of the subject that is described by the issued credential",
"type": "string",
"format": "uri"
},
"reservedAttributeId": {
"description": "Defines the Trusted Issuers Registry attributeId this Verifiable Accreditation has been reserved for",
"type": "string"
},
"permissionFor": {
"description": "Defines a list of claims that define/determine the authorisation of an subject to issue or accredit certain types of VCs",
"type": "array",
"items": {
"type": "object",
"properties": {
"schemaId": {
"description": "Schema, registered in Trusted Schemas Registry, which the accredited organisation is allowed to issue or accredit",
"type": "string",
"format": "uri"
},
"types": {
"type": "array",
"items": {
"type": "string"
}
},
"jurisdiction": {
"anyOf": [
{
"description": "Defines the jurisdiction for which the accreditation is valid",
"type": "string",
"format": "uri"
},
{
"type": "array",
"description": "Defines the jurisdictions for which the accreditation is valid",
"items": {
"type": "string",
"format": "uri"
}
}
]
}
},
"required": ["schemaId", "types", "jurisdiction"]
}
}
},
"required": ["id", "reservedAttributeId", "permissionFor"]
},
"credentialStatus": {
"description": "Defines revocation details for the issued credential. Further redefined by type extension",
"type": "object",
"properties": {
"id": {
"description": "Credential status in Trusted Issuers Registry, pointing towards Subject DID and the reservedAttributeId",
"type": "string",
"format": "uri"
},
"type": {
"description": "Defines the revocation status type",
"type": "string",
"const": "EbsiAccreditationEntry"
}
},
"required": ["id", "type"]
},
"termsOfUse": {
"anyOf": [
{
"$ref": "#/$defs/trustFrameworkPolicy"
},
{
"$ref": "#/$defs/accreditationPolicy"
},
{
"type": "array",
"contains": {
"anyOf": [
{
"$ref": "#/$defs/trustFrameworkPolicy"
},
{
"$ref": "#/$defs/accreditationPolicy"
}
]
}
}
]
}
},
"required": [
"validUntil",
"credentialSubject",
"credentialStatus",
"termsOfUse"
]
}
],
"$defs": {
"trustFrameworkPolicy": {
"description": "Defines Trust Framework Policy under which the Verifiable Credential has been issued",
"type": "object",
"properties": {
"type": {
"type": "string",
"description": "Type of the TermsOfUse entry. It MUST be TrustFrameworkPolicy. Other types may be added in the future",
"const": "TrustFrameworkPolicy"
},
"trustFramework": {
"type": "string",
"description": "Name of the Trust Framework (TF)"
},
"policyId": {
"type": "string",
"description": "URI identifying the policy under which the Trust Framework operates or Verifiable Accreditation has been Issued in",
"format": "uri"
},
"legalBasis": {
"type": "string",
"description": "Legal basis for the tf, is a string as 'professional qualifications directive'"
}
},
"required": ["type", "trustFramework", "policyId"]
},
"accreditationPolicy": {
"description": "Defines the Accreditation Policy under which the Verifiable Credential has been issued",
"type": "object",
"properties": {
"type": {
"type": "string",
"description": "Type of the TermsOfUse entry. It MUST be AccreditationPolicy",
"const": "AccreditationPolicy"
},
"parentAccreditation": {
"type": "string",
"description": "URL to access the parent entity in the trust chain supporting the attestation",
"format": "uri"
},
"rootAuthorisation": {
"type": "string",
"description": "URL to access the root entity in the trust chain supporting the attestation",
"format": "uri"
}
},
"required": ["type", "parentAccreditation", "rootAuthorisation"]
}
}
}
Installation
# with npm
npm add @cef-ebsi/[email protected]
# with Yarn
yarn add @cef-ebsi/[email protected]
# with pnpm
pnpm add @cef-ebsi/[email protected]
Usage
The package exports the schema and its metadata as JavaScript objects:
import { schema, metadata } from "@cef-ebsi/vcdm2.0-trust-model-schema";
// you can now use the schema and metadata
In addition, the package exports a TypeScript type corresponding to the schema:
import type { EBSIVerifiableTrustModel } from "@cef-ebsi/vcdm2.0-trust-model-schema";
License
Copyright (c) 2019 European Commission Licensed under the EUPL, Version 1.2 or - as soon they will be approved by the European Commission - subsequent versions of the EUPL (the "Licence"); You may not use this work except in compliance with the Licence. You may obtain a copy of the Licence at:
Unless required by applicable law or agreed to in writing, software distributed under the Licence is distributed on an "AS IS" basis, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the Licence for the specific language governing permissions and limitations under the Licence.