[MINUTES] VC API 2025-07-29

VC API Community Group Meeting Summary - 2025/07/29

*Attendees:* Dave Longley, Eric Schuh, Joe Andrieu, John's Notetaker,
Kayode Ezike, Manu Sporny, Parth Bhatt

*Topics Covered:*

   1.

   *Badge Summit Report (Kayode Ezike):* Kayode reported on his experience
   at the Badge Summit, highlighting a "petting zoo" event demonstrating VC
   claiming and interoperability. A key discussion point revolved around the
   lack of clear guidance in the specification for same-device claiming using
   deep links, prompting a suggestion to raise an issue for further discussion
   and potential specification updates. The use of deep links within the
   protocols endpoint was also noted.
   2.

   *Pull Request Review:* The majority of the meeting focused on reviewing
   several pull requests:
   -

      *PR: Specifying Presentation Schema:* Discussion centered on whether
      to restrict the presentation schema to JSON Schema or allow for other
      schema types. The consensus leaned towards specifying JSON Schema
      concretely while allowing for future expansion with other schema types,
      requiring a clear description of how to use JSON Schema and leaving other
      options open for future standardization.
      -

      *PR: Add proof chain and set documentation to credential issuance:* A
      rebase issue was resolved by agreeing to separate commits for clarity and
      proper attribution of changes.
      -

      *PR: Update proof description and add proof ID and previous proof
      properties:* This PR was revised to remove the addition of proofID
      and previousProof properties, acknowledging the lack of implementer
      feedback on these features. Only the proof description update will be
      retained.
      -

      *PR: Clarify Open ID values:* The team requires a complete example of
      an authorization request to finalize this PR.
      3.

   *Upcoming Meeting:* The next meeting will continue the pull request
   review process, with Eric Schuh committing to work on several PRs.

*Key Points:*

   - The Badge Summit provided valuable insights into real-world VC usage
   and interoperability challenges.
   - The need for improved clarity and examples in the VC API specification
   was highlighted multiple times.
   - Maintaining proper attribution of changes in the specification through
   Git commits is crucial.
   - A pragmatic approach was adopted for handling schema types in the
   specification, prioritizing concrete implementation over premature
   generalization.
   - The group prioritized existing implementations and interoperability
   before adding new, potentially complex features.

Text: https://meet.w3c-ccg.org/archives/w3c-ccg-vc-api-2025-07-29.md

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

Dave Longley, Eric Schuh, Joe Andrieu, John's Notetaker, Kayode Ezike, Manu
Sporny, Parth Bhatt
*Transcript*

Joe Andrieu: Hey Sorry, I just got a big laugh in my email. we have a
presentation due next week for the no phone home and I think we all forgot
about it.

Manu Sporny: I saw it on the calendar. Was looking forward to it.

Joe Andrieu: Yeah, it'll be exciting. we just have to actually prepare
something.

Manu Sporny: Yeah. Yeah. good thing you have a lot of content to pull from,…

Joe Andrieu: Yeah, it shouldn't be hard.

Manu Sporny: least conceptually. Yeah. we'll get started in a minute. I
unfortunately have to drop at 25 past the hour, so this is going to be a
pretty short call today. I think we're going to focus mostly on poll
requests. so yeah, we've got four PRs that we need to kind of Go ahead.
Clarity.

Kayode Ezike: Yeah, I also have just took a few questions I'd like to ask
at some point.

Manu Sporny: Sure thing.

Kayode Ezike: I didn't know if they merited issues per se, but just wanted
to have a chance to ask them on the call.

Manu Sporny: Let's let me make sure. Oops. All right, let's go ahead and
get started. so the agenda today is largely just pull request processing.

Manu Sporny: As I noted, I've got to go halfway through the hour. so we're
probably only be going to be able to get to pull requests today. any other
kind of community updates before we get started? Coyote, I think you were
at the badge summit last week.

Kayode Ezike: Yeah.

Manu Sporny: I don't know if you wanted to report out on anything that
happened there with VCs or VC API or anything like that.

Kayode Ezike: Yeah, I was there. so I admittedly missed the first couple
days. I had to do some debugging of some things, but the final day was
interesting because it's my first batch summit I've ever been to. So, I'll
start with that. But this was also their first time doing a particular
event that they called L petting zoo. Basically this new branding that
they're doing where they wanted to basically demonstrate to folks what it
looks like to claim VCs and to demonstrate interoperability.

Kayode Ezike: it very much in the same spirit as jobs for the future
plugfest type of thing but also unnecessarily it could also just be a
provider demonstrating the ability to acquire credentials from their own
systems and so I think what you were saying so there was a post a comment
that I made in the playground channel. I wanted to see if we could kind of
use the playground to demonstrate some of that stuff. ended up not using it
too much, but it worked the way that I needed to whenever I did use it, but
I did try to socialize it a little bit with it with a few folks from ASU as
well as DCC.

