[MINUTES] VC API 2025-04-22

VC API Community Group Meeting Summary - 2025/04/22

*Topics Covered:*

   - *Community Updates:* The W3C vote for Verifiable Credentials 2.0
   specifications concluded successfully. Incubation promotion calls are
   ongoing, considering VC API for standards track.
   - *PR 473: Interactions and Initiating Interactions:* This was the main
   focus, addressing protocol agnostic interactions, verifier-initiated QR
   code generation, clarifying diagrams for different interaction flows
   (issuer/verifier initiated vs. holder initiated), and specifying protocol
   selection. Discussions centered around the website interaction protocol
   (redirecting to a website for further interaction) and the VC API
   interaction protocol (standard VC API exchange). Specific details on JSON
   schema for response formats were noted as needing further attention.
   - *Protocol OIDs:* Discussion regarding the casing of OIDs (lowercase
   preferred) and whether to include examples for both OID4 VP and OID4 BCI
   (decided against the latter for clarity).
   - *Issue #434:* This issue, concerning exchange information, expires and
   TTL (time-to-live) updates, was deemed fully addressed and ready for
   closure, pending a PR to implement the changes.
   - *Open Issues:* A review of the remaining 40 open issues identified
   that most were awaiting PR submissions.

*Key Points:*

   - PR 473 is nearing completion, pending minor corrections to diagrams
   and a few specification details.
   - The website interaction protocol aims to smoothly redirect users to a
   website for continued interaction, illustrated by a retail checkout
   scenario.
   - The VC API interaction protocol leverages the standard VC API exchange.
   - The use of XML schema date/time (with time zone) was reaffirmed for
   its time zone specificity, overcoming past challenges.
   - Future meetings will be contingent on PR submissions; no meeting if no
   new PRs are submitted by early next week.

Text: https://meet.w3c-ccg.org/archives/w3c-ccg-vc-api-2025-04-22.md

Video: https://meet.w3c-ccg.org/archives/w3c-ccg-vc-api-2025-04-22.mp4
*VC API - 2025/04/22 14:58 EDT - Transcript* *Attendees*

Dave Longley, Eddie Dennis, Joe Andrieu, John's Notetaker, Kayode Ezike,
Manu Sporny, Parth Bhatt, Ted Thibodeau Jr
*Transcript*

Manu Sporny: All right, let's get started. welcome everyone. This is the
verifiable credential API call. it is April 22nd, 2025. we do have an
agenda for today and that is largely to close out the presentation and
discussion around PR 473 interactions. we will go through the remaining
protocols. We didn't get through all of them last week. and then see if
we've got consensus to merge or we're close. and then we'll just go over
our standard issue processing and pull request processing and item
assignments. are there any other changes or updates to the agenda?

Manu Sporny: anything else that we want to cover today? All with that,
let's go into any community updates, any news of interest. I have one item
and that it looks like the W3C vote for verifiable credentials 20 all the
specifications went really well. Voting closed last week. we're in good
shape. I can't share much because that's still kind of a member vote thing,
but we're in good shape.

Manu Sporny: okay. So, I don't know if there's anything else that folks
wanted to cover, community newswise. All right. I guess I'll also note that
in the incubation promotion calls, those happen every Wednesday at 11 a.m.
those are contemplating the VC API as one of the items that goes onto the
standards track in the verifiable credential working group. So we've got
our work cut out for us here.

Manu Sporny: we need to close out these 40 plus, pending items ideally. we
don't have to, but it would be good for us to do that. So, as many as we
can get to would be good. Okay, let's jump into our main agenda item. and
that is continuing to look at PR 473 which is interactions and initiating
interactions. this let me go ahead and pull up the preview, largely covers
a new part of the specification, section 3.12 around initiating
interactions, the code response format, and then two protocol interaction
protocols that we're defining here.
00:05:00

Manu Sporny: we went over a number of these sections last week, but since
last week, there are a number of items that people raised. Thank you. there
are now kind of updates to the PR to address those items. I'll go through
some of them today and then we'll finish off with talking about the website
interaction protocol and the BC API interaction protocol. so I'll just
start at the top here and keep going down the list. the first edition is
that Eric last week noted that interactions this whole protocol thing is In
fact, it's not even specific to verifiable credentials or digital
credentials.

Manu Sporny: It could be, Any two systems that want to start communicating
with each other, you can use this mechanism to bootstrap. And so there's a
new note that points out that these interactions are application use case
and protocol agnostic. they're communication medium agnostic. and hopefully
that addresses Eric's concern. the next update is Dave Longley, you
mentioned that it would be nice to see kind of the verifier generating the
QR code instead of the holder. What we the last week we had this thing
where the holder is the one that generates the QR code and instructs the
verifier to interact with them.

Manu Sporny: but the other approach is a verifier or an issuer would
generate the QR code displayed on screen and the holder would use their
wallet or app to interact and that's what this top flow is about. go ahead
Dave.

Dave Longley: The one thing I would mention is I could imagine someone read
reading the spec only seeing a verifier only seeing the two out of the
three parties playing the role of generating the interaction I don't know
if it's worth it to have an entire other diagram that just says issuer
coordinator or if we want to say an issuer or verifier and…

Manu Sporny: Yeah, we should probably just Yeah,…

Dave Longley: put it in a single thing.

Manu Sporny: I think let's just change this to a sure verifier coordinator
and be done with that. I'm hesitant to put in another diagram that looks
exactly the same except for a change here, right? Okay.

Dave Longley: Yeah. I'll make a suggestion

Manu Sporny: All So, let's go ahead and put that in. If you don't mind,
what? the diagram is text in here. It's a sequence diagram. You could just
make a change suggestion on Thank So for this diagram, it's pretty standard
or straightforward. the diagram's more involved because they're more kind
of things that are involved meaning you've got a browser involved with this
where the holder clicks share credential in the browser which is what
coordinates a verifier coordinator website which then generates a QR code
and shows it on the website which the person then potentially pulls

Manu Sporny: out their mobile phone and scans the QR code. which then makes
the wallet get the available interaction protocols and then gets consent
from the holder at some point that there is an entity verif the issuer is
requesting credentials or wants to issue credentials or something. The
wallet then selects the appropriate protocol and then Joe this is your
request from last week where you said hey it's also down here where there
are these optional protocol selection that's made and then a specific
protocol is used to kick off the flow.

Manu Sporny: So I think that captures what we wanted to capture last week.
Modulo what Dave just mentioned which will go in as a change request. Any
other questions concerns about this? I know Coyote you were asking some
questions around these diagrams. I think this does what you also asked for
Coyote which is to show the website initiated interaction
00:10:00

Kayode Ezike: Yeah, I think what I was saying was related I think David
addressed it when it was talking about basically what it might look like
for the selection to happen but basically what a visual an example one of
these sites might look like. but I think this also kind of makes that clear
and he mentioned he gave where he said that there could be some decision
making that happens automatically from that site that reduces the amount of
control or…

Kayode Ezike: the amount of decision overhead that the user would have to
make. So that verification was useful.

Manu Sporny: Mhm. Okay.

Kayode Ezike: I don't know if it needs to go in here per se, but yeah, I
think this is good, though.

Manu Sporny: If there is something, yeah, I'm hesitating on the should we
show a picture of what this could look like to the user. usually specs
don't do that, but it's always nice to document stuff like that. in any
case, I think we could maybe put that in another future if you want to
raise an issue on it. yeah. Okay.

Manu Sporny: So that item and then this one is just the diagram we saw last
week but with the modification Joe that you asked for which is make it
clear that this is kind of selecting the protocol and doing a specific
protocol the website protocol is an optional thing. go ahead Dave.

Dave Longley: While looking at the other diagram trying to make suggestions
I'll note that a number of the things in the flow here are based on sharing
a credential not receiving one.

Dave Longley: So I don't know if maybe we do want a third diagram. So I
could try to inline suggest a third diagram.

Manu Sporny: Mhm. …

Manu Sporny: if you don't…

Manu Sporny: if Yeah,…

Dave Longley: We got out.

Manu Sporny: if you want. yeah, So they would cover issuance verification
and then verifier initiated verification and then holder initiated
verification which I think is fine. I mean hopefully these are fairly
generalized things. All right. Okay. So, that. And then I mentioned this is
Joe. I think the change you wanted here with the little dash line optional
protocoly thing. I think those got some changes.

