Code development platform for open source projects from the European Union institutions :large_blue_circle: EU Login authentication by SMS has been phased out. To see alternatives please check here

Skip to content
Snippets Groups Projects
Commit a968806d authored by Yannick Huard's avatar Yannick Huard
Browse files

feat: create initial version of the EBSI Trusted Nodes List schema - EBSIINT-10701

parent 87a815d1
No related branches found
No related tags found
2 merge requests!82Publish changes,!79feat: create initial version of the EBSI Trusted Nodes List schema - EBSIINT-10701
---
"@cef-ebsi/vcdm1.1-trusted-nodes-list-schema": major
---
Create initial version of the EBSI Trusted Nodes List schema.
......@@ -71,6 +71,18 @@
"verification": "Documents & Products",
"context": "General"
},
{
"name": "@cef-ebsi/vcdm1.1-trusted-nodes-list-schema",
"version": "0.0.0",
"title": "EBSI Trusted Nodes List",
"description": "Schema of an EBSI Trusted Nodes List",
"idBase16": "0xbd2f371da8965fb6adecdd57b7ed2a899728fec9666fde76ec017765e2b9a077",
"idBase58": "zDjVp7fDTKbhqFUuCSQ7tvxGMPjns8KeyqfMSFUREuyq8",
"file": "schemas/vcdm1.1/trusted-nodes-list/schema.json",
"vcdm": "1.1",
"verification": "Documents",
"context": "General"
},
{
"name": "@cef-ebsi/vcdm2.0-attestation-schema",
"version": "1.2.0",
......
......@@ -94,10 +94,12 @@
"packageManager": "pnpm@8.15.4+sha256.cea6d0bdf2de3a0549582da3983c70c92ffc577ff4410cbf190817ddc35137c2",
"pnpm": {
"auditConfig": {
"ignoreCves": []
"ignoreCves": [
"CVE-2024-21538"
]
},
"overrides": {
"elliptic@6.5.4": "6.5.7",
"elliptic@6.5.4": "6.6.1",
"ws@7.4.6": "7.5.10"
}
}
......
......@@ -5,7 +5,7 @@ settings:
excludeLinksFromLockfile: false
overrides:
elliptic@6.5.4: 6.5.7
elliptic@6.5.4: 6.6.1
ws@7.4.6: 7.5.10
importers:
......@@ -50,22 +50,22 @@ importers:
version: 16.4.5
eslint:
specifier: ^8.57.0
version: 8.57.0
version: 8.57.1
eslint-config-airbnb-base:
specifier: ^15.0.0
version: 15.0.0(eslint-plugin-import@2.29.1)(eslint@8.57.0)
version: 15.0.0(eslint-plugin-import@2.29.1)(eslint@8.57.1)
eslint-config-prettier:
specifier: ^9.1.0
version: 9.1.0(eslint@8.57.0)
version: 9.1.0(eslint@8.57.1)
eslint-plugin-import:
specifier: ^2.29.1
version: 2.29.1(eslint@8.57.0)
version: 2.29.1(eslint@8.57.1)
eslint-plugin-prettier:
specifier: ^5.2.1
version: 5.2.1(eslint-config-prettier@9.1.0)(eslint@8.57.0)(prettier@3.3.3)
version: 5.2.1(eslint-config-prettier@9.1.0)(eslint@8.57.1)(prettier@3.3.3)
eslint-plugin-vitest:
specifier: ^0.3.20
version: 0.3.26(eslint@8.57.0)(typescript@5.5.4)(vitest@1.6.0)
version: 0.3.26(eslint@8.57.1)(typescript@5.5.4)(vitest@1.6.0)
ethers:
specifier: ^5.7.2
version: 5.7.2
......@@ -239,6 +239,12 @@ importers:
specifier: workspace:*
version: link:../attestation
schemas/vcdm1.1/trusted-nodes-list:
dependencies:
'@cef-ebsi/vcdm1.1-attestation-schema':
specifier: workspace:*
version: link:../attestation
schemas/vcdm1.1/type-extensions/credentialStatus/StatusList2021: {}
schemas/vcdm1.1/type-extensions/termsOfUse/AccreditationPolicy: {}
......@@ -384,34 +390,34 @@ packages:
resolution: {integrity: sha512-6YH8RehbOoFL+WES999HfiflYcYHxif4W5lWCHjsvUlPqmBRvOtEJ5pew/Fyi4goP4y0WbCwDWYGWfq3ywQ8hw==}
dev: true
/@cef-ebsi/key-did-resolver@2.0.3:
resolution: {integrity: sha512-6wcPGhGItnNA+nLmkvSnWwcinykNmEd6Msr8mwsaI8Qv4zzmnJE1I9V6YLqUsxZX+WZPKMOBcZ3c69LnIy9x7A==}
/@cef-ebsi/key-did-resolver@2.0.4:
resolution: {integrity: sha512-9GN5uqkimJWHPXoikMTpW/pIpPwpdnd8JHwA/PtyAeeRe2+w68gEc30qYQqAVB/q5W72P33w+/hW8ehqSURAfg==}
dependencies:
did-resolver: 4.1.0
jose: 4.15.9
lodash.isplainobject: 4.0.6
multiformats: 9.9.0
uint8arrays: 3.1.1
dev: true
/@cef-ebsi/key-encoder@1.0.3:
resolution: {integrity: sha512-8wduTq7NyD9A+QISjdubeIjA+EJRC1gCyyDyoKNrUMAJuP7YKqx/A0CHKEU3gnvIy/khSRAjYKsznQs+qyfhVg==}
dependencies:
asn1.js: 5.4.1
elliptic: 6.5.7
elliptic: 6.6.1
dev: true
/@cef-ebsi/siop-auth@4.0.3:
resolution: {integrity: sha512-2wvJuzroOC9LuGlxupPeSTZXc2GLOvfvHgjrKGj9SH6TMxlLMqg2hMBT09nm7qzm+D/BP+IofBsQr9+TmxHgnA==}
dependencies:
'@cef-ebsi/ebsi-did-resolver': 4.0.3
'@cef-ebsi/key-did-resolver': 2.0.3
'@cef-ebsi/key-did-resolver': 2.0.4
'@cef-ebsi/key-encoder': 1.0.3
'@noble/hashes': 1.5.0
axios: 1.7.7
did-jwt: 8.0.4
did-resolver: 4.1.0
eciesjs: 0.4.7
elliptic: 6.5.7
elliptic: 6.6.1
jose: 4.15.9
multiformats: 9.9.0
uuid: 9.0.1
......@@ -444,7 +450,7 @@ packages:
dependencies:
'@cef-ebsi/ebsi-did-resolver': 4.0.3
'@cef-ebsi/ebsi-uri': 0.1.0
'@cef-ebsi/key-did-resolver': 2.0.3
'@cef-ebsi/key-did-resolver': 2.0.4
'@cef-ebsi/vcdm1.1-accreditation-schema': 1.3.0
'@cef-ebsi/vcdm1.1-attestation-schema': 1.3.0
'@cef-ebsi/vcdm1.1-revocation-statuslist-schema': 1.3.0
......@@ -473,7 +479,7 @@ packages:
dependencies:
'@cef-ebsi/ebsi-did-resolver': 4.0.3
'@cef-ebsi/ebsi-uri': 0.1.0
'@cef-ebsi/key-did-resolver': 2.0.3
'@cef-ebsi/key-did-resolver': 2.0.4
'@cef-ebsi/vcdm1.1-presentation-schema': 1.0.3
'@cef-ebsi/verifiable-credential': 6.0.2
'@segment/ajv-human-errors': 2.13.0(ajv@8.17.1)
......@@ -888,13 +894,13 @@ packages:
dev: true
optional: true
/@eslint-community/eslint-utils@4.4.0(eslint@8.57.0):
/@eslint-community/eslint-utils@4.4.0(eslint@8.57.1):
resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
peerDependencies:
eslint: ^6.0.0 || ^7.0.0 || >=8.0.0
dependencies:
eslint: 8.57.0
eslint: 8.57.1
eslint-visitor-keys: 3.4.3
dev: true
......@@ -920,8 +926,8 @@ packages:
- supports-color
dev: true
/@eslint/js@8.57.0:
resolution: {integrity: sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==}
/@eslint/js@8.57.1:
resolution: {integrity: sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
dev: true
......@@ -1155,7 +1161,7 @@ packages:
'@ethersproject/logger': 5.7.0
'@ethersproject/properties': 5.7.0
bn.js: 5.2.1
elliptic: 6.5.7
elliptic: 6.6.1
hash.js: 1.1.7
dev: true
......@@ -1240,8 +1246,8 @@ packages:
'@ethersproject/strings': 5.7.0
dev: true
/@humanwhocodes/config-array@0.11.14:
resolution: {integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==}
/@humanwhocodes/config-array@0.13.0:
resolution: {integrity: sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==}
engines: {node: '>=10.10.0'}
deprecated: Use @eslint/config-array instead
dependencies:
......@@ -1580,17 +1586,17 @@ packages:
- supports-color
dev: true
/@typescript-eslint/utils@7.18.0(eslint@8.57.0)(typescript@5.5.4):
/@typescript-eslint/utils@7.18.0(eslint@8.57.1)(typescript@5.5.4):
resolution: {integrity: sha512-kK0/rNa2j74XuHVcoCZxdFBMF+aq/vH83CXAOHieC+2Gis4mF8jJXT5eAfyD3K0sAxtPuwxaIOIOvhwzVDt/kw==}
engines: {node: ^18.18.0 || >=20.0.0}
peerDependencies:
eslint: ^8.56.0
dependencies:
'@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0)
'@eslint-community/eslint-utils': 4.4.0(eslint@8.57.1)
'@typescript-eslint/scope-manager': 7.18.0
'@typescript-eslint/types': 7.18.0
'@typescript-eslint/typescript-estree': 7.18.0(typescript@5.5.4)
eslint: 8.57.0
eslint: 8.57.1
transitivePeerDependencies:
- supports-color
- typescript
......@@ -2165,8 +2171,8 @@ packages:
which: 1.3.1
dev: true
/cross-spawn@7.0.3:
resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==}
/cross-spawn@7.0.6:
resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==}
engines: {node: '>= 8'}
dependencies:
path-key: 3.1.1
......@@ -2344,8 +2350,8 @@ packages:
'@noble/hashes': 1.5.0
dev: true
/elliptic@6.5.7:
resolution: {integrity: sha512-ESVCtTwiA+XhY3wyh24QqRGBoP3rEdDUl3EDUUo9tft074fi19IrdpH7hLCMMP3CIj7jb3W96rn8lt/BqIlt5Q==}
/elliptic@6.6.1:
resolution: {integrity: sha512-RaddvvMatK2LJHqFJ+YA4WysVN5Ita9E35botqIYspQ4TkRAlCicdzKOjlyv/1Za5RyTNn7di//eEV0uTAfe3g==}
dependencies:
bn.js: 4.12.0
brorand: 1.1.0
......@@ -2553,7 +2559,7 @@ packages:
engines: {node: '>=10'}
dev: true
/eslint-config-airbnb-base@15.0.0(eslint-plugin-import@2.29.1)(eslint@8.57.0):
/eslint-config-airbnb-base@15.0.0(eslint-plugin-import@2.29.1)(eslint@8.57.1):
resolution: {integrity: sha512-xaX3z4ZZIcFLvh2oUNvcX5oEofXda7giYmuplVxoOg5A7EXJMrUyqRgR+mhDhPK8LZ4PttFOBvCYDbX3sUoUig==}
engines: {node: ^10.12.0 || >=12.0.0}
peerDependencies:
......@@ -2561,20 +2567,20 @@ packages:
eslint-plugin-import: ^2.25.2
dependencies:
confusing-browser-globals: 1.0.11
eslint: 8.57.0
eslint-plugin-import: 2.29.1(eslint@8.57.0)
eslint: 8.57.1
eslint-plugin-import: 2.29.1(eslint@8.57.1)
object.assign: 4.1.5
object.entries: 1.1.8
semver: 6.3.1
dev: true
/eslint-config-prettier@9.1.0(eslint@8.57.0):
/eslint-config-prettier@9.1.0(eslint@8.57.1):
resolution: {integrity: sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==}
hasBin: true
peerDependencies:
eslint: '>=7.0.0'
dependencies:
eslint: 8.57.0
eslint: 8.57.1
dev: true
/eslint-import-resolver-node@0.3.9:
......@@ -2587,7 +2593,7 @@ packages:
- supports-color
dev: true
/eslint-module-utils@2.8.1(eslint-import-resolver-node@0.3.9)(eslint@8.57.0):
/eslint-module-utils@2.8.1(eslint-import-resolver-node@0.3.9)(eslint@8.57.1):
resolution: {integrity: sha512-rXDXR3h7cs7dy9RNpUlQf80nX31XWJEyGq1tRMo+6GsO5VmTe4UTwtmonAD4ZkAsrfMVDA2wlGJ3790Ys+D49Q==}
engines: {node: '>=4'}
peerDependencies:
......@@ -2609,13 +2615,13 @@ packages:
optional: true
dependencies:
debug: 3.2.7
eslint: 8.57.0
eslint: 8.57.1
eslint-import-resolver-node: 0.3.9
transitivePeerDependencies:
- supports-color
dev: true
/eslint-plugin-import@2.29.1(eslint@8.57.0):
/eslint-plugin-import@2.29.1(eslint@8.57.1):
resolution: {integrity: sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==}
engines: {node: '>=4'}
peerDependencies:
......@@ -2631,9 +2637,9 @@ packages:
array.prototype.flatmap: 1.3.2
debug: 3.2.7
doctrine: 2.1.0
eslint: 8.57.0
eslint: 8.57.1
eslint-import-resolver-node: 0.3.9
eslint-module-utils: 2.8.1(eslint-import-resolver-node@0.3.9)(eslint@8.57.0)
eslint-module-utils: 2.8.1(eslint-import-resolver-node@0.3.9)(eslint@8.57.1)
hasown: 2.0.2
is-core-module: 2.15.0
is-glob: 4.0.3
......@@ -2649,7 +2655,7 @@ packages:
- supports-color
dev: true
/eslint-plugin-prettier@5.2.1(eslint-config-prettier@9.1.0)(eslint@8.57.0)(prettier@3.3.3):
/eslint-plugin-prettier@5.2.1(eslint-config-prettier@9.1.0)(eslint@8.57.1)(prettier@3.3.3):
resolution: {integrity: sha512-gH3iR3g4JfF+yYPaJYkN7jEl9QbweL/YfkoRlNnuIEHEz1vHVlCmWOS+eGGiRuzHQXdJFCOTxRgvju9b8VUmrw==}
engines: {node: ^14.18.0 || >=16.0.0}
peerDependencies:
......@@ -2663,14 +2669,14 @@ packages:
eslint-config-prettier:
optional: true
dependencies:
eslint: 8.57.0
eslint-config-prettier: 9.1.0(eslint@8.57.0)
eslint: 8.57.1
eslint-config-prettier: 9.1.0(eslint@8.57.1)
prettier: 3.3.3
prettier-linter-helpers: 1.0.0
synckit: 0.9.1
dev: true
/eslint-plugin-vitest@0.3.26(eslint@8.57.0)(typescript@5.5.4)(vitest@1.6.0):
/eslint-plugin-vitest@0.3.26(eslint@8.57.1)(typescript@5.5.4)(vitest@1.6.0):
resolution: {integrity: sha512-oxe5JSPgRjco8caVLTh7Ti8PxpwJdhSV0hTQAmkFcNcmy/9DnqLB/oNVRA11RmVRP//2+jIIT6JuBEcpW3obYg==}
engines: {node: ^18.0.0 || >= 20.0.0}
peerDependencies:
......@@ -2683,8 +2689,8 @@ packages:
vitest:
optional: true
dependencies:
'@typescript-eslint/utils': 7.18.0(eslint@8.57.0)(typescript@5.5.4)
eslint: 8.57.0
'@typescript-eslint/utils': 7.18.0(eslint@8.57.1)(typescript@5.5.4)
eslint: 8.57.1
vitest: 1.6.0
transitivePeerDependencies:
- supports-color
......@@ -2704,22 +2710,23 @@ packages:
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
dev: true
/eslint@8.57.0:
resolution: {integrity: sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==}
/eslint@8.57.1:
resolution: {integrity: sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
deprecated: This version is no longer supported. Please see https://eslint.org/version-support for other options.
hasBin: true
dependencies:
'@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0)
'@eslint-community/eslint-utils': 4.4.0(eslint@8.57.1)
'@eslint-community/regexpp': 4.11.0
'@eslint/eslintrc': 2.1.4
'@eslint/js': 8.57.0
'@humanwhocodes/config-array': 0.11.14
'@eslint/js': 8.57.1
'@humanwhocodes/config-array': 0.13.0
'@humanwhocodes/module-importer': 1.0.1
'@nodelib/fs.walk': 1.2.8
'@ungap/structured-clone': 1.2.0
ajv: 6.12.6
chalk: 4.1.2
cross-spawn: 7.0.3
cross-spawn: 7.0.6
debug: 4.3.6
doctrine: 3.0.0
escape-string-regexp: 4.0.0
......@@ -2859,7 +2866,7 @@ packages:
resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==}
engines: {node: '>=16.17'}
dependencies:
cross-spawn: 7.0.3
cross-spawn: 7.0.6
get-stream: 8.0.1
human-signals: 5.0.0
is-stream: 3.0.0
......@@ -3011,7 +3018,7 @@ packages:
resolution: {integrity: sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==}
engines: {node: '>=14'}
dependencies:
cross-spawn: 7.0.3
cross-spawn: 7.0.6
signal-exit: 4.1.0
dev: true
......
# @cef-ebsi/vcdm1.1-trusted-nodes-list-schema
![EBSI Logo](https://ec.europa.eu/digital-building-blocks/sites/images/logo/default-space-logo.svg)
# @cef-ebsi/vcdm1.1-trusted-nodes-list-schema
> EBSI Trusted Nodes List
>
> Schema of an EBSI Trusted Nodes List
The schema is published to the [Trusted Schemas Registry](https://hub.ebsi.eu/apis/pilot/trusted-schemas-registry) with the IDs:
- `0xbd2f371da8965fb6adecdd57b7ed2a899728fec9666fde76ec017765e2b9a077` (hexadecimal)
- `zDjVp7fDTKbhqFUuCSQ7tvxGMPjns8KeyqfMSFUREuyq8` (multibase base58btc)
## Table of Contents
- [JSON Schema](#json-schema)
- [Installation](#installation)
- [Usage](#usage)
- [License](#license)
## JSON Schema
```json
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"title": "EBSI Trusted Nodes List",
"description": "Schema of an EBSI Trusted Nodes List",
"type": "object",
"allOf": [
{
"$ref": "./node_modules/@cef-ebsi/vcdm1.1-attestation-schema/schema.json"
},
{
"properties": {
"type": {
"description": "Full type chain, used to identify the credential base types",
"type": "array",
"items": {
"type": "string"
},
"contains": {
"type": "string",
"const": "TrustedNodesList"
},
"uniqueItems": true
},
"credentialSubject": {
"description": "Defines additional information about the Trusted Nodes List",
"type": "object",
"properties": {
"id": {
"description": "DID of Service Ops Manager who approved the Trusted Nodes List",
"type": "string",
"format": "uri"
},
"environment": {
"description": "Defines the environment for which the Trusted Nodes List is valid",
"type": "string",
"enum": ["test", "pilot", "conformance", "preprod", "prod"]
},
"chainId": {
"description": "Defines the chain ID, which is part of the transaction signing process to protect against transaction replay attacks",
"type": "number"
},
"version": {
"description": "Defines the version of the Trusted Nodes List. First version MUST be 1",
"type": "number"
},
"nodesTotal": {
"description": "Defines the total number of nodes in the list",
"type": "number"
},
"nodes": {
"description": "Defines the list of nodes",
"type": "array",
"items": {
"type": "object",
"properties": {
"apis": {
"description": "MUST be a valid domain name starting with https://api-{environment}.ebsi. On production, \"-{environment}\" is skipped. The URL will therefore start with \"https://api.ebsi.\"",
"type": "string",
"format": "uri"
},
"apps": {
"description": "MUST be a valid domain name starting with https://app-{environment}.ebsi. On production, \"-{environment}\" is skipped. The URL will therefore start with \"https://app.ebsi.\"",
"type": "string",
"format": "uri"
},
"explorer": {
"description": "MUST be a valid domain name starting with https://blockexplorer-{environment}.ebsi. On production, \"-{environment}\" is skipped. The URL will therefore start with \"https://blockexplorer.ebsi.\"",
"type": "string",
"format": "uri"
},
"country": {
"description": "MUST be a three-letter country code as per ISO 3166-1 alpha-3",
"type": "string",
"minLength": 3,
"maxLength": 3
}
},
"required": ["apis", "apps", "country"]
}
}
},
"required": [
"id",
"environment",
"chainId",
"version",
"nodesTotal",
"nodes"
]
}
},
"required": ["credentialSubject", "termsOfUse"]
}
]
}
```
## Installation
```sh
# with npm
npm add @cef-ebsi/vcdm1.1-trusted-nodes-list-schema@0.0.0
# with Yarn
yarn add @cef-ebsi/vcdm1.1-trusted-nodes-list-schema@0.0.0
# with pnpm
pnpm add @cef-ebsi/vcdm1.1-trusted-nodes-list-schema@0.0.0
```
## Usage
The package exports the schema and its metadata as JavaScript objects:
```js
import { schema, metadata } from "@cef-ebsi/vcdm1.1-trusted-nodes-list-schema";
// you can now use the schema and metadata
```
In addition, the package exports a TypeScript type corresponding to the schema:
```ts
import type { EBSITrustedNodesList } from "@cef-ebsi/vcdm1.1-trusted-nodes-list-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:
- <https://joinup.ec.europa.eu/page/eupl-text-11-12>
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.
{
"@context": ["https://www.w3.org/2018/credentials/v1"],
"id": "urn:uuid:8568b525-a24e-4bc0-9d97-6a8459ec0130",
"type": ["VerifiableCredential", "VerifiableAttestation", "TrustedNodesList"],
"issuer": "did:ebsi:00001234",
"issuanceDate": "2021-11-01T00:00:00Z",
"validFrom": "2021-11-01T00:00:00Z",
"issued": "2021-11-01T00:00:00Z",
"credentialSubject": {
"id": "did:ebsi:00005678",
"environment": "pilot",
"chainId": 6179,
"version": 1,
"nodesTotal": 2,
"nodes": [
{
"apis": "https://api-pilot.ebsi.stsisp.ro",
"apps": "https://app-pilot.ebsi.stsisp.ro",
"explorer": "https://blockexplorer-pilot.ebsi.stsisp.ro",
"country": "rou"
},
{
"apis": "https://api-pilot.ebsi.fnmt.es",
"apps": "https://app-pilot.ebsi.fnmt.es",
"country": "esp"
}
]
},
"termsOfUse": [
{
"id": "ebsi:pilot:trusted-issuers-registry:/issuers/did:ebsi:00001234/attributes/b40fd9b404418a44d2d9911377a03130dde450eb546c755b5b80acd782902e6d",
"type": "IssuanceCertificate"
}
],
"credentialSchema": {
"id": "ebsi:pilot:trusted-schemas-registry:/schemas/zDjVp7fDTKbhqFUuCSQ7tvxGMPjns8KeyqfMSFUREuyq8",
"type": "FullJsonSchemaValidator2021"
}
}
{
"name": "@cef-ebsi/vcdm1.1-trusted-nodes-list-schema",
"version": "0.0.0",
"description": "EBSI Trusted Nodes List (VCDM 1.1)",
"license": "EUPL-1.2",
"publishConfig": {
"access": "public"
},
"repository": {
"type": "git",
"url": "https://code.europa.eu/ebsi/json-schema.git",
"directory": "schemas/vcdm1.1/trusted-nodes-list"
},
"type": "module",
"exports": "./dist/index.js",
"types": "./dist/index.d.ts",
"sideEffects": false,
"files": [
"dist",
"examples",
"schema.json",
"schema.metadata.json"
],
"dependencies": {
"@cef-ebsi/vcdm1.1-attestation-schema": "workspace:*"
}
}
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"title": "EBSI Trusted Nodes List",
"description": "Schema of an EBSI Trusted Nodes List",
"type": "object",
"allOf": [
{
"$ref": "./node_modules/@cef-ebsi/vcdm1.1-attestation-schema/schema.json"
},
{
"properties": {
"type": {
"description": "Full type chain, used to identify the credential base types",
"type": "array",
"items": {
"type": "string"
},
"contains": {
"type": "string",
"const": "TrustedNodesList"
},
"uniqueItems": true
},
"credentialSubject": {
"description": "Defines additional information about the Trusted Nodes List",
"type": "object",
"properties": {
"id": {
"description": "DID of Service Ops Manager who approved the Trusted Nodes List",
"type": "string",
"format": "uri"
},
"environment": {
"description": "Defines the environment for which the Trusted Nodes List is valid",
"type": "string",
"enum": ["test", "pilot", "conformance", "preprod", "prod"]
},
"chainId": {
"description": "Defines the chain ID, which is part of the transaction signing process to protect against transaction replay attacks",
"type": "number"
},
"version": {
"description": "Defines the version of the Trusted Nodes List. First version MUST be 1",
"type": "number"
},
"nodesTotal": {
"description": "Defines the total number of nodes in the list",
"type": "number"
},
"nodes": {
"description": "Defines the list of nodes",
"type": "array",
"items": {
"type": "object",
"properties": {
"apis": {
"description": "MUST be a valid domain name starting with https://api-{environment}.ebsi. On production, \"-{environment}\" is skipped. The URL will therefore start with \"https://api.ebsi.\"",
"type": "string",
"format": "uri"
},
"apps": {
"description": "MUST be a valid domain name starting with https://app-{environment}.ebsi. On production, \"-{environment}\" is skipped. The URL will therefore start with \"https://app.ebsi.\"",
"type": "string",
"format": "uri"
},
"explorer": {
"description": "MUST be a valid domain name starting with https://blockexplorer-{environment}.ebsi. On production, \"-{environment}\" is skipped. The URL will therefore start with \"https://blockexplorer.ebsi.\"",
"type": "string",
"format": "uri"
},
"country": {
"description": "MUST be a three-letter country code as per ISO 3166-1 alpha-3",
"type": "string",
"minLength": 3,
"maxLength": 3
}
},
"required": ["apis", "apps", "country"]
}
}
},
"required": [
"id",
"environment",
"chainId",
"version",
"nodesTotal",
"nodes"
]
}
},
"required": ["credentialSubject", "termsOfUse"]
}
]
}
{
"vcdm": "1.1",
"id": {
"base16": "0xbd2f371da8965fb6adecdd57b7ed2a899728fec9666fde76ec017765e2b9a077",
"multibase_base58btc": "zDjVp7fDTKbhqFUuCSQ7tvxGMPjns8KeyqfMSFUREuyq8"
},
"verification": "Documents",
"context": "General"
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment