diff --git a/manifest.json b/manifest.json index a53d78a235d9129db9f894a9277e41890e1018d1..a8019e8bc51840fbe8d7db0aa677e5f5d59d0036 100644 --- a/manifest.json +++ b/manifest.json @@ -71,6 +71,18 @@ "verification": "Documents & Products", "context": "General" }, + { + "name": "@cef-ebsi/vcdm1.1-trusted-nodes-list-schema", + "version": "1.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", @@ -361,11 +373,11 @@ }, { "name": "@cef-ebsi/vcdm1.1-vid-legal-entity-schema", - "version": "1.3.0", + "version": "1.4.0", "title": "EBSI Legal Entity Verifiable ID", "description": "Schema of an EBSI Verifiable ID for a legal entity", - "idBase16": "0x546b382282690a3334470d000c2ba230e07be85c0051d0d301073f0437646e31", - "idBase58": "z6gY5ApNP4EYBDo9rsC5uyu8pxXyAxWFMoKKX4boy2zpY", + "idBase16": "0x32e9ef7b96c89b72a86cbfc82e434fb319efd7442f4702a93fe368077abdb3f4", + "idBase58": "z4RkHAFZirc3Ad24W9yoqq161wUeEDpRecLihzGducQUb", "file": "schemas/vcdm1.1/vid/legal-entity/schema.json", "vcdm": "1.1", "verification": "Documents", @@ -457,11 +469,11 @@ }, { "name": "@cef-ebsi/vcdm2.0-vid-legal-entity-schema", - "version": "1.2.0", + "version": "1.3.0", "title": "EBSI Legal Entity Verifiable ID", "description": "Schema of an EBSI Verifiable ID for a legal entity", - "idBase16": "0x69b4db34bfd77058e719c9f5f559d12bc6577152c4572da4ffc7a9f190955adc", - "idBase58": "z87dkzVddhQ16vN2pKaWhJDnVWAJ8F9w5G2F1H9RtvBm5", + "idBase16": "0x48a19a25bac220ff78228a316e87d8b4873888101a32a3c655cda4ab9f783987", + "idBase58": "z5tXH1Rn8ANFmNtmyS3jrhqVwiVnhvkpMMvpbLT3BMkRC", "file": "schemas/vcdm2.0/vid/legal-entity/schema.json", "vcdm": "2.0", "verification": "Documents", diff --git a/package.json b/package.json index 054827dd675dbafcda1f4224a740907a0385eaee..e2cb40a1e368dc1fa6cc9de4ce4848206a3e7524 100644 --- a/package.json +++ b/package.json @@ -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" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 94d1498bd2fe23a3ceceb04fdc269395bb1a6775..5be6d2b0c9e0fa03c720ff5a2f701c187150089d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -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 diff --git a/schemas/vcdm1.1/trusted-nodes-list/CHANGELOG.md b/schemas/vcdm1.1/trusted-nodes-list/CHANGELOG.md new file mode 100644 index 0000000000000000000000000000000000000000..69c9d4b7ea80687a32f2c4be14bd571bf2765962 --- /dev/null +++ b/schemas/vcdm1.1/trusted-nodes-list/CHANGELOG.md @@ -0,0 +1,7 @@ +# @cef-ebsi/vcdm1.1-trusted-nodes-list-schema + +## 1.0.0 + +### Major Changes + +- a968806: Create initial version of the EBSI Trusted Nodes List schema. diff --git a/schemas/vcdm1.1/trusted-nodes-list/README.md b/schemas/vcdm1.1/trusted-nodes-list/README.md new file mode 100644 index 0000000000000000000000000000000000000000..21cfa68f41416fe34fc5edb0c7d903943263f4d6 --- /dev/null +++ b/schemas/vcdm1.1/trusted-nodes-list/README.md @@ -0,0 +1,159 @@ + + +# @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@1.0.0 + +# with Yarn +yarn add @cef-ebsi/vcdm1.1-trusted-nodes-list-schema@1.0.0 + +# with pnpm +pnpm add @cef-ebsi/vcdm1.1-trusted-nodes-list-schema@1.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. diff --git a/schemas/vcdm1.1/trusted-nodes-list/examples/tnl.json b/schemas/vcdm1.1/trusted-nodes-list/examples/tnl.json new file mode 100644 index 0000000000000000000000000000000000000000..bdd97699ed8517d2d2530476063f5b93631fd598 --- /dev/null +++ b/schemas/vcdm1.1/trusted-nodes-list/examples/tnl.json @@ -0,0 +1,39 @@ +{ + "@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" + } +} diff --git a/schemas/vcdm1.1/trusted-nodes-list/package.json b/schemas/vcdm1.1/trusted-nodes-list/package.json new file mode 100644 index 0000000000000000000000000000000000000000..0cdd59b866eabe3b58b62756ff4486d9d3cbe5be --- /dev/null +++ b/schemas/vcdm1.1/trusted-nodes-list/package.json @@ -0,0 +1,27 @@ +{ + "name": "@cef-ebsi/vcdm1.1-trusted-nodes-list-schema", + "version": "1.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:*" + } +} diff --git a/schemas/vcdm1.1/trusted-nodes-list/schema.json b/schemas/vcdm1.1/trusted-nodes-list/schema.json new file mode 100644 index 0000000000000000000000000000000000000000..d03106d199c845413eef6d7d609deede32a0ed7a --- /dev/null +++ b/schemas/vcdm1.1/trusted-nodes-list/schema.json @@ -0,0 +1,95 @@ +{ + "$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"] + } + ] +} diff --git a/schemas/vcdm1.1/trusted-nodes-list/schema.metadata.json b/schemas/vcdm1.1/trusted-nodes-list/schema.metadata.json new file mode 100644 index 0000000000000000000000000000000000000000..879098471f19a2259e47a2c2227f311f72c0457b --- /dev/null +++ b/schemas/vcdm1.1/trusted-nodes-list/schema.metadata.json @@ -0,0 +1,9 @@ +{ + "vcdm": "1.1", + "id": { + "base16": "0xbd2f371da8965fb6adecdd57b7ed2a899728fec9666fde76ec017765e2b9a077", + "multibase_base58btc": "zDjVp7fDTKbhqFUuCSQ7tvxGMPjns8KeyqfMSFUREuyq8" + }, + "verification": "Documents", + "context": "General" +} diff --git a/schemas/vcdm1.1/vid/legal-entity/CHANGELOG.md b/schemas/vcdm1.1/vid/legal-entity/CHANGELOG.md index 2fc6cab3d98634231fcc2dacc67291b9c4456a70..7e36f7f7e195ba268ea41d3df525659241f49b59 100644 --- a/schemas/vcdm1.1/vid/legal-entity/CHANGELOG.md +++ b/schemas/vcdm1.1/vid/legal-entity/CHANGELOG.md @@ -1,5 +1,11 @@ # @cef-ebsi/vcdm1.1-vid-legal-entity-schema +## 1.4.0 + +### Minor Changes + +- f2d2a12: Add optional `euid` property to `credentialSubject`. + ## 1.3.0 ### Minor Changes diff --git a/schemas/vcdm1.1/vid/legal-entity/README.md b/schemas/vcdm1.1/vid/legal-entity/README.md index 19027d10b84437f6927bf300937e03251e69cf7c..53d40c09fb82955b23a8c8ff996e750edfeeddc5 100644 --- a/schemas/vcdm1.1/vid/legal-entity/README.md +++ b/schemas/vcdm1.1/vid/legal-entity/README.md @@ -8,8 +8,8 @@ The schema is published to the [Trusted Schemas Registry](https://hub.ebsi.eu/apis/pilot/trusted-schemas-registry) with the IDs: -- `0x546b382282690a3334470d000c2ba230e07be85c0051d0d301073f0437646e31` (hexadecimal) -- `z6gY5ApNP4EYBDo9rsC5uyu8pxXyAxWFMoKKX4boy2zpY` (multibase base58btc) +- `0x32e9ef7b96c89b72a86cbfc82e434fb319efd7442f4702a93fe368077abdb3f4` (hexadecimal) +- `z4RkHAFZirc3Ad24W9yoqq161wUeEDpRecLihzGducQUb` (multibase base58btc) ## Table of Contents @@ -41,6 +41,10 @@ The schema is published to the [Trusted Schemas Registry](https://hub.ebsi.eu/ap "type": "string", "format": "uri" }, + "euid": { + "description": "European Unique Identifier, for companies operating across multiple EU countries.", + "type": "string" + }, "legalPersonIdentifier": { "description": "National/Legal Identifier of Credential Subject (constructed by the sending Member State in accordance with the technical specifications for the purposes of cross-border identification and which is as persistent as possible in time)", "type": "string" @@ -94,13 +98,13 @@ The schema is published to the [Trusted Schemas Registry](https://hub.ebsi.eu/ap ```sh # with npm -npm add @cef-ebsi/vcdm1.1-vid-legal-entity-schema@1.3.0 +npm add @cef-ebsi/vcdm1.1-vid-legal-entity-schema@1.4.0 # with Yarn -yarn add @cef-ebsi/vcdm1.1-vid-legal-entity-schema@1.3.0 +yarn add @cef-ebsi/vcdm1.1-vid-legal-entity-schema@1.4.0 # with pnpm -pnpm add @cef-ebsi/vcdm1.1-vid-legal-entity-schema@1.3.0 +pnpm add @cef-ebsi/vcdm1.1-vid-legal-entity-schema@1.4.0 ``` ## Usage diff --git a/schemas/vcdm1.1/vid/legal-entity/package.json b/schemas/vcdm1.1/vid/legal-entity/package.json index 0029a14973d6335c8c9b71f68b37748a222b49e6..26255fd47cf9d513d7a3a07af7804ccfb48594b4 100644 --- a/schemas/vcdm1.1/vid/legal-entity/package.json +++ b/schemas/vcdm1.1/vid/legal-entity/package.json @@ -1,6 +1,6 @@ { "name": "@cef-ebsi/vcdm1.1-vid-legal-entity-schema", - "version": "1.3.0", + "version": "1.4.0", "description": "EBSI Legal Entity Verifiable ID (VCDM 1.1)", "license": "EUPL-1.2", "publishConfig": { diff --git a/schemas/vcdm1.1/vid/legal-entity/schema.json b/schemas/vcdm1.1/vid/legal-entity/schema.json index 9b42914f412dc0609f764a2a6eb41d7501b4c6c6..44147a2452ef3d6bce9f555f5e466686d391facb 100644 --- a/schemas/vcdm1.1/vid/legal-entity/schema.json +++ b/schemas/vcdm1.1/vid/legal-entity/schema.json @@ -18,6 +18,10 @@ "type": "string", "format": "uri" }, + "euid": { + "description": "European Unique Identifier, for companies operating across multiple EU countries.", + "type": "string" + }, "legalPersonIdentifier": { "description": "National/Legal Identifier of Credential Subject (constructed by the sending Member State in accordance with the technical specifications for the purposes of cross-border identification and which is as persistent as possible in time)", "type": "string" diff --git a/schemas/vcdm1.1/vid/legal-entity/schema.metadata.json b/schemas/vcdm1.1/vid/legal-entity/schema.metadata.json index e0ba5ff45f8d77d0eca2d75dfeea2a8140139424..b59dd1267551097d141cb432115a9c052dff2915 100644 --- a/schemas/vcdm1.1/vid/legal-entity/schema.metadata.json +++ b/schemas/vcdm1.1/vid/legal-entity/schema.metadata.json @@ -1,8 +1,8 @@ { "vcdm": "1.1", "id": { - "base16": "0x546b382282690a3334470d000c2ba230e07be85c0051d0d301073f0437646e31", - "multibase_base58btc": "z6gY5ApNP4EYBDo9rsC5uyu8pxXyAxWFMoKKX4boy2zpY" + "base16": "0x32e9ef7b96c89b72a86cbfc82e434fb319efd7442f4702a93fe368077abdb3f4", + "multibase_base58btc": "z4RkHAFZirc3Ad24W9yoqq161wUeEDpRecLihzGducQUb" }, "verification": "Documents", "context": "Education and lifelong learning" diff --git a/schemas/vcdm2.0/vid/legal-entity/CHANGELOG.md b/schemas/vcdm2.0/vid/legal-entity/CHANGELOG.md index e369664f8296515690ffdfc304bc7f8af4c284ad..dbda2e9e11108c6ea3da0fd2666e1883d7d1aab0 100644 --- a/schemas/vcdm2.0/vid/legal-entity/CHANGELOG.md +++ b/schemas/vcdm2.0/vid/legal-entity/CHANGELOG.md @@ -1,5 +1,11 @@ # @cef-ebsi/vcdm2.0-vid-legal-entity-schema +## 1.3.0 + +### Minor Changes + +- f2d2a12: Add optional `euid` property to `credentialSubject`. + ## 1.2.0 ### Minor Changes diff --git a/schemas/vcdm2.0/vid/legal-entity/README.md b/schemas/vcdm2.0/vid/legal-entity/README.md index 038abd5d6129c308c2fb2a045e31b4f952b6a0f3..925e27b20c444e925b0d8437e725a0366df98e46 100644 --- a/schemas/vcdm2.0/vid/legal-entity/README.md +++ b/schemas/vcdm2.0/vid/legal-entity/README.md @@ -8,8 +8,8 @@ The schema is published to the [Trusted Schemas Registry](https://hub.ebsi.eu/apis/pilot/trusted-schemas-registry) with the IDs: -- `0x69b4db34bfd77058e719c9f5f559d12bc6577152c4572da4ffc7a9f190955adc` (hexadecimal) -- `z87dkzVddhQ16vN2pKaWhJDnVWAJ8F9w5G2F1H9RtvBm5` (multibase base58btc) +- `0x48a19a25bac220ff78228a316e87d8b4873888101a32a3c655cda4ab9f783987` (hexadecimal) +- `z5tXH1Rn8ANFmNtmyS3jrhqVwiVnhvkpMMvpbLT3BMkRC` (multibase base58btc) ## Table of Contents @@ -41,6 +41,10 @@ The schema is published to the [Trusted Schemas Registry](https://hub.ebsi.eu/ap "type": "string", "format": "uri" }, + "euid": { + "description": "European Unique Identifier, for companies operating across multiple EU countries.", + "type": "string" + }, "legalPersonIdentifier": { "description": "National/Legal Identifier of Credential Subject (constructed by the sending Member State in accordance with the technical specifications for the purposes of cross-border identification and which is as persistent as possible in time)", "type": "string" @@ -106,13 +110,13 @@ The schema is published to the [Trusted Schemas Registry](https://hub.ebsi.eu/ap ```sh # with npm -npm add @cef-ebsi/vcdm2.0-vid-legal-entity-schema@1.2.0 +npm add @cef-ebsi/vcdm2.0-vid-legal-entity-schema@1.3.0 # with Yarn -yarn add @cef-ebsi/vcdm2.0-vid-legal-entity-schema@1.2.0 +yarn add @cef-ebsi/vcdm2.0-vid-legal-entity-schema@1.3.0 # with pnpm -pnpm add @cef-ebsi/vcdm2.0-vid-legal-entity-schema@1.2.0 +pnpm add @cef-ebsi/vcdm2.0-vid-legal-entity-schema@1.3.0 ``` ## Usage diff --git a/schemas/vcdm2.0/vid/legal-entity/package.json b/schemas/vcdm2.0/vid/legal-entity/package.json index 3956ab8f91e221b8ed48ab60fef900d71d018153..14697630dad7b61897f07161385160e66a415d3e 100644 --- a/schemas/vcdm2.0/vid/legal-entity/package.json +++ b/schemas/vcdm2.0/vid/legal-entity/package.json @@ -1,6 +1,6 @@ { "name": "@cef-ebsi/vcdm2.0-vid-legal-entity-schema", - "version": "1.2.0", + "version": "1.3.0", "description": "EBSI Legal Entity Verifiable ID (VCDM 2.0)", "license": "EUPL-1.2", "publishConfig": { diff --git a/schemas/vcdm2.0/vid/legal-entity/schema.json b/schemas/vcdm2.0/vid/legal-entity/schema.json index 94b334aadf40926364a13f736abb22eba6c29c25..57c197d15b08842557b4176a370a7639dc8bef2d 100644 --- a/schemas/vcdm2.0/vid/legal-entity/schema.json +++ b/schemas/vcdm2.0/vid/legal-entity/schema.json @@ -18,6 +18,10 @@ "type": "string", "format": "uri" }, + "euid": { + "description": "European Unique Identifier, for companies operating across multiple EU countries.", + "type": "string" + }, "legalPersonIdentifier": { "description": "National/Legal Identifier of Credential Subject (constructed by the sending Member State in accordance with the technical specifications for the purposes of cross-border identification and which is as persistent as possible in time)", "type": "string" diff --git a/schemas/vcdm2.0/vid/legal-entity/schema.metadata.json b/schemas/vcdm2.0/vid/legal-entity/schema.metadata.json index 18fddcdf0929f9aed9903c612e3a13a29b0f1091..b6be6317f0bf6d9f0cf15df5273ac3102fd6dd4b 100644 --- a/schemas/vcdm2.0/vid/legal-entity/schema.metadata.json +++ b/schemas/vcdm2.0/vid/legal-entity/schema.metadata.json @@ -1,8 +1,8 @@ { "vcdm": "2.0", "id": { - "base16": "0x69b4db34bfd77058e719c9f5f559d12bc6577152c4572da4ffc7a9f190955adc", - "multibase_base58btc": "z87dkzVddhQ16vN2pKaWhJDnVWAJ8F9w5G2F1H9RtvBm5" + "base16": "0x48a19a25bac220ff78228a316e87d8b4873888101a32a3c655cda4ab9f783987", + "multibase_base58btc": "z5tXH1Rn8ANFmNtmyS3jrhqVwiVnhvkpMMvpbLT3BMkRC" }, "verification": "Documents", "context": "General"