Manu Sporny: Why aren't right. The QR code's just not going to show up on
the preview, but I think that didn't change much. I went back and looked at
Dave, you had had a suggestion around or you were like, I don't think it's
I checked it's API all lowercase altogether. I did also check that OID4 VP
is all caps and OID4 VC is all caps. I'm wondering if we could just say
make it all lowercase for everything and then we can just put something
that's case insensitive or we can say it's case insensitive.

Manu Sporny: I'm a bit hesitant to say it's case insensitive.

Dave Longley: I think we can leave the spec like this and…

Dave Longley: if we need to change it back we can…

Dave Longley: but hopefully implementations can just handle Awesome.

Manu Sporny: Okay.

Manu Sporny: I don't know if we wanted to say anything about it. I think
I'd rather not say something about it. because it's kind of weird to say,
these things should be match case insensitively, but you usually don't do
that for JSON. I'm just going to kind of leave it as is. They're lowercase
altogether. And that's kind of the design pattern we have. And then if
people want to do something fancier with their implementations, they can do
that. all right. So that is that one. This was also added longly based on
your request on how to map things to exchange URLs quick, easily.

Manu Sporny: let's I think that's it. all right. So, let's get into the
thing that we did not get into last week, which is the specific interaction
protocols and what the responses look like. basically so you do all this
bouncing back and forth until you select a protocol and then after that
everything after that point is kind of protocol specific.
00:15:00

Manu Sporny: So this one uses the VC API protocol and this one uses the
website in the requests and responses are protocol specific and that's what
these sections do is they give you the specific thing that happens. So for
the website interaction protocol if we remember the purpose of this is to
push the receiving party to a website where you will interact with them
further.

Manu Sporny: and so basically this is imagine let's take a retail use case
for example. You've got, a customer that has filled their basket up with a
bunch of stuff they want to buy and they want to check out. And you've got
a point of sale and a clerk, at the point of sale. what the customer does
is they go to their digital wallet and they click the checkout button. that
will generate a QR code and then they show that to the clerk who then scans
it. When the customer looks back at their phone, a bunch of stuff a
communication will have happened between the point of sale and their phone
in the background and their phone will say, "Hey, this store wants to send
you to their website. Are you okay with going there?" Right?

Manu Sporny: And if they click okay, then they're pushed to the retailer's
website where they will see their shopping, cart being filled up with items
as the clerk is checking them out. So, this is called a customer. Your
phone becomes what's called a customer display unit in the retail space.
it's like a point of sale, but it's your phone and it's showing you the
stuff that's in your basket. along with prices, discounts, that kind of
stuff. and there at that point once you're on the website, you can interact
in a whole bunch of other different ways. Chappie, the digital credential
API, some proprietary thing that the retailer has for an app on your phone.
there's all kinds of different stuff, but the main thing with the website
protocol is to just get the customer to a website and that's it.

Manu Sporny: And then once you're on that website, a whole bunch of other
things can happen at that point. But the only message that point of sale
needs to send to your digital wallet is this message which is the URL that
your wallet should open a browser session to. So basically open up this URL
in a browser why you are asking the customer to open up that URL and then a
reference ID for the particular transaction for debugging purposes whatever
right there can be other stuff in this message but those are the core parts
of it I just noticed that we don't specify the specific post data in here
and we probably

Manu Sporny: we should probably specify exactly what's expected the JSON
schema for what's expected here but that's it any questions on the website
interaction protocol so basically point of sale system would post this to
the customer's digital wallet and then the customer's digital wallet is
like hey Shopco wants to send you to their website for this purpose to
check out are you okay with that

Manu Sporny: And if they click browser session and they get redirected.
hopefully that's pretty straightforward. It's meant to go ahead, Coyote.
Bluetooth.

Kayode Ezike: Sorry, just really quickly. So you say post it to the wallet
service. if it's not a backend wallet, one that has a backend per se, would
it just basically return this to the wallet directly through whatever
mechanism that is agreed upon?

Manu Sporny: Yep. Mhm. Yeah. I mean,…

Kayode Ezike: Okay.

Manu Sporny: it could send it, in theory, we haven't fully speced that out,
but yeah, I mean, all of this could be posted back over a Bluetooth
connection and the URL could be a Bluetooth URL, but then it gets a little
dicey because it's kind of like and then how do you trust if it gives you a
Bluetooth URL?
00:20:00