Kayode Ezike: There was one comment that received at one point that was
interesting that I had to think a little bit about, but basically there was
one practitioner who kind of was hesitant to they were familiar with it.
They were aware of it, but they were hesitant to introduce it because it
wasn't clear how to claim on the same device because it's very like code. I
guess my thinking after that meeting was that I mean it's just like you can
always add the claim through chy or whatever interf mechanism you want to
on top of that. It doesn't prevent that.
00:05:00

Kayode Ezike: It's just that I guess it doesn't like the spec for the
interaction stuff doesn't necessarily I think call out how that might
happen and maybe that's something that people are wanting to see. But that
was an interesting data point that I got back from that conversation. But
yeah, all in I thought it was a great event. I think that people are
starting to see, different examples of what it looks like to interact with,
like I said, the arts, VCs, etc.

Manu Sporny: Yeah, that's a good comment about BC Playground. Yeah, I mean,
you can use Chappie. and in fact, that's what we do. there's also potential
to use the DC I don't know if the current version of DC API supports any
other protocol …

Manu Sporny: other than Open ID. but that could also be meaning that could
be used same device as well.

Kayode Ezike: Yeah, I think it was more so the actual interactions like
that new spec that or…

Kayode Ezike: I guess subspec that was kind of defined maybe a month or two
ago. I think for some reason there was the expectation that there would be
some language around how to use that in combination with a same device flow
because it is QRentric but maybe the answer to that is that it's more so
just supposed to demonstrate the cross device and…

Kayode Ezike: you're supposed to use the other mechanisms on top of that if
you need to do same device. yeah.

Manu Sporny: Interesting. Yeah.

Manu Sporny: Yeah, that's interesting. I don't know if we've I'm pulling
the playground up now. so they were expecting is this the thing that they
were expecting?

Manu Sporny: Hold on. Let me no. uses chappie. this one,…

Kayode Ezike: So I guess maybe it's actually to pull it up…

Kayode Ezike: who would Yeah.

Manu Sporny: Yeah, it's this thing, right?

Kayode Ezike: So maybe a little bit more context could help too.

Manu Sporny: Help me.

Kayode Ezike: So the folks that I was speaking to actually both the people
I mentioned they have a flow it's like a lot of them have a deep link flow
right where basically using the kers that they currently use or the links
they currently use are deep links to the applications and I think I was
trying to socialize the idea of also being able to support something like
this where you can sure you would still have to have a camera that's
cognizant of what this URL format means and you can't just do it
necessarily directly from any camera app with a caveat but I think that's
like the context that's important to mention and then from there I think
there was a discussion about…

Kayode Ezike: how do we actually enable with that flow like a same device
delivery

Manu Sporny: Okay.

Manu Sporny: Interesting. trying to think if we should raise an issue on
that or not, Cody, because it's currently out of scope right now, what the
protocols URL provides back and how you convey the protocols URL is kind of
out of scope. I think it's worth probably raising an issue coyote so we can
at least talk about it to figure out which spec it should land in like that
explanation.

Kayode Ezike: Yeah, I'll take this back to guy that I was speaking with and
see what if he can also give a little bit more light to…

Kayode Ezike: what he would hope to see from this sort of port flow.

Manu Sporny: Okay, sounds good.

Manu Sporny: Go ahead, Dave.

Dave Longley: Yeah, I just want to say I mean if you're looking for a deep
link those are necessarily specific to the origin that you're communicating
with. A pattern could be devised where you could say if you want to make a
deep link it looks like this and this query variable will take the
interaction URL and then that way when you click on it it should presumably
open the right app or take you to a website that the app provider has
implemented and transmit the interaction URL as a query parameter to that
link.
00:10:00

Dave Longley: So, we could suggest that as a pattern, but that's really
only going to work if what wallet or client the user has or you've got some
list of them and that gets back to maybe you should be using Shopee for
those situations and in that situation if you are then the protocols are
that link is communicated to you over Shopee to whatever deep link you've
installed.

Kayode Ezike: Yeah, that makes sorry I know we have a bunch of other
things, but other thing I wanted to add that kind of relates to what Dave
said too is I noticed an interesting pattern that one issue our developer
implemented which is I know at the moment the protocols endpoint is in some
ways I mean it's specified to a degree but I think there's some flexibility
in what you can put in there.

Kayode Ezike: I think I've seen an implementation where they actually
provide in addition to BTPI for V star etc. there's the deep links for
different issuers that they might also support as well. I've seen that
space be carved out for that sort of a interaction.

Kayode Ezike: I'm not sure if that's in line with the vision for what the
protocols object was going to be for, but it's just something I'm starting
to notice.

