From dc800830a434ba6d16c26c5b1cd6ea13fb1f1dff Mon Sep 17 00:00:00 2001 From: Simonas Karuzas Date: Mon, 23 Nov 2020 16:42:28 +0200 Subject: [PATCH] feat: Generating plugin schema --- package.json | 4 +- packages/daf-cli/src/schema.ts | 39 +- packages/daf-core/api/daf-core.api.json | 42 +- packages/daf-core/api/daf-core.api.md | 6 +- packages/daf-core/package.json | 4 +- packages/daf-core/plugin.credential.json | 1659 ----------------- packages/daf-core/plugin.schema.json | 1640 ++++++++++++++++ packages/daf-core/src/index.ts | 4 +- .../daf-did-comm/api/daf-did-comm.api.json | 6 +- packages/daf-did-comm/api/daf-did-comm.api.md | 2 +- packages/daf-did-comm/package.json | 4 +- packages/daf-did-comm/plugin.credential.json | 330 ---- packages/daf-did-comm/plugin.schema.json | 311 +++ packages/daf-did-comm/src/action-handler.ts | 4 +- packages/daf-did-comm/src/index.ts | 4 +- .../src/identity-manager.ts | 4 +- packages/daf-key-manager/src/key-manager.ts | 4 +- .../src/message-handler.ts | 4 +- .../daf-resolver-universal/src/resolver.ts | 4 +- packages/daf-resolver/src/resolver.ts | 4 +- .../api/daf-selective-disclosure.api.json | 6 +- .../api/daf-selective-disclosure.api.md | 2 +- .../daf-selective-disclosure/package.json | 4 +- .../plugin.credential.json | 480 ----- .../plugin.schema.json | 461 +++++ .../src/action-handler.ts | 4 +- .../daf-selective-disclosure/src/index.ts | 4 +- packages/daf-typeorm/api/daf-typeorm.api.json | 42 +- packages/daf-typeorm/api/daf-typeorm.api.md | 6 +- packages/daf-typeorm/package.json | 4 +- packages/daf-typeorm/plugin.credential.json | 983 ---------- packages/daf-typeorm/plugin.schema.json | 964 ++++++++++ packages/daf-typeorm/src/data-store-orm.ts | 4 +- packages/daf-typeorm/src/data-store.ts | 4 +- packages/daf-typeorm/src/index.ts | 4 +- packages/daf-w3c/api/daf-w3c.api.json | 6 +- packages/daf-w3c/api/daf-w3c.api.md | 2 +- packages/daf-w3c/package.json | 4 +- packages/daf-w3c/plugin.credential.json | 348 ---- packages/daf-w3c/plugin.schema.json | 329 ++++ packages/daf-w3c/src/action-handler.ts | 4 +- packages/daf-w3c/src/index.ts | 4 +- 42 files changed, 3812 insertions(+), 3936 deletions(-) delete mode 100644 packages/daf-core/plugin.credential.json create mode 100644 packages/daf-core/plugin.schema.json delete mode 100644 packages/daf-did-comm/plugin.credential.json create mode 100644 packages/daf-did-comm/plugin.schema.json delete mode 100644 packages/daf-selective-disclosure/plugin.credential.json create mode 100644 packages/daf-selective-disclosure/plugin.schema.json delete mode 100644 packages/daf-typeorm/plugin.credential.json create mode 100644 packages/daf-typeorm/plugin.schema.json delete mode 100644 packages/daf-w3c/plugin.credential.json create mode 100644 packages/daf-w3c/plugin.schema.json diff --git a/package.json b/package.json index c014af3fc..b33dd0afc 100644 --- a/package.json +++ b/package.json @@ -2,11 +2,11 @@ "name": "daf", "private": true, "scripts": { - "build": "yarn lerna run build && yarn extract-api && yarn create-plugin-credential && yarn docs:api && yarn docs:examples && yarn docs:clean-temp && yarn prettier:examples", + "build": "yarn lerna run build && yarn extract-api && yarn generate-plugin-schema && yarn docs:api && yarn docs:examples && yarn docs:clean-temp && yarn prettier:examples", "publish": "lerna publish", "bootstrap": "lerna bootstrap", "extract-api": "lerna run extract-api", - "create-plugin-credential": "lerna run create-plugin-credential", + "generate-plugin-schema": "lerna run generate-plugin-schema", "docs:examples": "ts-node --project packages/tsconfig.settings.json ./scripts/extract-examples.ts", "docs:api": "ts-node ./scripts/generate-docs.ts", "docs:reference": "api-documenter markdown -i ./temp -o ./docs/api", diff --git a/packages/daf-cli/src/schema.ts b/packages/daf-cli/src/schema.ts index 9d041d09f..f1635b640 100644 --- a/packages/daf-cli/src/schema.ts +++ b/packages/daf-cli/src/schema.ts @@ -84,19 +84,16 @@ function getReference(response: string): OpenAPIV3.ReferenceObject | OpenAPIV3.S } program - .command('create-plugin-credential') - .description('Create plugin credential') + .command('generate-plugin-schema') + .description('Generate plugin schema') .option('-c, --extractorConfig ', 'API Extractor config file', './api-extractor.json') .option( '-p, --packageConfig ', 'package.json file containing DAF plugin interface config', './package.json', ) - .option('-i, --issuer ', 'Schema credential issuer') .action(async (options) => { - const agent = getAgent(program.config) - const apiExtractorJsonPath: string = resolve(options.extractorConfig) const extractorConfig: ExtractorConfig = ExtractorConfig.loadFileAndPrepare(apiExtractorJsonPath) @@ -114,9 +111,7 @@ program } const packageConfig = require(resolve(options.packageConfig)) - const credentialSubject: any = { - interfaces: {}, - } + const interfaces: any = {} for (const pluginInterfaceName in packageConfig.daf.pluginInterfaces) { const entryFile = packageConfig.daf.pluginInterfaces[pluginInterfaceName] @@ -182,34 +177,10 @@ program } } - credentialSubject.interfaces[pluginInterfaceName] = api - } - - let issuer: IIdentity - if (options.did) { - issuer = await agent.identityManagerGetIdentity({ did: options.did }) - if (!issuer) { - throw Error('DID not found ' + options.did) - } - } else { - issuer = await agent.identityManagerGetOrCreateIdentity({ - alias: 'default', - }) + interfaces[pluginInterfaceName] = api } - const verifiableCredential = await agent.createVerifiableCredential({ - credential: { - issuer: { id: issuer.did }, - '@context': ['https://www.w3.org/2018/credentials/v1'], - type: ['VerifiableCredential', 'AgentPluginSchema'], - issuanceDate: new Date().toISOString(), - credentialSubject, - }, - proofFormat: 'jwt', - save: true, - }) - - writeFileSync(resolve('./plugin.credential.json'), JSON.stringify(verifiableCredential, null, 2)) + writeFileSync(resolve('./plugin.schema.json'), JSON.stringify(interfaces, null, 2)) }) program diff --git a/packages/daf-core/api/daf-core.api.json b/packages/daf-core/api/daf-core.api.json index 5e62f1fe3..71ba56f47 100644 --- a/packages/daf-core/api/daf-core.api.json +++ b/packages/daf-core/api/daf-core.api.json @@ -5862,27 +5862,6 @@ ], "extendsTokenRanges": [] }, - { - "kind": "Variable", - "canonicalReference": "daf-core!pluginCredential:var", - "docComment": "", - "excerptTokens": [ - { - "kind": "Content", - "text": "pluginCredential: " - }, - { - "kind": "Content", - "text": "any" - } - ], - "releaseTag": "Public", - "name": "pluginCredential", - "variableTypeTokenRange": { - "startIndex": 1, - "endIndex": 2 - } - }, { "kind": "Interface", "canonicalReference": "daf-core!RemoveContext:interface", @@ -6014,6 +5993,27 @@ ], "extendsTokenRanges": [] }, + { + "kind": "Variable", + "canonicalReference": "daf-core!schema:var", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "schema: " + }, + { + "kind": "Content", + "text": "any" + } + ], + "releaseTag": "Public", + "name": "schema", + "variableTypeTokenRange": { + "startIndex": 1, + "endIndex": 2 + } + }, { "kind": "TypeAlias", "canonicalReference": "daf-core!TAgent:type", diff --git a/packages/daf-core/api/daf-core.api.md b/packages/daf-core/api/daf-core.api.md index 462236050..b7cb2bca2 100644 --- a/packages/daf-core/api/daf-core.api.md +++ b/packages/daf-core/api/daf-core.api.md @@ -352,9 +352,6 @@ export interface IService { type: string; } -// @public (undocumented) -export const pluginCredential: any; - // @public export interface RemoveContext { // (undocumented) @@ -366,6 +363,9 @@ export interface ResolveDidArgs { didUrl: string; } +// @public (undocumented) +export const schema: any; + // @public export type TAgent = { [P in keyof T]: RemoveContext; diff --git a/packages/daf-core/package.json b/packages/daf-core/package.json index 9089d3175..c5d184cf1 100644 --- a/packages/daf-core/package.json +++ b/packages/daf-core/package.json @@ -6,7 +6,7 @@ "types": "build/index.d.ts", "scripts": { "build": "tsc", - "create-plugin-credential": "yarn daf create-plugin-credential --config=../../agent.yml" + "generate-plugin-schema": "yarn daf generate-plugin-schema" }, "daf": { "pluginInterfaces": { @@ -31,7 +31,7 @@ "files": [ "build/**/*", "src/**/*", - "plugin.credential.json", + "plugin.schema.json", "README.md", "LICENSE" ], diff --git a/packages/daf-core/plugin.credential.json b/packages/daf-core/plugin.credential.json deleted file mode 100644 index 2c5504d5e..000000000 --- a/packages/daf-core/plugin.credential.json +++ /dev/null @@ -1,1659 +0,0 @@ -{ - "credentialSubject": { - "interfaces": { - "IResolver": { - "components": { - "schemas": { - "ResolveDidArgs": { - "type": "object", - "properties": { - "didUrl": { - "type": "string", - "description": "DID URL" - } - }, - "required": [ - "didUrl" - ], - "description": "Input arguments for {@link IResolver.resolveDid | resolveDid}" - }, - "DIDDocument": { - "type": "object", - "properties": { - "@context": { - "type": "string", - "const": "https://w3id.org/did/v1" - }, - "id": { - "type": "string" - }, - "publicKey": { - "type": "array", - "items": { - "$ref": "#/components/schemas/PublicKey" - } - }, - "authentication": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Authentication" - } - }, - "uportProfile": {}, - "service": { - "type": "array", - "items": { - "$ref": "#/components/schemas/ServiceEndpoint" - } - }, - "created": { - "type": "string" - }, - "updated": { - "type": "string" - }, - "proof": { - "$ref": "#/components/schemas/LinkedDataProof" - }, - "keyAgreement": { - "type": "array", - "items": { - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/components/schemas/PublicKey" - } - ] - } - } - }, - "required": [ - "@context", - "id", - "publicKey" - ] - }, - "PublicKey": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "type": { - "type": "string" - }, - "controller": { - "type": "string" - }, - "ethereumAddress": { - "type": "string" - }, - "publicKeyBase64": { - "type": "string" - }, - "publicKeyBase58": { - "type": "string" - }, - "publicKeyHex": { - "type": "string" - }, - "publicKeyPem": { - "type": "string" - } - }, - "required": [ - "id", - "type", - "controller" - ] - }, - "Authentication": { - "type": "object", - "properties": { - "type": { - "type": "string" - }, - "publicKey": { - "type": "string" - } - }, - "required": [ - "type", - "publicKey" - ] - }, - "ServiceEndpoint": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "type": { - "type": "string" - }, - "serviceEndpoint": { - "type": "string" - }, - "description": { - "type": "string" - } - }, - "required": [ - "id", - "type", - "serviceEndpoint" - ] - }, - "LinkedDataProof": { - "type": "object", - "properties": { - "type": { - "type": "string" - }, - "created": { - "type": "string" - }, - "creator": { - "type": "string" - }, - "nonce": { - "type": "string" - }, - "signatureValue": { - "type": "string" - } - }, - "required": [ - "type", - "created", - "creator", - "nonce", - "signatureValue" - ] - } - }, - "methods": { - "resolveDid": { - "description": "Resolves DID and returns DID Document", - "arguments": { - "$ref": "#/components/schemas/ResolveDidArgs" - }, - "returnType": { - "$ref": "#/components/schemas/DIDDocument" - } - } - } - } - }, - "IKeyManager": { - "components": { - "schemas": { - "IKeyManagerCreateKeyArgs": { - "type": "object", - "properties": { - "type": { - "$ref": "#/components/schemas/TKeyType", - "description": "Key type" - }, - "kms": { - "type": "string", - "description": "Key Management System" - }, - "meta": { - "type": "object", - "description": "Optional. Key meta data" - } - }, - "required": [ - "type", - "kms" - ], - "description": "Input arguments for {@link IKeyManager.keyManagerCreateKey | keyManagerCreateKey}" - }, - "TKeyType": { - "type": "string", - "enum": [ - "Ed25519", - "Secp256k1" - ], - "description": "Cryptographic key type" - }, - "IKey": { - "type": "object", - "properties": { - "kid": { - "type": "string", - "description": "Key ID" - }, - "kms": { - "type": "string", - "description": "Key Management System" - }, - "type": { - "$ref": "#/components/schemas/TKeyType", - "description": "Key type" - }, - "publicKeyHex": { - "type": "string", - "description": "Public key" - }, - "privateKeyHex": { - "type": "string", - "description": "Optional. Private key" - }, - "meta": { - "anyOf": [ - { - "type": "object" - }, - { - "type": "null" - } - ], - "description": "Optional. Key metadata. Can be used to store auth data to access remote kms" - } - }, - "required": [ - "kid", - "kms", - "type", - "publicKeyHex" - ], - "description": "Cryptographic key" - }, - "IKeyManagerDecryptJWEArgs": { - "type": "object", - "properties": { - "kid": { - "type": "string", - "description": "Key ID" - }, - "data": { - "type": "string", - "description": "Encrypted data" - } - }, - "required": [ - "kid", - "data" - ], - "description": "Input arguments for {@link IKeyManager.keyManagerDecryptJWE | keyManagerDecryptJWE}" - }, - "IKeyManagerDeleteKeyArgs": { - "type": "object", - "properties": { - "kid": { - "type": "string", - "description": "Key ID" - } - }, - "required": [ - "kid" - ], - "description": "Input arguments for {@link IKeyManager.keyManagerDeleteKey | keyManagerDeleteKey}" - }, - "IKeyManagerEncryptJWEArgs": { - "type": "object", - "properties": { - "kid": { - "type": "string", - "description": "Key ID to use for encryption" - }, - "to": { - "type": "object", - "properties": { - "kid": { - "type": "string", - "description": "Key ID" - }, - "type": { - "$ref": "#/components/schemas/TKeyType", - "description": "Key type" - }, - "publicKeyHex": { - "type": "string", - "description": "Public key" - }, - "privateKeyHex": { - "type": "string", - "description": "Optional. Private key" - }, - "meta": { - "anyOf": [ - { - "type": "object" - }, - { - "type": "null" - } - ], - "description": "Optional. Key metadata. Can be used to store auth data to access remote kms" - } - }, - "required": [ - "kid", - "type", - "publicKeyHex" - ], - "description": "Recipient key object" - }, - "data": { - "type": "string", - "description": "Data to encrypt" - } - }, - "required": [ - "kid", - "to", - "data" - ], - "description": "Input arguments for {@link IKeyManager.keyManagerEncryptJWE | keyManagerEncryptJWE}" - }, - "IKeyManagerGetKeyArgs": { - "type": "object", - "properties": { - "kid": { - "type": "string", - "description": "Key ID" - } - }, - "required": [ - "kid" - ], - "description": "Input arguments for {@link IKeyManager.keyManagerGetKey | keyManagerGetKey}" - }, - "IKeyManagerSignEthTXArgs": { - "type": "object", - "properties": { - "kid": { - "type": "string", - "description": "Key ID" - }, - "transaction": { - "type": "object", - "description": "Ethereum transaction object" - } - }, - "required": [ - "kid", - "transaction" - ], - "description": "Input arguments for {@link IKeyManager.keyManagerSignEthTX | keyManagerSignEthTX}" - }, - "IKeyManagerSignJWTArgs": { - "type": "object", - "properties": { - "kid": { - "type": "string", - "description": "Key ID" - }, - "data": { - "type": "string", - "description": "Data to sign" - } - }, - "required": [ - "kid", - "data" - ], - "description": "Input arguments for {@link IKeyManager.keyManagerSignJWT | keyManagerSignJWT}" - }, - "EcdsaSignature": { - "type": "object", - "properties": { - "r": { - "type": "string" - }, - "s": { - "type": "string" - }, - "recoveryParam": { - "type": "number", - "const": 1 - } - }, - "required": [ - "r", - "s", - "recoveryParam" - ] - } - }, - "methods": { - "keyManagerCreateKey": { - "description": "Creates and returns a new key", - "arguments": { - "$ref": "#/components/schemas/IKeyManagerCreateKeyArgs" - }, - "returnType": { - "$ref": "#/components/schemas/IKey" - } - }, - "keyManagerDecryptJWE": { - "description": "Decrypts data", - "arguments": { - "$ref": "#/components/schemas/IKeyManagerDecryptJWEArgs" - }, - "returnType": { - "type": "string" - } - }, - "keyManagerDeleteKey": { - "description": "Deletes a key", - "arguments": { - "$ref": "#/components/schemas/IKeyManagerDeleteKeyArgs" - }, - "returnType": { - "type": "boolean" - } - }, - "keyManagerEncryptJWE": { - "description": "Encrypts data", - "arguments": { - "$ref": "#/components/schemas/IKeyManagerEncryptJWEArgs" - }, - "returnType": { - "type": "string" - } - }, - "keyManagerGetKey": { - "description": "Returns an existing key", - "arguments": { - "$ref": "#/components/schemas/IKeyManagerGetKeyArgs" - }, - "returnType": { - "$ref": "#/components/schemas/IKey" - } - }, - "keyManagerGetKeyManagementSystems": { - "description": "Lists available key management systems", - "arguments": { - "type": "object" - }, - "returnType": { - "type": "array", - "items": { - "type": "string" - } - } - }, - "keyManagerImportKey": { - "description": "Imports a created key", - "arguments": { - "$ref": "#/components/schemas/IKey" - }, - "returnType": { - "type": "boolean" - } - }, - "keyManagerSignEthTX": { - "description": "Signs Ethereum transaction", - "arguments": { - "$ref": "#/components/schemas/IKeyManagerSignEthTXArgs" - }, - "returnType": { - "type": "string" - } - }, - "keyManagerSignJWT": { - "description": "Signs JWT", - "arguments": { - "$ref": "#/components/schemas/IKeyManagerSignJWTArgs" - }, - "returnType": { - "$ref": "#/components/schemas/EcdsaSignature" - } - } - } - } - }, - "IIdentityManager": { - "components": { - "schemas": { - "IIdentityManagerAddKeyArgs": { - "type": "object", - "properties": { - "did": { - "type": "string", - "description": "DID" - }, - "key": { - "$ref": "#/components/schemas/IKey", - "description": "Key object" - }, - "options": { - "type": "object", - "description": "Optional. Identity provider specific options" - } - }, - "required": [ - "did", - "key" - ], - "description": "Input arguments for {@link IIdentityManager.identityManagerAddKey | identityManagerAddKey}" - }, - "IKey": { - "type": "object", - "properties": { - "kid": { - "type": "string", - "description": "Key ID" - }, - "kms": { - "type": "string", - "description": "Key Management System" - }, - "type": { - "$ref": "#/components/schemas/TKeyType", - "description": "Key type" - }, - "publicKeyHex": { - "type": "string", - "description": "Public key" - }, - "privateKeyHex": { - "type": "string", - "description": "Optional. Private key" - }, - "meta": { - "anyOf": [ - { - "type": "object" - }, - { - "type": "null" - } - ], - "description": "Optional. Key metadata. Can be used to store auth data to access remote kms" - } - }, - "required": [ - "kid", - "kms", - "type", - "publicKeyHex" - ], - "description": "Cryptographic key" - }, - "TKeyType": { - "type": "string", - "enum": [ - "Ed25519", - "Secp256k1" - ], - "description": "Cryptographic key type" - }, - "IIdentityManagerAddServiceArgs": { - "type": "object", - "properties": { - "did": { - "type": "string", - "description": "DID" - }, - "service": { - "$ref": "#/components/schemas/IService", - "description": "Service object" - }, - "options": { - "type": "object", - "description": "Optional. Identity provider specific options" - } - }, - "required": [ - "did", - "service" - ], - "description": "Input arguments for {@link IIdentityManager.identityManagerAddService | identityManagerAddService}" - }, - "IService": { - "type": "object", - "properties": { - "id": { - "type": "string", - "description": "ID" - }, - "type": { - "type": "string", - "description": "Service type" - }, - "serviceEndpoint": { - "type": "string", - "description": "Endpoint URL" - }, - "description": { - "type": "string", - "description": "Optional. Description" - } - }, - "required": [ - "id", - "type", - "serviceEndpoint" - ], - "description": "Identity service" - }, - "IIdentityManagerCreateIdentityArgs": { - "type": "object", - "properties": { - "alias": { - "type": "string", - "description": "Optional. Identity alias. Can be used to reference an object in an external system" - }, - "provider": { - "type": "string", - "description": "Optional. Identity provider" - }, - "kms": { - "type": "string", - "description": "Optional. Key Management System" - }, - "options": { - "type": "object", - "description": "Optional. Identity provider specific options" - } - }, - "description": "Input arguments for {@link IIdentityManager.identityManagerCreateIdentity | identityManagerCreateIdentity}" - }, - "IIdentity": { - "type": "object", - "properties": { - "did": { - "type": "string", - "description": "Decentralized identifier" - }, - "alias": { - "type": "string", - "description": "Optional. Identity alias. Can be used to reference an object in an external system" - }, - "provider": { - "type": "string", - "description": "Identity provider name" - }, - "controllerKeyId": { - "type": "string", - "description": "Controller key id" - }, - "keys": { - "type": "array", - "items": { - "$ref": "#/components/schemas/IKey" - }, - "description": "Array of managed keys" - }, - "services": { - "type": "array", - "items": { - "$ref": "#/components/schemas/IService" - }, - "description": "Array of services" - } - }, - "required": [ - "did", - "provider", - "keys", - "services" - ], - "description": "Identity interface" - }, - "IIdentityManagerDeleteIdentityArgs": { - "type": "object", - "properties": { - "did": { - "type": "string", - "description": "DID" - } - }, - "required": [ - "did" - ], - "description": "Input arguments for {@link IIdentityManager.identityManagerDeleteIdentity | identityManagerDeleteIdentity}" - }, - "IIdentityManagerGetIdentitiesArgs": { - "type": "object", - "properties": { - "alias": { - "type": "string", - "description": "Optional. Alias" - }, - "provider": { - "type": "string", - "description": "Optional. Provider" - } - }, - "description": "Input arguments for {@link IIdentityManager.identityManagerGetIdentities | identityManagerGetIdentities}" - }, - "IIdentityManagerGetIdentityArgs": { - "type": "object", - "properties": { - "did": { - "type": "string", - "description": "DID" - } - }, - "required": [ - "did" - ], - "description": "Input arguments for {@link IIdentityManager.identityManagerGetIdentity | identityManagerGetIdentity}" - }, - "IIdentityManagerGetIdentityByAliasArgs": { - "type": "object", - "properties": { - "alias": { - "type": "string", - "description": "Alias" - }, - "provider": { - "type": "string", - "description": "Optional provider" - } - }, - "required": [ - "alias" - ], - "description": "Input arguments for {@link IIdentityManager.identityManagerGetIdentityByAlias | identityManagerGetIdentityByAlias}" - }, - "IIdentityManagerGetOrCreateIdentityArgs": { - "type": "object", - "properties": { - "alias": { - "type": "string", - "description": "Identity alias. Can be used to reference an object in an external system" - }, - "provider": { - "type": "string", - "description": "Optional. Identity provider" - }, - "kms": { - "type": "string", - "description": "Optional. Key Management System" - }, - "options": { - "type": "object", - "description": "Optional. Identity provider specific options" - } - }, - "required": [ - "alias" - ], - "description": "Input arguments for {@link IIdentityManager.identityManagerGetOrCreateIdentity | identityManagerGetOrCreateIdentity}" - }, - "IIdentityManagerRemoveKeyArgs": { - "type": "object", - "properties": { - "did": { - "type": "string", - "description": "DID" - }, - "kid": { - "type": "string", - "description": "Key ID" - }, - "options": { - "type": "object", - "description": "Optional. Identity provider specific options" - } - }, - "required": [ - "did", - "kid" - ], - "description": "Input arguments for {@link IIdentityManager.identityManagerRemoveKey | identityManagerRemoveKey}" - }, - "IIdentityManagerRemoveServiceArgs": { - "type": "object", - "properties": { - "did": { - "type": "string", - "description": "DID" - }, - "id": { - "type": "string", - "description": "Service ID" - }, - "options": { - "type": "object", - "description": "Optional. Identity provider specific options" - } - }, - "required": [ - "did", - "id" - ], - "description": "Input arguments for {@link IIdentityManager.identityManagerRemoveService | identityManagerRemoveService}" - }, - "IIdentityManagerSetAliasArgs": { - "type": "object", - "properties": { - "did": { - "type": "string", - "description": "Required. DID" - }, - "alias": { - "type": "string", - "description": "Required. Identity alias" - } - }, - "required": [ - "did", - "alias" - ], - "description": "Input arguments for {@link IIdentityManager.identityManagerSetAlias | identityManagerSetAlias}" - } - }, - "methods": { - "identityManagerAddKey": { - "description": "Adds a key to a DID Document", - "arguments": { - "$ref": "#/components/schemas/IIdentityManagerAddKeyArgs" - }, - "returnType": { - "type": "object" - } - }, - "identityManagerAddService": { - "description": "Adds a service to a DID Document", - "arguments": { - "$ref": "#/components/schemas/IIdentityManagerAddServiceArgs" - }, - "returnType": { - "type": "object" - } - }, - "identityManagerCreateIdentity": { - "description": "Creates and returns a new identity", - "arguments": { - "$ref": "#/components/schemas/IIdentityManagerCreateIdentityArgs" - }, - "returnType": { - "$ref": "#/components/schemas/IIdentity" - } - }, - "identityManagerDeleteIdentity": { - "description": "Deletes identity", - "arguments": { - "$ref": "#/components/schemas/IIdentityManagerDeleteIdentityArgs" - }, - "returnType": { - "type": "boolean" - } - }, - "identityManagerGetIdentities": { - "description": "Returns a list of managed identities", - "arguments": { - "$ref": "#/components/schemas/IIdentityManagerGetIdentitiesArgs" - }, - "returnType": { - "type": "array", - "items": { - "$ref": "#/components/schemas/IIdentity" - } - } - }, - "identityManagerGetIdentity": { - "description": "Returns a specific identity", - "arguments": { - "$ref": "#/components/schemas/IIdentityManagerGetIdentityArgs" - }, - "returnType": { - "$ref": "#/components/schemas/IIdentity" - } - }, - "identityManagerGetIdentityByAlias": { - "description": "Returns a specific identity by alias", - "arguments": { - "$ref": "#/components/schemas/IIdentityManagerGetIdentityByAliasArgs" - }, - "returnType": { - "$ref": "#/components/schemas/IIdentity" - } - }, - "identityManagerGetOrCreateIdentity": { - "description": "Returns an existing identity or creates a new one for a specific alias", - "arguments": { - "$ref": "#/components/schemas/IIdentityManagerGetOrCreateIdentityArgs" - }, - "returnType": { - "$ref": "#/components/schemas/IIdentity" - } - }, - "identityManagerGetProviders": { - "description": "Returns a list of available identity providers", - "arguments": { - "type": "object" - }, - "returnType": { - "type": "array", - "items": { - "type": "string" - } - } - }, - "identityManagerImportIdentity": { - "description": "Imports identity", - "arguments": { - "$ref": "#/components/schemas/IIdentity" - }, - "returnType": { - "$ref": "#/components/schemas/IIdentity" - } - }, - "identityManagerRemoveKey": { - "description": "Removes a key from a DID Document", - "arguments": { - "$ref": "#/components/schemas/IIdentityManagerRemoveKeyArgs" - }, - "returnType": { - "type": "object" - } - }, - "identityManagerRemoveService": { - "description": "Removes a service from a DID Document", - "arguments": { - "$ref": "#/components/schemas/IIdentityManagerRemoveServiceArgs" - }, - "returnType": { - "type": "object" - } - }, - "identityManagerSetAlias": { - "description": "Sets identity alias", - "arguments": { - "$ref": "#/components/schemas/IIdentityManagerSetAliasArgs" - }, - "returnType": { - "type": "boolean" - } - } - } - } - }, - "IDataStore": { - "components": { - "schemas": { - "IDataStoreGetMessageArgs": { - "type": "object", - "properties": { - "id": { - "type": "string", - "description": "Required. Message ID" - } - }, - "required": [ - "id" - ], - "description": "Input arguments for {@link IDataStore.dataStoreGetMessage | dataStoreGetMessage}" - }, - "IMessage": { - "type": "object", - "properties": { - "id": { - "type": "string", - "description": "Unique message ID" - }, - "type": { - "type": "string", - "description": "Message type" - }, - "createdAt": { - "type": "string", - "description": "Optional. Creation date (ISO 8601)" - }, - "expiresAt": { - "type": "string", - "description": "Optional. Expiration date (ISO 8601)" - }, - "threadId": { - "type": "string", - "description": "Optional. Thread ID" - }, - "raw": { - "type": "string", - "description": "Optional. Original message raw data" - }, - "data": { - "anyOf": [ - { - "type": "object" - }, - { - "type": "null" - } - ], - "description": "Optional. Parsed data" - }, - "replyTo": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Optional. List of DIDs to reply to" - }, - "replyUrl": { - "type": "string", - "description": "Optional. URL to post a reply message to" - }, - "from": { - "type": "string", - "description": "Optional. Sender DID" - }, - "to": { - "type": "string", - "description": "Optional. Recipient DID" - }, - "metaData": { - "anyOf": [ - { - "type": "array", - "items": { - "$ref": "#/components/schemas/IMetaData" - } - }, - { - "type": "null" - } - ], - "description": "Optional. Array of message metadata" - }, - "credentials": { - "type": "array", - "items": { - "$ref": "#/components/schemas/VerifiableCredential" - }, - "description": "Optional. Array of attached verifiable credentials" - }, - "presentations": { - "type": "array", - "items": { - "$ref": "#/components/schemas/VerifiablePresentation" - }, - "description": "Optional. Array of attached verifiable presentations" - } - }, - "required": [ - "id", - "type" - ], - "description": "DIDComm message" - }, - "IMetaData": { - "type": "object", - "properties": { - "type": { - "type": "string", - "description": "Type" - }, - "value": { - "type": "string", - "description": "Optional. Value" - } - }, - "required": [ - "type" - ], - "description": "Message meta data" - }, - "VerifiableCredential": { - "type": "object", - "properties": { - "@context": { - "type": "array", - "items": { - "type": "string" - } - }, - "id": { - "type": "string" - }, - "type": { - "type": "array", - "items": { - "type": "string" - } - }, - "issuer": { - "type": "object", - "properties": { - "id": { - "type": "string" - } - }, - "required": [ - "id" - ] - }, - "issuanceDate": { - "type": "string" - }, - "expirationDate": { - "type": "string" - }, - "credentialSubject": { - "type": "object", - "properties": { - "id": { - "type": "string" - } - } - }, - "credentialStatus": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "type": { - "type": "string" - } - }, - "required": [ - "id", - "type" - ] - }, - "proof": { - "type": "object", - "properties": { - "type": { - "type": "string" - } - } - } - }, - "required": [ - "@context", - "type", - "issuer", - "issuanceDate", - "credentialSubject", - "proof" - ], - "description": "Verifiable Credential {@link https://github.com/decentralized-identity/did-jwt-vc}" - }, - "VerifiablePresentation": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "holder": { - "type": "string" - }, - "issuanceDate": { - "type": "string" - }, - "expirationDate": { - "type": "string" - }, - "@context": { - "type": "array", - "items": { - "type": "string" - } - }, - "type": { - "type": "array", - "items": { - "type": "string" - } - }, - "verifier": { - "type": "array", - "items": { - "type": "string" - } - }, - "verifiableCredential": { - "type": "array", - "items": { - "$ref": "#/components/schemas/VerifiableCredential" - } - }, - "proof": { - "type": "object", - "properties": { - "type": { - "type": "string" - } - } - } - }, - "required": [ - "holder", - "@context", - "type", - "verifier", - "verifiableCredential", - "proof" - ], - "description": "Verifiable Presentation {@link https://github.com/decentralized-identity/did-jwt-vc}" - }, - "IDataStoreGetVerifiableCredentialArgs": { - "type": "object", - "properties": { - "hash": { - "type": "string", - "description": "Required. VerifiableCredential hash" - } - }, - "required": [ - "hash" - ], - "description": "Input arguments for {@link IDataStore.dataStoreGetVerifiableCredential | dataStoreGetVerifiableCredential}" - }, - "IDataStoreGetVerifiablePresentationArgs": { - "type": "object", - "properties": { - "hash": { - "type": "string", - "description": "Required. VerifiablePresentation hash" - } - }, - "required": [ - "hash" - ], - "description": "Input arguments for {@link IDataStore.dataStoreGetVerifiablePresentation | dataStoreGetVerifiablePresentation}" - }, - "IDataStoreSaveMessageArgs": { - "type": "object", - "properties": { - "message": { - "$ref": "#/components/schemas/IMessage", - "description": "Required. Message" - } - }, - "required": [ - "message" - ], - "description": "Input arguments for {@link IDataStore.dataStoreSaveMessage | dataStoreSaveMessage}" - }, - "IDataStoreSaveVerifiableCredentialArgs": { - "type": "object", - "properties": { - "verifiableCredential": { - "$ref": "#/components/schemas/VerifiableCredential", - "description": "Required. VerifiableCredential" - } - }, - "required": [ - "verifiableCredential" - ], - "description": "Input arguments for {@link IDataStore.dataStoreSaveVerifiableCredential | dataStoreSaveVerifiableCredential}" - }, - "IDataStoreSaveVerifiablePresentationArgs": { - "type": "object", - "properties": { - "verifiablePresentation": { - "$ref": "#/components/schemas/VerifiablePresentation", - "description": "Required. VerifiablePresentation" - } - }, - "required": [ - "verifiablePresentation" - ], - "description": "Input arguments for {@link IDataStore.dataStoreSaveVerifiablePresentation | dataStoreSaveVerifiablePresentation}" - } - }, - "methods": { - "dataStoreGetMessage": { - "description": "Gets message from the data store", - "arguments": { - "$ref": "#/components/schemas/IDataStoreGetMessageArgs" - }, - "returnType": { - "$ref": "#/components/schemas/IMessage" - } - }, - "dataStoreGetVerifiableCredential": { - "description": "Gets verifiable credential from the data store", - "arguments": { - "$ref": "#/components/schemas/IDataStoreGetVerifiableCredentialArgs" - }, - "returnType": { - "$ref": "#/components/schemas/VerifiableCredential" - } - }, - "dataStoreGetVerifiablePresentation": { - "description": "Gets verifiable presentation from the data store", - "arguments": { - "$ref": "#/components/schemas/IDataStoreGetVerifiablePresentationArgs" - }, - "returnType": { - "$ref": "#/components/schemas/VerifiablePresentation" - } - }, - "dataStoreSaveMessage": { - "description": "Saves message to the data store", - "arguments": { - "$ref": "#/components/schemas/IDataStoreSaveMessageArgs" - }, - "returnType": { - "type": "string" - } - }, - "dataStoreSaveVerifiableCredential": { - "description": "Saves verifiable credential to the data store", - "arguments": { - "$ref": "#/components/schemas/IDataStoreSaveVerifiableCredentialArgs" - }, - "returnType": { - "type": "string" - } - }, - "dataStoreSaveVerifiablePresentation": { - "description": "Saves verifiable presentation to the data store", - "arguments": { - "$ref": "#/components/schemas/IDataStoreSaveVerifiablePresentationArgs" - }, - "returnType": { - "type": "string" - } - } - } - } - }, - "IMessageHandler": { - "components": { - "schemas": { - "IHandleMessageArgs": { - "type": "object", - "properties": { - "raw": { - "type": "string", - "description": "Raw message data" - }, - "metaData": { - "type": "array", - "items": { - "$ref": "#/components/schemas/IMetaData" - }, - "description": "Optional. Message meta data" - }, - "save": { - "type": "boolean", - "description": "Optional. If set to `true`, the message will be saved using {@link IDataStore.dataStoreSaveMessage | dataStoreSaveMessage}" - } - }, - "required": [ - "raw" - ], - "description": "Input arguments for {@link IMessageHandler.handleMessage | handleMessage}" - }, - "IMetaData": { - "type": "object", - "properties": { - "type": { - "type": "string", - "description": "Type" - }, - "value": { - "type": "string", - "description": "Optional. Value" - } - }, - "required": [ - "type" - ], - "description": "Message meta data" - }, - "IMessage": { - "type": "object", - "properties": { - "id": { - "type": "string", - "description": "Unique message ID" - }, - "type": { - "type": "string", - "description": "Message type" - }, - "createdAt": { - "type": "string", - "description": "Optional. Creation date (ISO 8601)" - }, - "expiresAt": { - "type": "string", - "description": "Optional. Expiration date (ISO 8601)" - }, - "threadId": { - "type": "string", - "description": "Optional. Thread ID" - }, - "raw": { - "type": "string", - "description": "Optional. Original message raw data" - }, - "data": { - "anyOf": [ - { - "type": "object" - }, - { - "type": "null" - } - ], - "description": "Optional. Parsed data" - }, - "replyTo": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Optional. List of DIDs to reply to" - }, - "replyUrl": { - "type": "string", - "description": "Optional. URL to post a reply message to" - }, - "from": { - "type": "string", - "description": "Optional. Sender DID" - }, - "to": { - "type": "string", - "description": "Optional. Recipient DID" - }, - "metaData": { - "anyOf": [ - { - "type": "array", - "items": { - "$ref": "#/components/schemas/IMetaData" - } - }, - { - "type": "null" - } - ], - "description": "Optional. Array of message metadata" - }, - "credentials": { - "type": "array", - "items": { - "$ref": "#/components/schemas/VerifiableCredential" - }, - "description": "Optional. Array of attached verifiable credentials" - }, - "presentations": { - "type": "array", - "items": { - "$ref": "#/components/schemas/VerifiablePresentation" - }, - "description": "Optional. Array of attached verifiable presentations" - } - }, - "required": [ - "id", - "type" - ], - "description": "DIDComm message" - }, - "VerifiableCredential": { - "type": "object", - "properties": { - "@context": { - "type": "array", - "items": { - "type": "string" - } - }, - "id": { - "type": "string" - }, - "type": { - "type": "array", - "items": { - "type": "string" - } - }, - "issuer": { - "type": "object", - "properties": { - "id": { - "type": "string" - } - }, - "required": [ - "id" - ] - }, - "issuanceDate": { - "type": "string" - }, - "expirationDate": { - "type": "string" - }, - "credentialSubject": { - "type": "object", - "properties": { - "id": { - "type": "string" - } - } - }, - "credentialStatus": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "type": { - "type": "string" - } - }, - "required": [ - "id", - "type" - ] - }, - "proof": { - "type": "object", - "properties": { - "type": { - "type": "string" - } - } - } - }, - "required": [ - "@context", - "type", - "issuer", - "issuanceDate", - "credentialSubject", - "proof" - ], - "description": "Verifiable Credential {@link https://github.com/decentralized-identity/did-jwt-vc}" - }, - "VerifiablePresentation": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "holder": { - "type": "string" - }, - "issuanceDate": { - "type": "string" - }, - "expirationDate": { - "type": "string" - }, - "@context": { - "type": "array", - "items": { - "type": "string" - } - }, - "type": { - "type": "array", - "items": { - "type": "string" - } - }, - "verifier": { - "type": "array", - "items": { - "type": "string" - } - }, - "verifiableCredential": { - "type": "array", - "items": { - "$ref": "#/components/schemas/VerifiableCredential" - } - }, - "proof": { - "type": "object", - "properties": { - "type": { - "type": "string" - } - } - } - }, - "required": [ - "holder", - "@context", - "type", - "verifier", - "verifiableCredential", - "proof" - ], - "description": "Verifiable Presentation {@link https://github.com/decentralized-identity/did-jwt-vc}" - } - }, - "methods": { - "handleMessage": { - "description": "Parses and optionally saves a message", - "arguments": { - "$ref": "#/components/schemas/IHandleMessageArgs" - }, - "returnType": { - "$ref": "#/components/schemas/IMessage" - } - } - } - } - } - } - }, - "issuer": { - "id": "did:ethr:rinkeby:0x96bbef772fcc4f9cf50c523b559bf6c3a9efc556" - }, - "type": [ - "VerifiableCredential", - "AgentPluginSchema" - ], - "@context": [ - "https://www.w3.org/2018/credentials/v1" - ], - "issuanceDate": "2020-11-23T11:09:43.000Z", - "proof": { - "type": "JwtProof2020", - "jwt": "eyJ0eXAiOiJKV1QiLCJhbGciOiJFUzI1NksifQ.eyJ2YyI6eyJjcmVkZW50aWFsU3ViamVjdCI6eyJpbnRlcmZhY2VzIjp7IklSZXNvbHZlciI6eyJjb21wb25lbnRzIjp7InNjaGVtYXMiOnsiUmVzb2x2ZURpZEFyZ3MiOnsidHlwZSI6Im9iamVjdCIsInByb3BlcnRpZXMiOnsiZGlkVXJsIjp7InR5cGUiOiJzdHJpbmciLCJkZXNjcmlwdGlvbiI6IkRJRCBVUkwifX0sInJlcXVpcmVkIjpbImRpZFVybCJdLCJkZXNjcmlwdGlvbiI6IklucHV0IGFyZ3VtZW50cyBmb3Ige0BsaW5rIElSZXNvbHZlci5yZXNvbHZlRGlkIHwgcmVzb2x2ZURpZH0ifSwiRElERG9jdW1lbnQiOnsidHlwZSI6Im9iamVjdCIsInByb3BlcnRpZXMiOnsiQGNvbnRleHQiOnsidHlwZSI6InN0cmluZyIsImNvbnN0IjoiaHR0cHM6Ly93M2lkLm9yZy9kaWQvdjEifSwiaWQiOnsidHlwZSI6InN0cmluZyJ9LCJwdWJsaWNLZXkiOnsidHlwZSI6ImFycmF5IiwiaXRlbXMiOnsiJHJlZiI6IiMvY29tcG9uZW50cy9zY2hlbWFzL1B1YmxpY0tleSJ9fSwiYXV0aGVudGljYXRpb24iOnsidHlwZSI6ImFycmF5IiwiaXRlbXMiOnsiJHJlZiI6IiMvY29tcG9uZW50cy9zY2hlbWFzL0F1dGhlbnRpY2F0aW9uIn19LCJ1cG9ydFByb2ZpbGUiOnt9LCJzZXJ2aWNlIjp7InR5cGUiOiJhcnJheSIsIml0ZW1zIjp7IiRyZWYiOiIjL2NvbXBvbmVudHMvc2NoZW1hcy9TZXJ2aWNlRW5kcG9pbnQifX0sImNyZWF0ZWQiOnsidHlwZSI6InN0cmluZyJ9LCJ1cGRhdGVkIjp7InR5cGUiOiJzdHJpbmcifSwicHJvb2YiOnsiJHJlZiI6IiMvY29tcG9uZW50cy9zY2hlbWFzL0xpbmtlZERhdGFQcm9vZiJ9LCJrZXlBZ3JlZW1lbnQiOnsidHlwZSI6ImFycmF5IiwiaXRlbXMiOnsiYW55T2YiOlt7InR5cGUiOiJzdHJpbmcifSx7IiRyZWYiOiIjL2NvbXBvbmVudHMvc2NoZW1hcy9QdWJsaWNLZXkifV19fX0sInJlcXVpcmVkIjpbIkBjb250ZXh0IiwiaWQiLCJwdWJsaWNLZXkiXX0sIlB1YmxpY0tleSI6eyJ0eXBlIjoib2JqZWN0IiwicHJvcGVydGllcyI6eyJpZCI6eyJ0eXBlIjoic3RyaW5nIn0sInR5cGUiOnsidHlwZSI6InN0cmluZyJ9LCJjb250cm9sbGVyIjp7InR5cGUiOiJzdHJpbmcifSwiZXRoZXJldW1BZGRyZXNzIjp7InR5cGUiOiJzdHJpbmcifSwicHVibGljS2V5QmFzZTY0Ijp7InR5cGUiOiJzdHJpbmcifSwicHVibGljS2V5QmFzZTU4Ijp7InR5cGUiOiJzdHJpbmcifSwicHVibGljS2V5SGV4Ijp7InR5cGUiOiJzdHJpbmcifSwicHVibGljS2V5UGVtIjp7InR5cGUiOiJzdHJpbmcifX0sInJlcXVpcmVkIjpbImlkIiwidHlwZSIsImNvbnRyb2xsZXIiXX0sIkF1dGhlbnRpY2F0aW9uIjp7InR5cGUiOiJvYmplY3QiLCJwcm9wZXJ0aWVzIjp7InR5cGUiOnsidHlwZSI6InN0cmluZyJ9LCJwdWJsaWNLZXkiOnsidHlwZSI6InN0cmluZyJ9fSwicmVxdWlyZWQiOlsidHlwZSIsInB1YmxpY0tleSJdfSwiU2VydmljZUVuZHBvaW50Ijp7InR5cGUiOiJvYmplY3QiLCJwcm9wZXJ0aWVzIjp7ImlkIjp7InR5cGUiOiJzdHJpbmcifSwidHlwZSI6eyJ0eXBlIjoic3RyaW5nIn0sInNlcnZpY2VFbmRwb2ludCI6eyJ0eXBlIjoic3RyaW5nIn0sImRlc2NyaXB0aW9uIjp7InR5cGUiOiJzdHJpbmcifX0sInJlcXVpcmVkIjpbImlkIiwidHlwZSIsInNlcnZpY2VFbmRwb2ludCJdfSwiTGlua2VkRGF0YVByb29mIjp7InR5cGUiOiJvYmplY3QiLCJwcm9wZXJ0aWVzIjp7InR5cGUiOnsidHlwZSI6InN0cmluZyJ9LCJjcmVhdGVkIjp7InR5cGUiOiJzdHJpbmcifSwiY3JlYXRvciI6eyJ0eXBlIjoic3RyaW5nIn0sIm5vbmNlIjp7InR5cGUiOiJzdHJpbmcifSwic2lnbmF0dXJlVmFsdWUiOnsidHlwZSI6InN0cmluZyJ9fSwicmVxdWlyZWQiOlsidHlwZSIsImNyZWF0ZWQiLCJjcmVhdG9yIiwibm9uY2UiLCJzaWduYXR1cmVWYWx1ZSJdfX0sIm1ldGhvZHMiOnsicmVzb2x2ZURpZCI6eyJkZXNjcmlwdGlvbiI6IlJlc29sdmVzIERJRCBhbmQgcmV0dXJucyBESUQgRG9jdW1lbnQiLCJhcmd1bWVudHMiOnsiJHJlZiI6IiMvY29tcG9uZW50cy9zY2hlbWFzL1Jlc29sdmVEaWRBcmdzIn0sInJldHVyblR5cGUiOnsiJHJlZiI6IiMvY29tcG9uZW50cy9zY2hlbWFzL0RJRERvY3VtZW50In19fX19LCJJS2V5TWFuYWdlciI6eyJjb21wb25lbnRzIjp7InNjaGVtYXMiOnsiSUtleU1hbmFnZXJDcmVhdGVLZXlBcmdzIjp7InR5cGUiOiJvYmplY3QiLCJwcm9wZXJ0aWVzIjp7InR5cGUiOnsiJHJlZiI6IiMvY29tcG9uZW50cy9zY2hlbWFzL1RLZXlUeXBlIiwiZGVzY3JpcHRpb24iOiJLZXkgdHlwZSJ9LCJrbXMiOnsidHlwZSI6InN0cmluZyIsImRlc2NyaXB0aW9uIjoiS2V5IE1hbmFnZW1lbnQgU3lzdGVtIn0sIm1ldGEiOnsidHlwZSI6Im9iamVjdCIsImRlc2NyaXB0aW9uIjoiT3B0aW9uYWwuIEtleSBtZXRhIGRhdGEifX0sInJlcXVpcmVkIjpbInR5cGUiLCJrbXMiXSwiZGVzY3JpcHRpb24iOiJJbnB1dCBhcmd1bWVudHMgZm9yIHtAbGluayBJS2V5TWFuYWdlci5rZXlNYW5hZ2VyQ3JlYXRlS2V5IHwga2V5TWFuYWdlckNyZWF0ZUtleX0ifSwiVEtleVR5cGUiOnsidHlwZSI6InN0cmluZyIsImVudW0iOlsiRWQyNTUxOSIsIlNlY3AyNTZrMSJdLCJkZXNjcmlwdGlvbiI6IkNyeXB0b2dyYXBoaWMga2V5IHR5cGUifSwiSUtleSI6eyJ0eXBlIjoib2JqZWN0IiwicHJvcGVydGllcyI6eyJraWQiOnsidHlwZSI6InN0cmluZyIsImRlc2NyaXB0aW9uIjoiS2V5IElEIn0sImttcyI6eyJ0eXBlIjoic3RyaW5nIiwiZGVzY3JpcHRpb24iOiJLZXkgTWFuYWdlbWVudCBTeXN0ZW0ifSwidHlwZSI6eyIkcmVmIjoiIy9jb21wb25lbnRzL3NjaGVtYXMvVEtleVR5cGUiLCJkZXNjcmlwdGlvbiI6IktleSB0eXBlIn0sInB1YmxpY0tleUhleCI6eyJ0eXBlIjoic3RyaW5nIiwiZGVzY3JpcHRpb24iOiJQdWJsaWMga2V5In0sInByaXZhdGVLZXlIZXgiOnsidHlwZSI6InN0cmluZyIsImRlc2NyaXB0aW9uIjoiT3B0aW9uYWwuIFByaXZhdGUga2V5In0sIm1ldGEiOnsiYW55T2YiOlt7InR5cGUiOiJvYmplY3QifSx7InR5cGUiOiJudWxsIn1dLCJkZXNjcmlwdGlvbiI6Ik9wdGlvbmFsLiBLZXkgbWV0YWRhdGEuIENhbiBiZSB1c2VkIHRvIHN0b3JlIGF1dGggZGF0YSB0byBhY2Nlc3MgcmVtb3RlIGttcyJ9fSwicmVxdWlyZWQiOlsia2lkIiwia21zIiwidHlwZSIsInB1YmxpY0tleUhleCJdLCJkZXNjcmlwdGlvbiI6IkNyeXB0b2dyYXBoaWMga2V5In0sIklLZXlNYW5hZ2VyRGVjcnlwdEpXRUFyZ3MiOnsidHlwZSI6Im9iamVjdCIsInByb3BlcnRpZXMiOnsia2lkIjp7InR5cGUiOiJzdHJpbmciLCJkZXNjcmlwdGlvbiI6IktleSBJRCJ9LCJkYXRhIjp7InR5cGUiOiJzdHJpbmciLCJkZXNjcmlwdGlvbiI6IkVuY3J5cHRlZCBkYXRhIn19LCJyZXF1aXJlZCI6WyJraWQiLCJkYXRhIl0sImRlc2NyaXB0aW9uIjoiSW5wdXQgYXJndW1lbnRzIGZvciB7QGxpbmsgSUtleU1hbmFnZXIua2V5TWFuYWdlckRlY3J5cHRKV0UgfCBrZXlNYW5hZ2VyRGVjcnlwdEpXRX0ifSwiSUtleU1hbmFnZXJEZWxldGVLZXlBcmdzIjp7InR5cGUiOiJvYmplY3QiLCJwcm9wZXJ0aWVzIjp7ImtpZCI6eyJ0eXBlIjoic3RyaW5nIiwiZGVzY3JpcHRpb24iOiJLZXkgSUQifX0sInJlcXVpcmVkIjpbImtpZCJdLCJkZXNjcmlwdGlvbiI6IklucHV0IGFyZ3VtZW50cyBmb3Ige0BsaW5rIElLZXlNYW5hZ2VyLmtleU1hbmFnZXJEZWxldGVLZXkgfCBrZXlNYW5hZ2VyRGVsZXRlS2V5fSJ9LCJJS2V5TWFuYWdlckVuY3J5cHRKV0VBcmdzIjp7InR5cGUiOiJvYmplY3QiLCJwcm9wZXJ0aWVzIjp7ImtpZCI6eyJ0eXBlIjoic3RyaW5nIiwiZGVzY3JpcHRpb24iOiJLZXkgSUQgdG8gdXNlIGZvciBlbmNyeXB0aW9uIn0sInRvIjp7InR5cGUiOiJvYmplY3QiLCJwcm9wZXJ0aWVzIjp7ImtpZCI6eyJ0eXBlIjoic3RyaW5nIiwiZGVzY3JpcHRpb24iOiJLZXkgSUQifSwidHlwZSI6eyIkcmVmIjoiIy9jb21wb25lbnRzL3NjaGVtYXMvVEtleVR5cGUiLCJkZXNjcmlwdGlvbiI6IktleSB0eXBlIn0sInB1YmxpY0tleUhleCI6eyJ0eXBlIjoic3RyaW5nIiwiZGVzY3JpcHRpb24iOiJQdWJsaWMga2V5In0sInByaXZhdGVLZXlIZXgiOnsidHlwZSI6InN0cmluZyIsImRlc2NyaXB0aW9uIjoiT3B0aW9uYWwuIFByaXZhdGUga2V5In0sIm1ldGEiOnsiYW55T2YiOlt7InR5cGUiOiJvYmplY3QifSx7InR5cGUiOiJudWxsIn1dLCJkZXNjcmlwdGlvbiI6Ik9wdGlvbmFsLiBLZXkgbWV0YWRhdGEuIENhbiBiZSB1c2VkIHRvIHN0b3JlIGF1dGggZGF0YSB0byBhY2Nlc3MgcmVtb3RlIGttcyJ9fSwicmVxdWlyZWQiOlsia2lkIiwidHlwZSIsInB1YmxpY0tleUhleCJdLCJkZXNjcmlwdGlvbiI6IlJlY2lwaWVudCBrZXkgb2JqZWN0In0sImRhdGEiOnsidHlwZSI6InN0cmluZyIsImRlc2NyaXB0aW9uIjoiRGF0YSB0byBlbmNyeXB0In19LCJyZXF1aXJlZCI6WyJraWQiLCJ0byIsImRhdGEiXSwiZGVzY3JpcHRpb24iOiJJbnB1dCBhcmd1bWVudHMgZm9yIHtAbGluayBJS2V5TWFuYWdlci5rZXlNYW5hZ2VyRW5jcnlwdEpXRSB8IGtleU1hbmFnZXJFbmNyeXB0SldFfSJ9LCJJS2V5TWFuYWdlckdldEtleUFyZ3MiOnsidHlwZSI6Im9iamVjdCIsInByb3BlcnRpZXMiOnsia2lkIjp7InR5cGUiOiJzdHJpbmciLCJkZXNjcmlwdGlvbiI6IktleSBJRCJ9fSwicmVxdWlyZWQiOlsia2lkIl0sImRlc2NyaXB0aW9uIjoiSW5wdXQgYXJndW1lbnRzIGZvciB7QGxpbmsgSUtleU1hbmFnZXIua2V5TWFuYWdlckdldEtleSB8IGtleU1hbmFnZXJHZXRLZXl9In0sIklLZXlNYW5hZ2VyU2lnbkV0aFRYQXJncyI6eyJ0eXBlIjoib2JqZWN0IiwicHJvcGVydGllcyI6eyJraWQiOnsidHlwZSI6InN0cmluZyIsImRlc2NyaXB0aW9uIjoiS2V5IElEIn0sInRyYW5zYWN0aW9uIjp7InR5cGUiOiJvYmplY3QiLCJkZXNjcmlwdGlvbiI6IkV0aGVyZXVtIHRyYW5zYWN0aW9uIG9iamVjdCJ9fSwicmVxdWlyZWQiOlsia2lkIiwidHJhbnNhY3Rpb24iXSwiZGVzY3JpcHRpb24iOiJJbnB1dCBhcmd1bWVudHMgZm9yIHtAbGluayBJS2V5TWFuYWdlci5rZXlNYW5hZ2VyU2lnbkV0aFRYIHwga2V5TWFuYWdlclNpZ25FdGhUWH0ifSwiSUtleU1hbmFnZXJTaWduSldUQXJncyI6eyJ0eXBlIjoib2JqZWN0IiwicHJvcGVydGllcyI6eyJraWQiOnsidHlwZSI6InN0cmluZyIsImRlc2NyaXB0aW9uIjoiS2V5IElEIn0sImRhdGEiOnsidHlwZSI6InN0cmluZyIsImRlc2NyaXB0aW9uIjoiRGF0YSB0byBzaWduIn19LCJyZXF1aXJlZCI6WyJraWQiLCJkYXRhIl0sImRlc2NyaXB0aW9uIjoiSW5wdXQgYXJndW1lbnRzIGZvciB7QGxpbmsgSUtleU1hbmFnZXIua2V5TWFuYWdlclNpZ25KV1QgfCBrZXlNYW5hZ2VyU2lnbkpXVH0ifSwiRWNkc2FTaWduYXR1cmUiOnsidHlwZSI6Im9iamVjdCIsInByb3BlcnRpZXMiOnsiciI6eyJ0eXBlIjoic3RyaW5nIn0sInMiOnsidHlwZSI6InN0cmluZyJ9LCJyZWNvdmVyeVBhcmFtIjp7InR5cGUiOiJudW1iZXIiLCJjb25zdCI6MX19LCJyZXF1aXJlZCI6WyJyIiwicyIsInJlY292ZXJ5UGFyYW0iXX19LCJtZXRob2RzIjp7ImtleU1hbmFnZXJDcmVhdGVLZXkiOnsiZGVzY3JpcHRpb24iOiJDcmVhdGVzIGFuZCByZXR1cm5zIGEgbmV3IGtleSIsImFyZ3VtZW50cyI6eyIkcmVmIjoiIy9jb21wb25lbnRzL3NjaGVtYXMvSUtleU1hbmFnZXJDcmVhdGVLZXlBcmdzIn0sInJldHVyblR5cGUiOnsiJHJlZiI6IiMvY29tcG9uZW50cy9zY2hlbWFzL0lLZXkifX0sImtleU1hbmFnZXJEZWNyeXB0SldFIjp7ImRlc2NyaXB0aW9uIjoiRGVjcnlwdHMgZGF0YSIsImFyZ3VtZW50cyI6eyIkcmVmIjoiIy9jb21wb25lbnRzL3NjaGVtYXMvSUtleU1hbmFnZXJEZWNyeXB0SldFQXJncyJ9LCJyZXR1cm5UeXBlIjp7InR5cGUiOiJzdHJpbmcifX0sImtleU1hbmFnZXJEZWxldGVLZXkiOnsiZGVzY3JpcHRpb24iOiJEZWxldGVzIGEga2V5IiwiYXJndW1lbnRzIjp7IiRyZWYiOiIjL2NvbXBvbmVudHMvc2NoZW1hcy9JS2V5TWFuYWdlckRlbGV0ZUtleUFyZ3MifSwicmV0dXJuVHlwZSI6eyJ0eXBlIjoiYm9vbGVhbiJ9fSwia2V5TWFuYWdlckVuY3J5cHRKV0UiOnsiZGVzY3JpcHRpb24iOiJFbmNyeXB0cyBkYXRhIiwiYXJndW1lbnRzIjp7IiRyZWYiOiIjL2NvbXBvbmVudHMvc2NoZW1hcy9JS2V5TWFuYWdlckVuY3J5cHRKV0VBcmdzIn0sInJldHVyblR5cGUiOnsidHlwZSI6InN0cmluZyJ9fSwia2V5TWFuYWdlckdldEtleSI6eyJkZXNjcmlwdGlvbiI6IlJldHVybnMgYW4gZXhpc3Rpbmcga2V5IiwiYXJndW1lbnRzIjp7IiRyZWYiOiIjL2NvbXBvbmVudHMvc2NoZW1hcy9JS2V5TWFuYWdlckdldEtleUFyZ3MifSwicmV0dXJuVHlwZSI6eyIkcmVmIjoiIy9jb21wb25lbnRzL3NjaGVtYXMvSUtleSJ9fSwia2V5TWFuYWdlckdldEtleU1hbmFnZW1lbnRTeXN0ZW1zIjp7ImRlc2NyaXB0aW9uIjoiTGlzdHMgYXZhaWxhYmxlIGtleSBtYW5hZ2VtZW50IHN5c3RlbXMiLCJhcmd1bWVudHMiOnsidHlwZSI6Im9iamVjdCJ9LCJyZXR1cm5UeXBlIjp7InR5cGUiOiJhcnJheSIsIml0ZW1zIjp7InR5cGUiOiJzdHJpbmcifX19LCJrZXlNYW5hZ2VySW1wb3J0S2V5Ijp7ImRlc2NyaXB0aW9uIjoiSW1wb3J0cyBhIGNyZWF0ZWQga2V5IiwiYXJndW1lbnRzIjp7IiRyZWYiOiIjL2NvbXBvbmVudHMvc2NoZW1hcy9JS2V5In0sInJldHVyblR5cGUiOnsidHlwZSI6ImJvb2xlYW4ifX0sImtleU1hbmFnZXJTaWduRXRoVFgiOnsiZGVzY3JpcHRpb24iOiJTaWducyBFdGhlcmV1bSB0cmFuc2FjdGlvbiIsImFyZ3VtZW50cyI6eyIkcmVmIjoiIy9jb21wb25lbnRzL3NjaGVtYXMvSUtleU1hbmFnZXJTaWduRXRoVFhBcmdzIn0sInJldHVyblR5cGUiOnsidHlwZSI6InN0cmluZyJ9fSwia2V5TWFuYWdlclNpZ25KV1QiOnsiZGVzY3JpcHRpb24iOiJTaWducyBKV1QiLCJhcmd1bWVudHMiOnsiJHJlZiI6IiMvY29tcG9uZW50cy9zY2hlbWFzL0lLZXlNYW5hZ2VyU2lnbkpXVEFyZ3MifSwicmV0dXJuVHlwZSI6eyIkcmVmIjoiIy9jb21wb25lbnRzL3NjaGVtYXMvRWNkc2FTaWduYXR1cmUifX19fX0sIklJZGVudGl0eU1hbmFnZXIiOnsiY29tcG9uZW50cyI6eyJzY2hlbWFzIjp7IklJZGVudGl0eU1hbmFnZXJBZGRLZXlBcmdzIjp7InR5cGUiOiJvYmplY3QiLCJwcm9wZXJ0aWVzIjp7ImRpZCI6eyJ0eXBlIjoic3RyaW5nIiwiZGVzY3JpcHRpb24iOiJESUQifSwia2V5Ijp7IiRyZWYiOiIjL2NvbXBvbmVudHMvc2NoZW1hcy9JS2V5IiwiZGVzY3JpcHRpb24iOiJLZXkgb2JqZWN0In0sIm9wdGlvbnMiOnsidHlwZSI6Im9iamVjdCIsImRlc2NyaXB0aW9uIjoiT3B0aW9uYWwuIElkZW50aXR5IHByb3ZpZGVyIHNwZWNpZmljIG9wdGlvbnMifX0sInJlcXVpcmVkIjpbImRpZCIsImtleSJdLCJkZXNjcmlwdGlvbiI6IklucHV0IGFyZ3VtZW50cyBmb3Ige0BsaW5rIElJZGVudGl0eU1hbmFnZXIuaWRlbnRpdHlNYW5hZ2VyQWRkS2V5IHwgaWRlbnRpdHlNYW5hZ2VyQWRkS2V5fSJ9LCJJS2V5Ijp7InR5cGUiOiJvYmplY3QiLCJwcm9wZXJ0aWVzIjp7ImtpZCI6eyJ0eXBlIjoic3RyaW5nIiwiZGVzY3JpcHRpb24iOiJLZXkgSUQifSwia21zIjp7InR5cGUiOiJzdHJpbmciLCJkZXNjcmlwdGlvbiI6IktleSBNYW5hZ2VtZW50IFN5c3RlbSJ9LCJ0eXBlIjp7IiRyZWYiOiIjL2NvbXBvbmVudHMvc2NoZW1hcy9US2V5VHlwZSIsImRlc2NyaXB0aW9uIjoiS2V5IHR5cGUifSwicHVibGljS2V5SGV4Ijp7InR5cGUiOiJzdHJpbmciLCJkZXNjcmlwdGlvbiI6IlB1YmxpYyBrZXkifSwicHJpdmF0ZUtleUhleCI6eyJ0eXBlIjoic3RyaW5nIiwiZGVzY3JpcHRpb24iOiJPcHRpb25hbC4gUHJpdmF0ZSBrZXkifSwibWV0YSI6eyJhbnlPZiI6W3sidHlwZSI6Im9iamVjdCJ9LHsidHlwZSI6Im51bGwifV0sImRlc2NyaXB0aW9uIjoiT3B0aW9uYWwuIEtleSBtZXRhZGF0YS4gQ2FuIGJlIHVzZWQgdG8gc3RvcmUgYXV0aCBkYXRhIHRvIGFjY2VzcyByZW1vdGUga21zIn19LCJyZXF1aXJlZCI6WyJraWQiLCJrbXMiLCJ0eXBlIiwicHVibGljS2V5SGV4Il0sImRlc2NyaXB0aW9uIjoiQ3J5cHRvZ3JhcGhpYyBrZXkifSwiVEtleVR5cGUiOnsidHlwZSI6InN0cmluZyIsImVudW0iOlsiRWQyNTUxOSIsIlNlY3AyNTZrMSJdLCJkZXNjcmlwdGlvbiI6IkNyeXB0b2dyYXBoaWMga2V5IHR5cGUifSwiSUlkZW50aXR5TWFuYWdlckFkZFNlcnZpY2VBcmdzIjp7InR5cGUiOiJvYmplY3QiLCJwcm9wZXJ0aWVzIjp7ImRpZCI6eyJ0eXBlIjoic3RyaW5nIiwiZGVzY3JpcHRpb24iOiJESUQifSwic2VydmljZSI6eyIkcmVmIjoiIy9jb21wb25lbnRzL3NjaGVtYXMvSVNlcnZpY2UiLCJkZXNjcmlwdGlvbiI6IlNlcnZpY2Ugb2JqZWN0In0sIm9wdGlvbnMiOnsidHlwZSI6Im9iamVjdCIsImRlc2NyaXB0aW9uIjoiT3B0aW9uYWwuIElkZW50aXR5IHByb3ZpZGVyIHNwZWNpZmljIG9wdGlvbnMifX0sInJlcXVpcmVkIjpbImRpZCIsInNlcnZpY2UiXSwiZGVzY3JpcHRpb24iOiJJbnB1dCBhcmd1bWVudHMgZm9yIHtAbGluayBJSWRlbnRpdHlNYW5hZ2VyLmlkZW50aXR5TWFuYWdlckFkZFNlcnZpY2UgfCBpZGVudGl0eU1hbmFnZXJBZGRTZXJ2aWNlfSJ9LCJJU2VydmljZSI6eyJ0eXBlIjoib2JqZWN0IiwicHJvcGVydGllcyI6eyJpZCI6eyJ0eXBlIjoic3RyaW5nIiwiZGVzY3JpcHRpb24iOiJJRCJ9LCJ0eXBlIjp7InR5cGUiOiJzdHJpbmciLCJkZXNjcmlwdGlvbiI6IlNlcnZpY2UgdHlwZSJ9LCJzZXJ2aWNlRW5kcG9pbnQiOnsidHlwZSI6InN0cmluZyIsImRlc2NyaXB0aW9uIjoiRW5kcG9pbnQgVVJMIn0sImRlc2NyaXB0aW9uIjp7InR5cGUiOiJzdHJpbmciLCJkZXNjcmlwdGlvbiI6Ik9wdGlvbmFsLiBEZXNjcmlwdGlvbiJ9fSwicmVxdWlyZWQiOlsiaWQiLCJ0eXBlIiwic2VydmljZUVuZHBvaW50Il0sImRlc2NyaXB0aW9uIjoiSWRlbnRpdHkgc2VydmljZSJ9LCJJSWRlbnRpdHlNYW5hZ2VyQ3JlYXRlSWRlbnRpdHlBcmdzIjp7InR5cGUiOiJvYmplY3QiLCJwcm9wZXJ0aWVzIjp7ImFsaWFzIjp7InR5cGUiOiJzdHJpbmciLCJkZXNjcmlwdGlvbiI6Ik9wdGlvbmFsLiBJZGVudGl0eSBhbGlhcy4gQ2FuIGJlIHVzZWQgdG8gcmVmZXJlbmNlIGFuIG9iamVjdCBpbiBhbiBleHRlcm5hbCBzeXN0ZW0ifSwicHJvdmlkZXIiOnsidHlwZSI6InN0cmluZyIsImRlc2NyaXB0aW9uIjoiT3B0aW9uYWwuIElkZW50aXR5IHByb3ZpZGVyIn0sImttcyI6eyJ0eXBlIjoic3RyaW5nIiwiZGVzY3JpcHRpb24iOiJPcHRpb25hbC4gS2V5IE1hbmFnZW1lbnQgU3lzdGVtIn0sIm9wdGlvbnMiOnsidHlwZSI6Im9iamVjdCIsImRlc2NyaXB0aW9uIjoiT3B0aW9uYWwuIElkZW50aXR5IHByb3ZpZGVyIHNwZWNpZmljIG9wdGlvbnMifX0sImRlc2NyaXB0aW9uIjoiSW5wdXQgYXJndW1lbnRzIGZvciB7QGxpbmsgSUlkZW50aXR5TWFuYWdlci5pZGVudGl0eU1hbmFnZXJDcmVhdGVJZGVudGl0eSB8IGlkZW50aXR5TWFuYWdlckNyZWF0ZUlkZW50aXR5fSJ9LCJJSWRlbnRpdHkiOnsidHlwZSI6Im9iamVjdCIsInByb3BlcnRpZXMiOnsiZGlkIjp7InR5cGUiOiJzdHJpbmciLCJkZXNjcmlwdGlvbiI6IkRlY2VudHJhbGl6ZWQgaWRlbnRpZmllciJ9LCJhbGlhcyI6eyJ0eXBlIjoic3RyaW5nIiwiZGVzY3JpcHRpb24iOiJPcHRpb25hbC4gSWRlbnRpdHkgYWxpYXMuIENhbiBiZSB1c2VkIHRvIHJlZmVyZW5jZSBhbiBvYmplY3QgaW4gYW4gZXh0ZXJuYWwgc3lzdGVtIn0sInByb3ZpZGVyIjp7InR5cGUiOiJzdHJpbmciLCJkZXNjcmlwdGlvbiI6IklkZW50aXR5IHByb3ZpZGVyIG5hbWUifSwiY29udHJvbGxlcktleUlkIjp7InR5cGUiOiJzdHJpbmciLCJkZXNjcmlwdGlvbiI6IkNvbnRyb2xsZXIga2V5IGlkIn0sImtleXMiOnsidHlwZSI6ImFycmF5IiwiaXRlbXMiOnsiJHJlZiI6IiMvY29tcG9uZW50cy9zY2hlbWFzL0lLZXkifSwiZGVzY3JpcHRpb24iOiJBcnJheSBvZiBtYW5hZ2VkIGtleXMifSwic2VydmljZXMiOnsidHlwZSI6ImFycmF5IiwiaXRlbXMiOnsiJHJlZiI6IiMvY29tcG9uZW50cy9zY2hlbWFzL0lTZXJ2aWNlIn0sImRlc2NyaXB0aW9uIjoiQXJyYXkgb2Ygc2VydmljZXMifX0sInJlcXVpcmVkIjpbImRpZCIsInByb3ZpZGVyIiwia2V5cyIsInNlcnZpY2VzIl0sImRlc2NyaXB0aW9uIjoiSWRlbnRpdHkgaW50ZXJmYWNlIn0sIklJZGVudGl0eU1hbmFnZXJEZWxldGVJZGVudGl0eUFyZ3MiOnsidHlwZSI6Im9iamVjdCIsInByb3BlcnRpZXMiOnsiZGlkIjp7InR5cGUiOiJzdHJpbmciLCJkZXNjcmlwdGlvbiI6IkRJRCJ9fSwicmVxdWlyZWQiOlsiZGlkIl0sImRlc2NyaXB0aW9uIjoiSW5wdXQgYXJndW1lbnRzIGZvciB7QGxpbmsgSUlkZW50aXR5TWFuYWdlci5pZGVudGl0eU1hbmFnZXJEZWxldGVJZGVudGl0eSB8IGlkZW50aXR5TWFuYWdlckRlbGV0ZUlkZW50aXR5fSJ9LCJJSWRlbnRpdHlNYW5hZ2VyR2V0SWRlbnRpdGllc0FyZ3MiOnsidHlwZSI6Im9iamVjdCIsInByb3BlcnRpZXMiOnsiYWxpYXMiOnsidHlwZSI6InN0cmluZyIsImRlc2NyaXB0aW9uIjoiT3B0aW9uYWwuIEFsaWFzIn0sInByb3ZpZGVyIjp7InR5cGUiOiJzdHJpbmciLCJkZXNjcmlwdGlvbiI6Ik9wdGlvbmFsLiBQcm92aWRlciJ9fSwiZGVzY3JpcHRpb24iOiJJbnB1dCBhcmd1bWVudHMgZm9yIHtAbGluayBJSWRlbnRpdHlNYW5hZ2VyLmlkZW50aXR5TWFuYWdlckdldElkZW50aXRpZXMgfCBpZGVudGl0eU1hbmFnZXJHZXRJZGVudGl0aWVzfSJ9LCJJSWRlbnRpdHlNYW5hZ2VyR2V0SWRlbnRpdHlBcmdzIjp7InR5cGUiOiJvYmplY3QiLCJwcm9wZXJ0aWVzIjp7ImRpZCI6eyJ0eXBlIjoic3RyaW5nIiwiZGVzY3JpcHRpb24iOiJESUQifX0sInJlcXVpcmVkIjpbImRpZCJdLCJkZXNjcmlwdGlvbiI6IklucHV0IGFyZ3VtZW50cyBmb3Ige0BsaW5rIElJZGVudGl0eU1hbmFnZXIuaWRlbnRpdHlNYW5hZ2VyR2V0SWRlbnRpdHkgfCBpZGVudGl0eU1hbmFnZXJHZXRJZGVudGl0eX0ifSwiSUlkZW50aXR5TWFuYWdlckdldElkZW50aXR5QnlBbGlhc0FyZ3MiOnsidHlwZSI6Im9iamVjdCIsInByb3BlcnRpZXMiOnsiYWxpYXMiOnsidHlwZSI6InN0cmluZyIsImRlc2NyaXB0aW9uIjoiQWxpYXMifSwicHJvdmlkZXIiOnsidHlwZSI6InN0cmluZyIsImRlc2NyaXB0aW9uIjoiT3B0aW9uYWwgcHJvdmlkZXIifX0sInJlcXVpcmVkIjpbImFsaWFzIl0sImRlc2NyaXB0aW9uIjoiSW5wdXQgYXJndW1lbnRzIGZvciB7QGxpbmsgSUlkZW50aXR5TWFuYWdlci5pZGVudGl0eU1hbmFnZXJHZXRJZGVudGl0eUJ5QWxpYXMgfCBpZGVudGl0eU1hbmFnZXJHZXRJZGVudGl0eUJ5QWxpYXN9In0sIklJZGVudGl0eU1hbmFnZXJHZXRPckNyZWF0ZUlkZW50aXR5QXJncyI6eyJ0eXBlIjoib2JqZWN0IiwicHJvcGVydGllcyI6eyJhbGlhcyI6eyJ0eXBlIjoic3RyaW5nIiwiZGVzY3JpcHRpb24iOiJJZGVudGl0eSBhbGlhcy4gQ2FuIGJlIHVzZWQgdG8gcmVmZXJlbmNlIGFuIG9iamVjdCBpbiBhbiBleHRlcm5hbCBzeXN0ZW0ifSwicHJvdmlkZXIiOnsidHlwZSI6InN0cmluZyIsImRlc2NyaXB0aW9uIjoiT3B0aW9uYWwuIElkZW50aXR5IHByb3ZpZGVyIn0sImttcyI6eyJ0eXBlIjoic3RyaW5nIiwiZGVzY3JpcHRpb24iOiJPcHRpb25hbC4gS2V5IE1hbmFnZW1lbnQgU3lzdGVtIn0sIm9wdGlvbnMiOnsidHlwZSI6Im9iamVjdCIsImRlc2NyaXB0aW9uIjoiT3B0aW9uYWwuIElkZW50aXR5IHByb3ZpZGVyIHNwZWNpZmljIG9wdGlvbnMifX0sInJlcXVpcmVkIjpbImFsaWFzIl0sImRlc2NyaXB0aW9uIjoiSW5wdXQgYXJndW1lbnRzIGZvciB7QGxpbmsgSUlkZW50aXR5TWFuYWdlci5pZGVudGl0eU1hbmFnZXJHZXRPckNyZWF0ZUlkZW50aXR5IHwgaWRlbnRpdHlNYW5hZ2VyR2V0T3JDcmVhdGVJZGVudGl0eX0ifSwiSUlkZW50aXR5TWFuYWdlclJlbW92ZUtleUFyZ3MiOnsidHlwZSI6Im9iamVjdCIsInByb3BlcnRpZXMiOnsiZGlkIjp7InR5cGUiOiJzdHJpbmciLCJkZXNjcmlwdGlvbiI6IkRJRCJ9LCJraWQiOnsidHlwZSI6InN0cmluZyIsImRlc2NyaXB0aW9uIjoiS2V5IElEIn0sIm9wdGlvbnMiOnsidHlwZSI6Im9iamVjdCIsImRlc2NyaXB0aW9uIjoiT3B0aW9uYWwuIElkZW50aXR5IHByb3ZpZGVyIHNwZWNpZmljIG9wdGlvbnMifX0sInJlcXVpcmVkIjpbImRpZCIsImtpZCJdLCJkZXNjcmlwdGlvbiI6IklucHV0IGFyZ3VtZW50cyBmb3Ige0BsaW5rIElJZGVudGl0eU1hbmFnZXIuaWRlbnRpdHlNYW5hZ2VyUmVtb3ZlS2V5IHwgaWRlbnRpdHlNYW5hZ2VyUmVtb3ZlS2V5fSJ9LCJJSWRlbnRpdHlNYW5hZ2VyUmVtb3ZlU2VydmljZUFyZ3MiOnsidHlwZSI6Im9iamVjdCIsInByb3BlcnRpZXMiOnsiZGlkIjp7InR5cGUiOiJzdHJpbmciLCJkZXNjcmlwdGlvbiI6IkRJRCJ9LCJpZCI6eyJ0eXBlIjoic3RyaW5nIiwiZGVzY3JpcHRpb24iOiJTZXJ2aWNlIElEIn0sIm9wdGlvbnMiOnsidHlwZSI6Im9iamVjdCIsImRlc2NyaXB0aW9uIjoiT3B0aW9uYWwuIElkZW50aXR5IHByb3ZpZGVyIHNwZWNpZmljIG9wdGlvbnMifX0sInJlcXVpcmVkIjpbImRpZCIsImlkIl0sImRlc2NyaXB0aW9uIjoiSW5wdXQgYXJndW1lbnRzIGZvciB7QGxpbmsgSUlkZW50aXR5TWFuYWdlci5pZGVudGl0eU1hbmFnZXJSZW1vdmVTZXJ2aWNlIHwgaWRlbnRpdHlNYW5hZ2VyUmVtb3ZlU2VydmljZX0ifSwiSUlkZW50aXR5TWFuYWdlclNldEFsaWFzQXJncyI6eyJ0eXBlIjoib2JqZWN0IiwicHJvcGVydGllcyI6eyJkaWQiOnsidHlwZSI6InN0cmluZyIsImRlc2NyaXB0aW9uIjoiUmVxdWlyZWQuIERJRCJ9LCJhbGlhcyI6eyJ0eXBlIjoic3RyaW5nIiwiZGVzY3JpcHRpb24iOiJSZXF1aXJlZC4gSWRlbnRpdHkgYWxpYXMifX0sInJlcXVpcmVkIjpbImRpZCIsImFsaWFzIl0sImRlc2NyaXB0aW9uIjoiSW5wdXQgYXJndW1lbnRzIGZvciB7QGxpbmsgSUlkZW50aXR5TWFuYWdlci5pZGVudGl0eU1hbmFnZXJTZXRBbGlhcyB8IGlkZW50aXR5TWFuYWdlclNldEFsaWFzfSJ9fSwibWV0aG9kcyI6eyJpZGVudGl0eU1hbmFnZXJBZGRLZXkiOnsiZGVzY3JpcHRpb24iOiJBZGRzIGEga2V5IHRvIGEgRElEIERvY3VtZW50IiwiYXJndW1lbnRzIjp7IiRyZWYiOiIjL2NvbXBvbmVudHMvc2NoZW1hcy9JSWRlbnRpdHlNYW5hZ2VyQWRkS2V5QXJncyJ9LCJyZXR1cm5UeXBlIjp7InR5cGUiOiJvYmplY3QifX0sImlkZW50aXR5TWFuYWdlckFkZFNlcnZpY2UiOnsiZGVzY3JpcHRpb24iOiJBZGRzIGEgc2VydmljZSB0byBhIERJRCBEb2N1bWVudCIsImFyZ3VtZW50cyI6eyIkcmVmIjoiIy9jb21wb25lbnRzL3NjaGVtYXMvSUlkZW50aXR5TWFuYWdlckFkZFNlcnZpY2VBcmdzIn0sInJldHVyblR5cGUiOnsidHlwZSI6Im9iamVjdCJ9fSwiaWRlbnRpdHlNYW5hZ2VyQ3JlYXRlSWRlbnRpdHkiOnsiZGVzY3JpcHRpb24iOiJDcmVhdGVzIGFuZCByZXR1cm5zIGEgbmV3IGlkZW50aXR5IiwiYXJndW1lbnRzIjp7IiRyZWYiOiIjL2NvbXBvbmVudHMvc2NoZW1hcy9JSWRlbnRpdHlNYW5hZ2VyQ3JlYXRlSWRlbnRpdHlBcmdzIn0sInJldHVyblR5cGUiOnsiJHJlZiI6IiMvY29tcG9uZW50cy9zY2hlbWFzL0lJZGVudGl0eSJ9fSwiaWRlbnRpdHlNYW5hZ2VyRGVsZXRlSWRlbnRpdHkiOnsiZGVzY3JpcHRpb24iOiJEZWxldGVzIGlkZW50aXR5IiwiYXJndW1lbnRzIjp7IiRyZWYiOiIjL2NvbXBvbmVudHMvc2NoZW1hcy9JSWRlbnRpdHlNYW5hZ2VyRGVsZXRlSWRlbnRpdHlBcmdzIn0sInJldHVyblR5cGUiOnsidHlwZSI6ImJvb2xlYW4ifX0sImlkZW50aXR5TWFuYWdlckdldElkZW50aXRpZXMiOnsiZGVzY3JpcHRpb24iOiJSZXR1cm5zIGEgbGlzdCBvZiBtYW5hZ2VkIGlkZW50aXRpZXMiLCJhcmd1bWVudHMiOnsiJHJlZiI6IiMvY29tcG9uZW50cy9zY2hlbWFzL0lJZGVudGl0eU1hbmFnZXJHZXRJZGVudGl0aWVzQXJncyJ9LCJyZXR1cm5UeXBlIjp7InR5cGUiOiJhcnJheSIsIml0ZW1zIjp7IiRyZWYiOiIjL2NvbXBvbmVudHMvc2NoZW1hcy9JSWRlbnRpdHkifX19LCJpZGVudGl0eU1hbmFnZXJHZXRJZGVudGl0eSI6eyJkZXNjcmlwdGlvbiI6IlJldHVybnMgYSBzcGVjaWZpYyBpZGVudGl0eSIsImFyZ3VtZW50cyI6eyIkcmVmIjoiIy9jb21wb25lbnRzL3NjaGVtYXMvSUlkZW50aXR5TWFuYWdlckdldElkZW50aXR5QXJncyJ9LCJyZXR1cm5UeXBlIjp7IiRyZWYiOiIjL2NvbXBvbmVudHMvc2NoZW1hcy9JSWRlbnRpdHkifX0sImlkZW50aXR5TWFuYWdlckdldElkZW50aXR5QnlBbGlhcyI6eyJkZXNjcmlwdGlvbiI6IlJldHVybnMgYSBzcGVjaWZpYyBpZGVudGl0eSBieSBhbGlhcyIsImFyZ3VtZW50cyI6eyIkcmVmIjoiIy9jb21wb25lbnRzL3NjaGVtYXMvSUlkZW50aXR5TWFuYWdlckdldElkZW50aXR5QnlBbGlhc0FyZ3MifSwicmV0dXJuVHlwZSI6eyIkcmVmIjoiIy9jb21wb25lbnRzL3NjaGVtYXMvSUlkZW50aXR5In19LCJpZGVudGl0eU1hbmFnZXJHZXRPckNyZWF0ZUlkZW50aXR5Ijp7ImRlc2NyaXB0aW9uIjoiUmV0dXJucyBhbiBleGlzdGluZyBpZGVudGl0eSBvciBjcmVhdGVzIGEgbmV3IG9uZSBmb3IgYSBzcGVjaWZpYyBhbGlhcyIsImFyZ3VtZW50cyI6eyIkcmVmIjoiIy9jb21wb25lbnRzL3NjaGVtYXMvSUlkZW50aXR5TWFuYWdlckdldE9yQ3JlYXRlSWRlbnRpdHlBcmdzIn0sInJldHVyblR5cGUiOnsiJHJlZiI6IiMvY29tcG9uZW50cy9zY2hlbWFzL0lJZGVudGl0eSJ9fSwiaWRlbnRpdHlNYW5hZ2VyR2V0UHJvdmlkZXJzIjp7ImRlc2NyaXB0aW9uIjoiUmV0dXJucyBhIGxpc3Qgb2YgYXZhaWxhYmxlIGlkZW50aXR5IHByb3ZpZGVycyIsImFyZ3VtZW50cyI6eyJ0eXBlIjoib2JqZWN0In0sInJldHVyblR5cGUiOnsidHlwZSI6ImFycmF5IiwiaXRlbXMiOnsidHlwZSI6InN0cmluZyJ9fX0sImlkZW50aXR5TWFuYWdlckltcG9ydElkZW50aXR5Ijp7ImRlc2NyaXB0aW9uIjoiSW1wb3J0cyBpZGVudGl0eSIsImFyZ3VtZW50cyI6eyIkcmVmIjoiIy9jb21wb25lbnRzL3NjaGVtYXMvSUlkZW50aXR5In0sInJldHVyblR5cGUiOnsiJHJlZiI6IiMvY29tcG9uZW50cy9zY2hlbWFzL0lJZGVudGl0eSJ9fSwiaWRlbnRpdHlNYW5hZ2VyUmVtb3ZlS2V5Ijp7ImRlc2NyaXB0aW9uIjoiUmVtb3ZlcyBhIGtleSBmcm9tIGEgRElEIERvY3VtZW50IiwiYXJndW1lbnRzIjp7IiRyZWYiOiIjL2NvbXBvbmVudHMvc2NoZW1hcy9JSWRlbnRpdHlNYW5hZ2VyUmVtb3ZlS2V5QXJncyJ9LCJyZXR1cm5UeXBlIjp7InR5cGUiOiJvYmplY3QifX0sImlkZW50aXR5TWFuYWdlclJlbW92ZVNlcnZpY2UiOnsiZGVzY3JpcHRpb24iOiJSZW1vdmVzIGEgc2VydmljZSBmcm9tIGEgRElEIERvY3VtZW50IiwiYXJndW1lbnRzIjp7IiRyZWYiOiIjL2NvbXBvbmVudHMvc2NoZW1hcy9JSWRlbnRpdHlNYW5hZ2VyUmVtb3ZlU2VydmljZUFyZ3MifSwicmV0dXJuVHlwZSI6eyJ0eXBlIjoib2JqZWN0In19LCJpZGVudGl0eU1hbmFnZXJTZXRBbGlhcyI6eyJkZXNjcmlwdGlvbiI6IlNldHMgaWRlbnRpdHkgYWxpYXMiLCJhcmd1bWVudHMiOnsiJHJlZiI6IiMvY29tcG9uZW50cy9zY2hlbWFzL0lJZGVudGl0eU1hbmFnZXJTZXRBbGlhc0FyZ3MifSwicmV0dXJuVHlwZSI6eyJ0eXBlIjoiYm9vbGVhbiJ9fX19fSwiSURhdGFTdG9yZSI6eyJjb21wb25lbnRzIjp7InNjaGVtYXMiOnsiSURhdGFTdG9yZUdldE1lc3NhZ2VBcmdzIjp7InR5cGUiOiJvYmplY3QiLCJwcm9wZXJ0aWVzIjp7ImlkIjp7InR5cGUiOiJzdHJpbmciLCJkZXNjcmlwdGlvbiI6IlJlcXVpcmVkLiBNZXNzYWdlIElEIn19LCJyZXF1aXJlZCI6WyJpZCJdLCJkZXNjcmlwdGlvbiI6IklucHV0IGFyZ3VtZW50cyBmb3Ige0BsaW5rIElEYXRhU3RvcmUuZGF0YVN0b3JlR2V0TWVzc2FnZSB8IGRhdGFTdG9yZUdldE1lc3NhZ2V9In0sIklNZXNzYWdlIjp7InR5cGUiOiJvYmplY3QiLCJwcm9wZXJ0aWVzIjp7ImlkIjp7InR5cGUiOiJzdHJpbmciLCJkZXNjcmlwdGlvbiI6IlVuaXF1ZSBtZXNzYWdlIElEIn0sInR5cGUiOnsidHlwZSI6InN0cmluZyIsImRlc2NyaXB0aW9uIjoiTWVzc2FnZSB0eXBlIn0sImNyZWF0ZWRBdCI6eyJ0eXBlIjoic3RyaW5nIiwiZGVzY3JpcHRpb24iOiJPcHRpb25hbC4gQ3JlYXRpb24gZGF0ZSAoSVNPIDg2MDEpIn0sImV4cGlyZXNBdCI6eyJ0eXBlIjoic3RyaW5nIiwiZGVzY3JpcHRpb24iOiJPcHRpb25hbC4gRXhwaXJhdGlvbiBkYXRlIChJU08gODYwMSkifSwidGhyZWFkSWQiOnsidHlwZSI6InN0cmluZyIsImRlc2NyaXB0aW9uIjoiT3B0aW9uYWwuIFRocmVhZCBJRCJ9LCJyYXciOnsidHlwZSI6InN0cmluZyIsImRlc2NyaXB0aW9uIjoiT3B0aW9uYWwuIE9yaWdpbmFsIG1lc3NhZ2UgcmF3IGRhdGEifSwiZGF0YSI6eyJhbnlPZiI6W3sidHlwZSI6Im9iamVjdCJ9LHsidHlwZSI6Im51bGwifV0sImRlc2NyaXB0aW9uIjoiT3B0aW9uYWwuIFBhcnNlZCBkYXRhIn0sInJlcGx5VG8iOnsidHlwZSI6ImFycmF5IiwiaXRlbXMiOnsidHlwZSI6InN0cmluZyJ9LCJkZXNjcmlwdGlvbiI6Ik9wdGlvbmFsLiBMaXN0IG9mIERJRHMgdG8gcmVwbHkgdG8ifSwicmVwbHlVcmwiOnsidHlwZSI6InN0cmluZyIsImRlc2NyaXB0aW9uIjoiT3B0aW9uYWwuIFVSTCB0byBwb3N0IGEgcmVwbHkgbWVzc2FnZSB0byJ9LCJmcm9tIjp7InR5cGUiOiJzdHJpbmciLCJkZXNjcmlwdGlvbiI6Ik9wdGlvbmFsLiBTZW5kZXIgRElEIn0sInRvIjp7InR5cGUiOiJzdHJpbmciLCJkZXNjcmlwdGlvbiI6Ik9wdGlvbmFsLiBSZWNpcGllbnQgRElEIn0sIm1ldGFEYXRhIjp7ImFueU9mIjpbeyJ0eXBlIjoiYXJyYXkiLCJpdGVtcyI6eyIkcmVmIjoiIy9jb21wb25lbnRzL3NjaGVtYXMvSU1ldGFEYXRhIn19LHsidHlwZSI6Im51bGwifV0sImRlc2NyaXB0aW9uIjoiT3B0aW9uYWwuIEFycmF5IG9mIG1lc3NhZ2UgbWV0YWRhdGEifSwiY3JlZGVudGlhbHMiOnsidHlwZSI6ImFycmF5IiwiaXRlbXMiOnsiJHJlZiI6IiMvY29tcG9uZW50cy9zY2hlbWFzL1ZlcmlmaWFibGVDcmVkZW50aWFsIn0sImRlc2NyaXB0aW9uIjoiT3B0aW9uYWwuIEFycmF5IG9mIGF0dGFjaGVkIHZlcmlmaWFibGUgY3JlZGVudGlhbHMifSwicHJlc2VudGF0aW9ucyI6eyJ0eXBlIjoiYXJyYXkiLCJpdGVtcyI6eyIkcmVmIjoiIy9jb21wb25lbnRzL3NjaGVtYXMvVmVyaWZpYWJsZVByZXNlbnRhdGlvbiJ9LCJkZXNjcmlwdGlvbiI6Ik9wdGlvbmFsLiBBcnJheSBvZiBhdHRhY2hlZCB2ZXJpZmlhYmxlIHByZXNlbnRhdGlvbnMifX0sInJlcXVpcmVkIjpbImlkIiwidHlwZSJdLCJkZXNjcmlwdGlvbiI6IkRJRENvbW0gbWVzc2FnZSJ9LCJJTWV0YURhdGEiOnsidHlwZSI6Im9iamVjdCIsInByb3BlcnRpZXMiOnsidHlwZSI6eyJ0eXBlIjoic3RyaW5nIiwiZGVzY3JpcHRpb24iOiJUeXBlIn0sInZhbHVlIjp7InR5cGUiOiJzdHJpbmciLCJkZXNjcmlwdGlvbiI6Ik9wdGlvbmFsLiBWYWx1ZSJ9fSwicmVxdWlyZWQiOlsidHlwZSJdLCJkZXNjcmlwdGlvbiI6Ik1lc3NhZ2UgbWV0YSBkYXRhIn0sIlZlcmlmaWFibGVDcmVkZW50aWFsIjp7InR5cGUiOiJvYmplY3QiLCJwcm9wZXJ0aWVzIjp7IkBjb250ZXh0Ijp7InR5cGUiOiJhcnJheSIsIml0ZW1zIjp7InR5cGUiOiJzdHJpbmcifX0sImlkIjp7InR5cGUiOiJzdHJpbmcifSwidHlwZSI6eyJ0eXBlIjoiYXJyYXkiLCJpdGVtcyI6eyJ0eXBlIjoic3RyaW5nIn19LCJpc3N1ZXIiOnsidHlwZSI6Im9iamVjdCIsInByb3BlcnRpZXMiOnsiaWQiOnsidHlwZSI6InN0cmluZyJ9fSwicmVxdWlyZWQiOlsiaWQiXX0sImlzc3VhbmNlRGF0ZSI6eyJ0eXBlIjoic3RyaW5nIn0sImV4cGlyYXRpb25EYXRlIjp7InR5cGUiOiJzdHJpbmcifSwiY3JlZGVudGlhbFN1YmplY3QiOnsidHlwZSI6Im9iamVjdCIsInByb3BlcnRpZXMiOnsiaWQiOnsidHlwZSI6InN0cmluZyJ9fX0sImNyZWRlbnRpYWxTdGF0dXMiOnsidHlwZSI6Im9iamVjdCIsInByb3BlcnRpZXMiOnsiaWQiOnsidHlwZSI6InN0cmluZyJ9LCJ0eXBlIjp7InR5cGUiOiJzdHJpbmcifX0sInJlcXVpcmVkIjpbImlkIiwidHlwZSJdfSwicHJvb2YiOnsidHlwZSI6Im9iamVjdCIsInByb3BlcnRpZXMiOnsidHlwZSI6eyJ0eXBlIjoic3RyaW5nIn19fX0sInJlcXVpcmVkIjpbIkBjb250ZXh0IiwidHlwZSIsImlzc3VlciIsImlzc3VhbmNlRGF0ZSIsImNyZWRlbnRpYWxTdWJqZWN0IiwicHJvb2YiXSwiZGVzY3JpcHRpb24iOiJWZXJpZmlhYmxlIENyZWRlbnRpYWwge0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9kZWNlbnRyYWxpemVkLWlkZW50aXR5L2RpZC1qd3QtdmN9In0sIlZlcmlmaWFibGVQcmVzZW50YXRpb24iOnsidHlwZSI6Im9iamVjdCIsInByb3BlcnRpZXMiOnsiaWQiOnsidHlwZSI6InN0cmluZyJ9LCJob2xkZXIiOnsidHlwZSI6InN0cmluZyJ9LCJpc3N1YW5jZURhdGUiOnsidHlwZSI6InN0cmluZyJ9LCJleHBpcmF0aW9uRGF0ZSI6eyJ0eXBlIjoic3RyaW5nIn0sIkBjb250ZXh0Ijp7InR5cGUiOiJhcnJheSIsIml0ZW1zIjp7InR5cGUiOiJzdHJpbmcifX0sInR5cGUiOnsidHlwZSI6ImFycmF5IiwiaXRlbXMiOnsidHlwZSI6InN0cmluZyJ9fSwidmVyaWZpZXIiOnsidHlwZSI6ImFycmF5IiwiaXRlbXMiOnsidHlwZSI6InN0cmluZyJ9fSwidmVyaWZpYWJsZUNyZWRlbnRpYWwiOnsidHlwZSI6ImFycmF5IiwiaXRlbXMiOnsiJHJlZiI6IiMvY29tcG9uZW50cy9zY2hlbWFzL1ZlcmlmaWFibGVDcmVkZW50aWFsIn19LCJwcm9vZiI6eyJ0eXBlIjoib2JqZWN0IiwicHJvcGVydGllcyI6eyJ0eXBlIjp7InR5cGUiOiJzdHJpbmcifX19fSwicmVxdWlyZWQiOlsiaG9sZGVyIiwiQGNvbnRleHQiLCJ0eXBlIiwidmVyaWZpZXIiLCJ2ZXJpZmlhYmxlQ3JlZGVudGlhbCIsInByb29mIl0sImRlc2NyaXB0aW9uIjoiVmVyaWZpYWJsZSBQcmVzZW50YXRpb24ge0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9kZWNlbnRyYWxpemVkLWlkZW50aXR5L2RpZC1qd3QtdmN9In0sIklEYXRhU3RvcmVHZXRWZXJpZmlhYmxlQ3JlZGVudGlhbEFyZ3MiOnsidHlwZSI6Im9iamVjdCIsInByb3BlcnRpZXMiOnsiaGFzaCI6eyJ0eXBlIjoic3RyaW5nIiwiZGVzY3JpcHRpb24iOiJSZXF1aXJlZC4gVmVyaWZpYWJsZUNyZWRlbnRpYWwgaGFzaCJ9fSwicmVxdWlyZWQiOlsiaGFzaCJdLCJkZXNjcmlwdGlvbiI6IklucHV0IGFyZ3VtZW50cyBmb3Ige0BsaW5rIElEYXRhU3RvcmUuZGF0YVN0b3JlR2V0VmVyaWZpYWJsZUNyZWRlbnRpYWwgfCBkYXRhU3RvcmVHZXRWZXJpZmlhYmxlQ3JlZGVudGlhbH0ifSwiSURhdGFTdG9yZUdldFZlcmlmaWFibGVQcmVzZW50YXRpb25BcmdzIjp7InR5cGUiOiJvYmplY3QiLCJwcm9wZXJ0aWVzIjp7Imhhc2giOnsidHlwZSI6InN0cmluZyIsImRlc2NyaXB0aW9uIjoiUmVxdWlyZWQuIFZlcmlmaWFibGVQcmVzZW50YXRpb24gaGFzaCJ9fSwicmVxdWlyZWQiOlsiaGFzaCJdLCJkZXNjcmlwdGlvbiI6IklucHV0IGFyZ3VtZW50cyBmb3Ige0BsaW5rIElEYXRhU3RvcmUuZGF0YVN0b3JlR2V0VmVyaWZpYWJsZVByZXNlbnRhdGlvbiB8IGRhdGFTdG9yZUdldFZlcmlmaWFibGVQcmVzZW50YXRpb259In0sIklEYXRhU3RvcmVTYXZlTWVzc2FnZUFyZ3MiOnsidHlwZSI6Im9iamVjdCIsInByb3BlcnRpZXMiOnsibWVzc2FnZSI6eyIkcmVmIjoiIy9jb21wb25lbnRzL3NjaGVtYXMvSU1lc3NhZ2UiLCJkZXNjcmlwdGlvbiI6IlJlcXVpcmVkLiBNZXNzYWdlIn19LCJyZXF1aXJlZCI6WyJtZXNzYWdlIl0sImRlc2NyaXB0aW9uIjoiSW5wdXQgYXJndW1lbnRzIGZvciB7QGxpbmsgSURhdGFTdG9yZS5kYXRhU3RvcmVTYXZlTWVzc2FnZSB8IGRhdGFTdG9yZVNhdmVNZXNzYWdlfSJ9LCJJRGF0YVN0b3JlU2F2ZVZlcmlmaWFibGVDcmVkZW50aWFsQXJncyI6eyJ0eXBlIjoib2JqZWN0IiwicHJvcGVydGllcyI6eyJ2ZXJpZmlhYmxlQ3JlZGVudGlhbCI6eyIkcmVmIjoiIy9jb21wb25lbnRzL3NjaGVtYXMvVmVyaWZpYWJsZUNyZWRlbnRpYWwiLCJkZXNjcmlwdGlvbiI6IlJlcXVpcmVkLiBWZXJpZmlhYmxlQ3JlZGVudGlhbCJ9fSwicmVxdWlyZWQiOlsidmVyaWZpYWJsZUNyZWRlbnRpYWwiXSwiZGVzY3JpcHRpb24iOiJJbnB1dCBhcmd1bWVudHMgZm9yIHtAbGluayBJRGF0YVN0b3JlLmRhdGFTdG9yZVNhdmVWZXJpZmlhYmxlQ3JlZGVudGlhbCB8IGRhdGFTdG9yZVNhdmVWZXJpZmlhYmxlQ3JlZGVudGlhbH0ifSwiSURhdGFTdG9yZVNhdmVWZXJpZmlhYmxlUHJlc2VudGF0aW9uQXJncyI6eyJ0eXBlIjoib2JqZWN0IiwicHJvcGVydGllcyI6eyJ2ZXJpZmlhYmxlUHJlc2VudGF0aW9uIjp7IiRyZWYiOiIjL2NvbXBvbmVudHMvc2NoZW1hcy9WZXJpZmlhYmxlUHJlc2VudGF0aW9uIiwiZGVzY3JpcHRpb24iOiJSZXF1aXJlZC4gVmVyaWZpYWJsZVByZXNlbnRhdGlvbiJ9fSwicmVxdWlyZWQiOlsidmVyaWZpYWJsZVByZXNlbnRhdGlvbiJdLCJkZXNjcmlwdGlvbiI6IklucHV0IGFyZ3VtZW50cyBmb3Ige0BsaW5rIElEYXRhU3RvcmUuZGF0YVN0b3JlU2F2ZVZlcmlmaWFibGVQcmVzZW50YXRpb24gfCBkYXRhU3RvcmVTYXZlVmVyaWZpYWJsZVByZXNlbnRhdGlvbn0ifX0sIm1ldGhvZHMiOnsiZGF0YVN0b3JlR2V0TWVzc2FnZSI6eyJkZXNjcmlwdGlvbiI6IkdldHMgbWVzc2FnZSBmcm9tIHRoZSBkYXRhIHN0b3JlIiwiYXJndW1lbnRzIjp7IiRyZWYiOiIjL2NvbXBvbmVudHMvc2NoZW1hcy9JRGF0YVN0b3JlR2V0TWVzc2FnZUFyZ3MifSwicmV0dXJuVHlwZSI6eyIkcmVmIjoiIy9jb21wb25lbnRzL3NjaGVtYXMvSU1lc3NhZ2UifX0sImRhdGFTdG9yZUdldFZlcmlmaWFibGVDcmVkZW50aWFsIjp7ImRlc2NyaXB0aW9uIjoiR2V0cyB2ZXJpZmlhYmxlIGNyZWRlbnRpYWwgZnJvbSB0aGUgZGF0YSBzdG9yZSIsImFyZ3VtZW50cyI6eyIkcmVmIjoiIy9jb21wb25lbnRzL3NjaGVtYXMvSURhdGFTdG9yZUdldFZlcmlmaWFibGVDcmVkZW50aWFsQXJncyJ9LCJyZXR1cm5UeXBlIjp7IiRyZWYiOiIjL2NvbXBvbmVudHMvc2NoZW1hcy9WZXJpZmlhYmxlQ3JlZGVudGlhbCJ9fSwiZGF0YVN0b3JlR2V0VmVyaWZpYWJsZVByZXNlbnRhdGlvbiI6eyJkZXNjcmlwdGlvbiI6IkdldHMgdmVyaWZpYWJsZSBwcmVzZW50YXRpb24gZnJvbSB0aGUgZGF0YSBzdG9yZSIsImFyZ3VtZW50cyI6eyIkcmVmIjoiIy9jb21wb25lbnRzL3NjaGVtYXMvSURhdGFTdG9yZUdldFZlcmlmaWFibGVQcmVzZW50YXRpb25BcmdzIn0sInJldHVyblR5cGUiOnsiJHJlZiI6IiMvY29tcG9uZW50cy9zY2hlbWFzL1ZlcmlmaWFibGVQcmVzZW50YXRpb24ifX0sImRhdGFTdG9yZVNhdmVNZXNzYWdlIjp7ImRlc2NyaXB0aW9uIjoiU2F2ZXMgbWVzc2FnZSB0byB0aGUgZGF0YSBzdG9yZSIsImFyZ3VtZW50cyI6eyIkcmVmIjoiIy9jb21wb25lbnRzL3NjaGVtYXMvSURhdGFTdG9yZVNhdmVNZXNzYWdlQXJncyJ9LCJyZXR1cm5UeXBlIjp7InR5cGUiOiJzdHJpbmcifX0sImRhdGFTdG9yZVNhdmVWZXJpZmlhYmxlQ3JlZGVudGlhbCI6eyJkZXNjcmlwdGlvbiI6IlNhdmVzIHZlcmlmaWFibGUgY3JlZGVudGlhbCB0byB0aGUgZGF0YSBzdG9yZSIsImFyZ3VtZW50cyI6eyIkcmVmIjoiIy9jb21wb25lbnRzL3NjaGVtYXMvSURhdGFTdG9yZVNhdmVWZXJpZmlhYmxlQ3JlZGVudGlhbEFyZ3MifSwicmV0dXJuVHlwZSI6eyJ0eXBlIjoic3RyaW5nIn19LCJkYXRhU3RvcmVTYXZlVmVyaWZpYWJsZVByZXNlbnRhdGlvbiI6eyJkZXNjcmlwdGlvbiI6IlNhdmVzIHZlcmlmaWFibGUgcHJlc2VudGF0aW9uIHRvIHRoZSBkYXRhIHN0b3JlIiwiYXJndW1lbnRzIjp7IiRyZWYiOiIjL2NvbXBvbmVudHMvc2NoZW1hcy9JRGF0YVN0b3JlU2F2ZVZlcmlmaWFibGVQcmVzZW50YXRpb25BcmdzIn0sInJldHVyblR5cGUiOnsidHlwZSI6InN0cmluZyJ9fX19fSwiSU1lc3NhZ2VIYW5kbGVyIjp7ImNvbXBvbmVudHMiOnsic2NoZW1hcyI6eyJJSGFuZGxlTWVzc2FnZUFyZ3MiOnsidHlwZSI6Im9iamVjdCIsInByb3BlcnRpZXMiOnsicmF3Ijp7InR5cGUiOiJzdHJpbmciLCJkZXNjcmlwdGlvbiI6IlJhdyBtZXNzYWdlIGRhdGEifSwibWV0YURhdGEiOnsidHlwZSI6ImFycmF5IiwiaXRlbXMiOnsiJHJlZiI6IiMvY29tcG9uZW50cy9zY2hlbWFzL0lNZXRhRGF0YSJ9LCJkZXNjcmlwdGlvbiI6Ik9wdGlvbmFsLiBNZXNzYWdlIG1ldGEgZGF0YSJ9LCJzYXZlIjp7InR5cGUiOiJib29sZWFuIiwiZGVzY3JpcHRpb24iOiJPcHRpb25hbC4gSWYgc2V0IHRvIGB0cnVlYCwgdGhlIG1lc3NhZ2Ugd2lsbCBiZSBzYXZlZCB1c2luZyB7QGxpbmsgSURhdGFTdG9yZS5kYXRhU3RvcmVTYXZlTWVzc2FnZSB8IGRhdGFTdG9yZVNhdmVNZXNzYWdlfSJ9fSwicmVxdWlyZWQiOlsicmF3Il0sImRlc2NyaXB0aW9uIjoiSW5wdXQgYXJndW1lbnRzIGZvciB7QGxpbmsgSU1lc3NhZ2VIYW5kbGVyLmhhbmRsZU1lc3NhZ2UgfCBoYW5kbGVNZXNzYWdlfSJ9LCJJTWV0YURhdGEiOnsidHlwZSI6Im9iamVjdCIsInByb3BlcnRpZXMiOnsidHlwZSI6eyJ0eXBlIjoic3RyaW5nIiwiZGVzY3JpcHRpb24iOiJUeXBlIn0sInZhbHVlIjp7InR5cGUiOiJzdHJpbmciLCJkZXNjcmlwdGlvbiI6Ik9wdGlvbmFsLiBWYWx1ZSJ9fSwicmVxdWlyZWQiOlsidHlwZSJdLCJkZXNjcmlwdGlvbiI6Ik1lc3NhZ2UgbWV0YSBkYXRhIn0sIklNZXNzYWdlIjp7InR5cGUiOiJvYmplY3QiLCJwcm9wZXJ0aWVzIjp7ImlkIjp7InR5cGUiOiJzdHJpbmciLCJkZXNjcmlwdGlvbiI6IlVuaXF1ZSBtZXNzYWdlIElEIn0sInR5cGUiOnsidHlwZSI6InN0cmluZyIsImRlc2NyaXB0aW9uIjoiTWVzc2FnZSB0eXBlIn0sImNyZWF0ZWRBdCI6eyJ0eXBlIjoic3RyaW5nIiwiZGVzY3JpcHRpb24iOiJPcHRpb25hbC4gQ3JlYXRpb24gZGF0ZSAoSVNPIDg2MDEpIn0sImV4cGlyZXNBdCI6eyJ0eXBlIjoic3RyaW5nIiwiZGVzY3JpcHRpb24iOiJPcHRpb25hbC4gRXhwaXJhdGlvbiBkYXRlIChJU08gODYwMSkifSwidGhyZWFkSWQiOnsidHlwZSI6InN0cmluZyIsImRlc2NyaXB0aW9uIjoiT3B0aW9uYWwuIFRocmVhZCBJRCJ9LCJyYXciOnsidHlwZSI6InN0cmluZyIsImRlc2NyaXB0aW9uIjoiT3B0aW9uYWwuIE9yaWdpbmFsIG1lc3NhZ2UgcmF3IGRhdGEifSwiZGF0YSI6eyJhbnlPZiI6W3sidHlwZSI6Im9iamVjdCJ9LHsidHlwZSI6Im51bGwifV0sImRlc2NyaXB0aW9uIjoiT3B0aW9uYWwuIFBhcnNlZCBkYXRhIn0sInJlcGx5VG8iOnsidHlwZSI6ImFycmF5IiwiaXRlbXMiOnsidHlwZSI6InN0cmluZyJ9LCJkZXNjcmlwdGlvbiI6Ik9wdGlvbmFsLiBMaXN0IG9mIERJRHMgdG8gcmVwbHkgdG8ifSwicmVwbHlVcmwiOnsidHlwZSI6InN0cmluZyIsImRlc2NyaXB0aW9uIjoiT3B0aW9uYWwuIFVSTCB0byBwb3N0IGEgcmVwbHkgbWVzc2FnZSB0byJ9LCJmcm9tIjp7InR5cGUiOiJzdHJpbmciLCJkZXNjcmlwdGlvbiI6Ik9wdGlvbmFsLiBTZW5kZXIgRElEIn0sInRvIjp7InR5cGUiOiJzdHJpbmciLCJkZXNjcmlwdGlvbiI6Ik9wdGlvbmFsLiBSZWNpcGllbnQgRElEIn0sIm1ldGFEYXRhIjp7ImFueU9mIjpbeyJ0eXBlIjoiYXJyYXkiLCJpdGVtcyI6eyIkcmVmIjoiIy9jb21wb25lbnRzL3NjaGVtYXMvSU1ldGFEYXRhIn19LHsidHlwZSI6Im51bGwifV0sImRlc2NyaXB0aW9uIjoiT3B0aW9uYWwuIEFycmF5IG9mIG1lc3NhZ2UgbWV0YWRhdGEifSwiY3JlZGVudGlhbHMiOnsidHlwZSI6ImFycmF5IiwiaXRlbXMiOnsiJHJlZiI6IiMvY29tcG9uZW50cy9zY2hlbWFzL1ZlcmlmaWFibGVDcmVkZW50aWFsIn0sImRlc2NyaXB0aW9uIjoiT3B0aW9uYWwuIEFycmF5IG9mIGF0dGFjaGVkIHZlcmlmaWFibGUgY3JlZGVudGlhbHMifSwicHJlc2VudGF0aW9ucyI6eyJ0eXBlIjoiYXJyYXkiLCJpdGVtcyI6eyIkcmVmIjoiIy9jb21wb25lbnRzL3NjaGVtYXMvVmVyaWZpYWJsZVByZXNlbnRhdGlvbiJ9LCJkZXNjcmlwdGlvbiI6Ik9wdGlvbmFsLiBBcnJheSBvZiBhdHRhY2hlZCB2ZXJpZmlhYmxlIHByZXNlbnRhdGlvbnMifX0sInJlcXVpcmVkIjpbImlkIiwidHlwZSJdLCJkZXNjcmlwdGlvbiI6IkRJRENvbW0gbWVzc2FnZSJ9LCJWZXJpZmlhYmxlQ3JlZGVudGlhbCI6eyJ0eXBlIjoib2JqZWN0IiwicHJvcGVydGllcyI6eyJAY29udGV4dCI6eyJ0eXBlIjoiYXJyYXkiLCJpdGVtcyI6eyJ0eXBlIjoic3RyaW5nIn19LCJpZCI6eyJ0eXBlIjoic3RyaW5nIn0sInR5cGUiOnsidHlwZSI6ImFycmF5IiwiaXRlbXMiOnsidHlwZSI6InN0cmluZyJ9fSwiaXNzdWVyIjp7InR5cGUiOiJvYmplY3QiLCJwcm9wZXJ0aWVzIjp7ImlkIjp7InR5cGUiOiJzdHJpbmcifX0sInJlcXVpcmVkIjpbImlkIl19LCJpc3N1YW5jZURhdGUiOnsidHlwZSI6InN0cmluZyJ9LCJleHBpcmF0aW9uRGF0ZSI6eyJ0eXBlIjoic3RyaW5nIn0sImNyZWRlbnRpYWxTdWJqZWN0Ijp7InR5cGUiOiJvYmplY3QiLCJwcm9wZXJ0aWVzIjp7ImlkIjp7InR5cGUiOiJzdHJpbmcifX19LCJjcmVkZW50aWFsU3RhdHVzIjp7InR5cGUiOiJvYmplY3QiLCJwcm9wZXJ0aWVzIjp7ImlkIjp7InR5cGUiOiJzdHJpbmcifSwidHlwZSI6eyJ0eXBlIjoic3RyaW5nIn19LCJyZXF1aXJlZCI6WyJpZCIsInR5cGUiXX0sInByb29mIjp7InR5cGUiOiJvYmplY3QiLCJwcm9wZXJ0aWVzIjp7InR5cGUiOnsidHlwZSI6InN0cmluZyJ9fX19LCJyZXF1aXJlZCI6WyJAY29udGV4dCIsInR5cGUiLCJpc3N1ZXIiLCJpc3N1YW5jZURhdGUiLCJjcmVkZW50aWFsU3ViamVjdCIsInByb29mIl0sImRlc2NyaXB0aW9uIjoiVmVyaWZpYWJsZSBDcmVkZW50aWFsIHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vZGVjZW50cmFsaXplZC1pZGVudGl0eS9kaWQtand0LXZjfSJ9LCJWZXJpZmlhYmxlUHJlc2VudGF0aW9uIjp7InR5cGUiOiJvYmplY3QiLCJwcm9wZXJ0aWVzIjp7ImlkIjp7InR5cGUiOiJzdHJpbmcifSwiaG9sZGVyIjp7InR5cGUiOiJzdHJpbmcifSwiaXNzdWFuY2VEYXRlIjp7InR5cGUiOiJzdHJpbmcifSwiZXhwaXJhdGlvbkRhdGUiOnsidHlwZSI6InN0cmluZyJ9LCJAY29udGV4dCI6eyJ0eXBlIjoiYXJyYXkiLCJpdGVtcyI6eyJ0eXBlIjoic3RyaW5nIn19LCJ0eXBlIjp7InR5cGUiOiJhcnJheSIsIml0ZW1zIjp7InR5cGUiOiJzdHJpbmcifX0sInZlcmlmaWVyIjp7InR5cGUiOiJhcnJheSIsIml0ZW1zIjp7InR5cGUiOiJzdHJpbmcifX0sInZlcmlmaWFibGVDcmVkZW50aWFsIjp7InR5cGUiOiJhcnJheSIsIml0ZW1zIjp7IiRyZWYiOiIjL2NvbXBvbmVudHMvc2NoZW1hcy9WZXJpZmlhYmxlQ3JlZGVudGlhbCJ9fSwicHJvb2YiOnsidHlwZSI6Im9iamVjdCIsInByb3BlcnRpZXMiOnsidHlwZSI6eyJ0eXBlIjoic3RyaW5nIn19fX0sInJlcXVpcmVkIjpbImhvbGRlciIsIkBjb250ZXh0IiwidHlwZSIsInZlcmlmaWVyIiwidmVyaWZpYWJsZUNyZWRlbnRpYWwiLCJwcm9vZiJdLCJkZXNjcmlwdGlvbiI6IlZlcmlmaWFibGUgUHJlc2VudGF0aW9uIHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vZGVjZW50cmFsaXplZC1pZGVudGl0eS9kaWQtand0LXZjfSJ9fSwibWV0aG9kcyI6eyJoYW5kbGVNZXNzYWdlIjp7ImRlc2NyaXB0aW9uIjoiUGFyc2VzIGFuZCBvcHRpb25hbGx5IHNhdmVzIGEgbWVzc2FnZSIsImFyZ3VtZW50cyI6eyIkcmVmIjoiIy9jb21wb25lbnRzL3NjaGVtYXMvSUhhbmRsZU1lc3NhZ2VBcmdzIn0sInJldHVyblR5cGUiOnsiJHJlZiI6IiMvY29tcG9uZW50cy9zY2hlbWFzL0lNZXNzYWdlIn19fX19fX0sIkBjb250ZXh0IjpbImh0dHBzOi8vd3d3LnczLm9yZy8yMDE4L2NyZWRlbnRpYWxzL3YxIl0sInR5cGUiOlsiVmVyaWZpYWJsZUNyZWRlbnRpYWwiLCJBZ2VudFBsdWdpblNjaGVtYSJdfSwibmJmIjoxNjA2MTI5NzgzLCJpc3MiOiJkaWQ6ZXRocjpyaW5rZWJ5OjB4OTZiYmVmNzcyZmNjNGY5Y2Y1MGM1MjNiNTU5YmY2YzNhOWVmYzU1NiJ9.04LUuhNvS61XsOiL5XTXzinKE9oj4iu25eCg7Ry03aKqm5SCccRZjYvSkWNXp8UwGVX-cZjFMvgJryGjJm1Yrw" - } -} \ No newline at end of file diff --git a/packages/daf-core/plugin.schema.json b/packages/daf-core/plugin.schema.json new file mode 100644 index 000000000..a2932ad11 --- /dev/null +++ b/packages/daf-core/plugin.schema.json @@ -0,0 +1,1640 @@ +{ + "IResolver": { + "components": { + "schemas": { + "ResolveDidArgs": { + "type": "object", + "properties": { + "didUrl": { + "type": "string", + "description": "DID URL" + } + }, + "required": [ + "didUrl" + ], + "description": "Input arguments for {@link IResolver.resolveDid | resolveDid}" + }, + "DIDDocument": { + "type": "object", + "properties": { + "@context": { + "type": "string", + "const": "https://w3id.org/did/v1" + }, + "id": { + "type": "string" + }, + "publicKey": { + "type": "array", + "items": { + "$ref": "#/components/schemas/PublicKey" + } + }, + "authentication": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Authentication" + } + }, + "uportProfile": {}, + "service": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ServiceEndpoint" + } + }, + "created": { + "type": "string" + }, + "updated": { + "type": "string" + }, + "proof": { + "$ref": "#/components/schemas/LinkedDataProof" + }, + "keyAgreement": { + "type": "array", + "items": { + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/components/schemas/PublicKey" + } + ] + } + } + }, + "required": [ + "@context", + "id", + "publicKey" + ] + }, + "PublicKey": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "type": { + "type": "string" + }, + "controller": { + "type": "string" + }, + "ethereumAddress": { + "type": "string" + }, + "publicKeyBase64": { + "type": "string" + }, + "publicKeyBase58": { + "type": "string" + }, + "publicKeyHex": { + "type": "string" + }, + "publicKeyPem": { + "type": "string" + } + }, + "required": [ + "id", + "type", + "controller" + ] + }, + "Authentication": { + "type": "object", + "properties": { + "type": { + "type": "string" + }, + "publicKey": { + "type": "string" + } + }, + "required": [ + "type", + "publicKey" + ] + }, + "ServiceEndpoint": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "type": { + "type": "string" + }, + "serviceEndpoint": { + "type": "string" + }, + "description": { + "type": "string" + } + }, + "required": [ + "id", + "type", + "serviceEndpoint" + ] + }, + "LinkedDataProof": { + "type": "object", + "properties": { + "type": { + "type": "string" + }, + "created": { + "type": "string" + }, + "creator": { + "type": "string" + }, + "nonce": { + "type": "string" + }, + "signatureValue": { + "type": "string" + } + }, + "required": [ + "type", + "created", + "creator", + "nonce", + "signatureValue" + ] + } + }, + "methods": { + "resolveDid": { + "description": "Resolves DID and returns DID Document", + "arguments": { + "$ref": "#/components/schemas/ResolveDidArgs" + }, + "returnType": { + "$ref": "#/components/schemas/DIDDocument" + } + } + } + } + }, + "IKeyManager": { + "components": { + "schemas": { + "IKeyManagerCreateKeyArgs": { + "type": "object", + "properties": { + "type": { + "$ref": "#/components/schemas/TKeyType", + "description": "Key type" + }, + "kms": { + "type": "string", + "description": "Key Management System" + }, + "meta": { + "type": "object", + "description": "Optional. Key meta data" + } + }, + "required": [ + "type", + "kms" + ], + "description": "Input arguments for {@link IKeyManager.keyManagerCreateKey | keyManagerCreateKey}" + }, + "TKeyType": { + "type": "string", + "enum": [ + "Ed25519", + "Secp256k1" + ], + "description": "Cryptographic key type" + }, + "IKey": { + "type": "object", + "properties": { + "kid": { + "type": "string", + "description": "Key ID" + }, + "kms": { + "type": "string", + "description": "Key Management System" + }, + "type": { + "$ref": "#/components/schemas/TKeyType", + "description": "Key type" + }, + "publicKeyHex": { + "type": "string", + "description": "Public key" + }, + "privateKeyHex": { + "type": "string", + "description": "Optional. Private key" + }, + "meta": { + "anyOf": [ + { + "type": "object" + }, + { + "type": "null" + } + ], + "description": "Optional. Key metadata. Can be used to store auth data to access remote kms" + } + }, + "required": [ + "kid", + "kms", + "type", + "publicKeyHex" + ], + "description": "Cryptographic key" + }, + "IKeyManagerDecryptJWEArgs": { + "type": "object", + "properties": { + "kid": { + "type": "string", + "description": "Key ID" + }, + "data": { + "type": "string", + "description": "Encrypted data" + } + }, + "required": [ + "kid", + "data" + ], + "description": "Input arguments for {@link IKeyManager.keyManagerDecryptJWE | keyManagerDecryptJWE}" + }, + "IKeyManagerDeleteKeyArgs": { + "type": "object", + "properties": { + "kid": { + "type": "string", + "description": "Key ID" + } + }, + "required": [ + "kid" + ], + "description": "Input arguments for {@link IKeyManager.keyManagerDeleteKey | keyManagerDeleteKey}" + }, + "IKeyManagerEncryptJWEArgs": { + "type": "object", + "properties": { + "kid": { + "type": "string", + "description": "Key ID to use for encryption" + }, + "to": { + "type": "object", + "properties": { + "kid": { + "type": "string", + "description": "Key ID" + }, + "type": { + "$ref": "#/components/schemas/TKeyType", + "description": "Key type" + }, + "publicKeyHex": { + "type": "string", + "description": "Public key" + }, + "privateKeyHex": { + "type": "string", + "description": "Optional. Private key" + }, + "meta": { + "anyOf": [ + { + "type": "object" + }, + { + "type": "null" + } + ], + "description": "Optional. Key metadata. Can be used to store auth data to access remote kms" + } + }, + "required": [ + "kid", + "type", + "publicKeyHex" + ], + "description": "Recipient key object" + }, + "data": { + "type": "string", + "description": "Data to encrypt" + } + }, + "required": [ + "kid", + "to", + "data" + ], + "description": "Input arguments for {@link IKeyManager.keyManagerEncryptJWE | keyManagerEncryptJWE}" + }, + "IKeyManagerGetKeyArgs": { + "type": "object", + "properties": { + "kid": { + "type": "string", + "description": "Key ID" + } + }, + "required": [ + "kid" + ], + "description": "Input arguments for {@link IKeyManager.keyManagerGetKey | keyManagerGetKey}" + }, + "IKeyManagerSignEthTXArgs": { + "type": "object", + "properties": { + "kid": { + "type": "string", + "description": "Key ID" + }, + "transaction": { + "type": "object", + "description": "Ethereum transaction object" + } + }, + "required": [ + "kid", + "transaction" + ], + "description": "Input arguments for {@link IKeyManager.keyManagerSignEthTX | keyManagerSignEthTX}" + }, + "IKeyManagerSignJWTArgs": { + "type": "object", + "properties": { + "kid": { + "type": "string", + "description": "Key ID" + }, + "data": { + "type": "string", + "description": "Data to sign" + } + }, + "required": [ + "kid", + "data" + ], + "description": "Input arguments for {@link IKeyManager.keyManagerSignJWT | keyManagerSignJWT}" + }, + "EcdsaSignature": { + "type": "object", + "properties": { + "r": { + "type": "string" + }, + "s": { + "type": "string" + }, + "recoveryParam": { + "type": "number", + "const": 1 + } + }, + "required": [ + "r", + "s", + "recoveryParam" + ] + } + }, + "methods": { + "keyManagerCreateKey": { + "description": "Creates and returns a new key", + "arguments": { + "$ref": "#/components/schemas/IKeyManagerCreateKeyArgs" + }, + "returnType": { + "$ref": "#/components/schemas/IKey" + } + }, + "keyManagerDecryptJWE": { + "description": "Decrypts data", + "arguments": { + "$ref": "#/components/schemas/IKeyManagerDecryptJWEArgs" + }, + "returnType": { + "type": "string" + } + }, + "keyManagerDeleteKey": { + "description": "Deletes a key", + "arguments": { + "$ref": "#/components/schemas/IKeyManagerDeleteKeyArgs" + }, + "returnType": { + "type": "boolean" + } + }, + "keyManagerEncryptJWE": { + "description": "Encrypts data", + "arguments": { + "$ref": "#/components/schemas/IKeyManagerEncryptJWEArgs" + }, + "returnType": { + "type": "string" + } + }, + "keyManagerGetKey": { + "description": "Returns an existing key", + "arguments": { + "$ref": "#/components/schemas/IKeyManagerGetKeyArgs" + }, + "returnType": { + "$ref": "#/components/schemas/IKey" + } + }, + "keyManagerGetKeyManagementSystems": { + "description": "Lists available key management systems", + "arguments": { + "type": "object" + }, + "returnType": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "keyManagerImportKey": { + "description": "Imports a created key", + "arguments": { + "$ref": "#/components/schemas/IKey" + }, + "returnType": { + "type": "boolean" + } + }, + "keyManagerSignEthTX": { + "description": "Signs Ethereum transaction", + "arguments": { + "$ref": "#/components/schemas/IKeyManagerSignEthTXArgs" + }, + "returnType": { + "type": "string" + } + }, + "keyManagerSignJWT": { + "description": "Signs JWT", + "arguments": { + "$ref": "#/components/schemas/IKeyManagerSignJWTArgs" + }, + "returnType": { + "$ref": "#/components/schemas/EcdsaSignature" + } + } + } + } + }, + "IIdentityManager": { + "components": { + "schemas": { + "IIdentityManagerAddKeyArgs": { + "type": "object", + "properties": { + "did": { + "type": "string", + "description": "DID" + }, + "key": { + "$ref": "#/components/schemas/IKey", + "description": "Key object" + }, + "options": { + "type": "object", + "description": "Optional. Identity provider specific options" + } + }, + "required": [ + "did", + "key" + ], + "description": "Input arguments for {@link IIdentityManager.identityManagerAddKey | identityManagerAddKey}" + }, + "IKey": { + "type": "object", + "properties": { + "kid": { + "type": "string", + "description": "Key ID" + }, + "kms": { + "type": "string", + "description": "Key Management System" + }, + "type": { + "$ref": "#/components/schemas/TKeyType", + "description": "Key type" + }, + "publicKeyHex": { + "type": "string", + "description": "Public key" + }, + "privateKeyHex": { + "type": "string", + "description": "Optional. Private key" + }, + "meta": { + "anyOf": [ + { + "type": "object" + }, + { + "type": "null" + } + ], + "description": "Optional. Key metadata. Can be used to store auth data to access remote kms" + } + }, + "required": [ + "kid", + "kms", + "type", + "publicKeyHex" + ], + "description": "Cryptographic key" + }, + "TKeyType": { + "type": "string", + "enum": [ + "Ed25519", + "Secp256k1" + ], + "description": "Cryptographic key type" + }, + "IIdentityManagerAddServiceArgs": { + "type": "object", + "properties": { + "did": { + "type": "string", + "description": "DID" + }, + "service": { + "$ref": "#/components/schemas/IService", + "description": "Service object" + }, + "options": { + "type": "object", + "description": "Optional. Identity provider specific options" + } + }, + "required": [ + "did", + "service" + ], + "description": "Input arguments for {@link IIdentityManager.identityManagerAddService | identityManagerAddService}" + }, + "IService": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "ID" + }, + "type": { + "type": "string", + "description": "Service type" + }, + "serviceEndpoint": { + "type": "string", + "description": "Endpoint URL" + }, + "description": { + "type": "string", + "description": "Optional. Description" + } + }, + "required": [ + "id", + "type", + "serviceEndpoint" + ], + "description": "Identity service" + }, + "IIdentityManagerCreateIdentityArgs": { + "type": "object", + "properties": { + "alias": { + "type": "string", + "description": "Optional. Identity alias. Can be used to reference an object in an external system" + }, + "provider": { + "type": "string", + "description": "Optional. Identity provider" + }, + "kms": { + "type": "string", + "description": "Optional. Key Management System" + }, + "options": { + "type": "object", + "description": "Optional. Identity provider specific options" + } + }, + "description": "Input arguments for {@link IIdentityManager.identityManagerCreateIdentity | identityManagerCreateIdentity}" + }, + "IIdentity": { + "type": "object", + "properties": { + "did": { + "type": "string", + "description": "Decentralized identifier" + }, + "alias": { + "type": "string", + "description": "Optional. Identity alias. Can be used to reference an object in an external system" + }, + "provider": { + "type": "string", + "description": "Identity provider name" + }, + "controllerKeyId": { + "type": "string", + "description": "Controller key id" + }, + "keys": { + "type": "array", + "items": { + "$ref": "#/components/schemas/IKey" + }, + "description": "Array of managed keys" + }, + "services": { + "type": "array", + "items": { + "$ref": "#/components/schemas/IService" + }, + "description": "Array of services" + } + }, + "required": [ + "did", + "provider", + "keys", + "services" + ], + "description": "Identity interface" + }, + "IIdentityManagerDeleteIdentityArgs": { + "type": "object", + "properties": { + "did": { + "type": "string", + "description": "DID" + } + }, + "required": [ + "did" + ], + "description": "Input arguments for {@link IIdentityManager.identityManagerDeleteIdentity | identityManagerDeleteIdentity}" + }, + "IIdentityManagerGetIdentitiesArgs": { + "type": "object", + "properties": { + "alias": { + "type": "string", + "description": "Optional. Alias" + }, + "provider": { + "type": "string", + "description": "Optional. Provider" + } + }, + "description": "Input arguments for {@link IIdentityManager.identityManagerGetIdentities | identityManagerGetIdentities}" + }, + "IIdentityManagerGetIdentityArgs": { + "type": "object", + "properties": { + "did": { + "type": "string", + "description": "DID" + } + }, + "required": [ + "did" + ], + "description": "Input arguments for {@link IIdentityManager.identityManagerGetIdentity | identityManagerGetIdentity}" + }, + "IIdentityManagerGetIdentityByAliasArgs": { + "type": "object", + "properties": { + "alias": { + "type": "string", + "description": "Alias" + }, + "provider": { + "type": "string", + "description": "Optional provider" + } + }, + "required": [ + "alias" + ], + "description": "Input arguments for {@link IIdentityManager.identityManagerGetIdentityByAlias | identityManagerGetIdentityByAlias}" + }, + "IIdentityManagerGetOrCreateIdentityArgs": { + "type": "object", + "properties": { + "alias": { + "type": "string", + "description": "Identity alias. Can be used to reference an object in an external system" + }, + "provider": { + "type": "string", + "description": "Optional. Identity provider" + }, + "kms": { + "type": "string", + "description": "Optional. Key Management System" + }, + "options": { + "type": "object", + "description": "Optional. Identity provider specific options" + } + }, + "required": [ + "alias" + ], + "description": "Input arguments for {@link IIdentityManager.identityManagerGetOrCreateIdentity | identityManagerGetOrCreateIdentity}" + }, + "IIdentityManagerRemoveKeyArgs": { + "type": "object", + "properties": { + "did": { + "type": "string", + "description": "DID" + }, + "kid": { + "type": "string", + "description": "Key ID" + }, + "options": { + "type": "object", + "description": "Optional. Identity provider specific options" + } + }, + "required": [ + "did", + "kid" + ], + "description": "Input arguments for {@link IIdentityManager.identityManagerRemoveKey | identityManagerRemoveKey}" + }, + "IIdentityManagerRemoveServiceArgs": { + "type": "object", + "properties": { + "did": { + "type": "string", + "description": "DID" + }, + "id": { + "type": "string", + "description": "Service ID" + }, + "options": { + "type": "object", + "description": "Optional. Identity provider specific options" + } + }, + "required": [ + "did", + "id" + ], + "description": "Input arguments for {@link IIdentityManager.identityManagerRemoveService | identityManagerRemoveService}" + }, + "IIdentityManagerSetAliasArgs": { + "type": "object", + "properties": { + "did": { + "type": "string", + "description": "Required. DID" + }, + "alias": { + "type": "string", + "description": "Required. Identity alias" + } + }, + "required": [ + "did", + "alias" + ], + "description": "Input arguments for {@link IIdentityManager.identityManagerSetAlias | identityManagerSetAlias}" + } + }, + "methods": { + "identityManagerAddKey": { + "description": "Adds a key to a DID Document", + "arguments": { + "$ref": "#/components/schemas/IIdentityManagerAddKeyArgs" + }, + "returnType": { + "type": "object" + } + }, + "identityManagerAddService": { + "description": "Adds a service to a DID Document", + "arguments": { + "$ref": "#/components/schemas/IIdentityManagerAddServiceArgs" + }, + "returnType": { + "type": "object" + } + }, + "identityManagerCreateIdentity": { + "description": "Creates and returns a new identity", + "arguments": { + "$ref": "#/components/schemas/IIdentityManagerCreateIdentityArgs" + }, + "returnType": { + "$ref": "#/components/schemas/IIdentity" + } + }, + "identityManagerDeleteIdentity": { + "description": "Deletes identity", + "arguments": { + "$ref": "#/components/schemas/IIdentityManagerDeleteIdentityArgs" + }, + "returnType": { + "type": "boolean" + } + }, + "identityManagerGetIdentities": { + "description": "Returns a list of managed identities", + "arguments": { + "$ref": "#/components/schemas/IIdentityManagerGetIdentitiesArgs" + }, + "returnType": { + "type": "array", + "items": { + "$ref": "#/components/schemas/IIdentity" + } + } + }, + "identityManagerGetIdentity": { + "description": "Returns a specific identity", + "arguments": { + "$ref": "#/components/schemas/IIdentityManagerGetIdentityArgs" + }, + "returnType": { + "$ref": "#/components/schemas/IIdentity" + } + }, + "identityManagerGetIdentityByAlias": { + "description": "Returns a specific identity by alias", + "arguments": { + "$ref": "#/components/schemas/IIdentityManagerGetIdentityByAliasArgs" + }, + "returnType": { + "$ref": "#/components/schemas/IIdentity" + } + }, + "identityManagerGetOrCreateIdentity": { + "description": "Returns an existing identity or creates a new one for a specific alias", + "arguments": { + "$ref": "#/components/schemas/IIdentityManagerGetOrCreateIdentityArgs" + }, + "returnType": { + "$ref": "#/components/schemas/IIdentity" + } + }, + "identityManagerGetProviders": { + "description": "Returns a list of available identity providers", + "arguments": { + "type": "object" + }, + "returnType": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "identityManagerImportIdentity": { + "description": "Imports identity", + "arguments": { + "$ref": "#/components/schemas/IIdentity" + }, + "returnType": { + "$ref": "#/components/schemas/IIdentity" + } + }, + "identityManagerRemoveKey": { + "description": "Removes a key from a DID Document", + "arguments": { + "$ref": "#/components/schemas/IIdentityManagerRemoveKeyArgs" + }, + "returnType": { + "type": "object" + } + }, + "identityManagerRemoveService": { + "description": "Removes a service from a DID Document", + "arguments": { + "$ref": "#/components/schemas/IIdentityManagerRemoveServiceArgs" + }, + "returnType": { + "type": "object" + } + }, + "identityManagerSetAlias": { + "description": "Sets identity alias", + "arguments": { + "$ref": "#/components/schemas/IIdentityManagerSetAliasArgs" + }, + "returnType": { + "type": "boolean" + } + } + } + } + }, + "IDataStore": { + "components": { + "schemas": { + "IDataStoreGetMessageArgs": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "Required. Message ID" + } + }, + "required": [ + "id" + ], + "description": "Input arguments for {@link IDataStore.dataStoreGetMessage | dataStoreGetMessage}" + }, + "IMessage": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "Unique message ID" + }, + "type": { + "type": "string", + "description": "Message type" + }, + "createdAt": { + "type": "string", + "description": "Optional. Creation date (ISO 8601)" + }, + "expiresAt": { + "type": "string", + "description": "Optional. Expiration date (ISO 8601)" + }, + "threadId": { + "type": "string", + "description": "Optional. Thread ID" + }, + "raw": { + "type": "string", + "description": "Optional. Original message raw data" + }, + "data": { + "anyOf": [ + { + "type": "object" + }, + { + "type": "null" + } + ], + "description": "Optional. Parsed data" + }, + "replyTo": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Optional. List of DIDs to reply to" + }, + "replyUrl": { + "type": "string", + "description": "Optional. URL to post a reply message to" + }, + "from": { + "type": "string", + "description": "Optional. Sender DID" + }, + "to": { + "type": "string", + "description": "Optional. Recipient DID" + }, + "metaData": { + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/components/schemas/IMetaData" + } + }, + { + "type": "null" + } + ], + "description": "Optional. Array of message metadata" + }, + "credentials": { + "type": "array", + "items": { + "$ref": "#/components/schemas/VerifiableCredential" + }, + "description": "Optional. Array of attached verifiable credentials" + }, + "presentations": { + "type": "array", + "items": { + "$ref": "#/components/schemas/VerifiablePresentation" + }, + "description": "Optional. Array of attached verifiable presentations" + } + }, + "required": [ + "id", + "type" + ], + "description": "DIDComm message" + }, + "IMetaData": { + "type": "object", + "properties": { + "type": { + "type": "string", + "description": "Type" + }, + "value": { + "type": "string", + "description": "Optional. Value" + } + }, + "required": [ + "type" + ], + "description": "Message meta data" + }, + "VerifiableCredential": { + "type": "object", + "properties": { + "@context": { + "type": "array", + "items": { + "type": "string" + } + }, + "id": { + "type": "string" + }, + "type": { + "type": "array", + "items": { + "type": "string" + } + }, + "issuer": { + "type": "object", + "properties": { + "id": { + "type": "string" + } + }, + "required": [ + "id" + ] + }, + "issuanceDate": { + "type": "string" + }, + "expirationDate": { + "type": "string" + }, + "credentialSubject": { + "type": "object", + "properties": { + "id": { + "type": "string" + } + } + }, + "credentialStatus": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "type": { + "type": "string" + } + }, + "required": [ + "id", + "type" + ] + }, + "proof": { + "type": "object", + "properties": { + "type": { + "type": "string" + } + } + } + }, + "required": [ + "@context", + "type", + "issuer", + "issuanceDate", + "credentialSubject", + "proof" + ], + "description": "Verifiable Credential {@link https://github.com/decentralized-identity/did-jwt-vc}" + }, + "VerifiablePresentation": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "holder": { + "type": "string" + }, + "issuanceDate": { + "type": "string" + }, + "expirationDate": { + "type": "string" + }, + "@context": { + "type": "array", + "items": { + "type": "string" + } + }, + "type": { + "type": "array", + "items": { + "type": "string" + } + }, + "verifier": { + "type": "array", + "items": { + "type": "string" + } + }, + "verifiableCredential": { + "type": "array", + "items": { + "$ref": "#/components/schemas/VerifiableCredential" + } + }, + "proof": { + "type": "object", + "properties": { + "type": { + "type": "string" + } + } + } + }, + "required": [ + "holder", + "@context", + "type", + "verifier", + "verifiableCredential", + "proof" + ], + "description": "Verifiable Presentation {@link https://github.com/decentralized-identity/did-jwt-vc}" + }, + "IDataStoreGetVerifiableCredentialArgs": { + "type": "object", + "properties": { + "hash": { + "type": "string", + "description": "Required. VerifiableCredential hash" + } + }, + "required": [ + "hash" + ], + "description": "Input arguments for {@link IDataStore.dataStoreGetVerifiableCredential | dataStoreGetVerifiableCredential}" + }, + "IDataStoreGetVerifiablePresentationArgs": { + "type": "object", + "properties": { + "hash": { + "type": "string", + "description": "Required. VerifiablePresentation hash" + } + }, + "required": [ + "hash" + ], + "description": "Input arguments for {@link IDataStore.dataStoreGetVerifiablePresentation | dataStoreGetVerifiablePresentation}" + }, + "IDataStoreSaveMessageArgs": { + "type": "object", + "properties": { + "message": { + "$ref": "#/components/schemas/IMessage", + "description": "Required. Message" + } + }, + "required": [ + "message" + ], + "description": "Input arguments for {@link IDataStore.dataStoreSaveMessage | dataStoreSaveMessage}" + }, + "IDataStoreSaveVerifiableCredentialArgs": { + "type": "object", + "properties": { + "verifiableCredential": { + "$ref": "#/components/schemas/VerifiableCredential", + "description": "Required. VerifiableCredential" + } + }, + "required": [ + "verifiableCredential" + ], + "description": "Input arguments for {@link IDataStore.dataStoreSaveVerifiableCredential | dataStoreSaveVerifiableCredential}" + }, + "IDataStoreSaveVerifiablePresentationArgs": { + "type": "object", + "properties": { + "verifiablePresentation": { + "$ref": "#/components/schemas/VerifiablePresentation", + "description": "Required. VerifiablePresentation" + } + }, + "required": [ + "verifiablePresentation" + ], + "description": "Input arguments for {@link IDataStore.dataStoreSaveVerifiablePresentation | dataStoreSaveVerifiablePresentation}" + } + }, + "methods": { + "dataStoreGetMessage": { + "description": "Gets message from the data store", + "arguments": { + "$ref": "#/components/schemas/IDataStoreGetMessageArgs" + }, + "returnType": { + "$ref": "#/components/schemas/IMessage" + } + }, + "dataStoreGetVerifiableCredential": { + "description": "Gets verifiable credential from the data store", + "arguments": { + "$ref": "#/components/schemas/IDataStoreGetVerifiableCredentialArgs" + }, + "returnType": { + "$ref": "#/components/schemas/VerifiableCredential" + } + }, + "dataStoreGetVerifiablePresentation": { + "description": "Gets verifiable presentation from the data store", + "arguments": { + "$ref": "#/components/schemas/IDataStoreGetVerifiablePresentationArgs" + }, + "returnType": { + "$ref": "#/components/schemas/VerifiablePresentation" + } + }, + "dataStoreSaveMessage": { + "description": "Saves message to the data store", + "arguments": { + "$ref": "#/components/schemas/IDataStoreSaveMessageArgs" + }, + "returnType": { + "type": "string" + } + }, + "dataStoreSaveVerifiableCredential": { + "description": "Saves verifiable credential to the data store", + "arguments": { + "$ref": "#/components/schemas/IDataStoreSaveVerifiableCredentialArgs" + }, + "returnType": { + "type": "string" + } + }, + "dataStoreSaveVerifiablePresentation": { + "description": "Saves verifiable presentation to the data store", + "arguments": { + "$ref": "#/components/schemas/IDataStoreSaveVerifiablePresentationArgs" + }, + "returnType": { + "type": "string" + } + } + } + } + }, + "IMessageHandler": { + "components": { + "schemas": { + "IHandleMessageArgs": { + "type": "object", + "properties": { + "raw": { + "type": "string", + "description": "Raw message data" + }, + "metaData": { + "type": "array", + "items": { + "$ref": "#/components/schemas/IMetaData" + }, + "description": "Optional. Message meta data" + }, + "save": { + "type": "boolean", + "description": "Optional. If set to `true`, the message will be saved using {@link IDataStore.dataStoreSaveMessage | dataStoreSaveMessage}" + } + }, + "required": [ + "raw" + ], + "description": "Input arguments for {@link IMessageHandler.handleMessage | handleMessage}" + }, + "IMetaData": { + "type": "object", + "properties": { + "type": { + "type": "string", + "description": "Type" + }, + "value": { + "type": "string", + "description": "Optional. Value" + } + }, + "required": [ + "type" + ], + "description": "Message meta data" + }, + "IMessage": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "Unique message ID" + }, + "type": { + "type": "string", + "description": "Message type" + }, + "createdAt": { + "type": "string", + "description": "Optional. Creation date (ISO 8601)" + }, + "expiresAt": { + "type": "string", + "description": "Optional. Expiration date (ISO 8601)" + }, + "threadId": { + "type": "string", + "description": "Optional. Thread ID" + }, + "raw": { + "type": "string", + "description": "Optional. Original message raw data" + }, + "data": { + "anyOf": [ + { + "type": "object" + }, + { + "type": "null" + } + ], + "description": "Optional. Parsed data" + }, + "replyTo": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Optional. List of DIDs to reply to" + }, + "replyUrl": { + "type": "string", + "description": "Optional. URL to post a reply message to" + }, + "from": { + "type": "string", + "description": "Optional. Sender DID" + }, + "to": { + "type": "string", + "description": "Optional. Recipient DID" + }, + "metaData": { + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/components/schemas/IMetaData" + } + }, + { + "type": "null" + } + ], + "description": "Optional. Array of message metadata" + }, + "credentials": { + "type": "array", + "items": { + "$ref": "#/components/schemas/VerifiableCredential" + }, + "description": "Optional. Array of attached verifiable credentials" + }, + "presentations": { + "type": "array", + "items": { + "$ref": "#/components/schemas/VerifiablePresentation" + }, + "description": "Optional. Array of attached verifiable presentations" + } + }, + "required": [ + "id", + "type" + ], + "description": "DIDComm message" + }, + "VerifiableCredential": { + "type": "object", + "properties": { + "@context": { + "type": "array", + "items": { + "type": "string" + } + }, + "id": { + "type": "string" + }, + "type": { + "type": "array", + "items": { + "type": "string" + } + }, + "issuer": { + "type": "object", + "properties": { + "id": { + "type": "string" + } + }, + "required": [ + "id" + ] + }, + "issuanceDate": { + "type": "string" + }, + "expirationDate": { + "type": "string" + }, + "credentialSubject": { + "type": "object", + "properties": { + "id": { + "type": "string" + } + } + }, + "credentialStatus": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "type": { + "type": "string" + } + }, + "required": [ + "id", + "type" + ] + }, + "proof": { + "type": "object", + "properties": { + "type": { + "type": "string" + } + } + } + }, + "required": [ + "@context", + "type", + "issuer", + "issuanceDate", + "credentialSubject", + "proof" + ], + "description": "Verifiable Credential {@link https://github.com/decentralized-identity/did-jwt-vc}" + }, + "VerifiablePresentation": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "holder": { + "type": "string" + }, + "issuanceDate": { + "type": "string" + }, + "expirationDate": { + "type": "string" + }, + "@context": { + "type": "array", + "items": { + "type": "string" + } + }, + "type": { + "type": "array", + "items": { + "type": "string" + } + }, + "verifier": { + "type": "array", + "items": { + "type": "string" + } + }, + "verifiableCredential": { + "type": "array", + "items": { + "$ref": "#/components/schemas/VerifiableCredential" + } + }, + "proof": { + "type": "object", + "properties": { + "type": { + "type": "string" + } + } + } + }, + "required": [ + "holder", + "@context", + "type", + "verifier", + "verifiableCredential", + "proof" + ], + "description": "Verifiable Presentation {@link https://github.com/decentralized-identity/did-jwt-vc}" + } + }, + "methods": { + "handleMessage": { + "description": "Parses and optionally saves a message", + "arguments": { + "$ref": "#/components/schemas/IHandleMessageArgs" + }, + "returnType": { + "$ref": "#/components/schemas/IMessage" + } + } + } + } + } +} \ No newline at end of file diff --git a/packages/daf-core/src/index.ts b/packages/daf-core/src/index.ts index 58d21d23c..793126de0 100644 --- a/packages/daf-core/src/index.ts +++ b/packages/daf-core/src/index.ts @@ -13,5 +13,5 @@ export * from './types/IKeyManager' export * from './types/IMessage' export * from './types/IMessageHandler' export * from './types/IResolver' -const pluginCredential = require('../plugin.credential.json') -export { pluginCredential } +const schema = require('../plugin.schema.json') +export { schema } diff --git a/packages/daf-did-comm/api/daf-did-comm.api.json b/packages/daf-did-comm/api/daf-did-comm.api.json index 2d335516b..e16ec149a 100644 --- a/packages/daf-did-comm/api/daf-did-comm.api.json +++ b/packages/daf-did-comm/api/daf-did-comm.api.json @@ -582,12 +582,12 @@ }, { "kind": "Variable", - "canonicalReference": "daf-did-comm!pluginCredential:var", + "canonicalReference": "daf-did-comm!schema:var", "docComment": "", "excerptTokens": [ { "kind": "Content", - "text": "pluginCredential: " + "text": "schema: " }, { "kind": "Content", @@ -595,7 +595,7 @@ } ], "releaseTag": "Public", - "name": "pluginCredential", + "name": "schema", "variableTypeTokenRange": { "startIndex": 1, "endIndex": 2 diff --git a/packages/daf-did-comm/api/daf-did-comm.api.md b/packages/daf-did-comm/api/daf-did-comm.api.md index e8f8b500f..a41fc7e48 100644 --- a/packages/daf-did-comm/api/daf-did-comm.api.md +++ b/packages/daf-did-comm/api/daf-did-comm.api.md @@ -55,7 +55,7 @@ export interface ISendMessageDIDCommAlpha1Args { } // @public (undocumented) -export const pluginCredential: any; +export const schema: any; ``` diff --git a/packages/daf-did-comm/package.json b/packages/daf-did-comm/package.json index e9a1306ae..84d3692e0 100644 --- a/packages/daf-did-comm/package.json +++ b/packages/daf-did-comm/package.json @@ -6,7 +6,7 @@ "types": "build/index.d.ts", "scripts": { "build": "tsc", - "create-plugin-credential": "yarn daf create-plugin-credential --config=../../agent.yml" + "generate-plugin-schema": "yarn daf generate-plugin-schema" }, "daf": { "pluginInterfaces": { @@ -28,7 +28,7 @@ "files": [ "build/**/*", "src/**/*", - "plugin.credential.json", + "plugin.schema.json", "README.md", "LICENSE" ], diff --git a/packages/daf-did-comm/plugin.credential.json b/packages/daf-did-comm/plugin.credential.json deleted file mode 100644 index 8ddbcf369..000000000 --- a/packages/daf-did-comm/plugin.credential.json +++ /dev/null @@ -1,330 +0,0 @@ -{ - "credentialSubject": { - "interfaces": { - "IDIDComm": { - "components": { - "schemas": { - "ISendMessageDIDCommAlpha1Args": { - "type": "object", - "properties": { - "url": { - "type": "string" - }, - "save": { - "type": "boolean" - }, - "data": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "from": { - "type": "string" - }, - "to": { - "type": "string" - }, - "type": { - "type": "string" - }, - "body": { - "anyOf": [ - { - "type": "object" - }, - { - "type": "string" - } - ] - } - }, - "required": [ - "from", - "to", - "type", - "body" - ] - } - }, - "required": [ - "data" - ], - "description": "Input arguments for {@link IDIDComm.sendMessageDIDCommAlpha1}" - }, - "IMessage": { - "type": "object", - "properties": { - "id": { - "type": "string", - "description": "Unique message ID" - }, - "type": { - "type": "string", - "description": "Message type" - }, - "createdAt": { - "type": "string", - "description": "Optional. Creation date (ISO 8601)" - }, - "expiresAt": { - "type": "string", - "description": "Optional. Expiration date (ISO 8601)" - }, - "threadId": { - "type": "string", - "description": "Optional. Thread ID" - }, - "raw": { - "type": "string", - "description": "Optional. Original message raw data" - }, - "data": { - "anyOf": [ - { - "type": "object" - }, - { - "type": "null" - } - ], - "description": "Optional. Parsed data" - }, - "replyTo": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Optional. List of DIDs to reply to" - }, - "replyUrl": { - "type": "string", - "description": "Optional. URL to post a reply message to" - }, - "from": { - "type": "string", - "description": "Optional. Sender DID" - }, - "to": { - "type": "string", - "description": "Optional. Recipient DID" - }, - "metaData": { - "anyOf": [ - { - "type": "array", - "items": { - "$ref": "#/components/schemas/IMetaData" - } - }, - { - "type": "null" - } - ], - "description": "Optional. Array of message metadata" - }, - "credentials": { - "type": "array", - "items": { - "$ref": "#/components/schemas/VerifiableCredential" - }, - "description": "Optional. Array of attached verifiable credentials" - }, - "presentations": { - "type": "array", - "items": { - "$ref": "#/components/schemas/VerifiablePresentation" - }, - "description": "Optional. Array of attached verifiable presentations" - } - }, - "required": [ - "id", - "type" - ], - "description": "DIDComm message" - }, - "IMetaData": { - "type": "object", - "properties": { - "type": { - "type": "string", - "description": "Type" - }, - "value": { - "type": "string", - "description": "Optional. Value" - } - }, - "required": [ - "type" - ], - "description": "Message meta data" - }, - "VerifiableCredential": { - "type": "object", - "properties": { - "@context": { - "type": "array", - "items": { - "type": "string" - } - }, - "id": { - "type": "string" - }, - "type": { - "type": "array", - "items": { - "type": "string" - } - }, - "issuer": { - "type": "object", - "properties": { - "id": { - "type": "string" - } - }, - "required": [ - "id" - ] - }, - "issuanceDate": { - "type": "string" - }, - "expirationDate": { - "type": "string" - }, - "credentialSubject": { - "type": "object", - "properties": { - "id": { - "type": "string" - } - } - }, - "credentialStatus": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "type": { - "type": "string" - } - }, - "required": [ - "id", - "type" - ] - }, - "proof": { - "type": "object", - "properties": { - "type": { - "type": "string" - } - } - } - }, - "required": [ - "@context", - "type", - "issuer", - "issuanceDate", - "credentialSubject", - "proof" - ], - "description": "Verifiable Credential {@link https://github.com/decentralized-identity/did-jwt-vc}" - }, - "VerifiablePresentation": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "holder": { - "type": "string" - }, - "issuanceDate": { - "type": "string" - }, - "expirationDate": { - "type": "string" - }, - "@context": { - "type": "array", - "items": { - "type": "string" - } - }, - "type": { - "type": "array", - "items": { - "type": "string" - } - }, - "verifier": { - "type": "array", - "items": { - "type": "string" - } - }, - "verifiableCredential": { - "type": "array", - "items": { - "$ref": "#/components/schemas/VerifiableCredential" - } - }, - "proof": { - "type": "object", - "properties": { - "type": { - "type": "string" - } - } - } - }, - "required": [ - "holder", - "@context", - "type", - "verifier", - "verifiableCredential", - "proof" - ], - "description": "Verifiable Presentation {@link https://github.com/decentralized-identity/did-jwt-vc}" - } - }, - "methods": { - "sendMessageDIDCommAlpha1": { - "description": "This is used to create a message according to the initial ", - "arguments": { - "$ref": "#/components/schemas/ISendMessageDIDCommAlpha1Args" - }, - "returnType": { - "$ref": "#/components/schemas/IMessage" - } - } - } - } - } - } - }, - "issuer": { - "id": "did:ethr:rinkeby:0x3277d7bf7cbc026dc647784b82bab41ead8cecb0" - }, - "type": [ - "VerifiableCredential", - "AgentPluginSchema" - ], - "@context": [ - "https://www.w3.org/2018/credentials/v1" - ], - "issuanceDate": "2020-11-23T11:10:01.000Z", - "proof": { - "type": "JwtProof2020", - "jwt": "eyJ0eXAiOiJKV1QiLCJhbGciOiJFUzI1NksifQ.eyJ2YyI6eyJjcmVkZW50aWFsU3ViamVjdCI6eyJpbnRlcmZhY2VzIjp7IklESURDb21tIjp7ImNvbXBvbmVudHMiOnsic2NoZW1hcyI6eyJJU2VuZE1lc3NhZ2VESURDb21tQWxwaGExQXJncyI6eyJ0eXBlIjoib2JqZWN0IiwicHJvcGVydGllcyI6eyJ1cmwiOnsidHlwZSI6InN0cmluZyJ9LCJzYXZlIjp7InR5cGUiOiJib29sZWFuIn0sImRhdGEiOnsidHlwZSI6Im9iamVjdCIsInByb3BlcnRpZXMiOnsiaWQiOnsidHlwZSI6InN0cmluZyJ9LCJmcm9tIjp7InR5cGUiOiJzdHJpbmcifSwidG8iOnsidHlwZSI6InN0cmluZyJ9LCJ0eXBlIjp7InR5cGUiOiJzdHJpbmcifSwiYm9keSI6eyJhbnlPZiI6W3sidHlwZSI6Im9iamVjdCJ9LHsidHlwZSI6InN0cmluZyJ9XX19LCJyZXF1aXJlZCI6WyJmcm9tIiwidG8iLCJ0eXBlIiwiYm9keSJdfX0sInJlcXVpcmVkIjpbImRhdGEiXSwiZGVzY3JpcHRpb24iOiJJbnB1dCBhcmd1bWVudHMgZm9yIHtAbGluayBJRElEQ29tbS5zZW5kTWVzc2FnZURJRENvbW1BbHBoYTF9In0sIklNZXNzYWdlIjp7InR5cGUiOiJvYmplY3QiLCJwcm9wZXJ0aWVzIjp7ImlkIjp7InR5cGUiOiJzdHJpbmciLCJkZXNjcmlwdGlvbiI6IlVuaXF1ZSBtZXNzYWdlIElEIn0sInR5cGUiOnsidHlwZSI6InN0cmluZyIsImRlc2NyaXB0aW9uIjoiTWVzc2FnZSB0eXBlIn0sImNyZWF0ZWRBdCI6eyJ0eXBlIjoic3RyaW5nIiwiZGVzY3JpcHRpb24iOiJPcHRpb25hbC4gQ3JlYXRpb24gZGF0ZSAoSVNPIDg2MDEpIn0sImV4cGlyZXNBdCI6eyJ0eXBlIjoic3RyaW5nIiwiZGVzY3JpcHRpb24iOiJPcHRpb25hbC4gRXhwaXJhdGlvbiBkYXRlIChJU08gODYwMSkifSwidGhyZWFkSWQiOnsidHlwZSI6InN0cmluZyIsImRlc2NyaXB0aW9uIjoiT3B0aW9uYWwuIFRocmVhZCBJRCJ9LCJyYXciOnsidHlwZSI6InN0cmluZyIsImRlc2NyaXB0aW9uIjoiT3B0aW9uYWwuIE9yaWdpbmFsIG1lc3NhZ2UgcmF3IGRhdGEifSwiZGF0YSI6eyJhbnlPZiI6W3sidHlwZSI6Im9iamVjdCJ9LHsidHlwZSI6Im51bGwifV0sImRlc2NyaXB0aW9uIjoiT3B0aW9uYWwuIFBhcnNlZCBkYXRhIn0sInJlcGx5VG8iOnsidHlwZSI6ImFycmF5IiwiaXRlbXMiOnsidHlwZSI6InN0cmluZyJ9LCJkZXNjcmlwdGlvbiI6Ik9wdGlvbmFsLiBMaXN0IG9mIERJRHMgdG8gcmVwbHkgdG8ifSwicmVwbHlVcmwiOnsidHlwZSI6InN0cmluZyIsImRlc2NyaXB0aW9uIjoiT3B0aW9uYWwuIFVSTCB0byBwb3N0IGEgcmVwbHkgbWVzc2FnZSB0byJ9LCJmcm9tIjp7InR5cGUiOiJzdHJpbmciLCJkZXNjcmlwdGlvbiI6Ik9wdGlvbmFsLiBTZW5kZXIgRElEIn0sInRvIjp7InR5cGUiOiJzdHJpbmciLCJkZXNjcmlwdGlvbiI6Ik9wdGlvbmFsLiBSZWNpcGllbnQgRElEIn0sIm1ldGFEYXRhIjp7ImFueU9mIjpbeyJ0eXBlIjoiYXJyYXkiLCJpdGVtcyI6eyIkcmVmIjoiIy9jb21wb25lbnRzL3NjaGVtYXMvSU1ldGFEYXRhIn19LHsidHlwZSI6Im51bGwifV0sImRlc2NyaXB0aW9uIjoiT3B0aW9uYWwuIEFycmF5IG9mIG1lc3NhZ2UgbWV0YWRhdGEifSwiY3JlZGVudGlhbHMiOnsidHlwZSI6ImFycmF5IiwiaXRlbXMiOnsiJHJlZiI6IiMvY29tcG9uZW50cy9zY2hlbWFzL1ZlcmlmaWFibGVDcmVkZW50aWFsIn0sImRlc2NyaXB0aW9uIjoiT3B0aW9uYWwuIEFycmF5IG9mIGF0dGFjaGVkIHZlcmlmaWFibGUgY3JlZGVudGlhbHMifSwicHJlc2VudGF0aW9ucyI6eyJ0eXBlIjoiYXJyYXkiLCJpdGVtcyI6eyIkcmVmIjoiIy9jb21wb25lbnRzL3NjaGVtYXMvVmVyaWZpYWJsZVByZXNlbnRhdGlvbiJ9LCJkZXNjcmlwdGlvbiI6Ik9wdGlvbmFsLiBBcnJheSBvZiBhdHRhY2hlZCB2ZXJpZmlhYmxlIHByZXNlbnRhdGlvbnMifX0sInJlcXVpcmVkIjpbImlkIiwidHlwZSJdLCJkZXNjcmlwdGlvbiI6IkRJRENvbW0gbWVzc2FnZSJ9LCJJTWV0YURhdGEiOnsidHlwZSI6Im9iamVjdCIsInByb3BlcnRpZXMiOnsidHlwZSI6eyJ0eXBlIjoic3RyaW5nIiwiZGVzY3JpcHRpb24iOiJUeXBlIn0sInZhbHVlIjp7InR5cGUiOiJzdHJpbmciLCJkZXNjcmlwdGlvbiI6Ik9wdGlvbmFsLiBWYWx1ZSJ9fSwicmVxdWlyZWQiOlsidHlwZSJdLCJkZXNjcmlwdGlvbiI6Ik1lc3NhZ2UgbWV0YSBkYXRhIn0sIlZlcmlmaWFibGVDcmVkZW50aWFsIjp7InR5cGUiOiJvYmplY3QiLCJwcm9wZXJ0aWVzIjp7IkBjb250ZXh0Ijp7InR5cGUiOiJhcnJheSIsIml0ZW1zIjp7InR5cGUiOiJzdHJpbmcifX0sImlkIjp7InR5cGUiOiJzdHJpbmcifSwidHlwZSI6eyJ0eXBlIjoiYXJyYXkiLCJpdGVtcyI6eyJ0eXBlIjoic3RyaW5nIn19LCJpc3N1ZXIiOnsidHlwZSI6Im9iamVjdCIsInByb3BlcnRpZXMiOnsiaWQiOnsidHlwZSI6InN0cmluZyJ9fSwicmVxdWlyZWQiOlsiaWQiXX0sImlzc3VhbmNlRGF0ZSI6eyJ0eXBlIjoic3RyaW5nIn0sImV4cGlyYXRpb25EYXRlIjp7InR5cGUiOiJzdHJpbmcifSwiY3JlZGVudGlhbFN1YmplY3QiOnsidHlwZSI6Im9iamVjdCIsInByb3BlcnRpZXMiOnsiaWQiOnsidHlwZSI6InN0cmluZyJ9fX0sImNyZWRlbnRpYWxTdGF0dXMiOnsidHlwZSI6Im9iamVjdCIsInByb3BlcnRpZXMiOnsiaWQiOnsidHlwZSI6InN0cmluZyJ9LCJ0eXBlIjp7InR5cGUiOiJzdHJpbmcifX0sInJlcXVpcmVkIjpbImlkIiwidHlwZSJdfSwicHJvb2YiOnsidHlwZSI6Im9iamVjdCIsInByb3BlcnRpZXMiOnsidHlwZSI6eyJ0eXBlIjoic3RyaW5nIn19fX0sInJlcXVpcmVkIjpbIkBjb250ZXh0IiwidHlwZSIsImlzc3VlciIsImlzc3VhbmNlRGF0ZSIsImNyZWRlbnRpYWxTdWJqZWN0IiwicHJvb2YiXSwiZGVzY3JpcHRpb24iOiJWZXJpZmlhYmxlIENyZWRlbnRpYWwge0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9kZWNlbnRyYWxpemVkLWlkZW50aXR5L2RpZC1qd3QtdmN9In0sIlZlcmlmaWFibGVQcmVzZW50YXRpb24iOnsidHlwZSI6Im9iamVjdCIsInByb3BlcnRpZXMiOnsiaWQiOnsidHlwZSI6InN0cmluZyJ9LCJob2xkZXIiOnsidHlwZSI6InN0cmluZyJ9LCJpc3N1YW5jZURhdGUiOnsidHlwZSI6InN0cmluZyJ9LCJleHBpcmF0aW9uRGF0ZSI6eyJ0eXBlIjoic3RyaW5nIn0sIkBjb250ZXh0Ijp7InR5cGUiOiJhcnJheSIsIml0ZW1zIjp7InR5cGUiOiJzdHJpbmcifX0sInR5cGUiOnsidHlwZSI6ImFycmF5IiwiaXRlbXMiOnsidHlwZSI6InN0cmluZyJ9fSwidmVyaWZpZXIiOnsidHlwZSI6ImFycmF5IiwiaXRlbXMiOnsidHlwZSI6InN0cmluZyJ9fSwidmVyaWZpYWJsZUNyZWRlbnRpYWwiOnsidHlwZSI6ImFycmF5IiwiaXRlbXMiOnsiJHJlZiI6IiMvY29tcG9uZW50cy9zY2hlbWFzL1ZlcmlmaWFibGVDcmVkZW50aWFsIn19LCJwcm9vZiI6eyJ0eXBlIjoib2JqZWN0IiwicHJvcGVydGllcyI6eyJ0eXBlIjp7InR5cGUiOiJzdHJpbmcifX19fSwicmVxdWlyZWQiOlsiaG9sZGVyIiwiQGNvbnRleHQiLCJ0eXBlIiwidmVyaWZpZXIiLCJ2ZXJpZmlhYmxlQ3JlZGVudGlhbCIsInByb29mIl0sImRlc2NyaXB0aW9uIjoiVmVyaWZpYWJsZSBQcmVzZW50YXRpb24ge0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9kZWNlbnRyYWxpemVkLWlkZW50aXR5L2RpZC1qd3QtdmN9In19LCJtZXRob2RzIjp7InNlbmRNZXNzYWdlRElEQ29tbUFscGhhMSI6eyJkZXNjcmlwdGlvbiI6IlRoaXMgaXMgdXNlZCB0byBjcmVhdGUgYSBtZXNzYWdlIGFjY29yZGluZyB0byB0aGUgaW5pdGlhbCAiLCJhcmd1bWVudHMiOnsiJHJlZiI6IiMvY29tcG9uZW50cy9zY2hlbWFzL0lTZW5kTWVzc2FnZURJRENvbW1BbHBoYTFBcmdzIn0sInJldHVyblR5cGUiOnsiJHJlZiI6IiMvY29tcG9uZW50cy9zY2hlbWFzL0lNZXNzYWdlIn19fX19fX0sIkBjb250ZXh0IjpbImh0dHBzOi8vd3d3LnczLm9yZy8yMDE4L2NyZWRlbnRpYWxzL3YxIl0sInR5cGUiOlsiVmVyaWZpYWJsZUNyZWRlbnRpYWwiLCJBZ2VudFBsdWdpblNjaGVtYSJdfSwibmJmIjoxNjA2MTI5ODAxLCJpc3MiOiJkaWQ6ZXRocjpyaW5rZWJ5OjB4MzI3N2Q3YmY3Y2JjMDI2ZGM2NDc3ODRiODJiYWI0MWVhZDhjZWNiMCJ9.c-k3tYPjr3cxsLICRM6nlZhJ9YHVWxqyFb5U2k2mZ-vleKcQD6ihV3wv81XPgQrSzc1wKJcIv7YDS7GnJvO-zQ" - } -} \ No newline at end of file diff --git a/packages/daf-did-comm/plugin.schema.json b/packages/daf-did-comm/plugin.schema.json new file mode 100644 index 000000000..8226e5b1b --- /dev/null +++ b/packages/daf-did-comm/plugin.schema.json @@ -0,0 +1,311 @@ +{ + "IDIDComm": { + "components": { + "schemas": { + "ISendMessageDIDCommAlpha1Args": { + "type": "object", + "properties": { + "url": { + "type": "string" + }, + "save": { + "type": "boolean" + }, + "data": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "from": { + "type": "string" + }, + "to": { + "type": "string" + }, + "type": { + "type": "string" + }, + "body": { + "anyOf": [ + { + "type": "object" + }, + { + "type": "string" + } + ] + } + }, + "required": [ + "from", + "to", + "type", + "body" + ] + } + }, + "required": [ + "data" + ], + "description": "Input arguments for {@link IDIDComm.sendMessageDIDCommAlpha1}" + }, + "IMessage": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "Unique message ID" + }, + "type": { + "type": "string", + "description": "Message type" + }, + "createdAt": { + "type": "string", + "description": "Optional. Creation date (ISO 8601)" + }, + "expiresAt": { + "type": "string", + "description": "Optional. Expiration date (ISO 8601)" + }, + "threadId": { + "type": "string", + "description": "Optional. Thread ID" + }, + "raw": { + "type": "string", + "description": "Optional. Original message raw data" + }, + "data": { + "anyOf": [ + { + "type": "object" + }, + { + "type": "null" + } + ], + "description": "Optional. Parsed data" + }, + "replyTo": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Optional. List of DIDs to reply to" + }, + "replyUrl": { + "type": "string", + "description": "Optional. URL to post a reply message to" + }, + "from": { + "type": "string", + "description": "Optional. Sender DID" + }, + "to": { + "type": "string", + "description": "Optional. Recipient DID" + }, + "metaData": { + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/components/schemas/IMetaData" + } + }, + { + "type": "null" + } + ], + "description": "Optional. Array of message metadata" + }, + "credentials": { + "type": "array", + "items": { + "$ref": "#/components/schemas/VerifiableCredential" + }, + "description": "Optional. Array of attached verifiable credentials" + }, + "presentations": { + "type": "array", + "items": { + "$ref": "#/components/schemas/VerifiablePresentation" + }, + "description": "Optional. Array of attached verifiable presentations" + } + }, + "required": [ + "id", + "type" + ], + "description": "DIDComm message" + }, + "IMetaData": { + "type": "object", + "properties": { + "type": { + "type": "string", + "description": "Type" + }, + "value": { + "type": "string", + "description": "Optional. Value" + } + }, + "required": [ + "type" + ], + "description": "Message meta data" + }, + "VerifiableCredential": { + "type": "object", + "properties": { + "@context": { + "type": "array", + "items": { + "type": "string" + } + }, + "id": { + "type": "string" + }, + "type": { + "type": "array", + "items": { + "type": "string" + } + }, + "issuer": { + "type": "object", + "properties": { + "id": { + "type": "string" + } + }, + "required": [ + "id" + ] + }, + "issuanceDate": { + "type": "string" + }, + "expirationDate": { + "type": "string" + }, + "credentialSubject": { + "type": "object", + "properties": { + "id": { + "type": "string" + } + } + }, + "credentialStatus": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "type": { + "type": "string" + } + }, + "required": [ + "id", + "type" + ] + }, + "proof": { + "type": "object", + "properties": { + "type": { + "type": "string" + } + } + } + }, + "required": [ + "@context", + "type", + "issuer", + "issuanceDate", + "credentialSubject", + "proof" + ], + "description": "Verifiable Credential {@link https://github.com/decentralized-identity/did-jwt-vc}" + }, + "VerifiablePresentation": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "holder": { + "type": "string" + }, + "issuanceDate": { + "type": "string" + }, + "expirationDate": { + "type": "string" + }, + "@context": { + "type": "array", + "items": { + "type": "string" + } + }, + "type": { + "type": "array", + "items": { + "type": "string" + } + }, + "verifier": { + "type": "array", + "items": { + "type": "string" + } + }, + "verifiableCredential": { + "type": "array", + "items": { + "$ref": "#/components/schemas/VerifiableCredential" + } + }, + "proof": { + "type": "object", + "properties": { + "type": { + "type": "string" + } + } + } + }, + "required": [ + "holder", + "@context", + "type", + "verifier", + "verifiableCredential", + "proof" + ], + "description": "Verifiable Presentation {@link https://github.com/decentralized-identity/did-jwt-vc}" + } + }, + "methods": { + "sendMessageDIDCommAlpha1": { + "description": "This is used to create a message according to the initial ", + "arguments": { + "$ref": "#/components/schemas/ISendMessageDIDCommAlpha1Args" + }, + "returnType": { + "$ref": "#/components/schemas/IMessage" + } + } + } + } + } +} \ No newline at end of file diff --git a/packages/daf-did-comm/src/action-handler.ts b/packages/daf-did-comm/src/action-handler.ts index 4514af18a..7ea6a0969 100644 --- a/packages/daf-did-comm/src/action-handler.ts +++ b/packages/daf-did-comm/src/action-handler.ts @@ -9,7 +9,7 @@ import { IPluginMethodMap, IAgentPlugin, } from 'daf-core' -import { pluginCredential } from './' +import { schema } from './' import { v4 as uuidv4 } from 'uuid' import Debug from 'debug' @@ -62,7 +62,7 @@ export interface IDIDComm extends IPluginMethodMap { export class DIDComm implements IAgentPlugin { /** Plugin methods */ readonly methods: IDIDComm - readonly schema = pluginCredential.credentialSubject.interfaces.IDIDComm + readonly schema = schema.IDIDComm constructor() { this.methods = { diff --git a/packages/daf-did-comm/src/index.ts b/packages/daf-did-comm/src/index.ts index 2e77a45f9..a2b5cb67d 100644 --- a/packages/daf-did-comm/src/index.ts +++ b/packages/daf-did-comm/src/index.ts @@ -5,5 +5,5 @@ */ export { DIDComm, IDIDComm, ISendMessageDIDCommAlpha1Args } from './action-handler' export { DIDCommMessageHandler } from './message-handler' -const pluginCredential = require('../plugin.credential.json') -export { pluginCredential } +const schema = require('../plugin.schema.json') +export { schema } diff --git a/packages/daf-identity-manager/src/identity-manager.ts b/packages/daf-identity-manager/src/identity-manager.ts index 4f2f4b5f6..006a4cbfb 100644 --- a/packages/daf-identity-manager/src/identity-manager.ts +++ b/packages/daf-identity-manager/src/identity-manager.ts @@ -16,7 +16,7 @@ import { IIdentityManagerRemoveServiceArgs, IIdentityManagerGetIdentitiesArgs, IIdentityManagerSetAliasArgs, - pluginCredential, + schema, } from 'daf-core' import { AbstractIdentityStore } from './abstract-identity-store' @@ -30,7 +30,7 @@ export class IdentityManager implements IAgentPlugin { * @public */ readonly methods: IIdentityManager - readonly schema = pluginCredential.credentialSubject.interfaces.IIdentityManager + readonly schema = schema.IIdentityManager private providers: Record private defaultProvider: string diff --git a/packages/daf-key-manager/src/key-manager.ts b/packages/daf-key-manager/src/key-manager.ts index de338db1c..c98655771 100644 --- a/packages/daf-key-manager/src/key-manager.ts +++ b/packages/daf-key-manager/src/key-manager.ts @@ -12,7 +12,7 @@ import { IKeyManagerSignJWTArgs, IKeyManagerSignEthTXArgs, EcdsaSignature, - pluginCredential, + schema, } from 'daf-core' /** @@ -26,7 +26,7 @@ export class KeyManager implements IAgentPlugin { */ readonly methods: IKeyManager - readonly schema = pluginCredential.credentialSubject.interfaces.IKeyManager + readonly schema = schema.IKeyManager private store: AbstractKeyStore private kms: Record diff --git a/packages/daf-message-handler/src/message-handler.ts b/packages/daf-message-handler/src/message-handler.ts index 3875b9945..a195d2822 100644 --- a/packages/daf-message-handler/src/message-handler.ts +++ b/packages/daf-message-handler/src/message-handler.ts @@ -4,7 +4,7 @@ import { IAgentContext, IMessageHandler, IHandleMessageArgs, - pluginCredential, + schema, } from 'daf-core' import { Message } from './message' import { AbstractMessageHandler } from './abstract-message-handler' @@ -27,7 +27,7 @@ export class MessageHandler implements IAgentPlugin { * @public */ readonly methods: IMessageHandler - readonly schema = pluginCredential.credentialSubject.interfaces.IMessageHandler + readonly schema = schema.IMessageHandler private messageHandler?: AbstractMessageHandler constructor(options: { messageHandlers: AbstractMessageHandler[] }) { diff --git a/packages/daf-resolver-universal/src/resolver.ts b/packages/daf-resolver-universal/src/resolver.ts index 578cb7838..5c07ad6fa 100644 --- a/packages/daf-resolver-universal/src/resolver.ts +++ b/packages/daf-resolver-universal/src/resolver.ts @@ -1,5 +1,5 @@ import 'cross-fetch/polyfill' -import { IAgentPlugin, IResolver, pluginCredential } from 'daf-core' +import { IAgentPlugin, IResolver, schema } from 'daf-core' import { DIDDocument } from 'did-resolver' export { DIDDocument } import Debug from 'debug' @@ -11,7 +11,7 @@ interface Options { export class DafUniversalResolver implements IAgentPlugin { readonly methods: IResolver - readonly schema = pluginCredential.credentialSubject.interfaces.IResolver + readonly schema = schema.IResolver private url: string constructor(options: Options) { diff --git a/packages/daf-resolver/src/resolver.ts b/packages/daf-resolver/src/resolver.ts index 3b0bcdbee8..32691b8af 100644 --- a/packages/daf-resolver/src/resolver.ts +++ b/packages/daf-resolver/src/resolver.ts @@ -1,4 +1,4 @@ -import { IAgentPlugin, IResolver, pluginCredential } from 'daf-core' +import { IAgentPlugin, IResolver, schema } from 'daf-core' import { Resolver, DIDDocument } from 'did-resolver' import { getResolver as ethrDidResolver } from 'ethr-did-resolver' import { resolver as naclDidResolver } from 'nacl-did' @@ -21,7 +21,7 @@ interface Options { export class DafResolver implements IAgentPlugin { readonly methods: IResolver - readonly schema = pluginCredential.credentialSubject.interfaces.IResolver + readonly schema = schema.IResolver private didResolver: Resolver private networks: NetworkConfig[] diff --git a/packages/daf-selective-disclosure/api/daf-selective-disclosure.api.json b/packages/daf-selective-disclosure/api/daf-selective-disclosure.api.json index be14e753b..dcaeb62bf 100644 --- a/packages/daf-selective-disclosure/api/daf-selective-disclosure.api.json +++ b/packages/daf-selective-disclosure/api/daf-selective-disclosure.api.json @@ -1370,12 +1370,12 @@ }, { "kind": "Variable", - "canonicalReference": "daf-selective-disclosure!pluginCredential:var", + "canonicalReference": "daf-selective-disclosure!schema:var", "docComment": "", "excerptTokens": [ { "kind": "Content", - "text": "pluginCredential: " + "text": "schema: " }, { "kind": "Content", @@ -1383,7 +1383,7 @@ } ], "releaseTag": "Public", - "name": "pluginCredential", + "name": "schema", "variableTypeTokenRange": { "startIndex": 1, "endIndex": 2 diff --git a/packages/daf-selective-disclosure/api/daf-selective-disclosure.api.md b/packages/daf-selective-disclosure/api/daf-selective-disclosure.api.md index bfa80f4bf..5be98394e 100644 --- a/packages/daf-selective-disclosure/api/daf-selective-disclosure.api.md +++ b/packages/daf-selective-disclosure/api/daf-selective-disclosure.api.md @@ -108,7 +108,7 @@ export const MessageTypes: { }; // @public (undocumented) -export const pluginCredential: any; +export const schema: any; // @beta export class SdrMessageHandler extends AbstractMessageHandler { diff --git a/packages/daf-selective-disclosure/package.json b/packages/daf-selective-disclosure/package.json index 255e61763..ba403dced 100644 --- a/packages/daf-selective-disclosure/package.json +++ b/packages/daf-selective-disclosure/package.json @@ -6,7 +6,7 @@ "types": "build/index.d.ts", "scripts": { "build": "tsc", - "create-plugin-credential": "yarn daf create-plugin-credential --config=../../agent.yml" + "generate-plugin-schema": "yarn daf generate-plugin-schema" }, "daf": { "pluginInterfaces": { @@ -30,7 +30,7 @@ "files": [ "build/**/*", "src/**/*", - "plugin.credential.json", + "plugin.schema.json", "README.md", "LICENSE" ], diff --git a/packages/daf-selective-disclosure/plugin.credential.json b/packages/daf-selective-disclosure/plugin.credential.json deleted file mode 100644 index 016a56908..000000000 --- a/packages/daf-selective-disclosure/plugin.credential.json +++ /dev/null @@ -1,480 +0,0 @@ -{ - "credentialSubject": { - "interfaces": { - "ISelectiveDisclosure": { - "components": { - "schemas": { - "ICreateProfileCredentialsArgs": { - "type": "object", - "properties": { - "holder": { - "type": "string", - "description": "Holder DID" - }, - "verifier": { - "type": "string", - "description": "Optional. Verifier DID" - }, - "name": { - "type": "string", - "description": "Optional. Name" - }, - "picture": { - "type": "string", - "description": "Optional. Picture URL" - }, - "url": { - "type": "string", - "description": "Optional. URL" - }, - "save": { - "type": "boolean", - "description": "Save presentation" - }, - "send": { - "type": "boolean", - "description": "Send presentation" - } - }, - "required": [ - "holder", - "save", - "send" - ], - "description": "Profile data" - }, - "VerifiablePresentation": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "holder": { - "type": "string" - }, - "issuanceDate": { - "type": "string" - }, - "expirationDate": { - "type": "string" - }, - "@context": { - "type": "array", - "items": { - "type": "string" - } - }, - "type": { - "type": "array", - "items": { - "type": "string" - } - }, - "verifier": { - "type": "array", - "items": { - "type": "string" - } - }, - "verifiableCredential": { - "type": "array", - "items": { - "$ref": "#/components/schemas/VerifiableCredential" - } - }, - "proof": { - "type": "object", - "properties": { - "type": { - "type": "string" - } - } - } - }, - "required": [ - "holder", - "@context", - "type", - "verifier", - "verifiableCredential", - "proof" - ], - "description": "Verifiable Presentation {@link https://github.com/decentralized-identity/did-jwt-vc}" - }, - "VerifiableCredential": { - "type": "object", - "properties": { - "@context": { - "type": "array", - "items": { - "type": "string" - } - }, - "id": { - "type": "string" - }, - "type": { - "type": "array", - "items": { - "type": "string" - } - }, - "issuer": { - "type": "object", - "properties": { - "id": { - "type": "string" - } - }, - "required": [ - "id" - ] - }, - "issuanceDate": { - "type": "string" - }, - "expirationDate": { - "type": "string" - }, - "credentialSubject": { - "type": "object", - "properties": { - "id": { - "type": "string" - } - } - }, - "credentialStatus": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "type": { - "type": "string" - } - }, - "required": [ - "id", - "type" - ] - }, - "proof": { - "type": "object", - "properties": { - "type": { - "type": "string" - } - } - } - }, - "required": [ - "@context", - "type", - "issuer", - "issuanceDate", - "credentialSubject", - "proof" - ], - "description": "Verifiable Credential {@link https://github.com/decentralized-identity/did-jwt-vc}" - }, - "ICreateSelectiveDisclosureRequestArgs": { - "type": "object", - "properties": { - "data": { - "$ref": "#/components/schemas/ISelectiveDisclosureRequest" - } - }, - "required": [ - "data" - ], - "description": "Contains the parameters of a Selective Disclosure Request." - }, - "ISelectiveDisclosureRequest": { - "type": "object", - "properties": { - "issuer": { - "type": "string", - "description": "The issuer of the request" - }, - "subject": { - "type": "string", - "description": "The target of the request" - }, - "replyUrl": { - "type": "string", - "description": "The URL where the response should be sent back" - }, - "tag": { - "type": "string" - }, - "claims": { - "type": "array", - "items": { - "$ref": "#/components/schemas/ICredentialRequestInput" - }, - "description": "A list of claims that are being requested" - }, - "credentials": { - "type": "array", - "items": { - "type": "string" - }, - "description": "A list of issuer credentials that the target will use to establish trust" - } - }, - "required": [ - "issuer", - "claims" - ], - "description": "Represents the Selective Disclosure request parameters." - }, - "ICredentialRequestInput": { - "type": "object", - "properties": { - "reason": { - "type": "string", - "description": "Motive for requiring this credential." - }, - "essential": { - "type": "boolean", - "description": "If it is essential. A response that does not include this credential is not sufficient." - }, - "credentialType": { - "type": "string", - "description": "The credential type. See {@link https://www.w3.org/TR/vc-data-model/#types | W3C Credential Types}" - }, - "credentialContext": { - "type": "string", - "description": "The credential context. See {@link https://www.w3.org/TR/vc-data-model/#contexts | W3C Credential Context}" - }, - "claimType": { - "type": "string", - "description": "The name of the claim property that the credential should express." - }, - "claimValue": { - "type": "string", - "description": "The value of the claim that the credential should express." - }, - "issuers": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Issuer" - }, - "description": "A list of accepted Issuers for this credential." - } - }, - "required": [ - "claimType" - ], - "description": "Describes a particular credential that is being requested" - }, - "Issuer": { - "type": "object", - "properties": { - "did": { - "type": "string", - "description": "The DID of the issuer of a requested credential." - }, - "url": { - "type": "string", - "description": "A URL where a credential of that type can be obtained." - } - }, - "required": [ - "did", - "url" - ], - "description": "Used for requesting Credentials using Selective Disclosure. Represents an accepted issuer of a credential." - }, - "IGetVerifiableCredentialsForSdrArgs": { - "type": "object", - "properties": { - "sdr": { - "type": "object", - "properties": { - "subject": { - "type": "string", - "description": "The target of the request" - }, - "replyUrl": { - "type": "string", - "description": "The URL where the response should be sent back" - }, - "tag": { - "type": "string" - }, - "claims": { - "type": "array", - "items": { - "$ref": "#/components/schemas/ICredentialRequestInput" - }, - "description": "A list of claims that are being requested" - }, - "credentials": { - "type": "array", - "items": { - "type": "string" - }, - "description": "A list of issuer credentials that the target will use to establish trust" - } - }, - "required": [ - "claims" - ], - "description": "The Selective Disclosure Request (issuer is omitted)" - }, - "did": { - "type": "string", - "description": "The DID of the subject" - } - }, - "required": [ - "sdr" - ], - "description": "Encapsulates the params needed to gather credentials to fulfill a Selective disclosure request." - }, - "ICredentialsForSdr": { - "type": "object", - "properties": { - "reason": { - "type": "string", - "description": "Motive for requiring this credential." - }, - "essential": { - "type": "boolean", - "description": "If it is essential. A response that does not include this credential is not sufficient." - }, - "credentialType": { - "type": "string", - "description": "The credential type. See {@link https://www.w3.org/TR/vc-data-model/#types | W3C Credential Types}" - }, - "credentialContext": { - "type": "string", - "description": "The credential context. See {@link https://www.w3.org/TR/vc-data-model/#contexts | W3C Credential Context}" - }, - "claimType": { - "type": "string", - "description": "The name of the claim property that the credential should express." - }, - "claimValue": { - "type": "string", - "description": "The value of the claim that the credential should express." - }, - "issuers": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Issuer" - }, - "description": "A list of accepted Issuers for this credential." - }, - "credentials": { - "type": "array", - "items": { - "$ref": "#/components/schemas/VerifiableCredential" - } - } - }, - "required": [ - "claimType", - "credentials" - ], - "description": "The credentials that make up a response of a Selective Disclosure" - }, - "IValidatePresentationAgainstSdrArgs": { - "type": "object", - "properties": { - "presentation": { - "$ref": "#/components/schemas/VerifiablePresentation" - }, - "sdr": { - "$ref": "#/components/schemas/ISelectiveDisclosureRequest" - } - }, - "required": [ - "presentation", - "sdr" - ], - "description": "A tuple used to verify a Selective Disclosure Response. Encapsulates the response(`presentation`) and the corresponding request (`sdr`) that made it." - }, - "IPresentationValidationResult": { - "type": "object", - "properties": { - "valid": { - "type": "boolean" - }, - "claims": { - "type": "array", - "items": { - "$ref": "#/components/schemas/ICredentialsForSdr" - } - } - }, - "required": [ - "valid", - "claims" - ], - "description": "The result of a selective disclosure response validation." - } - }, - "methods": { - "createProfilePresentation": { - "description": "", - "arguments": { - "$ref": "#/components/schemas/ICreateProfileCredentialsArgs" - }, - "returnType": { - "$ref": "#/components/schemas/VerifiablePresentation" - } - }, - "createSelectiveDisclosureRequest": { - "description": "", - "arguments": { - "$ref": "#/components/schemas/ICreateSelectiveDisclosureRequestArgs" - }, - "returnType": { - "type": "string" - } - }, - "getVerifiableCredentialsForSdr": { - "description": "", - "arguments": { - "$ref": "#/components/schemas/IGetVerifiableCredentialsForSdrArgs" - }, - "returnType": { - "type": "array", - "items": { - "$ref": "#/components/schemas/ICredentialsForSdr" - } - } - }, - "validatePresentationAgainstSdr": { - "description": "", - "arguments": { - "$ref": "#/components/schemas/IValidatePresentationAgainstSdrArgs" - }, - "returnType": { - "$ref": "#/components/schemas/IPresentationValidationResult" - } - } - } - } - } - } - }, - "issuer": { - "id": "did:ethr:rinkeby:0x6face2335b2e3b4a9c9f65dee60eb82eca345e1c" - }, - "type": [ - "VerifiableCredential", - "AgentPluginSchema" - ], - "@context": [ - "https://www.w3.org/2018/credentials/v1" - ], - "issuanceDate": "2020-11-23T11:10:14.000Z", - "proof": { - "type": "JwtProof2020", - "jwt": "eyJ0eXAiOiJKV1QiLCJhbGciOiJFUzI1NksifQ.eyJ2YyI6eyJjcmVkZW50aWFsU3ViamVjdCI6eyJpbnRlcmZhY2VzIjp7IklTZWxlY3RpdmVEaXNjbG9zdXJlIjp7ImNvbXBvbmVudHMiOnsic2NoZW1hcyI6eyJJQ3JlYXRlUHJvZmlsZUNyZWRlbnRpYWxzQXJncyI6eyJ0eXBlIjoib2JqZWN0IiwicHJvcGVydGllcyI6eyJob2xkZXIiOnsidHlwZSI6InN0cmluZyIsImRlc2NyaXB0aW9uIjoiSG9sZGVyIERJRCJ9LCJ2ZXJpZmllciI6eyJ0eXBlIjoic3RyaW5nIiwiZGVzY3JpcHRpb24iOiJPcHRpb25hbC4gVmVyaWZpZXIgRElEIn0sIm5hbWUiOnsidHlwZSI6InN0cmluZyIsImRlc2NyaXB0aW9uIjoiT3B0aW9uYWwuIE5hbWUifSwicGljdHVyZSI6eyJ0eXBlIjoic3RyaW5nIiwiZGVzY3JpcHRpb24iOiJPcHRpb25hbC4gUGljdHVyZSBVUkwifSwidXJsIjp7InR5cGUiOiJzdHJpbmciLCJkZXNjcmlwdGlvbiI6Ik9wdGlvbmFsLiBVUkwifSwic2F2ZSI6eyJ0eXBlIjoiYm9vbGVhbiIsImRlc2NyaXB0aW9uIjoiU2F2ZSBwcmVzZW50YXRpb24ifSwic2VuZCI6eyJ0eXBlIjoiYm9vbGVhbiIsImRlc2NyaXB0aW9uIjoiU2VuZCBwcmVzZW50YXRpb24ifX0sInJlcXVpcmVkIjpbImhvbGRlciIsInNhdmUiLCJzZW5kIl0sImRlc2NyaXB0aW9uIjoiUHJvZmlsZSBkYXRhIn0sIlZlcmlmaWFibGVQcmVzZW50YXRpb24iOnsidHlwZSI6Im9iamVjdCIsInByb3BlcnRpZXMiOnsiaWQiOnsidHlwZSI6InN0cmluZyJ9LCJob2xkZXIiOnsidHlwZSI6InN0cmluZyJ9LCJpc3N1YW5jZURhdGUiOnsidHlwZSI6InN0cmluZyJ9LCJleHBpcmF0aW9uRGF0ZSI6eyJ0eXBlIjoic3RyaW5nIn0sIkBjb250ZXh0Ijp7InR5cGUiOiJhcnJheSIsIml0ZW1zIjp7InR5cGUiOiJzdHJpbmcifX0sInR5cGUiOnsidHlwZSI6ImFycmF5IiwiaXRlbXMiOnsidHlwZSI6InN0cmluZyJ9fSwidmVyaWZpZXIiOnsidHlwZSI6ImFycmF5IiwiaXRlbXMiOnsidHlwZSI6InN0cmluZyJ9fSwidmVyaWZpYWJsZUNyZWRlbnRpYWwiOnsidHlwZSI6ImFycmF5IiwiaXRlbXMiOnsiJHJlZiI6IiMvY29tcG9uZW50cy9zY2hlbWFzL1ZlcmlmaWFibGVDcmVkZW50aWFsIn19LCJwcm9vZiI6eyJ0eXBlIjoib2JqZWN0IiwicHJvcGVydGllcyI6eyJ0eXBlIjp7InR5cGUiOiJzdHJpbmcifX19fSwicmVxdWlyZWQiOlsiaG9sZGVyIiwiQGNvbnRleHQiLCJ0eXBlIiwidmVyaWZpZXIiLCJ2ZXJpZmlhYmxlQ3JlZGVudGlhbCIsInByb29mIl0sImRlc2NyaXB0aW9uIjoiVmVyaWZpYWJsZSBQcmVzZW50YXRpb24ge0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9kZWNlbnRyYWxpemVkLWlkZW50aXR5L2RpZC1qd3QtdmN9In0sIlZlcmlmaWFibGVDcmVkZW50aWFsIjp7InR5cGUiOiJvYmplY3QiLCJwcm9wZXJ0aWVzIjp7IkBjb250ZXh0Ijp7InR5cGUiOiJhcnJheSIsIml0ZW1zIjp7InR5cGUiOiJzdHJpbmcifX0sImlkIjp7InR5cGUiOiJzdHJpbmcifSwidHlwZSI6eyJ0eXBlIjoiYXJyYXkiLCJpdGVtcyI6eyJ0eXBlIjoic3RyaW5nIn19LCJpc3N1ZXIiOnsidHlwZSI6Im9iamVjdCIsInByb3BlcnRpZXMiOnsiaWQiOnsidHlwZSI6InN0cmluZyJ9fSwicmVxdWlyZWQiOlsiaWQiXX0sImlzc3VhbmNlRGF0ZSI6eyJ0eXBlIjoic3RyaW5nIn0sImV4cGlyYXRpb25EYXRlIjp7InR5cGUiOiJzdHJpbmcifSwiY3JlZGVudGlhbFN1YmplY3QiOnsidHlwZSI6Im9iamVjdCIsInByb3BlcnRpZXMiOnsiaWQiOnsidHlwZSI6InN0cmluZyJ9fX0sImNyZWRlbnRpYWxTdGF0dXMiOnsidHlwZSI6Im9iamVjdCIsInByb3BlcnRpZXMiOnsiaWQiOnsidHlwZSI6InN0cmluZyJ9LCJ0eXBlIjp7InR5cGUiOiJzdHJpbmcifX0sInJlcXVpcmVkIjpbImlkIiwidHlwZSJdfSwicHJvb2YiOnsidHlwZSI6Im9iamVjdCIsInByb3BlcnRpZXMiOnsidHlwZSI6eyJ0eXBlIjoic3RyaW5nIn19fX0sInJlcXVpcmVkIjpbIkBjb250ZXh0IiwidHlwZSIsImlzc3VlciIsImlzc3VhbmNlRGF0ZSIsImNyZWRlbnRpYWxTdWJqZWN0IiwicHJvb2YiXSwiZGVzY3JpcHRpb24iOiJWZXJpZmlhYmxlIENyZWRlbnRpYWwge0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9kZWNlbnRyYWxpemVkLWlkZW50aXR5L2RpZC1qd3QtdmN9In0sIklDcmVhdGVTZWxlY3RpdmVEaXNjbG9zdXJlUmVxdWVzdEFyZ3MiOnsidHlwZSI6Im9iamVjdCIsInByb3BlcnRpZXMiOnsiZGF0YSI6eyIkcmVmIjoiIy9jb21wb25lbnRzL3NjaGVtYXMvSVNlbGVjdGl2ZURpc2Nsb3N1cmVSZXF1ZXN0In19LCJyZXF1aXJlZCI6WyJkYXRhIl0sImRlc2NyaXB0aW9uIjoiQ29udGFpbnMgdGhlIHBhcmFtZXRlcnMgb2YgYSBTZWxlY3RpdmUgRGlzY2xvc3VyZSBSZXF1ZXN0LiJ9LCJJU2VsZWN0aXZlRGlzY2xvc3VyZVJlcXVlc3QiOnsidHlwZSI6Im9iamVjdCIsInByb3BlcnRpZXMiOnsiaXNzdWVyIjp7InR5cGUiOiJzdHJpbmciLCJkZXNjcmlwdGlvbiI6IlRoZSBpc3N1ZXIgb2YgdGhlIHJlcXVlc3QifSwic3ViamVjdCI6eyJ0eXBlIjoic3RyaW5nIiwiZGVzY3JpcHRpb24iOiJUaGUgdGFyZ2V0IG9mIHRoZSByZXF1ZXN0In0sInJlcGx5VXJsIjp7InR5cGUiOiJzdHJpbmciLCJkZXNjcmlwdGlvbiI6IlRoZSBVUkwgd2hlcmUgdGhlIHJlc3BvbnNlIHNob3VsZCBiZSBzZW50IGJhY2sifSwidGFnIjp7InR5cGUiOiJzdHJpbmcifSwiY2xhaW1zIjp7InR5cGUiOiJhcnJheSIsIml0ZW1zIjp7IiRyZWYiOiIjL2NvbXBvbmVudHMvc2NoZW1hcy9JQ3JlZGVudGlhbFJlcXVlc3RJbnB1dCJ9LCJkZXNjcmlwdGlvbiI6IkEgbGlzdCBvZiBjbGFpbXMgdGhhdCBhcmUgYmVpbmcgcmVxdWVzdGVkIn0sImNyZWRlbnRpYWxzIjp7InR5cGUiOiJhcnJheSIsIml0ZW1zIjp7InR5cGUiOiJzdHJpbmcifSwiZGVzY3JpcHRpb24iOiJBIGxpc3Qgb2YgaXNzdWVyIGNyZWRlbnRpYWxzIHRoYXQgdGhlIHRhcmdldCB3aWxsIHVzZSB0byBlc3RhYmxpc2ggdHJ1c3QifX0sInJlcXVpcmVkIjpbImlzc3VlciIsImNsYWltcyJdLCJkZXNjcmlwdGlvbiI6IlJlcHJlc2VudHMgdGhlIFNlbGVjdGl2ZSBEaXNjbG9zdXJlIHJlcXVlc3QgcGFyYW1ldGVycy4ifSwiSUNyZWRlbnRpYWxSZXF1ZXN0SW5wdXQiOnsidHlwZSI6Im9iamVjdCIsInByb3BlcnRpZXMiOnsicmVhc29uIjp7InR5cGUiOiJzdHJpbmciLCJkZXNjcmlwdGlvbiI6Ik1vdGl2ZSBmb3IgcmVxdWlyaW5nIHRoaXMgY3JlZGVudGlhbC4ifSwiZXNzZW50aWFsIjp7InR5cGUiOiJib29sZWFuIiwiZGVzY3JpcHRpb24iOiJJZiBpdCBpcyBlc3NlbnRpYWwuIEEgcmVzcG9uc2UgdGhhdCBkb2VzIG5vdCBpbmNsdWRlIHRoaXMgY3JlZGVudGlhbCBpcyBub3Qgc3VmZmljaWVudC4ifSwiY3JlZGVudGlhbFR5cGUiOnsidHlwZSI6InN0cmluZyIsImRlc2NyaXB0aW9uIjoiVGhlIGNyZWRlbnRpYWwgdHlwZS4gU2VlIHtAbGluayBodHRwczovL3d3dy53My5vcmcvVFIvdmMtZGF0YS1tb2RlbC8jdHlwZXMgfCBXM0MgQ3JlZGVudGlhbCBUeXBlc30ifSwiY3JlZGVudGlhbENvbnRleHQiOnsidHlwZSI6InN0cmluZyIsImRlc2NyaXB0aW9uIjoiVGhlIGNyZWRlbnRpYWwgY29udGV4dC4gU2VlIHtAbGluayBodHRwczovL3d3dy53My5vcmcvVFIvdmMtZGF0YS1tb2RlbC8jY29udGV4dHMgfCBXM0MgQ3JlZGVudGlhbCBDb250ZXh0fSJ9LCJjbGFpbVR5cGUiOnsidHlwZSI6InN0cmluZyIsImRlc2NyaXB0aW9uIjoiVGhlIG5hbWUgb2YgdGhlIGNsYWltIHByb3BlcnR5IHRoYXQgdGhlIGNyZWRlbnRpYWwgc2hvdWxkIGV4cHJlc3MuIn0sImNsYWltVmFsdWUiOnsidHlwZSI6InN0cmluZyIsImRlc2NyaXB0aW9uIjoiVGhlIHZhbHVlIG9mIHRoZSBjbGFpbSB0aGF0IHRoZSBjcmVkZW50aWFsIHNob3VsZCBleHByZXNzLiJ9LCJpc3N1ZXJzIjp7InR5cGUiOiJhcnJheSIsIml0ZW1zIjp7IiRyZWYiOiIjL2NvbXBvbmVudHMvc2NoZW1hcy9Jc3N1ZXIifSwiZGVzY3JpcHRpb24iOiJBIGxpc3Qgb2YgYWNjZXB0ZWQgSXNzdWVycyBmb3IgdGhpcyBjcmVkZW50aWFsLiJ9fSwicmVxdWlyZWQiOlsiY2xhaW1UeXBlIl0sImRlc2NyaXB0aW9uIjoiRGVzY3JpYmVzIGEgcGFydGljdWxhciBjcmVkZW50aWFsIHRoYXQgaXMgYmVpbmcgcmVxdWVzdGVkIn0sIklzc3VlciI6eyJ0eXBlIjoib2JqZWN0IiwicHJvcGVydGllcyI6eyJkaWQiOnsidHlwZSI6InN0cmluZyIsImRlc2NyaXB0aW9uIjoiVGhlIERJRCBvZiB0aGUgaXNzdWVyIG9mIGEgcmVxdWVzdGVkIGNyZWRlbnRpYWwuIn0sInVybCI6eyJ0eXBlIjoic3RyaW5nIiwiZGVzY3JpcHRpb24iOiJBIFVSTCB3aGVyZSBhIGNyZWRlbnRpYWwgb2YgdGhhdCB0eXBlIGNhbiBiZSBvYnRhaW5lZC4ifX0sInJlcXVpcmVkIjpbImRpZCIsInVybCJdLCJkZXNjcmlwdGlvbiI6IlVzZWQgZm9yIHJlcXVlc3RpbmcgQ3JlZGVudGlhbHMgdXNpbmcgU2VsZWN0aXZlIERpc2Nsb3N1cmUuIFJlcHJlc2VudHMgYW4gYWNjZXB0ZWQgaXNzdWVyIG9mIGEgY3JlZGVudGlhbC4ifSwiSUdldFZlcmlmaWFibGVDcmVkZW50aWFsc0ZvclNkckFyZ3MiOnsidHlwZSI6Im9iamVjdCIsInByb3BlcnRpZXMiOnsic2RyIjp7InR5cGUiOiJvYmplY3QiLCJwcm9wZXJ0aWVzIjp7InN1YmplY3QiOnsidHlwZSI6InN0cmluZyIsImRlc2NyaXB0aW9uIjoiVGhlIHRhcmdldCBvZiB0aGUgcmVxdWVzdCJ9LCJyZXBseVVybCI6eyJ0eXBlIjoic3RyaW5nIiwiZGVzY3JpcHRpb24iOiJUaGUgVVJMIHdoZXJlIHRoZSByZXNwb25zZSBzaG91bGQgYmUgc2VudCBiYWNrIn0sInRhZyI6eyJ0eXBlIjoic3RyaW5nIn0sImNsYWltcyI6eyJ0eXBlIjoiYXJyYXkiLCJpdGVtcyI6eyIkcmVmIjoiIy9jb21wb25lbnRzL3NjaGVtYXMvSUNyZWRlbnRpYWxSZXF1ZXN0SW5wdXQifSwiZGVzY3JpcHRpb24iOiJBIGxpc3Qgb2YgY2xhaW1zIHRoYXQgYXJlIGJlaW5nIHJlcXVlc3RlZCJ9LCJjcmVkZW50aWFscyI6eyJ0eXBlIjoiYXJyYXkiLCJpdGVtcyI6eyJ0eXBlIjoic3RyaW5nIn0sImRlc2NyaXB0aW9uIjoiQSBsaXN0IG9mIGlzc3VlciBjcmVkZW50aWFscyB0aGF0IHRoZSB0YXJnZXQgd2lsbCB1c2UgdG8gZXN0YWJsaXNoIHRydXN0In19LCJyZXF1aXJlZCI6WyJjbGFpbXMiXSwiZGVzY3JpcHRpb24iOiJUaGUgU2VsZWN0aXZlIERpc2Nsb3N1cmUgUmVxdWVzdCAoaXNzdWVyIGlzIG9taXR0ZWQpIn0sImRpZCI6eyJ0eXBlIjoic3RyaW5nIiwiZGVzY3JpcHRpb24iOiJUaGUgRElEIG9mIHRoZSBzdWJqZWN0In19LCJyZXF1aXJlZCI6WyJzZHIiXSwiZGVzY3JpcHRpb24iOiJFbmNhcHN1bGF0ZXMgdGhlIHBhcmFtcyBuZWVkZWQgdG8gZ2F0aGVyIGNyZWRlbnRpYWxzIHRvIGZ1bGZpbGwgYSBTZWxlY3RpdmUgZGlzY2xvc3VyZSByZXF1ZXN0LiJ9LCJJQ3JlZGVudGlhbHNGb3JTZHIiOnsidHlwZSI6Im9iamVjdCIsInByb3BlcnRpZXMiOnsicmVhc29uIjp7InR5cGUiOiJzdHJpbmciLCJkZXNjcmlwdGlvbiI6Ik1vdGl2ZSBmb3IgcmVxdWlyaW5nIHRoaXMgY3JlZGVudGlhbC4ifSwiZXNzZW50aWFsIjp7InR5cGUiOiJib29sZWFuIiwiZGVzY3JpcHRpb24iOiJJZiBpdCBpcyBlc3NlbnRpYWwuIEEgcmVzcG9uc2UgdGhhdCBkb2VzIG5vdCBpbmNsdWRlIHRoaXMgY3JlZGVudGlhbCBpcyBub3Qgc3VmZmljaWVudC4ifSwiY3JlZGVudGlhbFR5cGUiOnsidHlwZSI6InN0cmluZyIsImRlc2NyaXB0aW9uIjoiVGhlIGNyZWRlbnRpYWwgdHlwZS4gU2VlIHtAbGluayBodHRwczovL3d3dy53My5vcmcvVFIvdmMtZGF0YS1tb2RlbC8jdHlwZXMgfCBXM0MgQ3JlZGVudGlhbCBUeXBlc30ifSwiY3JlZGVudGlhbENvbnRleHQiOnsidHlwZSI6InN0cmluZyIsImRlc2NyaXB0aW9uIjoiVGhlIGNyZWRlbnRpYWwgY29udGV4dC4gU2VlIHtAbGluayBodHRwczovL3d3dy53My5vcmcvVFIvdmMtZGF0YS1tb2RlbC8jY29udGV4dHMgfCBXM0MgQ3JlZGVudGlhbCBDb250ZXh0fSJ9LCJjbGFpbVR5cGUiOnsidHlwZSI6InN0cmluZyIsImRlc2NyaXB0aW9uIjoiVGhlIG5hbWUgb2YgdGhlIGNsYWltIHByb3BlcnR5IHRoYXQgdGhlIGNyZWRlbnRpYWwgc2hvdWxkIGV4cHJlc3MuIn0sImNsYWltVmFsdWUiOnsidHlwZSI6InN0cmluZyIsImRlc2NyaXB0aW9uIjoiVGhlIHZhbHVlIG9mIHRoZSBjbGFpbSB0aGF0IHRoZSBjcmVkZW50aWFsIHNob3VsZCBleHByZXNzLiJ9LCJpc3N1ZXJzIjp7InR5cGUiOiJhcnJheSIsIml0ZW1zIjp7IiRyZWYiOiIjL2NvbXBvbmVudHMvc2NoZW1hcy9Jc3N1ZXIifSwiZGVzY3JpcHRpb24iOiJBIGxpc3Qgb2YgYWNjZXB0ZWQgSXNzdWVycyBmb3IgdGhpcyBjcmVkZW50aWFsLiJ9LCJjcmVkZW50aWFscyI6eyJ0eXBlIjoiYXJyYXkiLCJpdGVtcyI6eyIkcmVmIjoiIy9jb21wb25lbnRzL3NjaGVtYXMvVmVyaWZpYWJsZUNyZWRlbnRpYWwifX19LCJyZXF1aXJlZCI6WyJjbGFpbVR5cGUiLCJjcmVkZW50aWFscyJdLCJkZXNjcmlwdGlvbiI6IlRoZSBjcmVkZW50aWFscyB0aGF0IG1ha2UgdXAgYSByZXNwb25zZSBvZiBhIFNlbGVjdGl2ZSBEaXNjbG9zdXJlIn0sIklWYWxpZGF0ZVByZXNlbnRhdGlvbkFnYWluc3RTZHJBcmdzIjp7InR5cGUiOiJvYmplY3QiLCJwcm9wZXJ0aWVzIjp7InByZXNlbnRhdGlvbiI6eyIkcmVmIjoiIy9jb21wb25lbnRzL3NjaGVtYXMvVmVyaWZpYWJsZVByZXNlbnRhdGlvbiJ9LCJzZHIiOnsiJHJlZiI6IiMvY29tcG9uZW50cy9zY2hlbWFzL0lTZWxlY3RpdmVEaXNjbG9zdXJlUmVxdWVzdCJ9fSwicmVxdWlyZWQiOlsicHJlc2VudGF0aW9uIiwic2RyIl0sImRlc2NyaXB0aW9uIjoiQSB0dXBsZSB1c2VkIHRvIHZlcmlmeSBhIFNlbGVjdGl2ZSBEaXNjbG9zdXJlIFJlc3BvbnNlLiBFbmNhcHN1bGF0ZXMgdGhlIHJlc3BvbnNlKGBwcmVzZW50YXRpb25gKSBhbmQgdGhlIGNvcnJlc3BvbmRpbmcgcmVxdWVzdCAoYHNkcmApIHRoYXQgbWFkZSBpdC4ifSwiSVByZXNlbnRhdGlvblZhbGlkYXRpb25SZXN1bHQiOnsidHlwZSI6Im9iamVjdCIsInByb3BlcnRpZXMiOnsidmFsaWQiOnsidHlwZSI6ImJvb2xlYW4ifSwiY2xhaW1zIjp7InR5cGUiOiJhcnJheSIsIml0ZW1zIjp7IiRyZWYiOiIjL2NvbXBvbmVudHMvc2NoZW1hcy9JQ3JlZGVudGlhbHNGb3JTZHIifX19LCJyZXF1aXJlZCI6WyJ2YWxpZCIsImNsYWltcyJdLCJkZXNjcmlwdGlvbiI6IlRoZSByZXN1bHQgb2YgYSBzZWxlY3RpdmUgZGlzY2xvc3VyZSByZXNwb25zZSB2YWxpZGF0aW9uLiJ9fSwibWV0aG9kcyI6eyJjcmVhdGVQcm9maWxlUHJlc2VudGF0aW9uIjp7ImRlc2NyaXB0aW9uIjoiIiwiYXJndW1lbnRzIjp7IiRyZWYiOiIjL2NvbXBvbmVudHMvc2NoZW1hcy9JQ3JlYXRlUHJvZmlsZUNyZWRlbnRpYWxzQXJncyJ9LCJyZXR1cm5UeXBlIjp7IiRyZWYiOiIjL2NvbXBvbmVudHMvc2NoZW1hcy9WZXJpZmlhYmxlUHJlc2VudGF0aW9uIn19LCJjcmVhdGVTZWxlY3RpdmVEaXNjbG9zdXJlUmVxdWVzdCI6eyJkZXNjcmlwdGlvbiI6IiIsImFyZ3VtZW50cyI6eyIkcmVmIjoiIy9jb21wb25lbnRzL3NjaGVtYXMvSUNyZWF0ZVNlbGVjdGl2ZURpc2Nsb3N1cmVSZXF1ZXN0QXJncyJ9LCJyZXR1cm5UeXBlIjp7InR5cGUiOiJzdHJpbmcifX0sImdldFZlcmlmaWFibGVDcmVkZW50aWFsc0ZvclNkciI6eyJkZXNjcmlwdGlvbiI6IiIsImFyZ3VtZW50cyI6eyIkcmVmIjoiIy9jb21wb25lbnRzL3NjaGVtYXMvSUdldFZlcmlmaWFibGVDcmVkZW50aWFsc0ZvclNkckFyZ3MifSwicmV0dXJuVHlwZSI6eyJ0eXBlIjoiYXJyYXkiLCJpdGVtcyI6eyIkcmVmIjoiIy9jb21wb25lbnRzL3NjaGVtYXMvSUNyZWRlbnRpYWxzRm9yU2RyIn19fSwidmFsaWRhdGVQcmVzZW50YXRpb25BZ2FpbnN0U2RyIjp7ImRlc2NyaXB0aW9uIjoiIiwiYXJndW1lbnRzIjp7IiRyZWYiOiIjL2NvbXBvbmVudHMvc2NoZW1hcy9JVmFsaWRhdGVQcmVzZW50YXRpb25BZ2FpbnN0U2RyQXJncyJ9LCJyZXR1cm5UeXBlIjp7IiRyZWYiOiIjL2NvbXBvbmVudHMvc2NoZW1hcy9JUHJlc2VudGF0aW9uVmFsaWRhdGlvblJlc3VsdCJ9fX19fX19LCJAY29udGV4dCI6WyJodHRwczovL3d3dy53My5vcmcvMjAxOC9jcmVkZW50aWFscy92MSJdLCJ0eXBlIjpbIlZlcmlmaWFibGVDcmVkZW50aWFsIiwiQWdlbnRQbHVnaW5TY2hlbWEiXX0sIm5iZiI6MTYwNjEyOTgxNCwiaXNzIjoiZGlkOmV0aHI6cmlua2VieToweDZmYWNlMjMzNWIyZTNiNGE5YzlmNjVkZWU2MGViODJlY2EzNDVlMWMifQ.HZYbcCo50KoGTgD-PXJ7nKJzaBDIBVR-Otgo1u-YZKGwL2dhjCb0J_5cXtdcC5-PTKMjPbOacwRIXwPjzyX99w" - } -} \ No newline at end of file diff --git a/packages/daf-selective-disclosure/plugin.schema.json b/packages/daf-selective-disclosure/plugin.schema.json new file mode 100644 index 000000000..ec13564f7 --- /dev/null +++ b/packages/daf-selective-disclosure/plugin.schema.json @@ -0,0 +1,461 @@ +{ + "ISelectiveDisclosure": { + "components": { + "schemas": { + "ICreateProfileCredentialsArgs": { + "type": "object", + "properties": { + "holder": { + "type": "string", + "description": "Holder DID" + }, + "verifier": { + "type": "string", + "description": "Optional. Verifier DID" + }, + "name": { + "type": "string", + "description": "Optional. Name" + }, + "picture": { + "type": "string", + "description": "Optional. Picture URL" + }, + "url": { + "type": "string", + "description": "Optional. URL" + }, + "save": { + "type": "boolean", + "description": "Save presentation" + }, + "send": { + "type": "boolean", + "description": "Send presentation" + } + }, + "required": [ + "holder", + "save", + "send" + ], + "description": "Profile data" + }, + "VerifiablePresentation": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "holder": { + "type": "string" + }, + "issuanceDate": { + "type": "string" + }, + "expirationDate": { + "type": "string" + }, + "@context": { + "type": "array", + "items": { + "type": "string" + } + }, + "type": { + "type": "array", + "items": { + "type": "string" + } + }, + "verifier": { + "type": "array", + "items": { + "type": "string" + } + }, + "verifiableCredential": { + "type": "array", + "items": { + "$ref": "#/components/schemas/VerifiableCredential" + } + }, + "proof": { + "type": "object", + "properties": { + "type": { + "type": "string" + } + } + } + }, + "required": [ + "holder", + "@context", + "type", + "verifier", + "verifiableCredential", + "proof" + ], + "description": "Verifiable Presentation {@link https://github.com/decentralized-identity/did-jwt-vc}" + }, + "VerifiableCredential": { + "type": "object", + "properties": { + "@context": { + "type": "array", + "items": { + "type": "string" + } + }, + "id": { + "type": "string" + }, + "type": { + "type": "array", + "items": { + "type": "string" + } + }, + "issuer": { + "type": "object", + "properties": { + "id": { + "type": "string" + } + }, + "required": [ + "id" + ] + }, + "issuanceDate": { + "type": "string" + }, + "expirationDate": { + "type": "string" + }, + "credentialSubject": { + "type": "object", + "properties": { + "id": { + "type": "string" + } + } + }, + "credentialStatus": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "type": { + "type": "string" + } + }, + "required": [ + "id", + "type" + ] + }, + "proof": { + "type": "object", + "properties": { + "type": { + "type": "string" + } + } + } + }, + "required": [ + "@context", + "type", + "issuer", + "issuanceDate", + "credentialSubject", + "proof" + ], + "description": "Verifiable Credential {@link https://github.com/decentralized-identity/did-jwt-vc}" + }, + "ICreateSelectiveDisclosureRequestArgs": { + "type": "object", + "properties": { + "data": { + "$ref": "#/components/schemas/ISelectiveDisclosureRequest" + } + }, + "required": [ + "data" + ], + "description": "Contains the parameters of a Selective Disclosure Request." + }, + "ISelectiveDisclosureRequest": { + "type": "object", + "properties": { + "issuer": { + "type": "string", + "description": "The issuer of the request" + }, + "subject": { + "type": "string", + "description": "The target of the request" + }, + "replyUrl": { + "type": "string", + "description": "The URL where the response should be sent back" + }, + "tag": { + "type": "string" + }, + "claims": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ICredentialRequestInput" + }, + "description": "A list of claims that are being requested" + }, + "credentials": { + "type": "array", + "items": { + "type": "string" + }, + "description": "A list of issuer credentials that the target will use to establish trust" + } + }, + "required": [ + "issuer", + "claims" + ], + "description": "Represents the Selective Disclosure request parameters." + }, + "ICredentialRequestInput": { + "type": "object", + "properties": { + "reason": { + "type": "string", + "description": "Motive for requiring this credential." + }, + "essential": { + "type": "boolean", + "description": "If it is essential. A response that does not include this credential is not sufficient." + }, + "credentialType": { + "type": "string", + "description": "The credential type. See {@link https://www.w3.org/TR/vc-data-model/#types | W3C Credential Types}" + }, + "credentialContext": { + "type": "string", + "description": "The credential context. See {@link https://www.w3.org/TR/vc-data-model/#contexts | W3C Credential Context}" + }, + "claimType": { + "type": "string", + "description": "The name of the claim property that the credential should express." + }, + "claimValue": { + "type": "string", + "description": "The value of the claim that the credential should express." + }, + "issuers": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Issuer" + }, + "description": "A list of accepted Issuers for this credential." + } + }, + "required": [ + "claimType" + ], + "description": "Describes a particular credential that is being requested" + }, + "Issuer": { + "type": "object", + "properties": { + "did": { + "type": "string", + "description": "The DID of the issuer of a requested credential." + }, + "url": { + "type": "string", + "description": "A URL where a credential of that type can be obtained." + } + }, + "required": [ + "did", + "url" + ], + "description": "Used for requesting Credentials using Selective Disclosure. Represents an accepted issuer of a credential." + }, + "IGetVerifiableCredentialsForSdrArgs": { + "type": "object", + "properties": { + "sdr": { + "type": "object", + "properties": { + "subject": { + "type": "string", + "description": "The target of the request" + }, + "replyUrl": { + "type": "string", + "description": "The URL where the response should be sent back" + }, + "tag": { + "type": "string" + }, + "claims": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ICredentialRequestInput" + }, + "description": "A list of claims that are being requested" + }, + "credentials": { + "type": "array", + "items": { + "type": "string" + }, + "description": "A list of issuer credentials that the target will use to establish trust" + } + }, + "required": [ + "claims" + ], + "description": "The Selective Disclosure Request (issuer is omitted)" + }, + "did": { + "type": "string", + "description": "The DID of the subject" + } + }, + "required": [ + "sdr" + ], + "description": "Encapsulates the params needed to gather credentials to fulfill a Selective disclosure request." + }, + "ICredentialsForSdr": { + "type": "object", + "properties": { + "reason": { + "type": "string", + "description": "Motive for requiring this credential." + }, + "essential": { + "type": "boolean", + "description": "If it is essential. A response that does not include this credential is not sufficient." + }, + "credentialType": { + "type": "string", + "description": "The credential type. See {@link https://www.w3.org/TR/vc-data-model/#types | W3C Credential Types}" + }, + "credentialContext": { + "type": "string", + "description": "The credential context. See {@link https://www.w3.org/TR/vc-data-model/#contexts | W3C Credential Context}" + }, + "claimType": { + "type": "string", + "description": "The name of the claim property that the credential should express." + }, + "claimValue": { + "type": "string", + "description": "The value of the claim that the credential should express." + }, + "issuers": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Issuer" + }, + "description": "A list of accepted Issuers for this credential." + }, + "credentials": { + "type": "array", + "items": { + "$ref": "#/components/schemas/VerifiableCredential" + } + } + }, + "required": [ + "claimType", + "credentials" + ], + "description": "The credentials that make up a response of a Selective Disclosure" + }, + "IValidatePresentationAgainstSdrArgs": { + "type": "object", + "properties": { + "presentation": { + "$ref": "#/components/schemas/VerifiablePresentation" + }, + "sdr": { + "$ref": "#/components/schemas/ISelectiveDisclosureRequest" + } + }, + "required": [ + "presentation", + "sdr" + ], + "description": "A tuple used to verify a Selective Disclosure Response. Encapsulates the response(`presentation`) and the corresponding request (`sdr`) that made it." + }, + "IPresentationValidationResult": { + "type": "object", + "properties": { + "valid": { + "type": "boolean" + }, + "claims": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ICredentialsForSdr" + } + } + }, + "required": [ + "valid", + "claims" + ], + "description": "The result of a selective disclosure response validation." + } + }, + "methods": { + "createProfilePresentation": { + "description": "", + "arguments": { + "$ref": "#/components/schemas/ICreateProfileCredentialsArgs" + }, + "returnType": { + "$ref": "#/components/schemas/VerifiablePresentation" + } + }, + "createSelectiveDisclosureRequest": { + "description": "", + "arguments": { + "$ref": "#/components/schemas/ICreateSelectiveDisclosureRequestArgs" + }, + "returnType": { + "type": "string" + } + }, + "getVerifiableCredentialsForSdr": { + "description": "", + "arguments": { + "$ref": "#/components/schemas/IGetVerifiableCredentialsForSdrArgs" + }, + "returnType": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ICredentialsForSdr" + } + } + }, + "validatePresentationAgainstSdr": { + "description": "", + "arguments": { + "$ref": "#/components/schemas/IValidatePresentationAgainstSdrArgs" + }, + "returnType": { + "$ref": "#/components/schemas/IPresentationValidationResult" + } + } + } + } + } +} \ No newline at end of file diff --git a/packages/daf-selective-disclosure/src/action-handler.ts b/packages/daf-selective-disclosure/src/action-handler.ts index 5716d8f32..193f9d0ad 100644 --- a/packages/daf-selective-disclosure/src/action-handler.ts +++ b/packages/daf-selective-disclosure/src/action-handler.ts @@ -18,7 +18,7 @@ import { ISelectiveDisclosureRequest, ICreateProfileCredentialsArgs, } from './types' -import { pluginCredential } from './' +import { schema } from './' import { createJWT } from 'did-jwt' import Debug from 'debug' @@ -35,7 +35,7 @@ import Debug from 'debug' */ export class SelectiveDisclosure implements IAgentPlugin { readonly methods: ISelectiveDisclosure - readonly schema = pluginCredential.credentialSubject.interfaces.ISelectiveDisclosure + readonly schema = schema.ISelectiveDisclosure constructor() { this.methods = { diff --git a/packages/daf-selective-disclosure/src/index.ts b/packages/daf-selective-disclosure/src/index.ts index 7e9d6aa52..4ab38f418 100644 --- a/packages/daf-selective-disclosure/src/index.ts +++ b/packages/daf-selective-disclosure/src/index.ts @@ -6,5 +6,5 @@ export { SdrMessageHandler, MessageTypes } from './message-handler' export { SelectiveDisclosure } from './action-handler' export * from './types' -const pluginCredential = require('../plugin.credential.json') -export { pluginCredential } +const schema = require('../plugin.schema.json') +export { schema } diff --git a/packages/daf-typeorm/api/daf-typeorm.api.json b/packages/daf-typeorm/api/daf-typeorm.api.json index fe1b0d44e..e9d1068ec 100644 --- a/packages/daf-typeorm/api/daf-typeorm.api.json +++ b/packages/daf-typeorm/api/daf-typeorm.api.json @@ -5379,27 +5379,6 @@ ], "extendsTokenRanges": [] }, - { - "kind": "Variable", - "canonicalReference": "daf-typeorm!pluginCredential:var", - "docComment": "", - "excerptTokens": [ - { - "kind": "Content", - "text": "pluginCredential: " - }, - { - "kind": "Content", - "text": "any" - } - ], - "releaseTag": "Public", - "name": "pluginCredential", - "variableTypeTokenRange": { - "startIndex": 1, - "endIndex": 2 - } - }, { "kind": "Class", "canonicalReference": "daf-typeorm!Presentation:class", @@ -5748,6 +5727,27 @@ }, "implementsTokenRanges": [] }, + { + "kind": "Variable", + "canonicalReference": "daf-typeorm!schema:var", + "docComment": "", + "excerptTokens": [ + { + "kind": "Content", + "text": "schema: " + }, + { + "kind": "Content", + "text": "any" + } + ], + "releaseTag": "Public", + "name": "schema", + "variableTypeTokenRange": { + "startIndex": 1, + "endIndex": 2 + } + }, { "kind": "Class", "canonicalReference": "daf-typeorm!Service:class", diff --git a/packages/daf-typeorm/api/daf-typeorm.api.md b/packages/daf-typeorm/api/daf-typeorm.api.md index fcfa75e01..5a4306700 100644 --- a/packages/daf-typeorm/api/daf-typeorm.api.md +++ b/packages/daf-typeorm/api/daf-typeorm.api.md @@ -346,9 +346,6 @@ export interface Order { direction: 'ASC' | 'DESC'; } -// @public (undocumented) -export const pluginCredential: any; - // @public (undocumented) export class Presentation extends BaseEntity { // (undocumented) @@ -376,6 +373,9 @@ export class Presentation extends BaseEntity { verifier?: Identity[]; } +// @public (undocumented) +export const schema: any; + // @public (undocumented) export class Service extends BaseEntity { // (undocumented) diff --git a/packages/daf-typeorm/package.json b/packages/daf-typeorm/package.json index 9491c8e23..e83599044 100644 --- a/packages/daf-typeorm/package.json +++ b/packages/daf-typeorm/package.json @@ -6,7 +6,7 @@ "types": "build/index.d.ts", "scripts": { "build": "tsc", - "create-plugin-credential": "yarn daf create-plugin-credential --config=../../agent.yml" + "generate-plugin-schema": "yarn daf generate-plugin-schema" }, "daf": { "pluginInterfaces": { @@ -28,7 +28,7 @@ "files": [ "build/**/*", "src/**/*", - "plugin.credential.json", + "plugin.schema.json", "README.md", "LICENSE" ], diff --git a/packages/daf-typeorm/plugin.credential.json b/packages/daf-typeorm/plugin.credential.json deleted file mode 100644 index c41124ae0..000000000 --- a/packages/daf-typeorm/plugin.credential.json +++ /dev/null @@ -1,983 +0,0 @@ -{ - "credentialSubject": { - "interfaces": { - "IDataStoreORM": { - "components": { - "schemas": { - "FindIdentitiesArgs": { - "$ref": "#/components/schemas/FindArgs-TIdentitiesColumns" - }, - "FindArgs-TIdentitiesColumns": { - "type": "object", - "properties": { - "where": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Where-TIdentitiesColumns" - } - }, - "order": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Order-TIdentitiesColumns" - } - }, - "take": { - "type": "number" - }, - "skip": { - "type": "number" - } - } - }, - "Where-TIdentitiesColumns": { - "type": "object", - "properties": { - "column": { - "$ref": "#/components/schemas/TIdentitiesColumns" - }, - "value": { - "type": "array", - "items": { - "type": "string" - } - }, - "not": { - "type": "boolean" - }, - "op": { - "type": "string", - "enum": [ - "LessThan", - "LessThanOrEqual", - "MoreThan", - "MoreThanOrEqual", - "Equal", - "Like", - "Between", - "In", - "Any", - "IsNull" - ] - } - }, - "required": [ - "column" - ] - }, - "TIdentitiesColumns": { - "type": "string", - "enum": [ - "did", - "alias", - "provider" - ] - }, - "Order-TIdentitiesColumns": { - "type": "object", - "properties": { - "column": { - "$ref": "#/components/schemas/TIdentitiesColumns" - }, - "direction": { - "type": "string", - "enum": [ - "ASC", - "DESC" - ] - } - }, - "required": [ - "column", - "direction" - ] - }, - "PartialIdentity": { - "type": "object", - "properties": { - "did": { - "type": "string", - "description": "Decentralized identifier" - }, - "alias": { - "type": "string", - "description": "Optional. Identity alias. Can be used to reference an object in an external system" - }, - "provider": { - "type": "string", - "description": "Identity provider name" - }, - "controllerKeyId": { - "type": "string", - "description": "Controller key id" - }, - "keys": { - "type": "array", - "items": { - "$ref": "#/components/schemas/IKey" - }, - "description": "Array of managed keys" - }, - "services": { - "type": "array", - "items": { - "$ref": "#/components/schemas/IService" - }, - "description": "Array of services" - } - } - }, - "IKey": { - "type": "object", - "properties": { - "kid": { - "type": "string", - "description": "Key ID" - }, - "kms": { - "type": "string", - "description": "Key Management System" - }, - "type": { - "$ref": "#/components/schemas/TKeyType", - "description": "Key type" - }, - "publicKeyHex": { - "type": "string", - "description": "Public key" - }, - "privateKeyHex": { - "type": "string", - "description": "Optional. Private key" - }, - "meta": { - "anyOf": [ - { - "type": "object" - }, - { - "type": "null" - } - ], - "description": "Optional. Key metadata. Can be used to store auth data to access remote kms" - } - }, - "required": [ - "kid", - "kms", - "type", - "publicKeyHex" - ], - "description": "Cryptographic key" - }, - "TKeyType": { - "type": "string", - "enum": [ - "Ed25519", - "Secp256k1" - ], - "description": "Cryptographic key type" - }, - "IService": { - "type": "object", - "properties": { - "id": { - "type": "string", - "description": "ID" - }, - "type": { - "type": "string", - "description": "Service type" - }, - "serviceEndpoint": { - "type": "string", - "description": "Endpoint URL" - }, - "description": { - "type": "string", - "description": "Optional. Description" - } - }, - "required": [ - "id", - "type", - "serviceEndpoint" - ], - "description": "Identity service" - }, - "FindMessagesArgs": { - "$ref": "#/components/schemas/FindArgs-TMessageColumns" - }, - "FindArgs-TMessageColumns": { - "type": "object", - "properties": { - "where": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Where-TMessageColumns" - } - }, - "order": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Order-TMessageColumns" - } - }, - "take": { - "type": "number" - }, - "skip": { - "type": "number" - } - } - }, - "Where-TMessageColumns": { - "type": "object", - "properties": { - "column": { - "$ref": "#/components/schemas/TMessageColumns" - }, - "value": { - "type": "array", - "items": { - "type": "string" - } - }, - "not": { - "type": "boolean" - }, - "op": { - "type": "string", - "enum": [ - "LessThan", - "LessThanOrEqual", - "MoreThan", - "MoreThanOrEqual", - "Equal", - "Like", - "Between", - "In", - "Any", - "IsNull" - ] - } - }, - "required": [ - "column" - ] - }, - "TMessageColumns": { - "type": "string", - "enum": [ - "from", - "to", - "id", - "createdAt", - "expiresAt", - "threadId", - "type", - "raw", - "replyTo", - "replyUrl" - ] - }, - "Order-TMessageColumns": { - "type": "object", - "properties": { - "column": { - "$ref": "#/components/schemas/TMessageColumns" - }, - "direction": { - "type": "string", - "enum": [ - "ASC", - "DESC" - ] - } - }, - "required": [ - "column", - "direction" - ] - }, - "IMessage": { - "type": "object", - "properties": { - "id": { - "type": "string", - "description": "Unique message ID" - }, - "type": { - "type": "string", - "description": "Message type" - }, - "createdAt": { - "type": "string", - "description": "Optional. Creation date (ISO 8601)" - }, - "expiresAt": { - "type": "string", - "description": "Optional. Expiration date (ISO 8601)" - }, - "threadId": { - "type": "string", - "description": "Optional. Thread ID" - }, - "raw": { - "type": "string", - "description": "Optional. Original message raw data" - }, - "data": { - "anyOf": [ - { - "type": "object" - }, - { - "type": "null" - } - ], - "description": "Optional. Parsed data" - }, - "replyTo": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Optional. List of DIDs to reply to" - }, - "replyUrl": { - "type": "string", - "description": "Optional. URL to post a reply message to" - }, - "from": { - "type": "string", - "description": "Optional. Sender DID" - }, - "to": { - "type": "string", - "description": "Optional. Recipient DID" - }, - "metaData": { - "anyOf": [ - { - "type": "array", - "items": { - "$ref": "#/components/schemas/IMetaData" - } - }, - { - "type": "null" - } - ], - "description": "Optional. Array of message metadata" - }, - "credentials": { - "type": "array", - "items": { - "$ref": "#/components/schemas/VerifiableCredential" - }, - "description": "Optional. Array of attached verifiable credentials" - }, - "presentations": { - "type": "array", - "items": { - "$ref": "#/components/schemas/VerifiablePresentation" - }, - "description": "Optional. Array of attached verifiable presentations" - } - }, - "required": [ - "id", - "type" - ], - "description": "DIDComm message" - }, - "IMetaData": { - "type": "object", - "properties": { - "type": { - "type": "string", - "description": "Type" - }, - "value": { - "type": "string", - "description": "Optional. Value" - } - }, - "required": [ - "type" - ], - "description": "Message meta data" - }, - "VerifiableCredential": { - "type": "object", - "properties": { - "@context": { - "type": "array", - "items": { - "type": "string" - } - }, - "id": { - "type": "string" - }, - "type": { - "type": "array", - "items": { - "type": "string" - } - }, - "issuer": { - "type": "object", - "properties": { - "id": { - "type": "string" - } - }, - "required": [ - "id" - ] - }, - "issuanceDate": { - "type": "string" - }, - "expirationDate": { - "type": "string" - }, - "credentialSubject": { - "type": "object", - "properties": { - "id": { - "type": "string" - } - } - }, - "credentialStatus": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "type": { - "type": "string" - } - }, - "required": [ - "id", - "type" - ] - }, - "proof": { - "type": "object", - "properties": { - "type": { - "type": "string" - } - } - } - }, - "required": [ - "@context", - "type", - "issuer", - "issuanceDate", - "credentialSubject", - "proof" - ], - "description": "Verifiable Credential {@link https://github.com/decentralized-identity/did-jwt-vc}" - }, - "VerifiablePresentation": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "holder": { - "type": "string" - }, - "issuanceDate": { - "type": "string" - }, - "expirationDate": { - "type": "string" - }, - "@context": { - "type": "array", - "items": { - "type": "string" - } - }, - "type": { - "type": "array", - "items": { - "type": "string" - } - }, - "verifier": { - "type": "array", - "items": { - "type": "string" - } - }, - "verifiableCredential": { - "type": "array", - "items": { - "$ref": "#/components/schemas/VerifiableCredential" - } - }, - "proof": { - "type": "object", - "properties": { - "type": { - "type": "string" - } - } - } - }, - "required": [ - "holder", - "@context", - "type", - "verifier", - "verifiableCredential", - "proof" - ], - "description": "Verifiable Presentation {@link https://github.com/decentralized-identity/did-jwt-vc}" - }, - "FindCredentialsArgs": { - "$ref": "#/components/schemas/FindArgs-TCredentialColumns" - }, - "FindArgs-TCredentialColumns": { - "type": "object", - "properties": { - "where": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Where-TCredentialColumns" - } - }, - "order": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Order-TCredentialColumns" - } - }, - "take": { - "type": "number" - }, - "skip": { - "type": "number" - } - } - }, - "Where-TCredentialColumns": { - "type": "object", - "properties": { - "column": { - "$ref": "#/components/schemas/TCredentialColumns" - }, - "value": { - "type": "array", - "items": { - "type": "string" - } - }, - "not": { - "type": "boolean" - }, - "op": { - "type": "string", - "enum": [ - "LessThan", - "LessThanOrEqual", - "MoreThan", - "MoreThanOrEqual", - "Equal", - "Like", - "Between", - "In", - "Any", - "IsNull" - ] - } - }, - "required": [ - "column" - ] - }, - "TCredentialColumns": { - "type": "string", - "enum": [ - "context", - "type", - "id", - "issuer", - "subject", - "expirationDate", - "issuanceDate" - ] - }, - "Order-TCredentialColumns": { - "type": "object", - "properties": { - "column": { - "$ref": "#/components/schemas/TCredentialColumns" - }, - "direction": { - "type": "string", - "enum": [ - "ASC", - "DESC" - ] - } - }, - "required": [ - "column", - "direction" - ] - }, - "UniqueVerifiableCredential": { - "type": "object", - "properties": { - "hash": { - "type": "string" - }, - "verifiableCredential": { - "$ref": "#/components/schemas/VerifiableCredential" - } - }, - "required": [ - "hash", - "verifiableCredential" - ] - }, - "FindClaimsArgs": { - "$ref": "#/components/schemas/FindArgs-TClaimsColumns" - }, - "FindArgs-TClaimsColumns": { - "type": "object", - "properties": { - "where": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Where-TClaimsColumns" - } - }, - "order": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Order-TClaimsColumns" - } - }, - "take": { - "type": "number" - }, - "skip": { - "type": "number" - } - } - }, - "Where-TClaimsColumns": { - "type": "object", - "properties": { - "column": { - "$ref": "#/components/schemas/TClaimsColumns" - }, - "value": { - "type": "array", - "items": { - "type": "string" - } - }, - "not": { - "type": "boolean" - }, - "op": { - "type": "string", - "enum": [ - "LessThan", - "LessThanOrEqual", - "MoreThan", - "MoreThanOrEqual", - "Equal", - "Like", - "Between", - "In", - "Any", - "IsNull" - ] - } - }, - "required": [ - "column" - ] - }, - "TClaimsColumns": { - "type": "string", - "enum": [ - "context", - "credentialType", - "type", - "value", - "isObj", - "id", - "issuer", - "subject", - "expirationDate", - "issuanceDate" - ] - }, - "Order-TClaimsColumns": { - "type": "object", - "properties": { - "column": { - "$ref": "#/components/schemas/TClaimsColumns" - }, - "direction": { - "type": "string", - "enum": [ - "ASC", - "DESC" - ] - } - }, - "required": [ - "column", - "direction" - ] - }, - "FindPresentationsArgs": { - "$ref": "#/components/schemas/FindArgs-TPresentationColumns" - }, - "FindArgs-TPresentationColumns": { - "type": "object", - "properties": { - "where": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Where-TPresentationColumns" - } - }, - "order": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Order-TPresentationColumns" - } - }, - "take": { - "type": "number" - }, - "skip": { - "type": "number" - } - } - }, - "Where-TPresentationColumns": { - "type": "object", - "properties": { - "column": { - "$ref": "#/components/schemas/TPresentationColumns" - }, - "value": { - "type": "array", - "items": { - "type": "string" - } - }, - "not": { - "type": "boolean" - }, - "op": { - "type": "string", - "enum": [ - "LessThan", - "LessThanOrEqual", - "MoreThan", - "MoreThanOrEqual", - "Equal", - "Like", - "Between", - "In", - "Any", - "IsNull" - ] - } - }, - "required": [ - "column" - ] - }, - "TPresentationColumns": { - "type": "string", - "enum": [ - "context", - "type", - "id", - "holder", - "verifier", - "expirationDate", - "issuanceDate" - ] - }, - "Order-TPresentationColumns": { - "type": "object", - "properties": { - "column": { - "$ref": "#/components/schemas/TPresentationColumns" - }, - "direction": { - "type": "string", - "enum": [ - "ASC", - "DESC" - ] - } - }, - "required": [ - "column", - "direction" - ] - }, - "UniqueVerifiablePresentation": { - "type": "object", - "properties": { - "hash": { - "type": "string" - }, - "verifiablePresentation": { - "$ref": "#/components/schemas/VerifiablePresentation" - } - }, - "required": [ - "hash", - "verifiablePresentation" - ] - } - }, - "methods": { - "dataStoreORMGetIdentities": { - "description": "", - "arguments": { - "$ref": "#/components/schemas/FindIdentitiesArgs" - }, - "returnType": { - "type": "array", - "items": { - "$ref": "#/components/schemas/PartialIdentity" - } - } - }, - "dataStoreORMGetIdentitiesCount": { - "description": "", - "arguments": { - "$ref": "#/components/schemas/FindIdentitiesArgs" - }, - "returnType": { - "type": "number" - } - }, - "dataStoreORMGetMessages": { - "description": "", - "arguments": { - "$ref": "#/components/schemas/FindMessagesArgs" - }, - "returnType": { - "type": "array", - "items": { - "$ref": "#/components/schemas/IMessage" - } - } - }, - "dataStoreORMGetMessagesCount": { - "description": "", - "arguments": { - "$ref": "#/components/schemas/FindMessagesArgs" - }, - "returnType": { - "type": "number" - } - }, - "dataStoreORMGetVerifiableCredentials": { - "description": "", - "arguments": { - "$ref": "#/components/schemas/FindCredentialsArgs" - }, - "returnType": { - "type": "array", - "items": { - "$ref": "#/components/schemas/UniqueVerifiableCredential" - } - } - }, - "dataStoreORMGetVerifiableCredentialsByClaims": { - "description": "", - "arguments": { - "$ref": "#/components/schemas/FindClaimsArgs" - }, - "returnType": { - "type": "array", - "items": { - "$ref": "#/components/schemas/UniqueVerifiableCredential" - } - } - }, - "dataStoreORMGetVerifiableCredentialsByClaimsCount": { - "description": "", - "arguments": { - "$ref": "#/components/schemas/FindClaimsArgs" - }, - "returnType": { - "type": "number" - } - }, - "dataStoreORMGetVerifiableCredentialsCount": { - "description": "", - "arguments": { - "$ref": "#/components/schemas/FindCredentialsArgs" - }, - "returnType": { - "type": "number" - } - }, - "dataStoreORMGetVerifiablePresentations": { - "description": "", - "arguments": { - "$ref": "#/components/schemas/FindPresentationsArgs" - }, - "returnType": { - "type": "array", - "items": { - "$ref": "#/components/schemas/UniqueVerifiablePresentation" - } - } - }, - "dataStoreORMGetVerifiablePresentationsCount": { - "description": "", - "arguments": { - "$ref": "#/components/schemas/FindPresentationsArgs" - }, - "returnType": { - "type": "number" - } - } - } - } - } - } - }, - "issuer": { - "id": "did:ethr:rinkeby:0x66810d90fdeab755c38bdd97820447ee413cd9ad" - }, - "type": [ - "VerifiableCredential", - "AgentPluginSchema" - ], - "@context": [ - "https://www.w3.org/2018/credentials/v1" - ], - "issuanceDate": "2020-11-23T11:10:03.000Z", - "proof": { - "type": "JwtProof2020", - "jwt": "eyJ0eXAiOiJKV1QiLCJhbGciOiJFUzI1NksifQ.eyJ2YyI6eyJjcmVkZW50aWFsU3ViamVjdCI6eyJpbnRlcmZhY2VzIjp7IklEYXRhU3RvcmVPUk0iOnsiY29tcG9uZW50cyI6eyJzY2hlbWFzIjp7IkZpbmRJZGVudGl0aWVzQXJncyI6eyIkcmVmIjoiIy9jb21wb25lbnRzL3NjaGVtYXMvRmluZEFyZ3MtVElkZW50aXRpZXNDb2x1bW5zIn0sIkZpbmRBcmdzLVRJZGVudGl0aWVzQ29sdW1ucyI6eyJ0eXBlIjoib2JqZWN0IiwicHJvcGVydGllcyI6eyJ3aGVyZSI6eyJ0eXBlIjoiYXJyYXkiLCJpdGVtcyI6eyIkcmVmIjoiIy9jb21wb25lbnRzL3NjaGVtYXMvV2hlcmUtVElkZW50aXRpZXNDb2x1bW5zIn19LCJvcmRlciI6eyJ0eXBlIjoiYXJyYXkiLCJpdGVtcyI6eyIkcmVmIjoiIy9jb21wb25lbnRzL3NjaGVtYXMvT3JkZXItVElkZW50aXRpZXNDb2x1bW5zIn19LCJ0YWtlIjp7InR5cGUiOiJudW1iZXIifSwic2tpcCI6eyJ0eXBlIjoibnVtYmVyIn19fSwiV2hlcmUtVElkZW50aXRpZXNDb2x1bW5zIjp7InR5cGUiOiJvYmplY3QiLCJwcm9wZXJ0aWVzIjp7ImNvbHVtbiI6eyIkcmVmIjoiIy9jb21wb25lbnRzL3NjaGVtYXMvVElkZW50aXRpZXNDb2x1bW5zIn0sInZhbHVlIjp7InR5cGUiOiJhcnJheSIsIml0ZW1zIjp7InR5cGUiOiJzdHJpbmcifX0sIm5vdCI6eyJ0eXBlIjoiYm9vbGVhbiJ9LCJvcCI6eyJ0eXBlIjoic3RyaW5nIiwiZW51bSI6WyJMZXNzVGhhbiIsIkxlc3NUaGFuT3JFcXVhbCIsIk1vcmVUaGFuIiwiTW9yZVRoYW5PckVxdWFsIiwiRXF1YWwiLCJMaWtlIiwiQmV0d2VlbiIsIkluIiwiQW55IiwiSXNOdWxsIl19fSwicmVxdWlyZWQiOlsiY29sdW1uIl19LCJUSWRlbnRpdGllc0NvbHVtbnMiOnsidHlwZSI6InN0cmluZyIsImVudW0iOlsiZGlkIiwiYWxpYXMiLCJwcm92aWRlciJdfSwiT3JkZXItVElkZW50aXRpZXNDb2x1bW5zIjp7InR5cGUiOiJvYmplY3QiLCJwcm9wZXJ0aWVzIjp7ImNvbHVtbiI6eyIkcmVmIjoiIy9jb21wb25lbnRzL3NjaGVtYXMvVElkZW50aXRpZXNDb2x1bW5zIn0sImRpcmVjdGlvbiI6eyJ0eXBlIjoic3RyaW5nIiwiZW51bSI6WyJBU0MiLCJERVNDIl19fSwicmVxdWlyZWQiOlsiY29sdW1uIiwiZGlyZWN0aW9uIl19LCJQYXJ0aWFsSWRlbnRpdHkiOnsidHlwZSI6Im9iamVjdCIsInByb3BlcnRpZXMiOnsiZGlkIjp7InR5cGUiOiJzdHJpbmciLCJkZXNjcmlwdGlvbiI6IkRlY2VudHJhbGl6ZWQgaWRlbnRpZmllciJ9LCJhbGlhcyI6eyJ0eXBlIjoic3RyaW5nIiwiZGVzY3JpcHRpb24iOiJPcHRpb25hbC4gSWRlbnRpdHkgYWxpYXMuIENhbiBiZSB1c2VkIHRvIHJlZmVyZW5jZSBhbiBvYmplY3QgaW4gYW4gZXh0ZXJuYWwgc3lzdGVtIn0sInByb3ZpZGVyIjp7InR5cGUiOiJzdHJpbmciLCJkZXNjcmlwdGlvbiI6IklkZW50aXR5IHByb3ZpZGVyIG5hbWUifSwiY29udHJvbGxlcktleUlkIjp7InR5cGUiOiJzdHJpbmciLCJkZXNjcmlwdGlvbiI6IkNvbnRyb2xsZXIga2V5IGlkIn0sImtleXMiOnsidHlwZSI6ImFycmF5IiwiaXRlbXMiOnsiJHJlZiI6IiMvY29tcG9uZW50cy9zY2hlbWFzL0lLZXkifSwiZGVzY3JpcHRpb24iOiJBcnJheSBvZiBtYW5hZ2VkIGtleXMifSwic2VydmljZXMiOnsidHlwZSI6ImFycmF5IiwiaXRlbXMiOnsiJHJlZiI6IiMvY29tcG9uZW50cy9zY2hlbWFzL0lTZXJ2aWNlIn0sImRlc2NyaXB0aW9uIjoiQXJyYXkgb2Ygc2VydmljZXMifX19LCJJS2V5Ijp7InR5cGUiOiJvYmplY3QiLCJwcm9wZXJ0aWVzIjp7ImtpZCI6eyJ0eXBlIjoic3RyaW5nIiwiZGVzY3JpcHRpb24iOiJLZXkgSUQifSwia21zIjp7InR5cGUiOiJzdHJpbmciLCJkZXNjcmlwdGlvbiI6IktleSBNYW5hZ2VtZW50IFN5c3RlbSJ9LCJ0eXBlIjp7IiRyZWYiOiIjL2NvbXBvbmVudHMvc2NoZW1hcy9US2V5VHlwZSIsImRlc2NyaXB0aW9uIjoiS2V5IHR5cGUifSwicHVibGljS2V5SGV4Ijp7InR5cGUiOiJzdHJpbmciLCJkZXNjcmlwdGlvbiI6IlB1YmxpYyBrZXkifSwicHJpdmF0ZUtleUhleCI6eyJ0eXBlIjoic3RyaW5nIiwiZGVzY3JpcHRpb24iOiJPcHRpb25hbC4gUHJpdmF0ZSBrZXkifSwibWV0YSI6eyJhbnlPZiI6W3sidHlwZSI6Im9iamVjdCJ9LHsidHlwZSI6Im51bGwifV0sImRlc2NyaXB0aW9uIjoiT3B0aW9uYWwuIEtleSBtZXRhZGF0YS4gQ2FuIGJlIHVzZWQgdG8gc3RvcmUgYXV0aCBkYXRhIHRvIGFjY2VzcyByZW1vdGUga21zIn19LCJyZXF1aXJlZCI6WyJraWQiLCJrbXMiLCJ0eXBlIiwicHVibGljS2V5SGV4Il0sImRlc2NyaXB0aW9uIjoiQ3J5cHRvZ3JhcGhpYyBrZXkifSwiVEtleVR5cGUiOnsidHlwZSI6InN0cmluZyIsImVudW0iOlsiRWQyNTUxOSIsIlNlY3AyNTZrMSJdLCJkZXNjcmlwdGlvbiI6IkNyeXB0b2dyYXBoaWMga2V5IHR5cGUifSwiSVNlcnZpY2UiOnsidHlwZSI6Im9iamVjdCIsInByb3BlcnRpZXMiOnsiaWQiOnsidHlwZSI6InN0cmluZyIsImRlc2NyaXB0aW9uIjoiSUQifSwidHlwZSI6eyJ0eXBlIjoic3RyaW5nIiwiZGVzY3JpcHRpb24iOiJTZXJ2aWNlIHR5cGUifSwic2VydmljZUVuZHBvaW50Ijp7InR5cGUiOiJzdHJpbmciLCJkZXNjcmlwdGlvbiI6IkVuZHBvaW50IFVSTCJ9LCJkZXNjcmlwdGlvbiI6eyJ0eXBlIjoic3RyaW5nIiwiZGVzY3JpcHRpb24iOiJPcHRpb25hbC4gRGVzY3JpcHRpb24ifX0sInJlcXVpcmVkIjpbImlkIiwidHlwZSIsInNlcnZpY2VFbmRwb2ludCJdLCJkZXNjcmlwdGlvbiI6IklkZW50aXR5IHNlcnZpY2UifSwiRmluZE1lc3NhZ2VzQXJncyI6eyIkcmVmIjoiIy9jb21wb25lbnRzL3NjaGVtYXMvRmluZEFyZ3MtVE1lc3NhZ2VDb2x1bW5zIn0sIkZpbmRBcmdzLVRNZXNzYWdlQ29sdW1ucyI6eyJ0eXBlIjoib2JqZWN0IiwicHJvcGVydGllcyI6eyJ3aGVyZSI6eyJ0eXBlIjoiYXJyYXkiLCJpdGVtcyI6eyIkcmVmIjoiIy9jb21wb25lbnRzL3NjaGVtYXMvV2hlcmUtVE1lc3NhZ2VDb2x1bW5zIn19LCJvcmRlciI6eyJ0eXBlIjoiYXJyYXkiLCJpdGVtcyI6eyIkcmVmIjoiIy9jb21wb25lbnRzL3NjaGVtYXMvT3JkZXItVE1lc3NhZ2VDb2x1bW5zIn19LCJ0YWtlIjp7InR5cGUiOiJudW1iZXIifSwic2tpcCI6eyJ0eXBlIjoibnVtYmVyIn19fSwiV2hlcmUtVE1lc3NhZ2VDb2x1bW5zIjp7InR5cGUiOiJvYmplY3QiLCJwcm9wZXJ0aWVzIjp7ImNvbHVtbiI6eyIkcmVmIjoiIy9jb21wb25lbnRzL3NjaGVtYXMvVE1lc3NhZ2VDb2x1bW5zIn0sInZhbHVlIjp7InR5cGUiOiJhcnJheSIsIml0ZW1zIjp7InR5cGUiOiJzdHJpbmcifX0sIm5vdCI6eyJ0eXBlIjoiYm9vbGVhbiJ9LCJvcCI6eyJ0eXBlIjoic3RyaW5nIiwiZW51bSI6WyJMZXNzVGhhbiIsIkxlc3NUaGFuT3JFcXVhbCIsIk1vcmVUaGFuIiwiTW9yZVRoYW5PckVxdWFsIiwiRXF1YWwiLCJMaWtlIiwiQmV0d2VlbiIsIkluIiwiQW55IiwiSXNOdWxsIl19fSwicmVxdWlyZWQiOlsiY29sdW1uIl19LCJUTWVzc2FnZUNvbHVtbnMiOnsidHlwZSI6InN0cmluZyIsImVudW0iOlsiZnJvbSIsInRvIiwiaWQiLCJjcmVhdGVkQXQiLCJleHBpcmVzQXQiLCJ0aHJlYWRJZCIsInR5cGUiLCJyYXciLCJyZXBseVRvIiwicmVwbHlVcmwiXX0sIk9yZGVyLVRNZXNzYWdlQ29sdW1ucyI6eyJ0eXBlIjoib2JqZWN0IiwicHJvcGVydGllcyI6eyJjb2x1bW4iOnsiJHJlZiI6IiMvY29tcG9uZW50cy9zY2hlbWFzL1RNZXNzYWdlQ29sdW1ucyJ9LCJkaXJlY3Rpb24iOnsidHlwZSI6InN0cmluZyIsImVudW0iOlsiQVNDIiwiREVTQyJdfX0sInJlcXVpcmVkIjpbImNvbHVtbiIsImRpcmVjdGlvbiJdfSwiSU1lc3NhZ2UiOnsidHlwZSI6Im9iamVjdCIsInByb3BlcnRpZXMiOnsiaWQiOnsidHlwZSI6InN0cmluZyIsImRlc2NyaXB0aW9uIjoiVW5pcXVlIG1lc3NhZ2UgSUQifSwidHlwZSI6eyJ0eXBlIjoic3RyaW5nIiwiZGVzY3JpcHRpb24iOiJNZXNzYWdlIHR5cGUifSwiY3JlYXRlZEF0Ijp7InR5cGUiOiJzdHJpbmciLCJkZXNjcmlwdGlvbiI6Ik9wdGlvbmFsLiBDcmVhdGlvbiBkYXRlIChJU08gODYwMSkifSwiZXhwaXJlc0F0Ijp7InR5cGUiOiJzdHJpbmciLCJkZXNjcmlwdGlvbiI6Ik9wdGlvbmFsLiBFeHBpcmF0aW9uIGRhdGUgKElTTyA4NjAxKSJ9LCJ0aHJlYWRJZCI6eyJ0eXBlIjoic3RyaW5nIiwiZGVzY3JpcHRpb24iOiJPcHRpb25hbC4gVGhyZWFkIElEIn0sInJhdyI6eyJ0eXBlIjoic3RyaW5nIiwiZGVzY3JpcHRpb24iOiJPcHRpb25hbC4gT3JpZ2luYWwgbWVzc2FnZSByYXcgZGF0YSJ9LCJkYXRhIjp7ImFueU9mIjpbeyJ0eXBlIjoib2JqZWN0In0seyJ0eXBlIjoibnVsbCJ9XSwiZGVzY3JpcHRpb24iOiJPcHRpb25hbC4gUGFyc2VkIGRhdGEifSwicmVwbHlUbyI6eyJ0eXBlIjoiYXJyYXkiLCJpdGVtcyI6eyJ0eXBlIjoic3RyaW5nIn0sImRlc2NyaXB0aW9uIjoiT3B0aW9uYWwuIExpc3Qgb2YgRElEcyB0byByZXBseSB0byJ9LCJyZXBseVVybCI6eyJ0eXBlIjoic3RyaW5nIiwiZGVzY3JpcHRpb24iOiJPcHRpb25hbC4gVVJMIHRvIHBvc3QgYSByZXBseSBtZXNzYWdlIHRvIn0sImZyb20iOnsidHlwZSI6InN0cmluZyIsImRlc2NyaXB0aW9uIjoiT3B0aW9uYWwuIFNlbmRlciBESUQifSwidG8iOnsidHlwZSI6InN0cmluZyIsImRlc2NyaXB0aW9uIjoiT3B0aW9uYWwuIFJlY2lwaWVudCBESUQifSwibWV0YURhdGEiOnsiYW55T2YiOlt7InR5cGUiOiJhcnJheSIsIml0ZW1zIjp7IiRyZWYiOiIjL2NvbXBvbmVudHMvc2NoZW1hcy9JTWV0YURhdGEifX0seyJ0eXBlIjoibnVsbCJ9XSwiZGVzY3JpcHRpb24iOiJPcHRpb25hbC4gQXJyYXkgb2YgbWVzc2FnZSBtZXRhZGF0YSJ9LCJjcmVkZW50aWFscyI6eyJ0eXBlIjoiYXJyYXkiLCJpdGVtcyI6eyIkcmVmIjoiIy9jb21wb25lbnRzL3NjaGVtYXMvVmVyaWZpYWJsZUNyZWRlbnRpYWwifSwiZGVzY3JpcHRpb24iOiJPcHRpb25hbC4gQXJyYXkgb2YgYXR0YWNoZWQgdmVyaWZpYWJsZSBjcmVkZW50aWFscyJ9LCJwcmVzZW50YXRpb25zIjp7InR5cGUiOiJhcnJheSIsIml0ZW1zIjp7IiRyZWYiOiIjL2NvbXBvbmVudHMvc2NoZW1hcy9WZXJpZmlhYmxlUHJlc2VudGF0aW9uIn0sImRlc2NyaXB0aW9uIjoiT3B0aW9uYWwuIEFycmF5IG9mIGF0dGFjaGVkIHZlcmlmaWFibGUgcHJlc2VudGF0aW9ucyJ9fSwicmVxdWlyZWQiOlsiaWQiLCJ0eXBlIl0sImRlc2NyaXB0aW9uIjoiRElEQ29tbSBtZXNzYWdlIn0sIklNZXRhRGF0YSI6eyJ0eXBlIjoib2JqZWN0IiwicHJvcGVydGllcyI6eyJ0eXBlIjp7InR5cGUiOiJzdHJpbmciLCJkZXNjcmlwdGlvbiI6IlR5cGUifSwidmFsdWUiOnsidHlwZSI6InN0cmluZyIsImRlc2NyaXB0aW9uIjoiT3B0aW9uYWwuIFZhbHVlIn19LCJyZXF1aXJlZCI6WyJ0eXBlIl0sImRlc2NyaXB0aW9uIjoiTWVzc2FnZSBtZXRhIGRhdGEifSwiVmVyaWZpYWJsZUNyZWRlbnRpYWwiOnsidHlwZSI6Im9iamVjdCIsInByb3BlcnRpZXMiOnsiQGNvbnRleHQiOnsidHlwZSI6ImFycmF5IiwiaXRlbXMiOnsidHlwZSI6InN0cmluZyJ9fSwiaWQiOnsidHlwZSI6InN0cmluZyJ9LCJ0eXBlIjp7InR5cGUiOiJhcnJheSIsIml0ZW1zIjp7InR5cGUiOiJzdHJpbmcifX0sImlzc3VlciI6eyJ0eXBlIjoib2JqZWN0IiwicHJvcGVydGllcyI6eyJpZCI6eyJ0eXBlIjoic3RyaW5nIn19LCJyZXF1aXJlZCI6WyJpZCJdfSwiaXNzdWFuY2VEYXRlIjp7InR5cGUiOiJzdHJpbmcifSwiZXhwaXJhdGlvbkRhdGUiOnsidHlwZSI6InN0cmluZyJ9LCJjcmVkZW50aWFsU3ViamVjdCI6eyJ0eXBlIjoib2JqZWN0IiwicHJvcGVydGllcyI6eyJpZCI6eyJ0eXBlIjoic3RyaW5nIn19fSwiY3JlZGVudGlhbFN0YXR1cyI6eyJ0eXBlIjoib2JqZWN0IiwicHJvcGVydGllcyI6eyJpZCI6eyJ0eXBlIjoic3RyaW5nIn0sInR5cGUiOnsidHlwZSI6InN0cmluZyJ9fSwicmVxdWlyZWQiOlsiaWQiLCJ0eXBlIl19LCJwcm9vZiI6eyJ0eXBlIjoib2JqZWN0IiwicHJvcGVydGllcyI6eyJ0eXBlIjp7InR5cGUiOiJzdHJpbmcifX19fSwicmVxdWlyZWQiOlsiQGNvbnRleHQiLCJ0eXBlIiwiaXNzdWVyIiwiaXNzdWFuY2VEYXRlIiwiY3JlZGVudGlhbFN1YmplY3QiLCJwcm9vZiJdLCJkZXNjcmlwdGlvbiI6IlZlcmlmaWFibGUgQ3JlZGVudGlhbCB7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2RlY2VudHJhbGl6ZWQtaWRlbnRpdHkvZGlkLWp3dC12Y30ifSwiVmVyaWZpYWJsZVByZXNlbnRhdGlvbiI6eyJ0eXBlIjoib2JqZWN0IiwicHJvcGVydGllcyI6eyJpZCI6eyJ0eXBlIjoic3RyaW5nIn0sImhvbGRlciI6eyJ0eXBlIjoic3RyaW5nIn0sImlzc3VhbmNlRGF0ZSI6eyJ0eXBlIjoic3RyaW5nIn0sImV4cGlyYXRpb25EYXRlIjp7InR5cGUiOiJzdHJpbmcifSwiQGNvbnRleHQiOnsidHlwZSI6ImFycmF5IiwiaXRlbXMiOnsidHlwZSI6InN0cmluZyJ9fSwidHlwZSI6eyJ0eXBlIjoiYXJyYXkiLCJpdGVtcyI6eyJ0eXBlIjoic3RyaW5nIn19LCJ2ZXJpZmllciI6eyJ0eXBlIjoiYXJyYXkiLCJpdGVtcyI6eyJ0eXBlIjoic3RyaW5nIn19LCJ2ZXJpZmlhYmxlQ3JlZGVudGlhbCI6eyJ0eXBlIjoiYXJyYXkiLCJpdGVtcyI6eyIkcmVmIjoiIy9jb21wb25lbnRzL3NjaGVtYXMvVmVyaWZpYWJsZUNyZWRlbnRpYWwifX0sInByb29mIjp7InR5cGUiOiJvYmplY3QiLCJwcm9wZXJ0aWVzIjp7InR5cGUiOnsidHlwZSI6InN0cmluZyJ9fX19LCJyZXF1aXJlZCI6WyJob2xkZXIiLCJAY29udGV4dCIsInR5cGUiLCJ2ZXJpZmllciIsInZlcmlmaWFibGVDcmVkZW50aWFsIiwicHJvb2YiXSwiZGVzY3JpcHRpb24iOiJWZXJpZmlhYmxlIFByZXNlbnRhdGlvbiB7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2RlY2VudHJhbGl6ZWQtaWRlbnRpdHkvZGlkLWp3dC12Y30ifSwiRmluZENyZWRlbnRpYWxzQXJncyI6eyIkcmVmIjoiIy9jb21wb25lbnRzL3NjaGVtYXMvRmluZEFyZ3MtVENyZWRlbnRpYWxDb2x1bW5zIn0sIkZpbmRBcmdzLVRDcmVkZW50aWFsQ29sdW1ucyI6eyJ0eXBlIjoib2JqZWN0IiwicHJvcGVydGllcyI6eyJ3aGVyZSI6eyJ0eXBlIjoiYXJyYXkiLCJpdGVtcyI6eyIkcmVmIjoiIy9jb21wb25lbnRzL3NjaGVtYXMvV2hlcmUtVENyZWRlbnRpYWxDb2x1bW5zIn19LCJvcmRlciI6eyJ0eXBlIjoiYXJyYXkiLCJpdGVtcyI6eyIkcmVmIjoiIy9jb21wb25lbnRzL3NjaGVtYXMvT3JkZXItVENyZWRlbnRpYWxDb2x1bW5zIn19LCJ0YWtlIjp7InR5cGUiOiJudW1iZXIifSwic2tpcCI6eyJ0eXBlIjoibnVtYmVyIn19fSwiV2hlcmUtVENyZWRlbnRpYWxDb2x1bW5zIjp7InR5cGUiOiJvYmplY3QiLCJwcm9wZXJ0aWVzIjp7ImNvbHVtbiI6eyIkcmVmIjoiIy9jb21wb25lbnRzL3NjaGVtYXMvVENyZWRlbnRpYWxDb2x1bW5zIn0sInZhbHVlIjp7InR5cGUiOiJhcnJheSIsIml0ZW1zIjp7InR5cGUiOiJzdHJpbmcifX0sIm5vdCI6eyJ0eXBlIjoiYm9vbGVhbiJ9LCJvcCI6eyJ0eXBlIjoic3RyaW5nIiwiZW51bSI6WyJMZXNzVGhhbiIsIkxlc3NUaGFuT3JFcXVhbCIsIk1vcmVUaGFuIiwiTW9yZVRoYW5PckVxdWFsIiwiRXF1YWwiLCJMaWtlIiwiQmV0d2VlbiIsIkluIiwiQW55IiwiSXNOdWxsIl19fSwicmVxdWlyZWQiOlsiY29sdW1uIl19LCJUQ3JlZGVudGlhbENvbHVtbnMiOnsidHlwZSI6InN0cmluZyIsImVudW0iOlsiY29udGV4dCIsInR5cGUiLCJpZCIsImlzc3VlciIsInN1YmplY3QiLCJleHBpcmF0aW9uRGF0ZSIsImlzc3VhbmNlRGF0ZSJdfSwiT3JkZXItVENyZWRlbnRpYWxDb2x1bW5zIjp7InR5cGUiOiJvYmplY3QiLCJwcm9wZXJ0aWVzIjp7ImNvbHVtbiI6eyIkcmVmIjoiIy9jb21wb25lbnRzL3NjaGVtYXMvVENyZWRlbnRpYWxDb2x1bW5zIn0sImRpcmVjdGlvbiI6eyJ0eXBlIjoic3RyaW5nIiwiZW51bSI6WyJBU0MiLCJERVNDIl19fSwicmVxdWlyZWQiOlsiY29sdW1uIiwiZGlyZWN0aW9uIl19LCJVbmlxdWVWZXJpZmlhYmxlQ3JlZGVudGlhbCI6eyJ0eXBlIjoib2JqZWN0IiwicHJvcGVydGllcyI6eyJoYXNoIjp7InR5cGUiOiJzdHJpbmcifSwidmVyaWZpYWJsZUNyZWRlbnRpYWwiOnsiJHJlZiI6IiMvY29tcG9uZW50cy9zY2hlbWFzL1ZlcmlmaWFibGVDcmVkZW50aWFsIn19LCJyZXF1aXJlZCI6WyJoYXNoIiwidmVyaWZpYWJsZUNyZWRlbnRpYWwiXX0sIkZpbmRDbGFpbXNBcmdzIjp7IiRyZWYiOiIjL2NvbXBvbmVudHMvc2NoZW1hcy9GaW5kQXJncy1UQ2xhaW1zQ29sdW1ucyJ9LCJGaW5kQXJncy1UQ2xhaW1zQ29sdW1ucyI6eyJ0eXBlIjoib2JqZWN0IiwicHJvcGVydGllcyI6eyJ3aGVyZSI6eyJ0eXBlIjoiYXJyYXkiLCJpdGVtcyI6eyIkcmVmIjoiIy9jb21wb25lbnRzL3NjaGVtYXMvV2hlcmUtVENsYWltc0NvbHVtbnMifX0sIm9yZGVyIjp7InR5cGUiOiJhcnJheSIsIml0ZW1zIjp7IiRyZWYiOiIjL2NvbXBvbmVudHMvc2NoZW1hcy9PcmRlci1UQ2xhaW1zQ29sdW1ucyJ9fSwidGFrZSI6eyJ0eXBlIjoibnVtYmVyIn0sInNraXAiOnsidHlwZSI6Im51bWJlciJ9fX0sIldoZXJlLVRDbGFpbXNDb2x1bW5zIjp7InR5cGUiOiJvYmplY3QiLCJwcm9wZXJ0aWVzIjp7ImNvbHVtbiI6eyIkcmVmIjoiIy9jb21wb25lbnRzL3NjaGVtYXMvVENsYWltc0NvbHVtbnMifSwidmFsdWUiOnsidHlwZSI6ImFycmF5IiwiaXRlbXMiOnsidHlwZSI6InN0cmluZyJ9fSwibm90Ijp7InR5cGUiOiJib29sZWFuIn0sIm9wIjp7InR5cGUiOiJzdHJpbmciLCJlbnVtIjpbIkxlc3NUaGFuIiwiTGVzc1RoYW5PckVxdWFsIiwiTW9yZVRoYW4iLCJNb3JlVGhhbk9yRXF1YWwiLCJFcXVhbCIsIkxpa2UiLCJCZXR3ZWVuIiwiSW4iLCJBbnkiLCJJc051bGwiXX19LCJyZXF1aXJlZCI6WyJjb2x1bW4iXX0sIlRDbGFpbXNDb2x1bW5zIjp7InR5cGUiOiJzdHJpbmciLCJlbnVtIjpbImNvbnRleHQiLCJjcmVkZW50aWFsVHlwZSIsInR5cGUiLCJ2YWx1ZSIsImlzT2JqIiwiaWQiLCJpc3N1ZXIiLCJzdWJqZWN0IiwiZXhwaXJhdGlvbkRhdGUiLCJpc3N1YW5jZURhdGUiXX0sIk9yZGVyLVRDbGFpbXNDb2x1bW5zIjp7InR5cGUiOiJvYmplY3QiLCJwcm9wZXJ0aWVzIjp7ImNvbHVtbiI6eyIkcmVmIjoiIy9jb21wb25lbnRzL3NjaGVtYXMvVENsYWltc0NvbHVtbnMifSwiZGlyZWN0aW9uIjp7InR5cGUiOiJzdHJpbmciLCJlbnVtIjpbIkFTQyIsIkRFU0MiXX19LCJyZXF1aXJlZCI6WyJjb2x1bW4iLCJkaXJlY3Rpb24iXX0sIkZpbmRQcmVzZW50YXRpb25zQXJncyI6eyIkcmVmIjoiIy9jb21wb25lbnRzL3NjaGVtYXMvRmluZEFyZ3MtVFByZXNlbnRhdGlvbkNvbHVtbnMifSwiRmluZEFyZ3MtVFByZXNlbnRhdGlvbkNvbHVtbnMiOnsidHlwZSI6Im9iamVjdCIsInByb3BlcnRpZXMiOnsid2hlcmUiOnsidHlwZSI6ImFycmF5IiwiaXRlbXMiOnsiJHJlZiI6IiMvY29tcG9uZW50cy9zY2hlbWFzL1doZXJlLVRQcmVzZW50YXRpb25Db2x1bW5zIn19LCJvcmRlciI6eyJ0eXBlIjoiYXJyYXkiLCJpdGVtcyI6eyIkcmVmIjoiIy9jb21wb25lbnRzL3NjaGVtYXMvT3JkZXItVFByZXNlbnRhdGlvbkNvbHVtbnMifX0sInRha2UiOnsidHlwZSI6Im51bWJlciJ9LCJza2lwIjp7InR5cGUiOiJudW1iZXIifX19LCJXaGVyZS1UUHJlc2VudGF0aW9uQ29sdW1ucyI6eyJ0eXBlIjoib2JqZWN0IiwicHJvcGVydGllcyI6eyJjb2x1bW4iOnsiJHJlZiI6IiMvY29tcG9uZW50cy9zY2hlbWFzL1RQcmVzZW50YXRpb25Db2x1bW5zIn0sInZhbHVlIjp7InR5cGUiOiJhcnJheSIsIml0ZW1zIjp7InR5cGUiOiJzdHJpbmcifX0sIm5vdCI6eyJ0eXBlIjoiYm9vbGVhbiJ9LCJvcCI6eyJ0eXBlIjoic3RyaW5nIiwiZW51bSI6WyJMZXNzVGhhbiIsIkxlc3NUaGFuT3JFcXVhbCIsIk1vcmVUaGFuIiwiTW9yZVRoYW5PckVxdWFsIiwiRXF1YWwiLCJMaWtlIiwiQmV0d2VlbiIsIkluIiwiQW55IiwiSXNOdWxsIl19fSwicmVxdWlyZWQiOlsiY29sdW1uIl19LCJUUHJlc2VudGF0aW9uQ29sdW1ucyI6eyJ0eXBlIjoic3RyaW5nIiwiZW51bSI6WyJjb250ZXh0IiwidHlwZSIsImlkIiwiaG9sZGVyIiwidmVyaWZpZXIiLCJleHBpcmF0aW9uRGF0ZSIsImlzc3VhbmNlRGF0ZSJdfSwiT3JkZXItVFByZXNlbnRhdGlvbkNvbHVtbnMiOnsidHlwZSI6Im9iamVjdCIsInByb3BlcnRpZXMiOnsiY29sdW1uIjp7IiRyZWYiOiIjL2NvbXBvbmVudHMvc2NoZW1hcy9UUHJlc2VudGF0aW9uQ29sdW1ucyJ9LCJkaXJlY3Rpb24iOnsidHlwZSI6InN0cmluZyIsImVudW0iOlsiQVNDIiwiREVTQyJdfX0sInJlcXVpcmVkIjpbImNvbHVtbiIsImRpcmVjdGlvbiJdfSwiVW5pcXVlVmVyaWZpYWJsZVByZXNlbnRhdGlvbiI6eyJ0eXBlIjoib2JqZWN0IiwicHJvcGVydGllcyI6eyJoYXNoIjp7InR5cGUiOiJzdHJpbmcifSwidmVyaWZpYWJsZVByZXNlbnRhdGlvbiI6eyIkcmVmIjoiIy9jb21wb25lbnRzL3NjaGVtYXMvVmVyaWZpYWJsZVByZXNlbnRhdGlvbiJ9fSwicmVxdWlyZWQiOlsiaGFzaCIsInZlcmlmaWFibGVQcmVzZW50YXRpb24iXX19LCJtZXRob2RzIjp7ImRhdGFTdG9yZU9STUdldElkZW50aXRpZXMiOnsiZGVzY3JpcHRpb24iOiIiLCJhcmd1bWVudHMiOnsiJHJlZiI6IiMvY29tcG9uZW50cy9zY2hlbWFzL0ZpbmRJZGVudGl0aWVzQXJncyJ9LCJyZXR1cm5UeXBlIjp7InR5cGUiOiJhcnJheSIsIml0ZW1zIjp7IiRyZWYiOiIjL2NvbXBvbmVudHMvc2NoZW1hcy9QYXJ0aWFsSWRlbnRpdHkifX19LCJkYXRhU3RvcmVPUk1HZXRJZGVudGl0aWVzQ291bnQiOnsiZGVzY3JpcHRpb24iOiIiLCJhcmd1bWVudHMiOnsiJHJlZiI6IiMvY29tcG9uZW50cy9zY2hlbWFzL0ZpbmRJZGVudGl0aWVzQXJncyJ9LCJyZXR1cm5UeXBlIjp7InR5cGUiOiJudW1iZXIifX0sImRhdGFTdG9yZU9STUdldE1lc3NhZ2VzIjp7ImRlc2NyaXB0aW9uIjoiIiwiYXJndW1lbnRzIjp7IiRyZWYiOiIjL2NvbXBvbmVudHMvc2NoZW1hcy9GaW5kTWVzc2FnZXNBcmdzIn0sInJldHVyblR5cGUiOnsidHlwZSI6ImFycmF5IiwiaXRlbXMiOnsiJHJlZiI6IiMvY29tcG9uZW50cy9zY2hlbWFzL0lNZXNzYWdlIn19fSwiZGF0YVN0b3JlT1JNR2V0TWVzc2FnZXNDb3VudCI6eyJkZXNjcmlwdGlvbiI6IiIsImFyZ3VtZW50cyI6eyIkcmVmIjoiIy9jb21wb25lbnRzL3NjaGVtYXMvRmluZE1lc3NhZ2VzQXJncyJ9LCJyZXR1cm5UeXBlIjp7InR5cGUiOiJudW1iZXIifX0sImRhdGFTdG9yZU9STUdldFZlcmlmaWFibGVDcmVkZW50aWFscyI6eyJkZXNjcmlwdGlvbiI6IiIsImFyZ3VtZW50cyI6eyIkcmVmIjoiIy9jb21wb25lbnRzL3NjaGVtYXMvRmluZENyZWRlbnRpYWxzQXJncyJ9LCJyZXR1cm5UeXBlIjp7InR5cGUiOiJhcnJheSIsIml0ZW1zIjp7IiRyZWYiOiIjL2NvbXBvbmVudHMvc2NoZW1hcy9VbmlxdWVWZXJpZmlhYmxlQ3JlZGVudGlhbCJ9fX0sImRhdGFTdG9yZU9STUdldFZlcmlmaWFibGVDcmVkZW50aWFsc0J5Q2xhaW1zIjp7ImRlc2NyaXB0aW9uIjoiIiwiYXJndW1lbnRzIjp7IiRyZWYiOiIjL2NvbXBvbmVudHMvc2NoZW1hcy9GaW5kQ2xhaW1zQXJncyJ9LCJyZXR1cm5UeXBlIjp7InR5cGUiOiJhcnJheSIsIml0ZW1zIjp7IiRyZWYiOiIjL2NvbXBvbmVudHMvc2NoZW1hcy9VbmlxdWVWZXJpZmlhYmxlQ3JlZGVudGlhbCJ9fX0sImRhdGFTdG9yZU9STUdldFZlcmlmaWFibGVDcmVkZW50aWFsc0J5Q2xhaW1zQ291bnQiOnsiZGVzY3JpcHRpb24iOiIiLCJhcmd1bWVudHMiOnsiJHJlZiI6IiMvY29tcG9uZW50cy9zY2hlbWFzL0ZpbmRDbGFpbXNBcmdzIn0sInJldHVyblR5cGUiOnsidHlwZSI6Im51bWJlciJ9fSwiZGF0YVN0b3JlT1JNR2V0VmVyaWZpYWJsZUNyZWRlbnRpYWxzQ291bnQiOnsiZGVzY3JpcHRpb24iOiIiLCJhcmd1bWVudHMiOnsiJHJlZiI6IiMvY29tcG9uZW50cy9zY2hlbWFzL0ZpbmRDcmVkZW50aWFsc0FyZ3MifSwicmV0dXJuVHlwZSI6eyJ0eXBlIjoibnVtYmVyIn19LCJkYXRhU3RvcmVPUk1HZXRWZXJpZmlhYmxlUHJlc2VudGF0aW9ucyI6eyJkZXNjcmlwdGlvbiI6IiIsImFyZ3VtZW50cyI6eyIkcmVmIjoiIy9jb21wb25lbnRzL3NjaGVtYXMvRmluZFByZXNlbnRhdGlvbnNBcmdzIn0sInJldHVyblR5cGUiOnsidHlwZSI6ImFycmF5IiwiaXRlbXMiOnsiJHJlZiI6IiMvY29tcG9uZW50cy9zY2hlbWFzL1VuaXF1ZVZlcmlmaWFibGVQcmVzZW50YXRpb24ifX19LCJkYXRhU3RvcmVPUk1HZXRWZXJpZmlhYmxlUHJlc2VudGF0aW9uc0NvdW50Ijp7ImRlc2NyaXB0aW9uIjoiIiwiYXJndW1lbnRzIjp7IiRyZWYiOiIjL2NvbXBvbmVudHMvc2NoZW1hcy9GaW5kUHJlc2VudGF0aW9uc0FyZ3MifSwicmV0dXJuVHlwZSI6eyJ0eXBlIjoibnVtYmVyIn19fX19fX0sIkBjb250ZXh0IjpbImh0dHBzOi8vd3d3LnczLm9yZy8yMDE4L2NyZWRlbnRpYWxzL3YxIl0sInR5cGUiOlsiVmVyaWZpYWJsZUNyZWRlbnRpYWwiLCJBZ2VudFBsdWdpblNjaGVtYSJdfSwibmJmIjoxNjA2MTI5ODAzLCJpc3MiOiJkaWQ6ZXRocjpyaW5rZWJ5OjB4NjY4MTBkOTBmZGVhYjc1NWMzOGJkZDk3ODIwNDQ3ZWU0MTNjZDlhZCJ9.8pKqpytn-ycFYsqZUaLP7FxWnbIzpeZXtvxKVIcw9aqcaKJAjQsTOoywnwAXrXF7Y_xcQFOPJYZuDMQBzBsXMg" - } -} \ No newline at end of file diff --git a/packages/daf-typeorm/plugin.schema.json b/packages/daf-typeorm/plugin.schema.json new file mode 100644 index 000000000..7b16f53a4 --- /dev/null +++ b/packages/daf-typeorm/plugin.schema.json @@ -0,0 +1,964 @@ +{ + "IDataStoreORM": { + "components": { + "schemas": { + "FindIdentitiesArgs": { + "$ref": "#/components/schemas/FindArgs-TIdentitiesColumns" + }, + "FindArgs-TIdentitiesColumns": { + "type": "object", + "properties": { + "where": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Where-TIdentitiesColumns" + } + }, + "order": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Order-TIdentitiesColumns" + } + }, + "take": { + "type": "number" + }, + "skip": { + "type": "number" + } + } + }, + "Where-TIdentitiesColumns": { + "type": "object", + "properties": { + "column": { + "$ref": "#/components/schemas/TIdentitiesColumns" + }, + "value": { + "type": "array", + "items": { + "type": "string" + } + }, + "not": { + "type": "boolean" + }, + "op": { + "type": "string", + "enum": [ + "LessThan", + "LessThanOrEqual", + "MoreThan", + "MoreThanOrEqual", + "Equal", + "Like", + "Between", + "In", + "Any", + "IsNull" + ] + } + }, + "required": [ + "column" + ] + }, + "TIdentitiesColumns": { + "type": "string", + "enum": [ + "did", + "alias", + "provider" + ] + }, + "Order-TIdentitiesColumns": { + "type": "object", + "properties": { + "column": { + "$ref": "#/components/schemas/TIdentitiesColumns" + }, + "direction": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ] + } + }, + "required": [ + "column", + "direction" + ] + }, + "PartialIdentity": { + "type": "object", + "properties": { + "did": { + "type": "string", + "description": "Decentralized identifier" + }, + "alias": { + "type": "string", + "description": "Optional. Identity alias. Can be used to reference an object in an external system" + }, + "provider": { + "type": "string", + "description": "Identity provider name" + }, + "controllerKeyId": { + "type": "string", + "description": "Controller key id" + }, + "keys": { + "type": "array", + "items": { + "$ref": "#/components/schemas/IKey" + }, + "description": "Array of managed keys" + }, + "services": { + "type": "array", + "items": { + "$ref": "#/components/schemas/IService" + }, + "description": "Array of services" + } + } + }, + "IKey": { + "type": "object", + "properties": { + "kid": { + "type": "string", + "description": "Key ID" + }, + "kms": { + "type": "string", + "description": "Key Management System" + }, + "type": { + "$ref": "#/components/schemas/TKeyType", + "description": "Key type" + }, + "publicKeyHex": { + "type": "string", + "description": "Public key" + }, + "privateKeyHex": { + "type": "string", + "description": "Optional. Private key" + }, + "meta": { + "anyOf": [ + { + "type": "object" + }, + { + "type": "null" + } + ], + "description": "Optional. Key metadata. Can be used to store auth data to access remote kms" + } + }, + "required": [ + "kid", + "kms", + "type", + "publicKeyHex" + ], + "description": "Cryptographic key" + }, + "TKeyType": { + "type": "string", + "enum": [ + "Ed25519", + "Secp256k1" + ], + "description": "Cryptographic key type" + }, + "IService": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "ID" + }, + "type": { + "type": "string", + "description": "Service type" + }, + "serviceEndpoint": { + "type": "string", + "description": "Endpoint URL" + }, + "description": { + "type": "string", + "description": "Optional. Description" + } + }, + "required": [ + "id", + "type", + "serviceEndpoint" + ], + "description": "Identity service" + }, + "FindMessagesArgs": { + "$ref": "#/components/schemas/FindArgs-TMessageColumns" + }, + "FindArgs-TMessageColumns": { + "type": "object", + "properties": { + "where": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Where-TMessageColumns" + } + }, + "order": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Order-TMessageColumns" + } + }, + "take": { + "type": "number" + }, + "skip": { + "type": "number" + } + } + }, + "Where-TMessageColumns": { + "type": "object", + "properties": { + "column": { + "$ref": "#/components/schemas/TMessageColumns" + }, + "value": { + "type": "array", + "items": { + "type": "string" + } + }, + "not": { + "type": "boolean" + }, + "op": { + "type": "string", + "enum": [ + "LessThan", + "LessThanOrEqual", + "MoreThan", + "MoreThanOrEqual", + "Equal", + "Like", + "Between", + "In", + "Any", + "IsNull" + ] + } + }, + "required": [ + "column" + ] + }, + "TMessageColumns": { + "type": "string", + "enum": [ + "from", + "to", + "id", + "createdAt", + "expiresAt", + "threadId", + "type", + "raw", + "replyTo", + "replyUrl" + ] + }, + "Order-TMessageColumns": { + "type": "object", + "properties": { + "column": { + "$ref": "#/components/schemas/TMessageColumns" + }, + "direction": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ] + } + }, + "required": [ + "column", + "direction" + ] + }, + "IMessage": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "Unique message ID" + }, + "type": { + "type": "string", + "description": "Message type" + }, + "createdAt": { + "type": "string", + "description": "Optional. Creation date (ISO 8601)" + }, + "expiresAt": { + "type": "string", + "description": "Optional. Expiration date (ISO 8601)" + }, + "threadId": { + "type": "string", + "description": "Optional. Thread ID" + }, + "raw": { + "type": "string", + "description": "Optional. Original message raw data" + }, + "data": { + "anyOf": [ + { + "type": "object" + }, + { + "type": "null" + } + ], + "description": "Optional. Parsed data" + }, + "replyTo": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Optional. List of DIDs to reply to" + }, + "replyUrl": { + "type": "string", + "description": "Optional. URL to post a reply message to" + }, + "from": { + "type": "string", + "description": "Optional. Sender DID" + }, + "to": { + "type": "string", + "description": "Optional. Recipient DID" + }, + "metaData": { + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/components/schemas/IMetaData" + } + }, + { + "type": "null" + } + ], + "description": "Optional. Array of message metadata" + }, + "credentials": { + "type": "array", + "items": { + "$ref": "#/components/schemas/VerifiableCredential" + }, + "description": "Optional. Array of attached verifiable credentials" + }, + "presentations": { + "type": "array", + "items": { + "$ref": "#/components/schemas/VerifiablePresentation" + }, + "description": "Optional. Array of attached verifiable presentations" + } + }, + "required": [ + "id", + "type" + ], + "description": "DIDComm message" + }, + "IMetaData": { + "type": "object", + "properties": { + "type": { + "type": "string", + "description": "Type" + }, + "value": { + "type": "string", + "description": "Optional. Value" + } + }, + "required": [ + "type" + ], + "description": "Message meta data" + }, + "VerifiableCredential": { + "type": "object", + "properties": { + "@context": { + "type": "array", + "items": { + "type": "string" + } + }, + "id": { + "type": "string" + }, + "type": { + "type": "array", + "items": { + "type": "string" + } + }, + "issuer": { + "type": "object", + "properties": { + "id": { + "type": "string" + } + }, + "required": [ + "id" + ] + }, + "issuanceDate": { + "type": "string" + }, + "expirationDate": { + "type": "string" + }, + "credentialSubject": { + "type": "object", + "properties": { + "id": { + "type": "string" + } + } + }, + "credentialStatus": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "type": { + "type": "string" + } + }, + "required": [ + "id", + "type" + ] + }, + "proof": { + "type": "object", + "properties": { + "type": { + "type": "string" + } + } + } + }, + "required": [ + "@context", + "type", + "issuer", + "issuanceDate", + "credentialSubject", + "proof" + ], + "description": "Verifiable Credential {@link https://github.com/decentralized-identity/did-jwt-vc}" + }, + "VerifiablePresentation": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "holder": { + "type": "string" + }, + "issuanceDate": { + "type": "string" + }, + "expirationDate": { + "type": "string" + }, + "@context": { + "type": "array", + "items": { + "type": "string" + } + }, + "type": { + "type": "array", + "items": { + "type": "string" + } + }, + "verifier": { + "type": "array", + "items": { + "type": "string" + } + }, + "verifiableCredential": { + "type": "array", + "items": { + "$ref": "#/components/schemas/VerifiableCredential" + } + }, + "proof": { + "type": "object", + "properties": { + "type": { + "type": "string" + } + } + } + }, + "required": [ + "holder", + "@context", + "type", + "verifier", + "verifiableCredential", + "proof" + ], + "description": "Verifiable Presentation {@link https://github.com/decentralized-identity/did-jwt-vc}" + }, + "FindCredentialsArgs": { + "$ref": "#/components/schemas/FindArgs-TCredentialColumns" + }, + "FindArgs-TCredentialColumns": { + "type": "object", + "properties": { + "where": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Where-TCredentialColumns" + } + }, + "order": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Order-TCredentialColumns" + } + }, + "take": { + "type": "number" + }, + "skip": { + "type": "number" + } + } + }, + "Where-TCredentialColumns": { + "type": "object", + "properties": { + "column": { + "$ref": "#/components/schemas/TCredentialColumns" + }, + "value": { + "type": "array", + "items": { + "type": "string" + } + }, + "not": { + "type": "boolean" + }, + "op": { + "type": "string", + "enum": [ + "LessThan", + "LessThanOrEqual", + "MoreThan", + "MoreThanOrEqual", + "Equal", + "Like", + "Between", + "In", + "Any", + "IsNull" + ] + } + }, + "required": [ + "column" + ] + }, + "TCredentialColumns": { + "type": "string", + "enum": [ + "context", + "type", + "id", + "issuer", + "subject", + "expirationDate", + "issuanceDate" + ] + }, + "Order-TCredentialColumns": { + "type": "object", + "properties": { + "column": { + "$ref": "#/components/schemas/TCredentialColumns" + }, + "direction": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ] + } + }, + "required": [ + "column", + "direction" + ] + }, + "UniqueVerifiableCredential": { + "type": "object", + "properties": { + "hash": { + "type": "string" + }, + "verifiableCredential": { + "$ref": "#/components/schemas/VerifiableCredential" + } + }, + "required": [ + "hash", + "verifiableCredential" + ] + }, + "FindClaimsArgs": { + "$ref": "#/components/schemas/FindArgs-TClaimsColumns" + }, + "FindArgs-TClaimsColumns": { + "type": "object", + "properties": { + "where": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Where-TClaimsColumns" + } + }, + "order": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Order-TClaimsColumns" + } + }, + "take": { + "type": "number" + }, + "skip": { + "type": "number" + } + } + }, + "Where-TClaimsColumns": { + "type": "object", + "properties": { + "column": { + "$ref": "#/components/schemas/TClaimsColumns" + }, + "value": { + "type": "array", + "items": { + "type": "string" + } + }, + "not": { + "type": "boolean" + }, + "op": { + "type": "string", + "enum": [ + "LessThan", + "LessThanOrEqual", + "MoreThan", + "MoreThanOrEqual", + "Equal", + "Like", + "Between", + "In", + "Any", + "IsNull" + ] + } + }, + "required": [ + "column" + ] + }, + "TClaimsColumns": { + "type": "string", + "enum": [ + "context", + "credentialType", + "type", + "value", + "isObj", + "id", + "issuer", + "subject", + "expirationDate", + "issuanceDate" + ] + }, + "Order-TClaimsColumns": { + "type": "object", + "properties": { + "column": { + "$ref": "#/components/schemas/TClaimsColumns" + }, + "direction": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ] + } + }, + "required": [ + "column", + "direction" + ] + }, + "FindPresentationsArgs": { + "$ref": "#/components/schemas/FindArgs-TPresentationColumns" + }, + "FindArgs-TPresentationColumns": { + "type": "object", + "properties": { + "where": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Where-TPresentationColumns" + } + }, + "order": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Order-TPresentationColumns" + } + }, + "take": { + "type": "number" + }, + "skip": { + "type": "number" + } + } + }, + "Where-TPresentationColumns": { + "type": "object", + "properties": { + "column": { + "$ref": "#/components/schemas/TPresentationColumns" + }, + "value": { + "type": "array", + "items": { + "type": "string" + } + }, + "not": { + "type": "boolean" + }, + "op": { + "type": "string", + "enum": [ + "LessThan", + "LessThanOrEqual", + "MoreThan", + "MoreThanOrEqual", + "Equal", + "Like", + "Between", + "In", + "Any", + "IsNull" + ] + } + }, + "required": [ + "column" + ] + }, + "TPresentationColumns": { + "type": "string", + "enum": [ + "context", + "type", + "id", + "holder", + "verifier", + "expirationDate", + "issuanceDate" + ] + }, + "Order-TPresentationColumns": { + "type": "object", + "properties": { + "column": { + "$ref": "#/components/schemas/TPresentationColumns" + }, + "direction": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ] + } + }, + "required": [ + "column", + "direction" + ] + }, + "UniqueVerifiablePresentation": { + "type": "object", + "properties": { + "hash": { + "type": "string" + }, + "verifiablePresentation": { + "$ref": "#/components/schemas/VerifiablePresentation" + } + }, + "required": [ + "hash", + "verifiablePresentation" + ] + } + }, + "methods": { + "dataStoreORMGetIdentities": { + "description": "", + "arguments": { + "$ref": "#/components/schemas/FindIdentitiesArgs" + }, + "returnType": { + "type": "array", + "items": { + "$ref": "#/components/schemas/PartialIdentity" + } + } + }, + "dataStoreORMGetIdentitiesCount": { + "description": "", + "arguments": { + "$ref": "#/components/schemas/FindIdentitiesArgs" + }, + "returnType": { + "type": "number" + } + }, + "dataStoreORMGetMessages": { + "description": "", + "arguments": { + "$ref": "#/components/schemas/FindMessagesArgs" + }, + "returnType": { + "type": "array", + "items": { + "$ref": "#/components/schemas/IMessage" + } + } + }, + "dataStoreORMGetMessagesCount": { + "description": "", + "arguments": { + "$ref": "#/components/schemas/FindMessagesArgs" + }, + "returnType": { + "type": "number" + } + }, + "dataStoreORMGetVerifiableCredentials": { + "description": "", + "arguments": { + "$ref": "#/components/schemas/FindCredentialsArgs" + }, + "returnType": { + "type": "array", + "items": { + "$ref": "#/components/schemas/UniqueVerifiableCredential" + } + } + }, + "dataStoreORMGetVerifiableCredentialsByClaims": { + "description": "", + "arguments": { + "$ref": "#/components/schemas/FindClaimsArgs" + }, + "returnType": { + "type": "array", + "items": { + "$ref": "#/components/schemas/UniqueVerifiableCredential" + } + } + }, + "dataStoreORMGetVerifiableCredentialsByClaimsCount": { + "description": "", + "arguments": { + "$ref": "#/components/schemas/FindClaimsArgs" + }, + "returnType": { + "type": "number" + } + }, + "dataStoreORMGetVerifiableCredentialsCount": { + "description": "", + "arguments": { + "$ref": "#/components/schemas/FindCredentialsArgs" + }, + "returnType": { + "type": "number" + } + }, + "dataStoreORMGetVerifiablePresentations": { + "description": "", + "arguments": { + "$ref": "#/components/schemas/FindPresentationsArgs" + }, + "returnType": { + "type": "array", + "items": { + "$ref": "#/components/schemas/UniqueVerifiablePresentation" + } + } + }, + "dataStoreORMGetVerifiablePresentationsCount": { + "description": "", + "arguments": { + "$ref": "#/components/schemas/FindPresentationsArgs" + }, + "returnType": { + "type": "number" + } + } + } + } + } +} \ No newline at end of file diff --git a/packages/daf-typeorm/src/data-store-orm.ts b/packages/daf-typeorm/src/data-store-orm.ts index c1a5bad6e..b564a362d 100644 --- a/packages/daf-typeorm/src/data-store-orm.ts +++ b/packages/daf-typeorm/src/data-store-orm.ts @@ -37,7 +37,7 @@ import { FindArgs, } from './types' -import { pluginCredential } from './' +import { schema } from './' interface IContext { authenticatedDid?: string @@ -84,7 +84,7 @@ export interface IDataStoreORM extends IPluginMethodMap { export class DataStoreORM implements IAgentPlugin { readonly methods: IDataStoreORM - readonly schema = pluginCredential.credentialSubject.interfaces.IDataStoreORM + readonly schema = schema.IDataStoreORM private dbConnection: Promise constructor(dbConnection: Promise) { diff --git a/packages/daf-typeorm/src/data-store.ts b/packages/daf-typeorm/src/data-store.ts index 49fa0ffca..a82c584a7 100644 --- a/packages/daf-typeorm/src/data-store.ts +++ b/packages/daf-typeorm/src/data-store.ts @@ -10,7 +10,7 @@ import { IMessage, VerifiableCredential, VerifiablePresentation, - pluginCredential, + schema, } from 'daf-core' import { Message, createMessageEntity, createMessage } from './entities/message' import { Credential, createCredentialEntity } from './entities/credential' @@ -19,7 +19,7 @@ import { Connection } from 'typeorm' export class DataStore implements IAgentPlugin { readonly methods: IDataStore - readonly schema = pluginCredential.credentialSubject.interfaces.IDataStore + readonly schema = schema.IDataStore private dbConnection: Promise constructor(dbConnection: Promise) { diff --git a/packages/daf-typeorm/src/index.ts b/packages/daf-typeorm/src/index.ts index 232316a7f..393b9340c 100644 --- a/packages/daf-typeorm/src/index.ts +++ b/packages/daf-typeorm/src/index.ts @@ -29,5 +29,5 @@ import { Message, MetaData } from './entities/message' export const Entities = [Key, Identity, Message, Claim, Credential, Presentation, Service] export { KeyType, Key, Identity, Message, Claim, Credential, Presentation, MetaData, Service } export { migrations } from './migrations' -const pluginCredential = require('../plugin.credential.json') -export { pluginCredential } +const schema = require('../plugin.schema.json') +export { schema } diff --git a/packages/daf-w3c/api/daf-w3c.api.json b/packages/daf-w3c/api/daf-w3c.api.json index f78bd212e..3d567df6e 100644 --- a/packages/daf-w3c/api/daf-w3c.api.json +++ b/packages/daf-w3c/api/daf-w3c.api.json @@ -628,12 +628,12 @@ }, { "kind": "Variable", - "canonicalReference": "daf-w3c!pluginCredential:var", + "canonicalReference": "daf-w3c!schema:var", "docComment": "", "excerptTokens": [ { "kind": "Content", - "text": "pluginCredential: " + "text": "schema: " }, { "kind": "Content", @@ -641,7 +641,7 @@ } ], "releaseTag": "Public", - "name": "pluginCredential", + "name": "schema", "variableTypeTokenRange": { "startIndex": 1, "endIndex": 2 diff --git a/packages/daf-w3c/api/daf-w3c.api.md b/packages/daf-w3c/api/daf-w3c.api.md index a64d29eec..8376f9387 100644 --- a/packages/daf-w3c/api/daf-w3c.api.md +++ b/packages/daf-w3c/api/daf-w3c.api.md @@ -60,7 +60,7 @@ export const MessageTypes: { }; // @public (undocumented) -export const pluginCredential: any; +export const schema: any; // @public export class W3cMessageHandler extends AbstractMessageHandler { diff --git a/packages/daf-w3c/package.json b/packages/daf-w3c/package.json index e18d5633e..992aa1c01 100644 --- a/packages/daf-w3c/package.json +++ b/packages/daf-w3c/package.json @@ -6,7 +6,7 @@ "types": "build/index.d.ts", "scripts": { "build": "tsc", - "create-plugin-credential": "yarn daf create-plugin-credential --config=../../agent.yml" + "generate-plugin-schema": "yarn daf generate-plugin-schema" }, "daf": { "pluginInterfaces": { @@ -30,7 +30,7 @@ "files": [ "build/**/*", "src/**/*", - "plugin.credential.json", + "plugin.schema.json", "README.md", "LICENSE" ], diff --git a/packages/daf-w3c/plugin.credential.json b/packages/daf-w3c/plugin.credential.json deleted file mode 100644 index 405163ed2..000000000 --- a/packages/daf-w3c/plugin.credential.json +++ /dev/null @@ -1,348 +0,0 @@ -{ - "credentialSubject": { - "interfaces": { - "ICredentialIssuer": { - "components": { - "schemas": { - "ICreateVerifiableCredentialArgs": { - "type": "object", - "properties": { - "credential": { - "$ref": "#/components/schemas/W3CCredential", - "description": "The json payload of the Credential according to the {@link https://www.w3.org/TR/vc-data-model/#credentials | canonical model}\n\nThe signer of the Credential is chosen based on the `issuer.id` property of the `credential`" - }, - "save": { - "type": "boolean", - "description": "If this parameter is true, the resulting VerifiablePresentation is sent to the {@link daf-core#IDataStore | storage plugin} to be saved" - }, - "proofFormat": { - "$ref": "#/components/schemas/EncodingFormat", - "description": "The desired format for the VerifiablePresentation to be created. Currently, only JWT is supported" - } - }, - "required": [ - "credential", - "proofFormat" - ], - "description": "Encapsulates the parameters required to create a {@link https://www.w3.org/TR/vc-data-model/#credentials | W3C Verifiable Credential}" - }, - "W3CCredential": { - "type": "object", - "properties": { - "@context": { - "type": "array", - "items": { - "type": "string" - } - }, - "id": { - "type": "string" - }, - "type": { - "type": "array", - "items": { - "type": "string" - } - }, - "issuer": { - "type": "object", - "properties": { - "id": { - "type": "string" - } - }, - "required": [ - "id" - ] - }, - "issuanceDate": { - "type": "string" - }, - "expirationDate": { - "type": "string" - }, - "credentialSubject": { - "type": "object", - "properties": { - "id": { - "type": "string" - } - } - }, - "credentialStatus": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "type": { - "type": "string" - } - }, - "required": [ - "id", - "type" - ] - } - }, - "required": [ - "@context", - "type", - "issuer", - "issuanceDate", - "credentialSubject" - ], - "description": "W3CCredential {@link https://github.com/decentralized-identity/did-jwt-vc}" - }, - "EncodingFormat": { - "type": "string", - "const": "jwt", - "description": "The type of encoding to be used for the Verifiable Credential or Presentation to be generated.\n\nOnly `jwt` is supported at the moment." - }, - "VerifiableCredential": { - "type": "object", - "properties": { - "@context": { - "type": "array", - "items": { - "type": "string" - } - }, - "id": { - "type": "string" - }, - "type": { - "type": "array", - "items": { - "type": "string" - } - }, - "issuer": { - "type": "object", - "properties": { - "id": { - "type": "string" - } - }, - "required": [ - "id" - ] - }, - "issuanceDate": { - "type": "string" - }, - "expirationDate": { - "type": "string" - }, - "credentialSubject": { - "type": "object", - "properties": { - "id": { - "type": "string" - } - } - }, - "credentialStatus": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "type": { - "type": "string" - } - }, - "required": [ - "id", - "type" - ] - }, - "proof": { - "type": "object", - "properties": { - "type": { - "type": "string" - } - } - } - }, - "required": [ - "@context", - "type", - "issuer", - "issuanceDate", - "credentialSubject", - "proof" - ], - "description": "Verifiable Credential {@link https://github.com/decentralized-identity/did-jwt-vc}" - }, - "ICreateVerifiablePresentationArgs": { - "type": "object", - "properties": { - "presentation": { - "$ref": "#/components/schemas/W3CPresentation", - "description": "The json payload of the Presentation according to the {@link https://www.w3.org/TR/vc-data-model/#presentations | canonical model}.\n\nThe signer of the Presentation is chosen based on the `holder` property of the `presentation`" - }, - "save": { - "type": "boolean", - "description": "If this parameter is true, the resulting VerifiablePresentation is sent to the {@link daf-core#IDataStore | storage plugin} to be saved" - }, - "proofFormat": { - "$ref": "#/components/schemas/EncodingFormat", - "description": "The desired format for the VerifiablePresentation to be created. Currently, only JWT is supported" - } - }, - "required": [ - "presentation", - "proofFormat" - ], - "description": "Encapsulates the parameters required to create a {@link https://www.w3.org/TR/vc-data-model/#presentations | W3C Verifiable Presentation}" - }, - "W3CPresentation": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "holder": { - "type": "string" - }, - "issuanceDate": { - "type": "string" - }, - "expirationDate": { - "type": "string" - }, - "@context": { - "type": "array", - "items": { - "type": "string" - } - }, - "type": { - "type": "array", - "items": { - "type": "string" - } - }, - "verifier": { - "type": "array", - "items": { - "type": "string" - } - }, - "verifiableCredential": { - "type": "array", - "items": { - "$ref": "#/components/schemas/VerifiableCredential" - } - } - }, - "required": [ - "holder", - "@context", - "type", - "verifier", - "verifiableCredential" - ], - "description": "W3CPresentation {@link https://github.com/decentralized-identity/did-jwt-vc}" - }, - "VerifiablePresentation": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "holder": { - "type": "string" - }, - "issuanceDate": { - "type": "string" - }, - "expirationDate": { - "type": "string" - }, - "@context": { - "type": "array", - "items": { - "type": "string" - } - }, - "type": { - "type": "array", - "items": { - "type": "string" - } - }, - "verifier": { - "type": "array", - "items": { - "type": "string" - } - }, - "verifiableCredential": { - "type": "array", - "items": { - "$ref": "#/components/schemas/VerifiableCredential" - } - }, - "proof": { - "type": "object", - "properties": { - "type": { - "type": "string" - } - } - } - }, - "required": [ - "holder", - "@context", - "type", - "verifier", - "verifiableCredential", - "proof" - ], - "description": "Verifiable Presentation {@link https://github.com/decentralized-identity/did-jwt-vc}" - } - }, - "methods": { - "createVerifiableCredential": { - "description": "Creates a Verifiable Credential. The payload, signer and format are chosen based on the ", - "arguments": { - "$ref": "#/components/schemas/ICreateVerifiableCredentialArgs" - }, - "returnType": { - "$ref": "#/components/schemas/VerifiableCredential" - } - }, - "createVerifiablePresentation": { - "description": "Creates a Verifiable Presentation. The payload, signer and format are chosen based on the ", - "arguments": { - "$ref": "#/components/schemas/ICreateVerifiablePresentationArgs" - }, - "returnType": { - "$ref": "#/components/schemas/VerifiablePresentation" - } - } - } - } - } - } - }, - "issuer": { - "id": "did:ethr:rinkeby:0xf4a7ee7cc9500306525b412848894538ba6ad096" - }, - "type": [ - "VerifiableCredential", - "AgentPluginSchema" - ], - "@context": [ - "https://www.w3.org/2018/credentials/v1" - ], - "issuanceDate": "2020-11-23T11:10:01.000Z", - "proof": { - "type": "JwtProof2020", - "jwt": "eyJ0eXAiOiJKV1QiLCJhbGciOiJFUzI1NksifQ.eyJ2YyI6eyJjcmVkZW50aWFsU3ViamVjdCI6eyJpbnRlcmZhY2VzIjp7IklDcmVkZW50aWFsSXNzdWVyIjp7ImNvbXBvbmVudHMiOnsic2NoZW1hcyI6eyJJQ3JlYXRlVmVyaWZpYWJsZUNyZWRlbnRpYWxBcmdzIjp7InR5cGUiOiJvYmplY3QiLCJwcm9wZXJ0aWVzIjp7ImNyZWRlbnRpYWwiOnsiJHJlZiI6IiMvY29tcG9uZW50cy9zY2hlbWFzL1czQ0NyZWRlbnRpYWwiLCJkZXNjcmlwdGlvbiI6IlRoZSBqc29uIHBheWxvYWQgb2YgdGhlIENyZWRlbnRpYWwgYWNjb3JkaW5nIHRvIHRoZSB7QGxpbmsgaHR0cHM6Ly93d3cudzMub3JnL1RSL3ZjLWRhdGEtbW9kZWwvI2NyZWRlbnRpYWxzIHwgY2Fub25pY2FsIG1vZGVsfVxuXG5UaGUgc2lnbmVyIG9mIHRoZSBDcmVkZW50aWFsIGlzIGNob3NlbiBiYXNlZCBvbiB0aGUgYGlzc3Vlci5pZGAgcHJvcGVydHkgb2YgdGhlIGBjcmVkZW50aWFsYCJ9LCJzYXZlIjp7InR5cGUiOiJib29sZWFuIiwiZGVzY3JpcHRpb24iOiJJZiB0aGlzIHBhcmFtZXRlciBpcyB0cnVlLCB0aGUgcmVzdWx0aW5nIFZlcmlmaWFibGVQcmVzZW50YXRpb24gaXMgc2VudCB0byB0aGUge0BsaW5rIGRhZi1jb3JlI0lEYXRhU3RvcmUgfCBzdG9yYWdlIHBsdWdpbn0gdG8gYmUgc2F2ZWQifSwicHJvb2ZGb3JtYXQiOnsiJHJlZiI6IiMvY29tcG9uZW50cy9zY2hlbWFzL0VuY29kaW5nRm9ybWF0IiwiZGVzY3JpcHRpb24iOiJUaGUgZGVzaXJlZCBmb3JtYXQgZm9yIHRoZSBWZXJpZmlhYmxlUHJlc2VudGF0aW9uIHRvIGJlIGNyZWF0ZWQuIEN1cnJlbnRseSwgb25seSBKV1QgaXMgc3VwcG9ydGVkIn19LCJyZXF1aXJlZCI6WyJjcmVkZW50aWFsIiwicHJvb2ZGb3JtYXQiXSwiZGVzY3JpcHRpb24iOiJFbmNhcHN1bGF0ZXMgdGhlIHBhcmFtZXRlcnMgcmVxdWlyZWQgdG8gY3JlYXRlIGEge0BsaW5rIGh0dHBzOi8vd3d3LnczLm9yZy9UUi92Yy1kYXRhLW1vZGVsLyNjcmVkZW50aWFscyB8IFczQyBWZXJpZmlhYmxlIENyZWRlbnRpYWx9In0sIlczQ0NyZWRlbnRpYWwiOnsidHlwZSI6Im9iamVjdCIsInByb3BlcnRpZXMiOnsiQGNvbnRleHQiOnsidHlwZSI6ImFycmF5IiwiaXRlbXMiOnsidHlwZSI6InN0cmluZyJ9fSwiaWQiOnsidHlwZSI6InN0cmluZyJ9LCJ0eXBlIjp7InR5cGUiOiJhcnJheSIsIml0ZW1zIjp7InR5cGUiOiJzdHJpbmcifX0sImlzc3VlciI6eyJ0eXBlIjoib2JqZWN0IiwicHJvcGVydGllcyI6eyJpZCI6eyJ0eXBlIjoic3RyaW5nIn19LCJyZXF1aXJlZCI6WyJpZCJdfSwiaXNzdWFuY2VEYXRlIjp7InR5cGUiOiJzdHJpbmcifSwiZXhwaXJhdGlvbkRhdGUiOnsidHlwZSI6InN0cmluZyJ9LCJjcmVkZW50aWFsU3ViamVjdCI6eyJ0eXBlIjoib2JqZWN0IiwicHJvcGVydGllcyI6eyJpZCI6eyJ0eXBlIjoic3RyaW5nIn19fSwiY3JlZGVudGlhbFN0YXR1cyI6eyJ0eXBlIjoib2JqZWN0IiwicHJvcGVydGllcyI6eyJpZCI6eyJ0eXBlIjoic3RyaW5nIn0sInR5cGUiOnsidHlwZSI6InN0cmluZyJ9fSwicmVxdWlyZWQiOlsiaWQiLCJ0eXBlIl19fSwicmVxdWlyZWQiOlsiQGNvbnRleHQiLCJ0eXBlIiwiaXNzdWVyIiwiaXNzdWFuY2VEYXRlIiwiY3JlZGVudGlhbFN1YmplY3QiXSwiZGVzY3JpcHRpb24iOiJXM0NDcmVkZW50aWFsIHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vZGVjZW50cmFsaXplZC1pZGVudGl0eS9kaWQtand0LXZjfSJ9LCJFbmNvZGluZ0Zvcm1hdCI6eyJ0eXBlIjoic3RyaW5nIiwiY29uc3QiOiJqd3QiLCJkZXNjcmlwdGlvbiI6IlRoZSB0eXBlIG9mIGVuY29kaW5nIHRvIGJlIHVzZWQgZm9yIHRoZSBWZXJpZmlhYmxlIENyZWRlbnRpYWwgb3IgUHJlc2VudGF0aW9uIHRvIGJlIGdlbmVyYXRlZC5cblxuT25seSBgand0YCBpcyBzdXBwb3J0ZWQgYXQgdGhlIG1vbWVudC4ifSwiVmVyaWZpYWJsZUNyZWRlbnRpYWwiOnsidHlwZSI6Im9iamVjdCIsInByb3BlcnRpZXMiOnsiQGNvbnRleHQiOnsidHlwZSI6ImFycmF5IiwiaXRlbXMiOnsidHlwZSI6InN0cmluZyJ9fSwiaWQiOnsidHlwZSI6InN0cmluZyJ9LCJ0eXBlIjp7InR5cGUiOiJhcnJheSIsIml0ZW1zIjp7InR5cGUiOiJzdHJpbmcifX0sImlzc3VlciI6eyJ0eXBlIjoib2JqZWN0IiwicHJvcGVydGllcyI6eyJpZCI6eyJ0eXBlIjoic3RyaW5nIn19LCJyZXF1aXJlZCI6WyJpZCJdfSwiaXNzdWFuY2VEYXRlIjp7InR5cGUiOiJzdHJpbmcifSwiZXhwaXJhdGlvbkRhdGUiOnsidHlwZSI6InN0cmluZyJ9LCJjcmVkZW50aWFsU3ViamVjdCI6eyJ0eXBlIjoib2JqZWN0IiwicHJvcGVydGllcyI6eyJpZCI6eyJ0eXBlIjoic3RyaW5nIn19fSwiY3JlZGVudGlhbFN0YXR1cyI6eyJ0eXBlIjoib2JqZWN0IiwicHJvcGVydGllcyI6eyJpZCI6eyJ0eXBlIjoic3RyaW5nIn0sInR5cGUiOnsidHlwZSI6InN0cmluZyJ9fSwicmVxdWlyZWQiOlsiaWQiLCJ0eXBlIl19LCJwcm9vZiI6eyJ0eXBlIjoib2JqZWN0IiwicHJvcGVydGllcyI6eyJ0eXBlIjp7InR5cGUiOiJzdHJpbmcifX19fSwicmVxdWlyZWQiOlsiQGNvbnRleHQiLCJ0eXBlIiwiaXNzdWVyIiwiaXNzdWFuY2VEYXRlIiwiY3JlZGVudGlhbFN1YmplY3QiLCJwcm9vZiJdLCJkZXNjcmlwdGlvbiI6IlZlcmlmaWFibGUgQ3JlZGVudGlhbCB7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2RlY2VudHJhbGl6ZWQtaWRlbnRpdHkvZGlkLWp3dC12Y30ifSwiSUNyZWF0ZVZlcmlmaWFibGVQcmVzZW50YXRpb25BcmdzIjp7InR5cGUiOiJvYmplY3QiLCJwcm9wZXJ0aWVzIjp7InByZXNlbnRhdGlvbiI6eyIkcmVmIjoiIy9jb21wb25lbnRzL3NjaGVtYXMvVzNDUHJlc2VudGF0aW9uIiwiZGVzY3JpcHRpb24iOiJUaGUganNvbiBwYXlsb2FkIG9mIHRoZSBQcmVzZW50YXRpb24gYWNjb3JkaW5nIHRvIHRoZSB7QGxpbmsgaHR0cHM6Ly93d3cudzMub3JnL1RSL3ZjLWRhdGEtbW9kZWwvI3ByZXNlbnRhdGlvbnMgfCBjYW5vbmljYWwgbW9kZWx9LlxuXG5UaGUgc2lnbmVyIG9mIHRoZSBQcmVzZW50YXRpb24gaXMgY2hvc2VuIGJhc2VkIG9uIHRoZSBgaG9sZGVyYCBwcm9wZXJ0eSBvZiB0aGUgYHByZXNlbnRhdGlvbmAifSwic2F2ZSI6eyJ0eXBlIjoiYm9vbGVhbiIsImRlc2NyaXB0aW9uIjoiSWYgdGhpcyBwYXJhbWV0ZXIgaXMgdHJ1ZSwgdGhlIHJlc3VsdGluZyBWZXJpZmlhYmxlUHJlc2VudGF0aW9uIGlzIHNlbnQgdG8gdGhlIHtAbGluayBkYWYtY29yZSNJRGF0YVN0b3JlIHwgc3RvcmFnZSBwbHVnaW59IHRvIGJlIHNhdmVkIn0sInByb29mRm9ybWF0Ijp7IiRyZWYiOiIjL2NvbXBvbmVudHMvc2NoZW1hcy9FbmNvZGluZ0Zvcm1hdCIsImRlc2NyaXB0aW9uIjoiVGhlIGRlc2lyZWQgZm9ybWF0IGZvciB0aGUgVmVyaWZpYWJsZVByZXNlbnRhdGlvbiB0byBiZSBjcmVhdGVkLiBDdXJyZW50bHksIG9ubHkgSldUIGlzIHN1cHBvcnRlZCJ9fSwicmVxdWlyZWQiOlsicHJlc2VudGF0aW9uIiwicHJvb2ZGb3JtYXQiXSwiZGVzY3JpcHRpb24iOiJFbmNhcHN1bGF0ZXMgdGhlIHBhcmFtZXRlcnMgcmVxdWlyZWQgdG8gY3JlYXRlIGEge0BsaW5rIGh0dHBzOi8vd3d3LnczLm9yZy9UUi92Yy1kYXRhLW1vZGVsLyNwcmVzZW50YXRpb25zIHwgVzNDIFZlcmlmaWFibGUgUHJlc2VudGF0aW9ufSJ9LCJXM0NQcmVzZW50YXRpb24iOnsidHlwZSI6Im9iamVjdCIsInByb3BlcnRpZXMiOnsiaWQiOnsidHlwZSI6InN0cmluZyJ9LCJob2xkZXIiOnsidHlwZSI6InN0cmluZyJ9LCJpc3N1YW5jZURhdGUiOnsidHlwZSI6InN0cmluZyJ9LCJleHBpcmF0aW9uRGF0ZSI6eyJ0eXBlIjoic3RyaW5nIn0sIkBjb250ZXh0Ijp7InR5cGUiOiJhcnJheSIsIml0ZW1zIjp7InR5cGUiOiJzdHJpbmcifX0sInR5cGUiOnsidHlwZSI6ImFycmF5IiwiaXRlbXMiOnsidHlwZSI6InN0cmluZyJ9fSwidmVyaWZpZXIiOnsidHlwZSI6ImFycmF5IiwiaXRlbXMiOnsidHlwZSI6InN0cmluZyJ9fSwidmVyaWZpYWJsZUNyZWRlbnRpYWwiOnsidHlwZSI6ImFycmF5IiwiaXRlbXMiOnsiJHJlZiI6IiMvY29tcG9uZW50cy9zY2hlbWFzL1ZlcmlmaWFibGVDcmVkZW50aWFsIn19fSwicmVxdWlyZWQiOlsiaG9sZGVyIiwiQGNvbnRleHQiLCJ0eXBlIiwidmVyaWZpZXIiLCJ2ZXJpZmlhYmxlQ3JlZGVudGlhbCJdLCJkZXNjcmlwdGlvbiI6IlczQ1ByZXNlbnRhdGlvbiB7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2RlY2VudHJhbGl6ZWQtaWRlbnRpdHkvZGlkLWp3dC12Y30ifSwiVmVyaWZpYWJsZVByZXNlbnRhdGlvbiI6eyJ0eXBlIjoib2JqZWN0IiwicHJvcGVydGllcyI6eyJpZCI6eyJ0eXBlIjoic3RyaW5nIn0sImhvbGRlciI6eyJ0eXBlIjoic3RyaW5nIn0sImlzc3VhbmNlRGF0ZSI6eyJ0eXBlIjoic3RyaW5nIn0sImV4cGlyYXRpb25EYXRlIjp7InR5cGUiOiJzdHJpbmcifSwiQGNvbnRleHQiOnsidHlwZSI6ImFycmF5IiwiaXRlbXMiOnsidHlwZSI6InN0cmluZyJ9fSwidHlwZSI6eyJ0eXBlIjoiYXJyYXkiLCJpdGVtcyI6eyJ0eXBlIjoic3RyaW5nIn19LCJ2ZXJpZmllciI6eyJ0eXBlIjoiYXJyYXkiLCJpdGVtcyI6eyJ0eXBlIjoic3RyaW5nIn19LCJ2ZXJpZmlhYmxlQ3JlZGVudGlhbCI6eyJ0eXBlIjoiYXJyYXkiLCJpdGVtcyI6eyIkcmVmIjoiIy9jb21wb25lbnRzL3NjaGVtYXMvVmVyaWZpYWJsZUNyZWRlbnRpYWwifX0sInByb29mIjp7InR5cGUiOiJvYmplY3QiLCJwcm9wZXJ0aWVzIjp7InR5cGUiOnsidHlwZSI6InN0cmluZyJ9fX19LCJyZXF1aXJlZCI6WyJob2xkZXIiLCJAY29udGV4dCIsInR5cGUiLCJ2ZXJpZmllciIsInZlcmlmaWFibGVDcmVkZW50aWFsIiwicHJvb2YiXSwiZGVzY3JpcHRpb24iOiJWZXJpZmlhYmxlIFByZXNlbnRhdGlvbiB7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2RlY2VudHJhbGl6ZWQtaWRlbnRpdHkvZGlkLWp3dC12Y30ifX0sIm1ldGhvZHMiOnsiY3JlYXRlVmVyaWZpYWJsZUNyZWRlbnRpYWwiOnsiZGVzY3JpcHRpb24iOiJDcmVhdGVzIGEgVmVyaWZpYWJsZSBDcmVkZW50aWFsLiBUaGUgcGF5bG9hZCwgc2lnbmVyIGFuZCBmb3JtYXQgYXJlIGNob3NlbiBiYXNlZCBvbiB0aGUgIiwiYXJndW1lbnRzIjp7IiRyZWYiOiIjL2NvbXBvbmVudHMvc2NoZW1hcy9JQ3JlYXRlVmVyaWZpYWJsZUNyZWRlbnRpYWxBcmdzIn0sInJldHVyblR5cGUiOnsiJHJlZiI6IiMvY29tcG9uZW50cy9zY2hlbWFzL1ZlcmlmaWFibGVDcmVkZW50aWFsIn19LCJjcmVhdGVWZXJpZmlhYmxlUHJlc2VudGF0aW9uIjp7ImRlc2NyaXB0aW9uIjoiQ3JlYXRlcyBhIFZlcmlmaWFibGUgUHJlc2VudGF0aW9uLiBUaGUgcGF5bG9hZCwgc2lnbmVyIGFuZCBmb3JtYXQgYXJlIGNob3NlbiBiYXNlZCBvbiB0aGUgIiwiYXJndW1lbnRzIjp7IiRyZWYiOiIjL2NvbXBvbmVudHMvc2NoZW1hcy9JQ3JlYXRlVmVyaWZpYWJsZVByZXNlbnRhdGlvbkFyZ3MifSwicmV0dXJuVHlwZSI6eyIkcmVmIjoiIy9jb21wb25lbnRzL3NjaGVtYXMvVmVyaWZpYWJsZVByZXNlbnRhdGlvbiJ9fX19fX19LCJAY29udGV4dCI6WyJodHRwczovL3d3dy53My5vcmcvMjAxOC9jcmVkZW50aWFscy92MSJdLCJ0eXBlIjpbIlZlcmlmaWFibGVDcmVkZW50aWFsIiwiQWdlbnRQbHVnaW5TY2hlbWEiXX0sIm5iZiI6MTYwNjEyOTgwMSwiaXNzIjoiZGlkOmV0aHI6cmlua2VieToweGY0YTdlZTdjYzk1MDAzMDY1MjViNDEyODQ4ODk0NTM4YmE2YWQwOTYifQ.seBu5NAEDb_Os-Qnbfifr1VS2_o5TUDWPjLyU2Gmp4XYJ8I7RYAQ-cpgEYVF2m-r1ECauPE5GF9lOa4hY13WDQ" - } -} \ No newline at end of file diff --git a/packages/daf-w3c/plugin.schema.json b/packages/daf-w3c/plugin.schema.json new file mode 100644 index 000000000..b539fefb8 --- /dev/null +++ b/packages/daf-w3c/plugin.schema.json @@ -0,0 +1,329 @@ +{ + "ICredentialIssuer": { + "components": { + "schemas": { + "ICreateVerifiableCredentialArgs": { + "type": "object", + "properties": { + "credential": { + "$ref": "#/components/schemas/W3CCredential", + "description": "The json payload of the Credential according to the {@link https://www.w3.org/TR/vc-data-model/#credentials | canonical model}\n\nThe signer of the Credential is chosen based on the `issuer.id` property of the `credential`" + }, + "save": { + "type": "boolean", + "description": "If this parameter is true, the resulting VerifiablePresentation is sent to the {@link daf-core#IDataStore | storage plugin} to be saved" + }, + "proofFormat": { + "$ref": "#/components/schemas/EncodingFormat", + "description": "The desired format for the VerifiablePresentation to be created. Currently, only JWT is supported" + } + }, + "required": [ + "credential", + "proofFormat" + ], + "description": "Encapsulates the parameters required to create a {@link https://www.w3.org/TR/vc-data-model/#credentials | W3C Verifiable Credential}" + }, + "W3CCredential": { + "type": "object", + "properties": { + "@context": { + "type": "array", + "items": { + "type": "string" + } + }, + "id": { + "type": "string" + }, + "type": { + "type": "array", + "items": { + "type": "string" + } + }, + "issuer": { + "type": "object", + "properties": { + "id": { + "type": "string" + } + }, + "required": [ + "id" + ] + }, + "issuanceDate": { + "type": "string" + }, + "expirationDate": { + "type": "string" + }, + "credentialSubject": { + "type": "object", + "properties": { + "id": { + "type": "string" + } + } + }, + "credentialStatus": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "type": { + "type": "string" + } + }, + "required": [ + "id", + "type" + ] + } + }, + "required": [ + "@context", + "type", + "issuer", + "issuanceDate", + "credentialSubject" + ], + "description": "W3CCredential {@link https://github.com/decentralized-identity/did-jwt-vc}" + }, + "EncodingFormat": { + "type": "string", + "const": "jwt", + "description": "The type of encoding to be used for the Verifiable Credential or Presentation to be generated.\n\nOnly `jwt` is supported at the moment." + }, + "VerifiableCredential": { + "type": "object", + "properties": { + "@context": { + "type": "array", + "items": { + "type": "string" + } + }, + "id": { + "type": "string" + }, + "type": { + "type": "array", + "items": { + "type": "string" + } + }, + "issuer": { + "type": "object", + "properties": { + "id": { + "type": "string" + } + }, + "required": [ + "id" + ] + }, + "issuanceDate": { + "type": "string" + }, + "expirationDate": { + "type": "string" + }, + "credentialSubject": { + "type": "object", + "properties": { + "id": { + "type": "string" + } + } + }, + "credentialStatus": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "type": { + "type": "string" + } + }, + "required": [ + "id", + "type" + ] + }, + "proof": { + "type": "object", + "properties": { + "type": { + "type": "string" + } + } + } + }, + "required": [ + "@context", + "type", + "issuer", + "issuanceDate", + "credentialSubject", + "proof" + ], + "description": "Verifiable Credential {@link https://github.com/decentralized-identity/did-jwt-vc}" + }, + "ICreateVerifiablePresentationArgs": { + "type": "object", + "properties": { + "presentation": { + "$ref": "#/components/schemas/W3CPresentation", + "description": "The json payload of the Presentation according to the {@link https://www.w3.org/TR/vc-data-model/#presentations | canonical model}.\n\nThe signer of the Presentation is chosen based on the `holder` property of the `presentation`" + }, + "save": { + "type": "boolean", + "description": "If this parameter is true, the resulting VerifiablePresentation is sent to the {@link daf-core#IDataStore | storage plugin} to be saved" + }, + "proofFormat": { + "$ref": "#/components/schemas/EncodingFormat", + "description": "The desired format for the VerifiablePresentation to be created. Currently, only JWT is supported" + } + }, + "required": [ + "presentation", + "proofFormat" + ], + "description": "Encapsulates the parameters required to create a {@link https://www.w3.org/TR/vc-data-model/#presentations | W3C Verifiable Presentation}" + }, + "W3CPresentation": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "holder": { + "type": "string" + }, + "issuanceDate": { + "type": "string" + }, + "expirationDate": { + "type": "string" + }, + "@context": { + "type": "array", + "items": { + "type": "string" + } + }, + "type": { + "type": "array", + "items": { + "type": "string" + } + }, + "verifier": { + "type": "array", + "items": { + "type": "string" + } + }, + "verifiableCredential": { + "type": "array", + "items": { + "$ref": "#/components/schemas/VerifiableCredential" + } + } + }, + "required": [ + "holder", + "@context", + "type", + "verifier", + "verifiableCredential" + ], + "description": "W3CPresentation {@link https://github.com/decentralized-identity/did-jwt-vc}" + }, + "VerifiablePresentation": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "holder": { + "type": "string" + }, + "issuanceDate": { + "type": "string" + }, + "expirationDate": { + "type": "string" + }, + "@context": { + "type": "array", + "items": { + "type": "string" + } + }, + "type": { + "type": "array", + "items": { + "type": "string" + } + }, + "verifier": { + "type": "array", + "items": { + "type": "string" + } + }, + "verifiableCredential": { + "type": "array", + "items": { + "$ref": "#/components/schemas/VerifiableCredential" + } + }, + "proof": { + "type": "object", + "properties": { + "type": { + "type": "string" + } + } + } + }, + "required": [ + "holder", + "@context", + "type", + "verifier", + "verifiableCredential", + "proof" + ], + "description": "Verifiable Presentation {@link https://github.com/decentralized-identity/did-jwt-vc}" + } + }, + "methods": { + "createVerifiableCredential": { + "description": "Creates a Verifiable Credential. The payload, signer and format are chosen based on the ", + "arguments": { + "$ref": "#/components/schemas/ICreateVerifiableCredentialArgs" + }, + "returnType": { + "$ref": "#/components/schemas/VerifiableCredential" + } + }, + "createVerifiablePresentation": { + "description": "Creates a Verifiable Presentation. The payload, signer and format are chosen based on the ", + "arguments": { + "$ref": "#/components/schemas/ICreateVerifiablePresentationArgs" + }, + "returnType": { + "$ref": "#/components/schemas/VerifiablePresentation" + } + } + } + } + } +} \ No newline at end of file diff --git a/packages/daf-w3c/src/action-handler.ts b/packages/daf-w3c/src/action-handler.ts index 43d3a7efc..ae33de1ea 100644 --- a/packages/daf-w3c/src/action-handler.ts +++ b/packages/daf-w3c/src/action-handler.ts @@ -19,7 +19,7 @@ import { normalizePresentation, } from 'did-jwt-vc' -import { pluginCredential } from './' +import { schema } from './' import Debug from 'debug' const debug = Debug('daf:w3c:action-handler') @@ -154,7 +154,7 @@ export type IContext = IAgentContext< */ export class CredentialIssuer implements IAgentPlugin { readonly methods: ICredentialIssuer - readonly schema = pluginCredential.credentialSubject.interfaces.ICredentialIssuer + readonly schema = schema.ICredentialIssuer constructor() { this.methods = { diff --git a/packages/daf-w3c/src/index.ts b/packages/daf-w3c/src/index.ts index 0352aa79b..100e60570 100644 --- a/packages/daf-w3c/src/index.ts +++ b/packages/daf-w3c/src/index.ts @@ -10,5 +10,5 @@ export { ICreateVerifiableCredentialArgs, ICreateVerifiablePresentationArgs, } from './action-handler' -const pluginCredential = require('../plugin.credential.json') -export { pluginCredential } +const schema = require('../plugin.schema.json') +export { schema }