Manu Sporny: How do you know it's someone that's not, nearby that is that
true? How do you know it wasn't someone that was looking over your shoulder?

Manu Sporny: It would be pretty hard to pull off the attack, but you could
do it and they could send you somewhere else.

Dave Longley: What matters is once you establish a channel,…

Dave Longley: you can if you're using the VC API protocol over that
channel,…

Dave Longley: you can transmit messages to increase your trust. So, they
could present verifiable credentials over that channel.

Manu Sporny: Yep. …

Manu Sporny: the retailer could basically be like, "Here's my Shopco
credential. It's issued by, the National Retail Federation, and they, are
proving that I am who I say I am."

Kayode Ezike: Yeah, true. Yeah, I guess I'm realizing as we were discussing
that the key distinction between the VC API examples we've used in the past
is that it was same device and…

Kayode Ezike: so the chat stuff was the clear way to do that kind of a
thing. But in this case there is a cross device flow. So yeah, thanks for
clarifying.

Manu Sporny: Mhm. Yep,…

Manu Sporny: that's all right. So, that's 312 4. And then the VC API thing
should look very familiar to us in this group, which is let me go back up
here. So, This is our kind of shopping use case. So, the holder generates a
QR code, shows it to the Verifier selects Oops, sorry, that's the wrong
one. no, it's this one. which is where the verifier kind of, generated it.

Manu Sporny: down here when the wallet selects the appropriate protocol it
will then contact the verifier coordinator and that will be the start of
initiating participating in exchange. So it literally will just fall into
this flow here where they post to initiate, they send a VP, they get back a
VP. and so the VC API can do the initiating party can send a verifiable
presentation request or they can send an empty message which then the other
side can send back a verifiable presentation request.

Manu Sporny: And this is just, bog standard VC API at this point. It's just
an ex a standard VC API exchange at this point. Okay, I think that is the
entirety of the PR is that Any other questions, concerns, comments on any
of that? I guess the only other question I have is do we want to put an
OID4 example in here? We do up. So where do we do it?

Dave Longley: I believe we have an OID for VP.

Manu Sporny: Here. Yeah.

Dave Longley: Yep. Example.

Manu Sporny: So we have that there. Do we want to put OID4 VP and OID4 BCI
as two other interaction protocols here? We just want to keep it.

Dave Longley: Let's just keep it. I don't think we need to put both. if we
find that we do,…

Manu Sporny: Mhm.

Dave Longley: people might also get confused if you put both of them in the
same protocol message since and there's an expectation that if you're
receiving a credential, it's just going to be oid for VCI.

Manu Sporny: I think that is it then. any other questions or concerns? All
right. So, if there are none, I'm not going to merge this today because I
think Dave, you had another thing that you in.

Dave Longley: Yeah, I put the suggestion in there.

Manu Sporny: And then Ted's got a question there. I'm going to come back to
that, Ted. And then there's this one. Okay. I think we've addressed all of
those. Dave, are you pretty confident that the sequence diagram is right or…

Manu Sporny: do you want to merge …

Dave Longley: If we put it on the screen,…

Dave Longley: we can find out.

Manu Sporny: how do we do that? I think I can.

Dave Longley: It should autogenerate a preview.

Manu Sporny: Yeah. add sequence diagram for is So while that is crunching
Ted you asked a question each step can involve the issuance and
verification transmission presentation
00:25:00

Dave Longley: Yeah, I think that's fair.

Ted Thibodeau Jr: Right. The question is,…

Dave Longley: Go ahead.

Ted Thibodeau Jr: you're probably going to say what I'm going to say. the
question is whether each step is atomically one of these interactions or
can involve multiple

Dave Longley: Yeah, current implementations would allow you to present and…

Dave Longley: then be issued something in a single step.

Manu Sporny: Clarify that steps one or…

Manu Sporny: more than one can involve action I guess. All right.'s that.
And with that, let's go look to see if it regenerated. Yeah, it's linting
now. So, if I go up here in theory and I repreview

Manu Sporny: and go down over here. Holder veri So, this is a no. I'll fix
it up. there's some Yeah.

Dave Longley: Did it just say there's just a random box.