Manu Sporny: it is I mean we support any arbitrary protocol being put into
the protocols thing right we don't have a pattern on…

Manu Sporny: how exactly you do proprietary things in there…

Manu Sporny: but we know that no matter what we do they're going to be
companies that have their own proprietary protocols that they want to run
and So, we providing a mechanism for them to advertise that if the other
side wants to use it, but of course, they'll also be the open protocols
that they could use so, Good.

Kayode Ezike: So those are my observations geneneralally.

Kayode Ezike: But yeah, overall I thought it was a pretty neat event and I
think these folks are aware of what's going on in this community to a
degree.

Manu Sporny: great. Thank you for all the work that you did on your demos,
Coyote, to kind of share the news and information on the stuff that we're
working in the CCG and beyond. All right. let's jump into poll requests
real quick. I think we've got about 10 minutes, so we might run through
these pretty quickly. the first PR was this ability to specify the
presentation schema to the workflow step. I think I did a bunch of changes.
but I don't know what to do at this point.

Manu Sporny: So the previously we had specified concretely the type being
JSON schema and the schema being expressed in the JSON schema property. we
got some feedback where people were like why are we making this so specific
to JSON schema? Don't we really mean any schema? So a PR was put in. I
think Longley you said this is specifically for JSON schema we can do other
things Ted said yes but for those other things we need to define something
and so I'm kind of stuck right now on what the PR should do.

Manu Sporny: we can be concrete and say this is just for JSON schema. Other
mechanisms we can create a more generic interface where the type is JSON s
The schema is a JSON schema thing. But say that other things could be used
for type, but we don't define what they are just yet. go ahead Dave.

Dave Longley: I think we do something not quite exactly what you just said,
but the JSON schema for this the open API stuff should have a list that
says any of and one of them is …

Manu Sporny:

Dave Longley: where the type is JSON schema and it will have the property
JSON schema and we will just have one entry in that array in any of array
until there's anyone who wants to interoperate on any other type of schema.
So what we're saying is when you specify the schema type a required
property is type but for anything more than that all of the properties
match whatever the type is if that makes sense.

Manu Sporny: So add rules to the JSON schema so that they match concretely
on the following type JSON JSON schema and then JSON schema string I know
I'll figure out later. on the following…
00:15:00

Manu Sporny: but also allow in any of match that does the following. I
don't know if this is even the right thing to do.

Dave Longley: Yeah, this is more like we're clearly and…

Dave Longley: we probably want text too. we're clearly saying you can put
whatever schema you want in here. If you use JSON schema, it has to look
like this. No other but we don't specify anything else because we don't
have anyone else saying how to interoperate on any other schema. So this is
our one concrete mechanism that we will specify in the group so far for…

Dave Longley: what you can use. Here's how you do it. Sure you can put
something else in there. It'll be non-standard currently.

Manu Sporny: And…

Manu Sporny: then do we want to do something like this?

Dave Longley: No, because I't know. We don't even know…

Manu Sporny: Yeah, it's fine.

Dave Longley:

Dave Longley: what that is. So we can say type is required no matter…

Manu Sporny: Yep, that's fine. Okay, I will …

Dave Longley: what you do. But then anything else you needs to match one of
these things in the list if that makes sense. But the text could just say
you have to put type.

Manu Sporny: Sure.

Dave Longley: But we're only going to accept JSON schema right now…

Manu Sporny: Okay.

Dave Longley: because that's the only thing that's standardized.

Manu Sporny: That you're but that does not agree Ted would disagree with
that,…

Manu Sporny: I think. So, I need that be okay.

Dave Longley: I think Ted's complaint is we don't have text. That says what
we just said. So, if what we're doing, I think that that will address Ted's
concern,…

Dave Longley:

Manu Sporny: Okay.

Dave Longley: and he can tell us otherwise.

Manu Sporny: I'll make a rev and then see how TED responds. okay, that's
that item. next PR is PR495.

Manu Sporny: Add proof chain and set documentation to credential issuance.
I think yeah, this was a request to rebase. Was that all it was? parse. …

Parth Bhatt: Yeah and…

Parth Bhatt: basically include all the death commits in one basically
request. So I bundled it.

Manu Sporny: no, you collapsed it all down into a single commit, right?
Yeah,…

Parth Bhatt: Yes, but that was the only final change.

Manu Sporny: that yeah you wiped Ted's commitments.

Parth Bhatt: Did I misunderstood?

Manu Sporny: So the reason this is important is because at some point we
need to attribute who wrote what in the specification like who were editors
who were authors that kind of thing and if we wipe out people's
contributions like Ted doesn't show up at all here Ted wouldn't get any
credit for this thing even though it includes his text. so,…

Manu Sporny:

Parth Bhatt: Okay. …

Manu Sporny: so usually the way it needs to happen is like your commits go
in as one commit.

