- From: <meetings@w3c-ccg.org>
- Date: Thu, 19 Jun 2025 11:50:28 -0700
- To: public-credentials@w3.org
- Message-ID: <CA+ChqYePaz=PPMPtdb5a2O_cmd-Db4OHLSTbZFMOQS_yZoXbVw@mail.gmail.com>
VC API Community Group Meeting Summary - 2025/06/17 *Topics Covered:* - *Community Updates:* Good progress on closing low-effort issues (13+ in last two months). Focus shifting towards PRs for these issues, aiming for a new working group charter in August. Increased interest in education and first responder use cases. - *Poll Request 487: Accept 2011 Status Response:* Discussion centered on accepting both 2011 and 204 status responses for exchange and workflow creation. A compromise was reached to accept both, with the addition of always including a location header regardless of the status code (2011 or 204). Further discussion is needed on whether the ID field in the exchange object should be the full exchange URL or a shorter identifier. - *Exchange Response Schema:* Debate on whether to include the workflowID within the exchange response schema to facilitate interaction with the interactions API, which currently lacks workflow and exchange identifiers. The primary concern is how to obtain the necessary workflow ID when only the interactions URL is available. A new PR will be created to address this point separately. *Key Points:* - The group is making good progress on resolving low-effort issues. - The use of both 2011 and 204 status codes for exchange/workflow creation, along with always returning a location header, was agreed upon. - The question of whether to include the full URL or a shorter ID in the exchange object requires further discussion and will be addressed in a future PR. - A separate PR will address the inclusion of workflowID in the exchange response schema to improve interactions API functionality. The opacity of the URL and potential layering violations are concerns in this discussion. Text: https://meet.w3c-ccg.org/archives/w3c-ccg-vc-api-2025-06-17.md Video: https://meet.w3c-ccg.org/archives/w3c-ccg-vc-api-2025-06-17.mp4 *VC API - 2025/06/17 14:58 EDT - Transcript* *Attendees* Eric Phillips, Joe Andrieu, John's Notetaker, Kayode Ezike, Manu Sporny, Parth Bhatt, Patrick St-Louis, Ted Thibodeau Jr *Transcript* Manu Sporny: All right. Hey folks. it is a very small group today. I think what's happening is I got back so was not able to send out the meeting updates or agenda. and I know we've also got multiple people out on vacation. but I did re see that we have a poll request. So we'll go ahead and process that. I know you just opened that. and then if we don't have anything else we'll definitely end early because we've got a small turnout. Although as I'm saying that people are trickling in. let's go ahead and start out with community updates or anything of that nature. Manu Sporny: just a quick kind of review of what we're trying to do here is we are trying to process all the loweffort issues and raise PRs for those. we'll continue to do that. we've been making good progress. I think we've closed 13 or some odd issues in the last two months which is good. if we can just find a little bit more time to do PRs, I think we'd be able to knock the rest of them out. and then once we get to kind of all the loweffort things, then I think we are going to try and propose a new verifiable credential working group charter when August rolls around. So I think that's kind of where we are. Manu Sporny: and so yeah, I think in general we are going to try to continue to keep pushing forward on PRs. I know that there is not renewed interest there's interest in using in a number of education use cases. so that has been kind of raised as an thing that people want to use the VC API so that's good. and it is certainly being used in some of the first responder work as okay so I think that's it from the community. Manu Sporny: any other updates commentary anything else that we should discuss community related. If not let's go ahead and focus on the poll request which this is the accept 2011 status response for exchange and workflow creation PR poll request 487. Coyote, do you want to take us through this one? Okay. 00:05:00 Kayode Ezike: So, this originated from a Slack channel that has a few implementers in it. And I think ultimately there's some confusion around why we decided to use the status response when creating exchanges and workflows. So I think what we thought was a good compromise is to still accept 2011 as well which is I think the standard for creating entities and then 204 is another alternative that implementers can return as well. Kayode Ezike: I think I just remembering this now but around still returning location even if you return 2011 which I mean I don't have a strong feeling I don't know if I agree with that but I think something that was also being discussed in that thread too I wish Dave was here to sort of make his case for that but just put this up for now just because felt like it was causing some confusion and it's it wasn't the original focus of that issue but it ended up being related to it in many ways and so just because that's where the 204 was introduced was from this issue that's what I feel like Manu Sporny: Okay, got it. let's see. Manu Sporny: Did this one get Let's see here. Should be raised. So, you raised 468 that fixed this. Is that okay? Kayode Ezike: Yeah, exactly. Kayode Ezike: So, it was already and I made a comment if you could scroll to the bottom, you see my last comment I made about half an hour ago where I think I missed a meeting where you guys said to add it or to remove it, but I already approved it a while ago with that PR. So, … Manu Sporny: Okay. Kayode Ezike: and then this is just the 2011 status. Manu Sporny: Excellent. All right. that's … Kayode Ezike: So, last thing I'll say,… Manu Sporny: go ahead. Go ahead. Kayode Ezike: maybe what I'll say is I should probably tag Dave because he may want to also basically make a case for why we should also include the location header even if we return to one. And I think that's what I recall that he was recommending. Kayode Ezike: So, You can probably tag him in a comment or something. Okay. Manu Sporny: He is out for the next two weeks and… Manu Sporny: so often in 2011 often includes location try not to use the AI summary. did you look into kind of… Manu Sporny: what the HP semantic spec says about 2011 versus 204. Kayode Ezike: We discussed it briefly. Kayode Ezike: I think the main thing is that you have to because four usually doesn't have any body in there and then 2011 does and so the implementers will have the choice to do one or the other right either put the body response directly there or to give a location. Kayode Ezike: And… Kayode Ezike: I can, look through that thread again, but I believe there was also a case to be made to always put the location there as well. But I can Yeah. Manu Sporny: Trying to see… Manu Sporny: if 204 says anything about location. I mean I can see the argument for it. Guess there's now a content location field as well. Kayode Ezike: Thank you. Manu Sporny: It doesn't say that you can't 00:10:00 Manu Sporny: Yeah, I mean it looks like I can't see… Manu Sporny: what it would hurt to put the location header onto for no content. I mean, it doesn't forbid it. so you're saying it's the 2011 that we're wondering… Kayode Ezike: Yeah. … Kayode Ezike: so 2041 currently does have a location in the schema for it's a 20 right… Manu Sporny: if we should put the location header in. that would make a lot more sense to put location than the 204,… Kayode Ezike: because it already has … Manu Sporny: least to me. plus one from me to putting it in. Kayode Ezike: wait. But the 2011 would already have the data inside of the body usually I thought. Manu Sporny: Yeah. Right. Kayode Ezike: So yes. Manu Sporny: But I mean I think you can So if you did a get on where the location header is, would it effectively give you the body back? Yeah. So, I think that's fine because Let's see. mean, it doesn't say if 2011 has body or not here. Kayode Ezike: Can I just pick that up? Kayode Ezike: Yeah, I guess in that case… Kayode Ezike: then we should just always have the location. Manu Sporny: Yeah, that's… Manu Sporny: what I was thinking is that no matter if it's 2011 or 204, we always have the location. Kayode Ezike: I'll make a slight modification to that. Basically, I'll just add the location piece that's in 204 under 2011 as well. Manu Sporny: Unless anybody else has stronger feelings about that. So, yeah, Coyote, let's go ahead and change it so that we always return a location and then we can Yep, that's right. and… Manu Sporny: that should do it for that poll request. okay. Okay. Kayode Ezike: There's another thing I guess related to this issue. Kayode Ezike: There was a few comments that I made just before your last comment on this issue that again I think be great for Dave to chime in on here but basically he was making the case that the ID field in the exchange object should be the full exchange ID which didn't entirely agree with it to make more sense for it to be just like the U ID skip or the bid whatever is using Kayode Ezike: for the ID schema, but I think he made a comment that it should be the full exchange ID. Manu Sporny: Let's see. Manu Sporny: So, you the full URL, right? Not just the local Exchange ID. Kayode Ezike: That's what he was recommending. Manu Sporny: Yeah. … Kayode Ezike: Yeah. All right. Manu Sporny: yeah, I think that sounds right. Cuz otherwise you'd have to hack together URLs to figure out what's going on. Or I mean, if you wanted the full URL, you would have to figure out what your get request was to and then you'd get a response back and then you'd have to wait this forget exchange state. We're talking for create, right? Let's see. Kayode Ezike: Yeah, this is for the create one. Manu Sporny: It's for create exchange. Yeah. Yeah. Kayode Ezike: Yeah, which would now have the location in there too. 00:15:00 Manu Sporny: I mean, I think I agree with that. why not put the full URL? What's the concern about putting a full URL? Kayode Ezike: And… Kayode Ezike: so it relates a little bit to another issue that I wanted to talk about, but I can see how we can get around it, but basically it has to do I don't think is an issue per se. Kayode Ezike: I was thinking more in terms of what would be in for example the entry for the database that someone needed locally or within their system. The VC API base URL can change. and so I guess the way to answer that question would just be to always make sure that you provide the right VC API whenever you return the response to the API. But it was just thinking about matching it more closely to the underlying structure in the database. But I guess it's not a big deal. You can still to work. Kayode Ezike: But I think the one thing which is a leading comment for another issue that I wanted to discuss for 21 is that I do feel that we should be including workflow ID inside of the exchange response schema and I'm jumping around a bit but the reason for that is because the interactions API that we added recently it doesn't have the same components that most of the endpoints do where you have workflow ID and exchange ID. It's just like interactions without any other identifier and they're aside from the interaction ID. Kayode Ezike: And so it has to do with being able to make sure we were able to actually construct DRL with the right workflow ID in there, which to me sounds like the easiest way to do that would just be to include workflow ID inside of the response schema. Kayode Ezike: And yeah, I think it should be exchange. Manu Sporny: Okay, let me pull up the response schema… Manu Sporny: because I'm getting a little lost, Coyote. so it's an API and… Kayode Ezike: Wait, this is the components but the main exchange is going to show lowerase exchange. Yeah, I think it's on API maybe. Manu Sporny: then exchanges. Kayode Ezike: That's something. Manu Sporny: Hamill and… Kayode Ezike: So create exchange for example, I would have expected it to have workflow ID as one of the properties in it. could exchange response… Manu Sporny: you could create exchange request response. Kayode Ezike: if it's there should be good. Manu Sporny: Maybe get exchange response. Kayode Ezike: Okay. Yeah. Kayode Ezike: Yeah, currently it does not include that which so for example somebody were to try to get the first thing before I go further right doesn't have a workflow ID in there which to me sounds like a natural thing to have… Kayode Ezike: because it's very obvious piece of the exchange but then going back to the interactions … Manu Sporny: I guess… Manu Sporny: what would you use the work? What would you use that URL for? So, what you're arguing for is I think what Dave's arguing for is this great. I just changed the layout. this ID would be a full URL to the exchange, And what you're saying is that it would also be nice to have a workflow ID in here that would be a full URL but to the workflow. Kayode Ezike: so I guess the way that I was thinking about it Kayode Ezike: was that it would have a workflow ID that's just the local workflow ID that could then be used at the very least internally for the implementer to be able to construct the URL that they would need to return for example when they receive an interactions when they receive an interactions request… Kayode Ezike: which does not have workflow ID in there and does not have extreme ID they would need to know which workflow is associated with that interaction that No,… 00:20:00 Manu Sporny: what's… Manu Sporny: what's the use case and I apologize coyote I have not implemented any of this stuff which is why I'm a little lost Kayode Ezike: All good. so you recall, if you go to the spec text,… Manu Sporny: That's Yeah. Kayode Ezike: if you recall the interactions endpoint, Yeah. So there's Exactly. Kayode Ezike: So right right there in the red it says example interaction SLZ8 and so on and so forth. so there's no mo I think most implementations will probably end up treating interaction IDs as exchange IDs. but if that's the case, ultimately part of what needs to happen is for when you receive a request for a particular interaction, at some point the implementation needs to return a exchange URL that the client can interact with,… Kayode Ezike: right? and… Manu Sporny: Yeah, you're saying this needs to be like this URL. Kayode Ezike: part and Manu Sporny: When you get this URL, you will need to provide in a very specific exchange ID for both open ID for VP if it's, layered on top of VC API and VC API at least, but I'm still not getting the whole you're making some connection between this interactions URL to Kayode Ezike: Right. Right. Kayode Ezike: So I guess my thing is in order for you to go from… Kayode Ezike: what you're highlighting right now, interactions URL to, for example, the VC API, I would think that you'd have to know the workflow ID that you would need to include in there. that associated with that Interaction ID. Manu Sporny: My understanding is when this interactions URL is created,… Manu Sporny: there's some kind of backend call that makes all of The backing exchange ids. let's see. and in doing that it will have internally in its state it will have a bunch of those but they won't be workflow ids they'll be just full-blown exchange IDs both I no ID for VP so in my mind it's kind of stored out of band when this interactions is created in the Manu Sporny: It will make all the other kind of protocol endpoint things. Manu Sporny: It'll make all the other calls that it needs to create all the other endpoints for the protocols or… Kayode Ezike: Right. But… Kayode Ezike: so part of Yeah. Manu Sporny: they'll be there already, I guess. is that right? Kayode Ezike: So I guess referring to the comment that Dave made in issue 421, there was something about should we store the proto I asked if we would need to add protocols property to the exchange schema or if we can just use the metadata within there to create it instead. Kayode Ezike: You should be able to create it just on the metadata,… Manu Sporny: I see… Manu Sporny: what You're saying, yeah, so you're saying for this thing, how would you know the local exchange ID if you've got the full URL? Kayode Ezike: right? Right. Manu Sporny: And one way to do that is to break apart the URL that you get. but if you're trying to treat that as opaque, Kayode Ezike: It's one of the few endpoints where, there's not as much information. all you get is the interactions and so in order for you to actually return back for example that VC API protocol property you would need to know which workflow associated exchange was created from basically which to me means that we should probably store workflow ids inside of exchange exchanges which feels like a simple small update but also a Kayode Ezike: important one as well that some implementations might already be doing. I don't know but imagine that that would just make sense. Manu Sporny: Yeah. Yeah. Manu Sporny: I don't have a strong feeling about it. anyone else with kind of a strong feeling one way or the There. Patrick St-Louis: Not sure if I have a feeling, but I'm definitely looking at this exchange endpoint for some didcom interaction. how I was planning to implement it is that you create the didcom invitation like you normally do and then you just kind of associate it with this local exchange ID. So then when you provide that URL to someone they will get the actual as a didcom property and… 00:25:00 Manu Sporny: All right. Patrick St-Louis: the exchange item back. but I've not really looked at a scenario when I want to create multiple different exchanges like diff multiple different protocols. So Kayode Ezike: Yeah. Yeah. Manu Sporny: So maybe coyote the next thing might be to do that in a separate poll request. and then maybe they will have strong feelings one way or the other. I don't I don't necessarily see the harm in doing it. My only concern is like that of a kind of a layering it feels mildly close to a layering violation. the local ID is kind of arbitrary and you could pick any other ID potentially. Kayode Ezike: Oops. Manu Sporny: So I'm trying to or should we really treat the URL as completely opaque because it really does have a structure that's established by the specification. So you could actually parse the URL if you wanted to. So, us saying the URL is opaque is not really true because the spec itself defines the URL as having a very specific structure. and exactly how to parse that structure at least to get to the local exchange ID. So, why is that not, good enough? I'm having a hard time kind of rationalizing it in only one Meaning, it sounds like we've got some more kind of work to do around Manu Sporny: questions to answer is the URL actually opaque or not? If the answer to it's not opaque then parsing the local exchange ID out of the URL should be just fine thing to do, but then by doing that that feels also somewhat like a bit of a layering violation. maybe all the information should be in the URL. and there's a very good chance that might be over we might be overthinking this and going one way or the other doesn't really help or harm things, to any significant degree. okay. Manu Sporny: Coyote, if you don't mind raising another PR on that one,… Kayode Ezike: Yeah. Yeah. Manu Sporny: keeping it separate from the current one, because I think the current one should be fairly easy to merge down. once we get more views on it. Kayode Ezike: Yeah. Yeah. I'll try to make a case for why I think it makes sense too so that folks have context. Manu Sporny: Okay, that sounds good. Manu Sporny: All right, and then we'll wait until you make those modifications to this one. let's Let me go ahead and add group discussed 256 17 Okay. Kayode Ezike: I should also say sorry. Kayode Ezike: so it certainly won't be in this PR because it was referenced here but also I think maybe the comment also came from PR421 where we were discussing the full exchange ID. So yeah, I'll just create a PR that references that issue and then we take it from there. Manu Sporny: Okay, that sounds good. okay. I any other comments on this poll request before I move on? All right. I think that's it for pull request Q. We still do need to process these effort low or we need PRs for the loweffort things. hopefully I will be able to get some time over this weekend to add a couple of those. Manu Sporny: and then of course if anybody else has some spare cycles please feel free to pick off any of these effort low items. we normally do introductions at the beginning. Eric, I don't know if you want to introduce yourself or not. It's totally voluntary. but we'd love to know a bit more of your background and what your interest is in the verifiable credentials API call. but also fine for you to stay on ute. Any we want to cover Any other business that we should discuss before we end? Okay. If not, that's the call for today. 00:30:00 Manu Sporny: Thank you everyone for your time and attention and we will go ahead and meet next week hopefully to process more pull requests. thank you Coyote for raising that PR and raising the future one that you noted. Okay, that's it. Thanks everyone. Have a great rest of your week. Ciao. Meeting ended after 00:30:51 👋 *This editable transcript was computer generated and might contain errors. People can also change the text after it was created.*
Received on Thursday, 19 June 2025 18:50:36 UTC