Manu Sporny: Yeah, That's fine. I'll take a look at it and fix it issue
generating interaction using car shared with the holder and proceeding with
the VC API protocol. Yeah, some of these are a little out of order. I'll
take a look at it and fix it up. Okay, so we won't merge this.

Dave Longley: Yeah, I had to move, just to be clear, I had to move the
consent for issuance and I just moved the steps. I didn't think it would
break the diagram. because the consent for issuance happens after you start
the workflow and…

Dave Longley: you're presented with credentials. So the consent then says
do you want to accept the credentials?

Manu Sporny: Right. Yep.

Manu Sporny: Yep. Understood. I'll make sure that that's in there. I think
we're pretty much ready to merge this once that those syntax things are
fixed. all right. Anything else on that before we go to the Next one is one
you raised coyote. and I did a couple of review or…

Manu Sporny: did a couple of minor knits but should be okay.

Kayode Ezike: Yeah, I addressed two of them.

Kayode Ezike: The one that basically were recommending to switch from ISO
A601 to XML schema daytime. The one that I didn't address yet cuz you asked
a question which I think you touched just earlier on this call about what
the official name for the family of protocols is. I generally just say
I4star family of protocols but yeah I can add family there to make it clear…

Kayode Ezike: but sure any opinions.

Manu Sporny: I don't Yeah,…

Manu Sporny: I don't have a strong feeling one way or the other. I was just
kind of openly wondering if there was a name. does anyone have any strong
feelings?

Kayode Ezike: Yeah. Hello.

Manu Sporny: Otherwise, it's fine to not accept this and move forward. All
right. No strong feelings. Let's just merge it. let's see. let me go ahead
and just how do I I'll just have this change. Leaving it as is. Okay.

Manu Sporny: I think we're good to go. Time. And just to double check, we
are doing XML schema date timestamp because ISO8601 doesn't require time
zone which gives you date times where you have no idea where the time zone
is. And so we use XML schema date time to enforce that there's a time zone
on there. And why did we do daytime stamp? maybe it's daytime stamp that
requires the Both 8601 and XML schema datetime don't require you to put a
time zone on there.
00:30:00

Manu Sporny: And so we were like, "No, always put a time zone so where the
time's anchored." that was after three years of pain in the VC working
group trying to get to where we needed to get to on that. All right. I
think we're good. Yeah, I already approved it. so let's go ahead and merge
this puppy.

Manu Sporny: Thank you, e, for the change. It's approved. And then many All
So, let's clean base and Excellent. Thank you, Coyote, for the All right.
we have about 20ish minutes left. We don't have any new issues, which is
good. I should have closed that. I think Did we fully address 434?

Kayode Ezike: Yeah, 434 had a lot of stuff in there. but yeah, it should
have all been addressed.

Manu Sporny: So, PR needs to be raised that adds, expires, and removes TTL.

Joe Andrieu: Goodbye.

Kayode Ezike: Yeah, it used to be exchange information if you scroll up.
that was removed basically just Yeah, there's a number of different things
that were mentioned in this.

Manu Sporny: Do we?

Manu Sporny: But I guess do we want to change this? Hold on. Let's say you
made all the changes that we needed to, right, Cody?

Manu Sporny: I think we can close this then. 74. What's Okay, All right, we
now only have 40 issues left. let's take a look at these issues. I don't
know if there's really much I think everything that's an open issue we've
already talked about before and so we're really just waiting for PRs. which
is fine,…

Joe Andrieu: Thank you.

Manu Sporny: but there's not much to talk about until we get PRs in. are
there any specific issues folks wanted to talk about? If not, I think we're
good for today. Meaning we don't need to extend the call any further than
we need. Are there any other items or any other business folks wanted to
discuss today? Okay.

Manu Sporny: With that we'll end the call and…

Joe Andrieu: All right.

Manu Sporny: then we will have another call next week if we have PRs and if
we don't have PRs we will not have a call. so try to get PRs raised by the
end of the week or at least next Monday and then if If we don't have PRs we
won't have a call. All right. I think that's it for today. thank you
everyone. have a wonderful rest of your day and we will maybe chat again
next week. Take care. Bye.
Meeting ended after 00:35:03 👋

*This editable transcript was computer generated and might contain errors.
People can also change the text after it was created.*

Received on Tuesday, 22 April 2025 22:15:11 UTC