issuance protocol is identified by a [=digital credential/protocol
identifier=]. See also section [[[#protocol-registry]]].
+
+ Digital credential coordinator
+
+
+ See [=credential request coordinator=].
+
+
+ Credential Request Coordinator
+
+
+ The credential request coordinator
+ is a user-agent-defined component that mediates [=digital credential=]
+ interactions within a [=top-level traversable=]. Each [=top-level
+ traversable=] has exactly one associated coordinator. The coordinator
+ ensures that at most one interaction is active across all [=child
+ navigables=], orchestrates the end-to-end flow of presentation or
+ issuance, and manages transitions between [=credential request
+ coordinator/interaction states=]. A user agent may delegate some or all
+ coordinator responsibilities to external wallet applications, platform
+ components, or other trusted entities according to user or platform
+ policy.
+
+
+ The coordinator manages the lifecycle of the interaction's {{Promise}}
+ and its associated {{AbortSignal}}, including resolution with the user's
+ selected [=digital credential/digital credential|digital credential(s)=]
+ or rejection due to errors or cancellation by user or program.
+
+
+ The [=credential request coordinator=]:
+
+
+
Validates and transforms presentation or issuance inputs and outputs.
+
+
Interprets each individual request in the input list as targeting a
+ specific [=holder=], and prepares [=holder=] options accordingly.
+
+
Presents the available [=holders=] to the user for selection.
+
+
Resolves the interaction's {{Promise}} with the selected [=digital
+ credential=] or rejects it to indicate cancellation.
+
+
+
+
+ Interaction states
+
+
+ The [=credential request coordinator=] has a finite set of
+ interaction
+ states, which are used to manage the lifecycle of a [=digital
+ credential/presentation request=] or [=digital credential/issuance
+ request=]:
+
+
+
+ "idle":
+
+
+ No credential interaction is currently in progress.
+
+
+ "requesting":
+
+
+ A credential interaction is in progress and the user interface is
+ presented.
+
+
+ "aborting":
+
+
+ The active interaction is being canceled due to an error, a user
+ action, or a [=AbortController/signal abort=]; the coordinator is
+ cleaning up before returning to [=credential request
+ coordinator/idle=].
+
+
+
+ The coordinator is initialized in the [=credential request
+ coordinator/idle=] [=credential request coordinator/interaction state=].
+
The credential request coordinator
is a user-agent-defined component that mediates [=digital credential=]
- interactions within a [=top-level traversable=]. Each [=top-level
+ interactions through the [=top-level traversable=]. Each [=top-level
traversable=] has exactly one associated coordinator. The coordinator
ensures that at most one interaction is active across all [=child
navigables=], orchestrates the end-to-end flow of presentation or
issuance, and manages transitions between [=credential request
- coordinator/interaction states=]. A user agent may delegate some or all
+ coordinator/interaction states=].
+
+
A user agent MAY delegate some or all
coordinator responsibilities to external wallet applications, platform
components, or other trusted entities according to user or platform
policy.
The coordinator manages the lifecycle of the interaction's {{Promise}}
- and its associated {{AbortSignal}}, including resolution with the user's
- selected [=digital credential/digital credential|digital credential(s)=]
- or rejection due to errors or cancellation by user or program.
+ and its associated {{AbortSignal}} (if any), including resolution with the user's
+ selected [=digital credential=]
+ or rejection due to errors or the user or program aborting the credential request.
The [=credential request coordinator=]:
@@ -576,14 +578,11 @@
Validates and transforms presentation or issuance inputs and outputs.
-
Interprets each individual request in the input list as targeting a
- specific [=holder=], and prepares [=holder=] options accordingly.
-
Requests the platform to display the available credentials and/or
- holders for user selection.
+ [=holders=] for user selection.
Resolves the interaction's {{Promise}} with the selected [=digital
- credential=] or rejects it to indicate cancellation.
+ credential=] or [=rejects=] it to indicate that the credential request was aborted.
Resolves the interaction's {{Promise}} with the selected [=digital
- credential=] or [=rejects=] it to indicate that the credential request was aborted.
+ credential=] or [=rejects=] it to indicate that the credential request
+ was aborted.
The [=credential request coordinator=]:
@@ -589,7 +589,7 @@
[=holders=] for user selection.
Resolves the interaction's {{Promise}} with the selected [=digital
- credential=] or [=rejects=] it to indicate that the credential request
+ credential=] or [=rejects=] it to indicate that the [=credential request=]
was aborted.
@@ -621,7 +621,7 @@
"requesting":
- A credential request is in progress and the user interface is
+ A [=credential request=] is in progress and the user interface is
presented.
Requests the platform to display the available credentials and/or
[=holders=] for user selection.
-
Resolves the interaction's {{Promise}} with the selected [=digital
+
[=Resolves=] the interaction's {{Promise}} with the selected [=digital
credential=] or [=rejects=] it to indicate that the [=credential request=]
was aborted.
Validates and transforms presentation or issuance inputs and outputs.
-
Requests the platform to display the available credentials and/or
- [=holders=] for user selection.
+
Requests the platform to display, for user selection, the credentials that are available for the current request and/or the holders that possess such credentials.
+ The availability of credentials and holders is determined by matching the request parameters, user consent, and platform policy.
[=Resolves=] the interaction's {{Promise}} with the selected [=digital
credential=] or [=rejects=] it to indicate that the [=credential request=]
From f966b7ce9286500eaa0f4000a3441084e9dd494a Mon Sep 17 00:00:00 2001
From: Mohamed Amir Yosef
Date: Thu, 9 Oct 2025 08:57:44 +0200
Subject: [PATCH 14/19] Update index.html
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Co-authored-by: Marcos Cáceres
---
index.html | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/index.html b/index.html
index 24eadc19..8126f185 100644
--- a/index.html
+++ b/index.html
@@ -597,7 +597,7 @@
Although the coordinator handles input/output coordination, it is the
responsibility of the platform together with available [=holders=], to
- present the [=credential chooser=].
+ present the UI that allows the user to choose a [=digital credential=].
Validates and transforms presentation or issuance inputs and outputs.
-
Requests the platform to display, for user selection, the credentials that are available for the current request and/or the holders that possess such credentials.
+
Requests the platform to display, for user selection, the credentials that are available for the current request and/or the holders that can handle the current request.
The availability of credentials and holders is determined by matching the request parameters, user consent, and platform policy.
[=Resolves=] the interaction's {{Promise}} with the selected [=digital
From ca1ff8bf908f8004eb793364df2dcd16f598719f Mon Sep 17 00:00:00 2001
From: Marcos Caceres
Date: Thu, 9 Oct 2025 14:59:25 +0800
Subject: [PATCH 16/19] tidy
---
index.html | 13 ++++++++-----
1 file changed, 8 insertions(+), 5 deletions(-)
diff --git a/index.html b/index.html
index 1c3c9778..aa80c5b7 100644
--- a/index.html
+++ b/index.html
@@ -585,12 +585,15 @@
Validates and transforms presentation or issuance inputs and outputs.
-
Requests the platform to display, for user selection, the credentials that are available for the current request and/or the holders that can handle the current request.
- The availability of credentials and holders is determined by matching the request parameters, user consent, and platform policy.
+
Requests the platform to display, for user selection, the credentials
+ that are available for the current request and/or the holders that can
+ handle the current request. The availability of credentials and holders
+ is determined by matching the request parameters, user consent, and
+ platform policy.
-
[=Resolves=] the interaction's {{Promise}} with the selected [=digital
- credential=] or [=rejects=] it to indicate that the [=credential request=]
- was aborted.
+
[=Resolves=] the interaction's {{Promise}} with the selected
+ [=digital credential=] or [=rejects=] it to indicate that the
+ [=credential request=] was aborted.
- Is either a [=digital credential/presentation request=] or [=digital
+ Is either a [=digital credential/presentation request=] or an [=digital
credential/issuance request=].
From 7e40c9c2471f7f6fb0a8768a8fbe3f0393337eff Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Marcos=20C=C3=A1ceres?=
Date: Fri, 10 Oct 2025 05:47:12 +0800
Subject: [PATCH 18/19] Apply suggestions from code review
Co-authored-by: Tim Cappalli
Co-authored-by: Mohamed Amir Yosef
---
index.html | 16 +++++++---------
1 file changed, 7 insertions(+), 9 deletions(-)
diff --git a/index.html b/index.html
index c7faa1b2..87492c12 100644
--- a/index.html
+++ b/index.html
@@ -489,7 +489,7 @@
Credential request
- Is either a [=digital credential/presentation request=] or an [=digital
+ A [=digital credential/presentation request=] or an [=digital
credential/issuance request=].
@@ -547,7 +547,7 @@
identifier=]. See also section [[[#protocol-registry]]].
- Digital credential coordinator
+ Request coordinator
See [=credential request coordinator=].
@@ -576,7 +576,7 @@
The coordinator manages the lifecycle of the interaction's {{Promise}}
and its associated {{AbortSignal}} (if any), including resolution with
- the user's selected [=digital credential=] or rejection due to errors or
+ the user's selected [=digital credential=], the [=holder=]'s response or rejection due to errors or
the user or program aborting the [=credential request=].
@@ -592,7 +592,7 @@
platform policy.
[=Resolves=] the interaction's {{Promise}} with the selected
- [=digital credential=] or [=rejects=] it to indicate that the
+ [=digital credential=]. [=holder=]'s response or [=rejects=] it to indicate that the
[=credential request=] was aborted.
@@ -600,7 +600,7 @@
Although the coordinator handles input/output coordination, it is the
responsibility of the platform together with available [=holders=], to
- present the UI that allows the user to choose a [=digital credential=].
+ present the UI that allows the user to choose a [=digital credential=] and/or a [=holder].
@@ -609,16 +609,14 @@
The [=credential request coordinator=] has a finite set of
interaction
- states, which are used to manage the lifecycle of a [=digital
- credential/presentation request=] or [=digital credential/issuance
- request=]:
+ states, which are used to manage the lifecycle of a [=credential request=]:
"idle":
- No credential request is currently in progress.
+ No [=credential request=] is currently in progress.
The coordinator manages the lifecycle of the interaction's {{Promise}}
and its associated {{AbortSignal}} (if any), including resolution with
- the user's selected [=digital credential=], the [=holder=]'s response or rejection due to errors or
+ the user's selected [=digital credential=], the [=holder=]'s response, or rejection due to errors or
the user or program aborting the [=credential request=].
@@ -591,9 +591,7 @@
is determined by matching the request parameters, user consent, and
platform policy.
-
[=Resolves=] the interaction's {{Promise}} with the selected
- [=digital credential=]. [=holder=]'s response or [=rejects=] it to indicate that the
- [=credential request=] was aborted.
+
[=Resolves=] the interaction's {{Promise}} with the selected [=digital credential=] or [=holder=]'s response, or [=rejects=] it to indicate that the [=credential request=] was aborted.