From a20905e93328d36f5a8ec35e2a7e7978c1914b2f Mon Sep 17 00:00:00 2001
From: wes-smith
Date: Thu, 18 Apr 2024 18:22:17 -0400
Subject: [PATCH 01/16] Add Exchanges section and endpoints.
---
exchanges.html | 20 +++++++
exchanges.yml | 140 +++++++++++++++++++++++++++++++++++++++++++++++++
index.html | 56 ++++++++++++++++++++
respec-oas.js | 3 ++
4 files changed, 219 insertions(+)
create mode 100644 exchanges.html
create mode 100644 exchanges.yml
diff --git a/exchanges.html b/exchanges.html
new file mode 100644
index 0000000..38e167a
--- /dev/null
+++ b/exchanges.html
@@ -0,0 +1,20 @@
+
+
+
+ W3C CCG - VC Verifier API
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/exchanges.yml b/exchanges.yml
new file mode 100644
index 0000000..58175ef
--- /dev/null
+++ b/exchanges.yml
@@ -0,0 +1,140 @@
+paths:
+ /workflows:
+ post:
+ summary: Creates a new workflow and returns workflowId in the response body.
+ tags:
+ - Credentials
+ security:
+ - networkAuth: []
+ - oAuth2: []
+ - zCap: []
+ operationId: createWorkflow
+ description: Creates a new workflow and returns workflowId in the response body.
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/CreateWorkflowRequest"
+ description: Parameters for creating a workflow.
+ responses:
+ "200":
+ description: Workflow successfully created!
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/CreateWorkflowResponse"
+ "400":
+ description: Invalid input
+ "401":
+ description: Not Authorized
+ "500":
+ description: Internal Error
+
+ /workflows/{workflowId}:
+ get:
+ summary: Gets the configuration of an existing workflow and returns it in the response body.
+ tags:
+ - Credentials
+ security:
+ - networkAuth: []
+ - oAuth2: []
+ - zCap: []
+ operationId: getWorkflowConfiguration
+ description: Gets the configuration of an existing workflow and returns it in the response body.
+ responses:
+ "200":
+ description: Workflow configuration retrieved!
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/GetWorkflowResponse"
+ "400":
+ description: Invalid input
+ "401":
+ description: Not Authorized
+ "500":
+ description: Internal Error
+ /workflows/{workflowId}/exchanges:
+ post:
+ summary: Creates a new exchange and returns workflowId in the response body.
+ tags:
+ - Credentials
+ security:
+ - networkAuth: []
+ - oAuth2: []
+ - zCap: []
+ operationId: createWorkflow
+ description: Creates a new workflow and returns workflowId in the response body.
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/CreateExchangeRequest"
+ description: Parameters for creating a workflow.
+ responses:
+ "200":
+ description: Workflow successfully created!
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/CreateWorkflowResponse"
+ "400":
+ description: Invalid input
+ "401":
+ description: Not Authorized
+ "500":
+ description: Internal Error
+ /workflows/{workflowId}/exchanges/{exchangeId}:
+ get:
+ summary: Gets the state of an existing exchange and returns it in the response body.
+ tags:
+ - Credentials
+ security:
+ - networkAuth: []
+ - oAuth2: []
+ - zCap: []
+ operationId: getWorkflowConfiguration
+ description: Gets the configuration of an existing workflow and returns it in the response body.
+ responses:
+ "200":
+ description: Workflow configuration retrieved!
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/GetExchangeResponse"
+ "400":
+ description: Invalid input
+ "401":
+ description: Not Authorized
+ "500":
+ description: Internal Error
+ post:
+ summary: Participate in an exchange by passing either a.
+ tags:
+ - Credentials
+ security:
+ - networkAuth: []
+ - oAuth2: []
+ - zCap: []
+ operationId: createWorkflow
+ description: Creates a new workflow and returns workflowId in the response body.
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/CreateWorkflowRequest"
+ description: Parameters for creating a workflow.
+ responses:
+ "200":
+ description: Workflow successfully created!
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/ExchangeParticipationResponse"
+ "400":
+ description: Invalid input
+ "401":
+ description: Not Authorized
+ "500":
+ description: Internal Error
+components:
diff --git a/index.html b/index.html
index b30dfaf..473a4e2 100644
--- a/index.html
+++ b/index.html
@@ -775,6 +775,62 @@
Create Challenge
+
+
Workflows and Exchanges
+
+The following APIs are defined for using workflows and exchanges for credential use cases that require crossing trust boundaries:
+
+
+
+
+
+
Create Workflow
+
+
+
+
+
+
+
+
Get Workflow Configuration
+
+
+
+
+
+
+
+
Create Exchange
+
+
+
+
+
+
+
+
Participate in an Exchange
+
+
+
+
+
+
+
+
Get Exchange State
+
+
+
+
+
+
+
+
Presenting
diff --git a/respec-oas.js b/respec-oas.js
index ab184fb..d8ef465 100644
--- a/respec-oas.js
+++ b/respec-oas.js
@@ -329,6 +329,9 @@ async function injectOas(config, document) {
const issuerApi = await SwaggerParser.validate('issuer.yml');
console.log('API name: %s, Version: %s',
issuerApi.info.title, issuerApi.info.version);
+ const exchangesApi = await SwaggerParser.validate('exchanges.yml');
+ console.log('API name: %s, Version: %s',
+ exchangesApi.info.title, exchangesApi.info.version);
const verifierApi = await SwaggerParser.validate('verifier.yml');
console.log('API name: %s, Version: %s',
verifierApi.info.title, verifierApi.info.version);
From ec21327085c194fcd39aab4ead6345980269c785 Mon Sep 17 00:00:00 2001
From: wes-smith
Date: Sat, 20 Apr 2024 13:50:23 -0400
Subject: [PATCH 02/16] Add body definitions.
---
exchanges.yml | 108 ++++++++++++++++++++++++++++++++++++++------------
respec-oas.js | 2 +-
2 files changed, 83 insertions(+), 27 deletions(-)
diff --git a/exchanges.yml b/exchanges.yml
index 58175ef..b814692 100644
--- a/exchanges.yml
+++ b/exchanges.yml
@@ -1,7 +1,18 @@
+openapi: 3.0.0
+info:
+ version: "0.0.3-unstable"
+ title: VC Exchanges API
+ description: This is an Experimental Open API Specification for the [VC Data Model](https://www.w3.org/TR/vc-data-model/).
+ license:
+ name: W3C Software and Document License
+ url: http://www.w3.org/Consortium/Legal/copyright-software.
+ contact:
+ name: GitHub Source Code
+ url: https://github.com/w3c-ccg/vc-api
paths:
/workflows:
post:
- summary: Creates a new workflow and returns workflowId in the response body.
+ summary: Passing an empty body to this endpoint creates a new workflow and returns its information in the response body.
tags:
- Credentials
security:
@@ -10,12 +21,6 @@ paths:
- zCap: []
operationId: createWorkflow
description: Creates a new workflow and returns workflowId in the response body.
- requestBody:
- content:
- application/json:
- schema:
- $ref: "#/components/schemas/CreateWorkflowRequest"
- description: Parameters for creating a workflow.
responses:
"200":
description: Workflow successfully created!
@@ -29,7 +34,6 @@ paths:
description: Not Authorized
"500":
description: Internal Error
-
/workflows/{workflowId}:
get:
summary: Gets the configuration of an existing workflow and returns it in the response body.
@@ -56,28 +60,22 @@ paths:
description: Internal Error
/workflows/{workflowId}/exchanges:
post:
- summary: Creates a new exchange and returns workflowId in the response body.
+ summary: Passing an empty body to this endpoint creates a new exchange and returns exchangeId and time to live in the response body.
tags:
- Credentials
security:
- networkAuth: []
- oAuth2: []
- zCap: []
- operationId: createWorkflow
- description: Creates a new workflow and returns workflowId in the response body.
- requestBody:
- content:
- application/json:
- schema:
- $ref: "#/components/schemas/CreateExchangeRequest"
- description: Parameters for creating a workflow.
+ operationId: createExchange
+ description: Passing an empty body to this endpoint creates a new exchange and returns exchangeId and time to live in the response body.
responses:
"200":
- description: Workflow successfully created!
+ description: Exchange successfully created!
content:
application/json:
schema:
- $ref: "#/components/schemas/CreateWorkflowResponse"
+ $ref: "#/components/schemas/CreateExchangeResponse"
"400":
description: Invalid input
"401":
@@ -109,28 +107,32 @@ paths:
"500":
description: Internal Error
post:
- summary: Participate in an exchange by passing either a.
+ summary: Participate in an exchange by passing either a credential to be issued or a Verifiable Presentation.
tags:
- Credentials
security:
- networkAuth: []
- oAuth2: []
- zCap: []
- operationId: createWorkflow
- description: Creates a new workflow and returns workflowId in the response body.
+ operationId: participateInExchange
+ description: Participate in an exchange by passing either a credential to be issued or a Verifiable Presentation.
requestBody:
content:
application/json:
schema:
- $ref: "#/components/schemas/CreateWorkflowRequest"
- description: Parameters for creating a workflow.
+ oneOf:
+ - $ref: "./components/VerifiablePresentation.yml#/components/schemas/VerifiablePresentation"
+ - $ref: "./components/Credential.yml#/components/schemas/Credential"
+ description: Either
responses:
"200":
- description: Workflow successfully created!
+ description: Exchange completed!
content:
application/json:
schema:
- $ref: "#/components/schemas/ExchangeParticipationResponse"
+ oneOf:
+ - $ref: "./components/IssueCredentialSuccess.yml#/components/schemas/IssueCredentialSuccess"
+ - $ref: "./components/VerifyPresentationResult.yml#/components/schemas/VerificationResult"
"400":
description: Invalid input
"401":
@@ -138,3 +140,57 @@ paths:
"500":
description: Internal Error
components:
+ schemas:
+ CreateWorkflowResponse:
+ type: object
+ additionalProperties: false
+ description: Object containing information about a created workflow.
+ properties:
+ workflowId:
+ type: string
+ description: An identifier for the created workflow.
+ GetWorkflowResponse:
+ type: object
+ additionalProperties: false
+ description: Object containing information about a workflow.
+ properties:
+ exchanges:
+ type: array
+ description: The identifiers of the current exchanges associated with the workflow instance.
+ items:
+ type: string
+ authorization:
+ type: array
+ description: Metadata for the authorization mechanisms active on the workflow instance (e.g OAuth tokens, zCaps).
+ items:
+ type: string
+ CreateExchangeResponse:
+ type: object
+ additionalProperties: false
+ description: Object containing information about a created exchange.
+ properties:
+ exchangeId:
+ type: string
+ description: An identifier for the created exchange.
+ ttl:
+ type: string
+ description: The time to live for the created exchange.
+ GetExchangeResponse:
+ type: object
+ additionalProperties: false
+ description: Object containing information about an active exchange.
+ properties:
+ exchangeId:
+ type: string
+ description: An identifier for the exchange.
+ ttl:
+ type: string
+ description: The time to live for the exchange.
+ nextStep:
+ type: string
+ description: The interaction the exchange is expecting to happen next.
+ completedSteps:
+ type: array
+ description: The steps completed by the exchange previously.
+ items:
+ type: string
diff --git a/respec-oas.js b/respec-oas.js
index d8ef465..22eb2d9 100644
--- a/respec-oas.js
+++ b/respec-oas.js
@@ -338,7 +338,7 @@ async function injectOas(config, document) {
const holderApi = await SwaggerParser.validate('holder.yml');
console.log('API name: %s, Version: %s',
holderApi.info.title, holderApi.info.version);
- const apis = [issuerApi, verifierApi, holderApi];
+ const apis = [issuerApi, verifierApi, holderApi, exchangesApi];
buildApiSummaryTables({config, document, apis});
buildEndpointDetails({config, document, apis});
From c285e0eabaa93966ffdff5eb3a0734075d4960ac Mon Sep 17 00:00:00 2001
From: wes-smith
Date: Sat, 20 Apr 2024 16:39:14 -0400
Subject: [PATCH 03/16] Update body and endpoint definitions.
---
exchanges.yml | 45 +++++++++++++++++++++++++++++++++++++--------
1 file changed, 37 insertions(+), 8 deletions(-)
diff --git a/exchanges.yml b/exchanges.yml
index b814692..900611d 100644
--- a/exchanges.yml
+++ b/exchanges.yml
@@ -68,7 +68,12 @@ paths:
- oAuth2: []
- zCap: []
operationId: createExchange
- description: Passing an empty body to this endpoint creates a new exchange and returns exchangeId and time to live in the response body.
+ description: Creates a new exchange and returns exchangeId and time to live in the response body.
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/CreateExchangeRequest"
responses:
"200":
description: Exchange successfully created!
@@ -91,11 +96,11 @@ paths:
- networkAuth: []
- oAuth2: []
- zCap: []
- operationId: getWorkflowConfiguration
- description: Gets the configuration of an existing workflow and returns it in the response body.
+ operationId: getExchangeConfiguration
+ description: Gets the configuration of an existing exchange and returns it in the response body.
responses:
"200":
- description: Workflow configuration retrieved!
+ description: Exchange configuration retrieved!
content:
application/json:
schema:
@@ -107,7 +112,7 @@ paths:
"500":
description: Internal Error
post:
- summary: Participate in an exchange by passing either a credential to be issued or a Verifiable Presentation.
+ summary: Participate in an exchange by passing either a credential to be issued or a Verifiable Presentation. Posting an empty body will start the exchange.
tags:
- Credentials
security:
@@ -115,7 +120,7 @@ paths:
- oAuth2: []
- zCap: []
operationId: participateInExchange
- description: Participate in an exchange by passing either a credential to be issued or a Verifiable Presentation.
+ description: Participate in an exchange by passing either a credential to be issued or a Verifiable Presentation. Posting an empty body will start the exchange.
requestBody:
content:
application/json:
@@ -164,6 +169,19 @@ components:
description: Metadata for the authorization mechanisms active on the workflow instance (e.g OAuth tokens, zCaps).
items:
type: string
+ CreateExchangeRequest:
+ type: object
+ additionalProperties: false
+ description: Object containing information about the exchange to be created.
+ properties:
+ ttl:
+ type: string
+ description: Time to live for the exchange (ms).
+ variables:
+ type: array
+ description: Template variables to be used in the exchange. MAY be empty.
+ items:
+ type: object
CreateExchangeResponse:
type: object
additionalProperties: false
@@ -171,10 +189,21 @@ components:
properties:
exchangeId:
type: string
- description: An identifier for the created exchange.
+ description: An identifier for the created exchange .
+ sequence:
+ type: string
+ description: A sequence number for the exchange. Set to "0" on creation.
ttl:
type: string
description: The time to live for the created exchange.
+ variables:
+ type: array
+ description: Template variables to be used in the exchange.
+ items:
+ type: object
+ state:
+ type: string
+ description: The status ("pending" | "complete" | "invalid") of the exchange, set to "pending" on creation.
GetExchangeResponse:
type: object
additionalProperties: false
@@ -182,7 +211,7 @@ components:
properties:
exchangeId:
type: string
- description: An identifier for the exchange.
+ description: An identifier for the exchange
ttl:
type: string
description: The time to live for the exchange.
From 434ed0f7a19e909913c25452b32a56d62746dbb9 Mon Sep 17 00:00:00 2001
From: wes-smith
Date: Sat, 20 Apr 2024 17:43:39 -0400
Subject: [PATCH 04/16] Update body and endpoint definitions.
---
exchanges.yml | 88 ++++++++++++++++++++++++++++++++++++++++++++-------
1 file changed, 77 insertions(+), 11 deletions(-)
diff --git a/exchanges.yml b/exchanges.yml
index 900611d..19ff45f 100644
--- a/exchanges.yml
+++ b/exchanges.yml
@@ -12,7 +12,7 @@ info:
paths:
/workflows:
post:
- summary: Passing an empty body to this endpoint creates a new workflow and returns its information in the response body.
+ summary: Creates a new workflow and returns its information in the response body.
tags:
- Credentials
security:
@@ -21,6 +21,11 @@ paths:
- zCap: []
operationId: createWorkflow
description: Creates a new workflow and returns workflowId in the response body.
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/CreateWorkflowRequest"
responses:
"200":
description: Workflow successfully created!
@@ -146,6 +151,36 @@ paths:
description: Internal Error
components:
schemas:
+ CreateWorkflowRequest:
+ type: object
+ additionalProperties: false
+ description: Object containing information for creating a workflow.
+ properties:
+ required:
+ type: object
+ properties:
+ steps:
+ type: object
+ description: A set of semantically named steps to be used in exchanges created on this workflow.
+ items:
+ type: object
+ initialStep:
+ type: string
+ description: The step from the above set that the exchange starts on.
+ options:
+ type: object
+ properties:
+ controller:
+ type: string
+ description: The controller of the instance.
+ authorization:
+ type: object
+ description: Authorization scheme information (e.g. OAuth2 configuration).
+ credentialTemplates:
+ type: array
+ description: One or more VC templates for issuance.
+ items:
+ $ref: "#/components/schemas/VerifiableCredentialTemplate"
CreateWorkflowResponse:
type: object
additionalProperties: false
@@ -159,16 +194,36 @@ components:
additionalProperties: false
description: Object containing information about a workflow.
properties:
- exchanges:
- type: array
- description: The identifiers of the current exchanges associated with the workflow instance.
- items:
- type: string
- authorization:
- type: array
- description: Metadata for the authorization mechanisms active on the workflow instance (e.g OAuth tokens, zCaps).
- items:
- type: string
+ required:
+ type: object
+ properties:
+ exchanges:
+ type: array
+ description: The identifiers of the current exchanges associated with the workflow instance.
+ items:
+ type: string
+ steps:
+ type: object
+ description: A set of semantically named steps to be used in exchanges created on this workflow.
+ items:
+ type: object
+ initialStep:
+ type: string
+ description: The step from the above set that the exchange starts on.
+ options:
+ type: object
+ properties:
+ controller:
+ type: string
+ description: The controller of the instance.
+ authorization:
+ type: object
+ description: Authorization scheme information (e.g. OAuth2 configuration).
+ credentialTemplates:
+ type: array
+ description: One or more VC templates for issuance.
+ items:
+ $ref: "#/components/schemas/VerifiableCredentialTemplate"
CreateExchangeRequest:
type: object
additionalProperties: false
@@ -223,3 +278,14 @@ components:
description: The steps completed by the exchange previously.
items:
type: string
+ VerifiableCredentialTemplate:
+ type: object
+ additionalProperties: false
+ description: A Verifiable Credential template.
+ properties:
+ type:
+ type: string
+ description: The type of template.
+ template:
+ type: string
+ description: The VC template.
From f23a6ff500a894bd18190e505d5bed644551199e Mon Sep 17 00:00:00 2001
From: wes-smith
Date: Tue, 23 Apr 2024 13:48:08 -0400
Subject: [PATCH 05/16] Update endpoint, body definitions.
---
exchanges.yml | 118 ++++++++++++++++++++++++++++++++++++++++++--------
index.html | 10 ++---
2 files changed, 104 insertions(+), 24 deletions(-)
diff --git a/exchanges.yml b/exchanges.yml
index 19ff45f..5b24f86 100644
--- a/exchanges.yml
+++ b/exchanges.yml
@@ -39,7 +39,7 @@ paths:
description: Not Authorized
"500":
description: Internal Error
- /workflows/{workflowId}:
+ /workflows/{localWorkflowId}:
get:
summary: Gets the configuration of an existing workflow and returns it in the response body.
tags:
@@ -63,9 +63,9 @@ paths:
description: Not Authorized
"500":
description: Internal Error
- /workflows/{workflowId}/exchanges:
+ /workflows/{localWorkflowId}/exchanges:
post:
- summary: Passing an empty body to this endpoint creates a new exchange and returns exchangeId and time to live in the response body.
+ summary: Creates a new exchange and returns exchangeId and time to live in the response body.
tags:
- Credentials
security:
@@ -92,7 +92,7 @@ paths:
description: Not Authorized
"500":
description: Internal Error
- /workflows/{workflowId}/exchanges/{exchangeId}:
+ /workflows/{localWorkflowId}/exchanges/{localExchangeId}:
get:
summary: Gets the state of an existing exchange and returns it in the response body.
tags:
@@ -117,7 +117,7 @@ paths:
"500":
description: Internal Error
post:
- summary: Participate in an exchange by passing either a credential to be issued or a Verifiable Presentation. Posting an empty body will start the exchange.
+ summary: Participate in an exchange. Posting an empty body will start the exchange or return what the exchange is expecting to complete the next step.
tags:
- Credentials
security:
@@ -125,7 +125,7 @@ paths:
- oAuth2: []
- zCap: []
operationId: participateInExchange
- description: Participate in an exchange by passing either a credential to be issued or a Verifiable Presentation. Posting an empty body will start the exchange.
+ description: Participate in an exchange. Posting an empty body will start the exchange or return what the exchange is expecting to complete the next step.
requestBody:
content:
application/json:
@@ -133,16 +133,14 @@ paths:
oneOf:
- $ref: "./components/VerifiablePresentation.yml#/components/schemas/VerifiablePresentation"
- $ref: "./components/Credential.yml#/components/schemas/Credential"
- description: Either
+ description: Either a credential to be issued or a Verifiable Presentation.
responses:
"200":
- description: Exchange completed!
+ description: Exchange progressed.
content:
application/json:
schema:
- oneOf:
- - $ref: "./components/IssueCredentialSuccess.yml#/components/schemas/IssueCredentialSuccess"
- - $ref: "./components/VerifyPresentationResult.yml#/components/schemas/VerificationResult"
+ $ref: "#/components/schemas/ExchangeParticipationResponse"
"400":
description: Invalid input
"401":
@@ -180,7 +178,12 @@ components:
type: array
description: One or more VC templates for issuance.
items:
- $ref: "#/components/schemas/VerifiableCredentialTemplate"
+ type: object
+ properties:
+ type:
+ type: string
+ template:
+ type: string
CreateWorkflowResponse:
type: object
additionalProperties: false
@@ -188,7 +191,7 @@ components:
properties:
workflowId:
type: string
- description: An identifier for the created workflow.
+ description: The URL that uniquely identifies the created workflow.
GetWorkflowResponse:
type: object
additionalProperties: false
@@ -204,9 +207,9 @@ components:
type: string
steps:
type: object
- description: A set of semantically named steps to be used in exchanges created on this workflow.
- items:
- type: object
+ properties:
+ stepName:
+ $ref: "#/components/schemas/WorkflowStep"
initialStep:
type: string
description: The step from the above set that the exchange starts on.
@@ -223,7 +226,14 @@ components:
type: array
description: One or more VC templates for issuance.
items:
- $ref: "#/components/schemas/VerifiableCredentialTemplate"
+ type: object
+ properties:
+ type:
+ type: string
+ description: The type of template.
+ template:
+ type: string
+ description: The template itself.
CreateExchangeRequest:
type: object
additionalProperties: false
@@ -244,7 +254,7 @@ components:
properties:
exchangeId:
type: string
- description: An identifier for the created exchange .
+ description: The URL that uniquely identifies the exchange.
sequence:
type: string
description: A sequence number for the exchange. Set to "0" on creation.
@@ -259,6 +269,29 @@ components:
state:
type: string
description: The status ("pending" | "complete" | "invalid") of the exchange, set to "pending" on creation.
+ step:
+ type: string
+ description: The semantic string ID for the current step.
+ ExchangeParticipationResponse:
+ type: object
+ additionalProperties: false
+ description: Either what the exchange is expecting next or a result of the exchange.
+ properties:
+ response:
+ oneOf:
+ - type: object
+ properties:
+ verifiablePresentationRequest:
+ $ref: "./components/VerifiablePresentationRequest.yml#/components/schemas/VerifiablePresentationRequest"
+ - type: object
+ properties:
+ verifiablePresentation:
+ $ref: "./components/VerifiablePresentation.yml#/components/schemas/VerifiablePresentation"
+ - type: object
+ properties:
+ redirectUrl:
+ type: string
+ description: The URL the exchange wishes to redirect the client to.
GetExchangeResponse:
type: object
additionalProperties: false
@@ -266,7 +299,7 @@ components:
properties:
exchangeId:
type: string
- description: An identifier for the exchange
+ description: The URL that uniquely identifies the exchange.
ttl:
type: string
description: The time to live for the exchange.
@@ -278,6 +311,16 @@ components:
description: The steps completed by the exchange previously.
items:
type: string
+ WorkflowStep:
+ type: object
+ additionalProperties: false
+ description: Object containing information about a workflow step.
+ oneOf:
+ - $ref: "#/components/schemas/StepData"
+ - type: object
+ properties:
+ stepTemplate:
+ $ref: "#/components/schemas/StepTemplate"
VerifiableCredentialTemplate:
type: object
additionalProperties: false
@@ -289,3 +332,40 @@ components:
template:
type: string
description: The VC template.
+ StepTemplate:
+ type: object
+ additionalProperties: false
+ description: A template for a workflow step. Either this must be present or the other step data must be present, but not both sets.
+ properties:
+ type:
+ type: string
+ description: The type of template.
+ template:
+ type: string
+ description: The step template.
+ StepData:
+ type: object
+ additionalProperties: false
+ description: Step data to be included if a template is not used.
+ properties:
+ createChallenge:
+ type: string
+ description:
+ verifiablePresentationRequest:
+ type: object
+ description: The VPR to send to the user in this step.
+ $ref: "./components/VerifiablePresentationRequest.yml#/components/schemas/VerifiablePresentationRequest"
+ nextStep:
+ type: string
+ description: The name of the next step in the sequence.
+ openId:
+ type: object
+ description: Optional information to trigger OID4VP
+ properties:
+ createAuthorizationRequest:
+ type: string
+ description: If present, auto-generate the OID4VP authorization request from the VPR. Either this or authorizationRequest must be present, but not both.
+ authorizationRequest:
+ type: object
+
+
\ No newline at end of file
diff --git a/index.html b/index.html
index 473a4e2..1319765 100644
--- a/index.html
+++ b/index.html
@@ -782,7 +782,7 @@