Parth Bhatt: what Yes,…

Manu Sporny: And then Ted comes in and he does a bunch of editorial
changes. You can wrap all of those into one editorial fix and that goes as
a second commit in it and that will ensure that we properly attribute
people in the change log. Does that make sense? Okay. All right. yeah.

Parth Bhatt: I do have a backup of this repo.

Manu Sporny: But now that it's okay.

Parth Bhatt: I can create another PR with the same changes and I can
acknowledge dead changes in a separate commit if you want.

Manu Sporny: All right, that sounds good. Yeah. and it's sorry to be a pain
about this part,…

Parth Bhatt: It's okay.

Manu Sporny: but we want to make sure that we give people the credit that's
due for the changes that they made to the specification. it definitely adds
up over two years. Ted has become an editor on specifications where he was
never officially an editor, but he just edited so much of it that we could
demonstrate that he was truly acting as an editor. even though he didn't,
have it in next pull 499, update proof description and add proof ID and
previous proof properties. I think Dave has provided a lot of feedback on
this one, which I have not had a chance to read through. Do you want to
summarize this?
00:20:00

Dave Longley: Yeah, the summary is I don't think we should add any proof
options to a top level options thing. it does not match usage and won't
work with more complex use cases where you have multiple proofs and so on.
And I wrote a whole bunch about that. I don't think we have any
implementers who are coming forward saying this is how I implemented a
flexible reusable approach to specifying previous proof ID or anything like
that. and in the absence of that what we've always done everywhere else is
said we're not going to specify how to do that right now.

Dave Longley: We're going to let implementers incubate it and then they can
bring that to the group if they want to see if anyone else wants to
interoperate with how they've done it.

Manu Sporny: And so that would reduce this PR down to just this change up
here.

Dave Longley: Yes, I think we just have a description on the proof.

Manu Sporny: Okay, sounds good. parts. does that give you enough to go from?

Parth Bhatt: Yeah, I basically have to remove the proof ID section from the
credential option YAML file.

Manu Sporny: Yep.

Dave Longley: And then there's a previous proof as well.

Manu Sporny: And okay.

Dave Longley: We just remove those two things.

Parth Bhatt: Yes. Yes.

Manu Sporny:

Manu Sporny: All that is that item and then the last one we have is clarify
open ID values. I did take a look at this and try to raise a PR on it. I
see there are changes here. I will merge those in. and then Coyote has a
request for a change here. I think the main thing I'm blocked by here is an
example, a full-fledged example of what this value looks like because it's
impossible for me to tell by looking at the Open ID4VP spec what it should
actually be.

Manu Sporny: There's some of it in there, but that's correct.

Dave Longley: You're saying…

Dave Longley: what this property looks like, but I think you're saying what
an example authorization request looks like because that's not the same
thing because all this property is going to do is have a simple string with
a simple variable name in it there.

Manu Sporny: That's right. Yeah. Yeah.

Manu Sporny: It's the other part of it that was part of I think issue 456.
I think we said we were going to put an example in here. I suppose a
concrete example should be provided is the thing that I was responding.

Dave Longley: I think yeah but the concrete example is just going to be the
variable name if you go back to it's the other property…

Manu Sporny: It's No, it's the other part of it. Yeah, it's the other
property.

Dave Longley: but you go back to the other PR there's text in there that
says you have to use this or that I don't remember that is called probably
just authorization request is the name of the variable it says either this
or…

Manu Sporny: Yeah, it's the example in authorization request that I'm
talking about. this correct.

Dave Longley: yes that is the one that we need an example of.

Manu Sporny: That's what I'm asking for.

Manu Sporny: I don't know…

Dave Longley: Okay.

Manu Sporny: what that example looks like, but if somebody could put that
in here, I could finish off this All right. that is it for the call today.
I'm sorry it was a short call. but I've got to run because I'm double
booked. that is all the PRs. I think PR editors will get those updated and
we'll cover them again next week. and then hope to have some other issues
addressed there. I think you're on PTO next week, there are a couple of PRs
we're waiting on people so whenever folks can get around to it. Yeah, go
ahead, Eric.

Eric Schuh: I'll actually be here next week.

Eric Schuh: It's the following week. and I'm working on the one PR that I'm
assigned right now. So that should be in and I'm going to try to knock out
one or two of the other ones that are marked low effort as well. So

Manu Sporny: Excellent.

Manu Sporny: Okay, Thanks that's it for the call. thank you everyone.
appreciate it. I don't know what happens if I leave the call and let it
run. so yeah, maybe if you all could Coyote Dave use another Slack channel
or something. I'll shut the call down. thanks everyone. chat again next
week. Take care. Bye.
Meeting ended after 00:24:50 👋

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

Received on Saturday, 2 August 2025 18:48:32 UTC