- From: <meetings@w3c-ccg.org>
- Date: Wed, 11 Mar 2026 06:57:43 -0700
- To: public-credentials@w3.org
- Message-ID: <CA+ChqYfNoZHPcU6bVZBbe2mbaunfTciah2CvO0doAmeq2PoJgw@mail.gmail.com>
This meeting focused on addressing pull requests and issues related to the BCOM specification. Key discussions included the rechartering of the Verifiable Credentials Working Group, improvements to schema rendering and organization, and the addition of a "reference ID" for exchange messages to enhance debugging and prevent duplicate processing. The team also explored strategies for improving the readability of the specification, particularly concerning lengthy OpenAPI schema definitions and examples. *Topics Covered:* - *VCWG Recharter:* The Verifiable Credentials Working Group recharter has passed, and the BCOM specification is slated to be published as a final community group specification in preparation for its inclusion in the VCWG. - *PR 603 - Request Body Schema Fix:* This pull request addresses an issue with the create exchange endpoint's request body schema by correctly separating variables for creation versus retrieval, specifically removing the "results" variable from the create exchange and issue request sections. The pull request was approved with a minor change and merged. - *Issue 605 - oneOf with required Rendering:* A larger issue was identified where the use of oneOf combined with required in the OpenAPI specification prevents certain fields, like variables, from being rendered, impacting spec readability. An issue was created to address this rendering problem. - *PR 601 - Accepted Issuer and Crypto Suites:* This pull request, after Manu's updates incorporating Dave's feedback, now correctly defines accepted issuer and accepted crypto suites to allow for both string and object types, addressing the syntactic sugar for simpler cases and more complex filter criteria. The pull request was merged after several minor adjustments and clarifications. - *PR 602 - Exchange Message Reference ID:* This pull request proposes adding an optional "reference ID" property to exchange messages to help clients and servers track message correspondence and prevent duplicate processing, particularly in multi-step workflows. The team agreed to add this feature and discussed its implementation details, including renaming the relevant schema. - *Issue 644 - Multi-step Workflow Example:* The team discussed the need for a more explicit example in the specification showcasing multi-step workflows where subsequent steps depend on the results of previous ones, potentially involving conditional routing or optional VPRs. This issue will be picked up by Nate. - *Specification Readability and Examples:* A significant portion of the meeting was dedicated to discussing ways to improve the readability of the specification, including proposals for code folding of repetitive OpenAPI schema definitions and potentially moving extensive examples to a separate document to manage the spec's length and complexity. *Action Items:* - Manu to implement the agreed-upon changes for PR 601 regarding the accepted issuer, accepted crypto suites, and accepted envelope schema definitions, and then merge the PR. - Kayode to finalize the change in PR 603 to remove the "results" field from the issue request variables. - Kayode to create an issue (if not already done) for the oneOf with required rendering problem and assign it to Manu. - Manu and Dave to rename the exchange participation response schema to exchange participation message and apply it to both request and response messages. - Assign Issue 644 (Multi-step Workflow Example) to Nate for further development and PR creation. - Create an issue to track the improvements for specification readability, focusing on code folding for repetitive sections and potentially separating complex examples into an appendix. - Close issue 599 as it has been fixed. Text: https://meet.w3c-ccg.org/archives/w3c-ccg-ccg-vcalm-2026-03-10.md Video: https://meet.w3c-ccg.org/archives/w3c-ccg-ccg-vcalm-2026-03-10.mp4 *CCG VCALM - 2026/03/10 14:58 EDT - Transcript* *Attendees* Benjamin Young, Dave Longley, Elaine Wooton, James Easter, John's Notetaker, Kayode Ezike, Manu Sporny, Nate Otto, Parth Bhatt *Transcript* Benjamin Young: All righty. I think we probably have enough people to get started. Thanks for coming everybody. This is the BCOM call. I'm MCing today but I have not been in Benjamin Young: a complete beall meeting anyway for a little bit. So, my expectation is that you all have some things you want to discuss. I'm bringing up the repo and spec and things like that and we can look through pull requests and issues, but if there is a key topic y'all were hoping to get back to today, please let me know that because I don't. also Patrick is obviously out. So if it was something pertaining to meeting Patrick, we're likewise not going to be able to cover that. But with all that in mind, any directional thoughts? Manu Sporny: Yes, that all sounds good to me. Benjamin, we should take advantage of the fact that Nate's here because I think he had a couple of issues I was looking at at least one issue that I was looking at where I needed a little better direction to figure out what to write. So maybe we can do our regular PR processing and then handpick some issues that Nate can give some feedback Same thing with Coyote. if there's anything that we can address on his mind, I think it would be good to take advantage of both of them being here today. Manu Sporny: Benjamin Young: Yeah, agreed. Benjamin Young: So, why don't we just do sort of some round table updates and see where those go? Manu Sporny: I'll just mention this because I'm mentioning it in all the 2026 verifiable credential working group recharter vote have passed. that was really good. Lots of companies voting in favor, 40 plus organizations, no formal objections. That went And then at the very last minute the European Union folks came in and said, "Hey, we want you to also include digital product passport and the European business wallet stuff." so that was put into a proposal to be included and then when that happens at the last minute, you have to go and ask everybody that voted again, are you okay with that update or do you object to that? that happened last week. Manu Sporny: I haven't heard the outcome of that but I don't think I would be surprised if anyone pushed back but we'll find out on Wednesday during the verifiable credential working group call. this work item is included in the new charter. so we should start thinking about all of the levers and buttons we have to pull and push to publish this as a final community group specification to prepare it to be pulled into the verifiable credential working group. 00:05:00 Manu Sporny: Typically we do that right as the VCWG is voting on pulling it in because it does have to go to a working group vote. they have to vote to accept this specification as input. Once they do that, then, it doesn't take but an hour or two to, do the thing to publish it. But it does require the chairs to get involved on both sides and everyone's busy so that can take up to a week to do. So just a heads up that at some point we're going to pull the rip cord and this thing's going to go out as in its current form. It doesn't have to be perfect. Benjamin Young: Awesome. Thank you,… Manu Sporny: We just publish a static version of it. and then we'll just need to do that. That's it. Benjamin Young: Any questions or comments about that before we get updates? Okay, Nate, why don't you go first and then Kyote, you can go after Nate Otto: All right. So, I was looking through the issues list and the one that I see that is open north toward the top that was by me is 599. And that I think is the one that Coyote has something to speak for. Pull request 603 is one that I think fully addresses it. Kayode Ezike: Yes. the answer to that if we were to open the pull requests tab we can see that and that is going to be the one at the top and… Benjamin Young: Sorry, I missed the number. Benjamin Young: What was the number? Kayode Ezike: sorry that's the 603 is it the one at the top? Benjamin Young: Okay, great. Kayode Ezike: Kayode Ezike: Yeah. Yep. So what this no problem. Benjamin Young: Thank you. Kayode Ezike: What this is doing is essentially just fixing an issue with rendering that happened as a result of the request body schema for the create exchange endpoint incorrectly including a results variable inside of there. It's not supposed to because at that point when you creating exchange you don't have any results to speak to. So what this is is it separates out variables for create exchange endpoint and the one for get exchange endpoint and any other sort of retrieval based variables that we get. And so the only difference really between the two is that the create one is a amorphous object. So there's no fields that are specified within it. Kayode Ezike: it is worth noting that currently the only variable that's actually defined in the specs one and so the only way to I guess not include it would be to just have an MG object that allows folks to include anything in there. and I also noticed that the exchange variables was also used within not only create exchange and get exchange but another area forget exactly which section that is looking that really quickly. Kayode Ezike: So I think it was issue request but let me just quickly see if I can give me a second so it's going to be underneath issue request variables and this actually made me realize something as I was going through this PR which I was just in the middle of creating an issue which is that in the issue request Kayode Ezike: I noticed something that's a bigger issue not just with that field but with others as well which I can get into in a second but basically some fields are not showing up whenever we use one of coupled with required and so I noticed that the place where I changed that get exchange variables in the issue request scope is actually not even rendered in the spec because of the way that we're using one of coupled with required. Kayode Ezike: So I can get into that a little bit later. But in any event, the main thing maybe were that I can ask about that is it correct to include the results field inside the variables for that issue request section as well because currently it does include it there too. So that's the first question that's a little bit more easily answerable maybe. 00:10:00 Benjamin Young: So line the line I have highlighted here 1154. Kayode Ezike: Any other questions? So happy to answer them. Benjamin Young: That's the one you're still have questions about. Kayode Ezike: And the main thing here is so the way it's implemented will include the results variable in it. And so my question is that proper to include it also in the issue requests? That's my first question. is it proper to include that variable inside the issue requests? Benjamin Young: Good. Kayode Ezike: Variables. Dave Longley: we probably don't want to put it there. it's not incorrect to have it there, but in the same way it's not incorrect to have results when you're creating an exchange. It's just awkward and probably no one would do it. And the same applies here. Kayode Ezike: All So then I'll just create exchange on here instead and that'll go with that. so that addresses that and then I can bring up the other question after we decide if there's anything else that needs to be done with this outside of that change. Kayode Ezike: So any feedback I take the silence says either we need more time to review it or that we're happy with just me making that one change and merging it afterwards. So if that's the case go ahead. Manu Sporny: Yeah, I mean I don't know enough to have any good opinion on this. if Nate is happy and it addresses this issue, that's good enough for me. And if Dave's going, I don't see anything wrong with it, then that sounds good. you had mentioned I think Dave was like, "Let's not do this one thing." I guess that's going to require you to make a change and then we can merge after that. Manu Sporny: Kayode Ezike: Yeah, pretty much. Manu Sporny: Okay. Kayode Ezike: Yeah, just that one line. Yeah, we'll change it. Manu Sporny: All right. Kayode Ezike: Yeah, we'll do that shortly. Probably before the end of the call and… Manu Sporny: Cool. Kayode Ezike: then Sounds good. and then if it's okay to discuss another thing related to this unless you want to just process all the PRs first but okay so what I was getting at is that if we I guess maybe it'd be easier to look at the OAS file so if we were to open that file what you'll see is that go we search for the issue request that same section where Kayode Ezike: what you had it highlighted before. Yeah, exactly. The one thing that I noticed is that the way we structured this the way we're using one of and where we have the required restraints underneath. So I guess this is line 1155. that's resulting in issues where for example the variables field is not getting rendered. I just noticed this and it occurs in a few places and s this is I think one of three places that it occurs and so that's a problem because then it means that people are not going to know that this is an op these are options if it's not listed but I've tried to find ways to fix it just for all the different instances that shows up but I wasn't able to find a way that works across all of them so I think it's really a respspec issue too it's not for all renderers but it's just something that I've noticed as a problem yeah go ahead Hang on. Manu Sporny: Yeah, there's probably some corner case that isn't covered in the respect OAS plugin which is hack upon hack because it's kind of evolved beside this specification it just requires somebody to kind of look at the code and I apologize for all It was me that created all those hacks. But we probably just need to look at this particular code path and then see that just figure out why it's not triggering the proper rendering. Kayode Ezike: So I was creating the middle of creating issue for it. So I can just create that really quickly and then maybe assign you or myself to it and we can address it later. Kayode Ezike: That's all for me. Benjamin Young: Okay, sounds good. Benjamin Young: Thank you, Cody. Do you want to pick the next topic? Benjamin Young: Just keep going down the list. Yeah. Okay. Kayode Ezike: that are you asking me or… 00:15:00 Kayode Ezike: I see this popcorn style. Yeah, I guess we can go to the next J sounds camera for Cory B. Manu Sporny: And I can cover that one since so this was raised a month ago. Dave Long only asked for a couple of changes. if we scroll down are the requested changes. I have made those changes as of 15 minutes ago, 19 minutes ago. And I think it's good to go. but it would be good to get I think it's fine if folks want to take a look at it. we should be able to merge it now. I did have one question now that I think of if we look at the change log are good. Manu Sporny: Sorry, I'm doing a PR review as I'm doing this. files changed. Yeah. And if we go down to recognized in maybe. that one. And if we go down to accepted issuer, there's a component down at the bottom. keep scrolling down. It's the definition of accepted issuer. Yeah, So that can be a string like it did a URL did or it can be an object that has recognized in and then it's going to point to a verifiable recognition credential which is basically like a list of approved parties. I totally forgot the format of that thing. Is that what you were thinking Dave? Now I have to go look. Dave Longley: Yeah, but we should also cover the case that you want to put the ID in the object case. So the string case is really just syntactic sugar for the object case. And then in the object case the first use case we have is put the ID property in there and put the ID of the issuer. And then other use cases are put other properties there that would allow someone processing the query to instead of having a direct ID but instead of having the ID property find an issuer that meets the requirements such as recognized in. Dave Longley: So I don't think we would say that recognized data is required and we should also have ID there. So it's more like a set of filters. Manu Sporny: Gotcha. … Manu Sporny: so string and andor ID recognized in one of those All right,… Dave Longley: Yeah. as our first set of use cases that can go into this PR. Manu Sporny: let me go ahead and add that. So, I'm happy to add those things. And then if I add those, are we good to merge? Dave Longley: I was scanning for anything else. I mean, we're probably good. does the accepted I'm trying to parse the JSON schema here to make sure that the accepted issuers and… Benjamin Young: Go ahead. Dave Longley: accepted crypto suites allows either a string or an object. And I'm not sure it does that now. Nate Otto: In accepted envelopes line 213 where does one of these examples I see v verifiable credentials signed with an LDP like a data integrity proof. Nate Otto: I mean these are just examples not necessarily everything you can use but do we have a media type for application VC with a data integrity proof? Manu Sporny: We do. Manu Sporny: And is it? We should have that in there, I'm just going to add it as a application slashvc. Dave Longley: I was busy processing something else. Dave Longley: What are we adding? Yeah, this is not the envelope format. So, we don't need it. application VC is not an envelope, it is a VC. So that the accepted crypto suites covers that because you attach the crypto suite to the VC without having to envelope the data format with another format. Manu Sporny: This is But it's not an enveloped thing. Yeah. Nate Otto: Okay, thanks. Dave Longley: The other thing we're missing here is it's good that it's on the screen here. Dave Longley: it says accepted issuer and we have one of for string or object and we have the same thing correctly under I think if we go down to accepted we don't have it for accepted envelope and we don't have it for accepted crypto suite both of those should also be one of either a string or an object so all of those fields accept syntactic sugar where if you just put the string It refers to the most simple property version of it. 00:20:00 Manu Sporny: All right, I can make that change too. Also, I hate JSON schema so much. let's see for accepted issuer allowed or object with ID or object containing recognized for what is this accepted crypto suite and accepted envelope allow either a simple string or an object. Manu Sporny: an object that yes okay all right so all the changes are update accepted issued allow a URL did string or… Dave Longley: Yeah, that's Manu Sporny: an object with an ID that is a URL did string or an object containing recognized in which then is a URL did string and for accepted crypto suite and accepted envelope, allow either a simple string or an object that matches the current schema definition. Dave Longley: And then if we look at credential query, in this schema it requires an example and I don't remember I think that it would be new to require that example. I don't know that we require it. so if you scroll to the bottom of that, in this JSON schema, that's where the required properties are at present. So keep going. Yeah, line 87. I don't think we have those requirements in the spec that you have to put those two fields there. so we might not want to put that in the schema now because we'd have to think through there might be existing use cases where no example is given a wallet is just announcing that it accepts certain cryptoes and envelopes for any kind of VC that they're about to receive. Dave Longley: So there's no example needed. Though we could say I don't know if there existing implementations that do that without an example but the other way to do that is to have an example just be an empty object. because then you don't put any requirements on the example. if we scroll up to example I don't know if there are requirements within the example property that we might have to change. yeah, if we go to credential example, can we see what the requirements are there and the requirements here? Let' let's scroll down to what's required for that's probably at the bottom as well. Yeah, those requirements are also too strict because you can use this to request a credential that does not for example have a context. Dave Longley: you could ask for an MDL expression. and it would not have type or credential subject either. So I think we just remove the line 165 and line 87 until we figure out if we need to have any required properties and what those are. Manu Sporny: All right, I'm making those as change suggestions in the PR. So remove reason. I guess we are abandoning reason. Dave Longley: Yeah, that's right. Manu Sporny: All right. So both of those things now we're just like do not require any of these fields. It's totally dependent on what you want to have So, those two have been made as change suggestions and then there All right. Any other desired changes? Okay. Manu Sporny: If not, I will make those changes after the call and then make one last check to make sure that the schema is valid and then I'll merge unless there are any objections. All right. Thank you for the eagle eyes. 00:25:00 Benjamin Young: That leaves us with one PR. It's from Patrick though who's not here. anyone have a guess at the state of this one? Dave Longley: My guess would be he hasn't gotten to it. Benjamin Young: Yeah, not in a minute. okay, we'll skip that one. It's apparently quite behind Go ahead. Nice. Kayode Ezike: Yeah, I was just going to say that I updated made the request that Dave asked for and also created an issue related to the issue request. Benjamin Young: … Kayode Ezike: One of required issue looks like it. Thanks. Benjamin Young: are we good to merge this one then? All righty. Benjamin Young: Are we typically rebasing and merging? It's fine. Manu Sporny: Yes. Three basin merge. Manu Sporny: Unless the history is not clean, but I think Coyote keeps clean history. Yep. Benjamin Young: Okay, that's done. Thank you, K. And you said you created an issue as well. Maybe Kayode Ezike: Yes 605. Kayode Ezike: Pretty much just reiterating what I mentioned earlier and… Benjamin Young: Okay. Kayode Ezike: yeah sign to you but happy to support anyway with that any Okay,… Manu Sporny: Yeah, please do. I'm probably not going to get around to it unless I find myself in respect OAS fixing another bug. Kayode Ezike: sounds good. Benjamin Young: All that finished up poll requests. We're about halfway through the call. was there anything else top of mind y'all wanted to tackle? If not, we'll just chip through probably the unlabeled issues mostly. Okay, keep working our way down. Benjamin Young: Dave, you just filed this one an hour ago. Do you want to I'm going to Dave Longley: Yeah, this is a suggestion that we add an optional property to exchange messages. I recommended it be called reference ID based on a similar feature that's already in the invite request protocol that's in the spec. the idea here is so exchange properties today can include the properties we have defined are verifiable presentation and redirect URL. And I noticed that if you're implementing workflows that have a significant number of steps this becomes more obvious but it applies to any number of steps. Dave Longley: It's nice to know that when a client responds to a message that they're responding to the most recent message. And one way to do that is to include a reference ID so when the server sends an exchange message that's like send here's a VPR please send me some VCs. It's nice if something like a reference ID is in that request so that when the client responds and they include that reference ID you can see that they meant to be talking about the current state of the exchange. Dave Longley: It's conceivable that a mis implemented client or a slow message could come from the same client that's has accidentally responded to a message twice, for example. And in the rare case that two steps might be implemented that might possibly accept two similar responses, you would want to be able to distinguish those. And having this feature helps with debugging and helps servers prevent duplicate messages from being accidentally processed as if they weren't duplicates. Hopefully that explanation makes sense. 00:30:00 Manu Sporny: Does this create an issue? no. I think it sounds fine. I is this much more useful if you have branching in your workflow? Manu Sporny: Like I'm wondering Dave Longley: I much more useful is a little bit too strong… Dave Longley: this is useful even if you have one step. it's because it helps you more explicitly determine that a mistake was made by the client as opposed to implicitly guessing what happened. but that becomes more important the more steps you have which often includes more branching but branching steps are more likely to surface a problem like this. so I guess the answer to that question is yes. Manu Sporny: And then let's see. I guess what's the guidance on what the reference ID should be? I mean, should we just tell people create a UU ID for every just Okay. Dave Longley: I would say create a UYU ID. I would say the server may include it in their messages. If the client sees it, they should include it in their response. Dave Longley: But none of that's required to make things work. It just really helps in the cases where things aren't working properly. Benjamin Young: do we want to call up? Benjamin Young: It should probably be a UU ID here. Dave Longley: Yeah, that's fine as a suggestion when the text goes in. Benjamin Young: Whoever's going to write this Dave Longley: And that should also be a common pattern that people have experience in writing other HTTP APIs is to include these sorts of things for debugging and making sure stuff lines Benjamin Young: Anyone have other thoughts? Manu Sporny: We should make notes on the PR market ready for PR and meaning tell the PR writer exactly… Benjamin Young: Great. Yeah. Manu Sporny: what they should be writing and… Manu Sporny: let me try and find this issue. Where's this issue 64? Benjamin Young: Here, drop it in chat. Manu Sporny: Got it. PR should be raised. that may be raised that says that a server may include a reference ID in is it just a VPR or… Dave Longley: let's start with May. It could be as strong as should but certainly May is good enough for now. Manu Sporny: in a Okay. Dave Longley: No, it's not in the VPR itself. It's in an exchange message. I don't know that we have a name for those, but it's where those other properties appear. Manu Sporny: other properties here. And if the client sees it, it should include the reference ID and the response to the server. Debugging the ID. Do we want to say must be a uruid or it's just should be a UID value. It's like that. Dave Longley: Yeah, what you said sounds good. Manu Sporny: No, it's not. Okay. I did. What is going on? Benjamin Young: I'm reloading. Manu Sporny: There we go. Okay. I thought it was I know. Dave Longley: You're not sharing your screen, so Benjamin Young: Yeah, right. Manu Sporny: I I was just surprised it because sometimes At least it used to auto pop up, right? Benjamin Young: Yeah, it usually does. Not today anyway. Thank you, M. Go ahead, Nate. Nate Otto: probably a PR writer can figure it out themselves, but should we include a specific list of end points which request bodies and response bodies would have this property? does it go as far as the get workflow configuration? Is it just the post requests? 00:35:00 Nate Otto: Is it just the stuff in the scope of an exchange rather than a workflow? I see we also have it in the invite request protocol. So it's slightly beyond just exchange participation. Dave Longley: I think this issue is just about the exchange participation those other calls might have implicit maybe that's the wrong word to use here those other calls have … Dave Longley: if you're creating workflows or doing updates they already have some mechanism like that I think this is the place that's missing such a mechanism. There's no sequence id reference identifier for you to know what the other parties responding to. And the other APIs allow you to easily detect duplicates. I'm pretty sure that's true for all the other APIs at this Benjamin Young: Okay. Manu Sporny: So just to clarify, it's so what I updated to exchange participation response. Thank you, Coyote, is the schema that we need to make that Yeah. Dave Longley: Yeah, that'll be the response one. I don't know if that schema covers both directions. It says response in the name of the schema, but maybe it's used in both directions, but it's just important for it to cover both directions. Manu Sporny: Okay. Dave Longley: Yeah, I don't know if there's an exchange participation request or if it's just the same schema. Manu Sporny: Let's change participation request. I'll just Put question mark around it. Dave Longley: You'd have Benjamin, you'd have to look at the OAS file to find that text. Benjamin Young: Yeah, I was getting there towards that realization anyway. Benjamin Young: Yeah, I'm only seeing response and it's all used in one spot. Kayode Ezike: and yeah what I noticed is that s basically where it would have been defined we're actually not using a schema for it so it just lists out u repetition request representation and it actually doesn't even list out the third one I guess redirect URL. So, we can either update that to use to refer back to a schema that's either the same one as this or renamed it to request, but it ultimately is probably going to have the same body So, there's a bit of redesign that had to happen with the schema naming and creations. Yeah. Dave Longley: Yeah, reusing the same schema in both places would be good and… maybe just calling it participation message. Dave Longley: Benjamin Young: sounds right to me. Benjamin Young: Do we want all that written up? Manu Sporny: Yes, because it will be forgotten. Benjamin Young: Do that. Manu Sporny: If we don't write it down. So, let's see. yeah. Benjamin Young: You going to do it in yours? Manu Sporny: … Dave Longley: So rename exchange participation response to exchange. Manu Sporny: where that hold on,… Manu Sporny: wait. … Dave Longley: Exchange participation response to exchange participation message and… Manu Sporny: I was typing in okay. Benjamin Young: That's the line. Manu Sporny: What rename participation and… Dave Longley: use it around line 303 for the request as well as the response. Manu Sporny: also use it around line what 303 Three 63 and… Dave Longley: Yeah, it's somewhere around there. Benjamin Young: It's 3:19 on Maine. Benjamin Young: K. Dave Longley: Yeah, the request bit is around 303 I think was on the screen. Manu Sporny: 319 in both cases. Dave Longley: Yeah, those are lines. Yep. To look for Manu Sporny: Okay. Kayode Ezike: I think I forgot to load my hand, but since Nate put up a good question, do we expect that clients would also be able to send back a redirect If not, then they should be separated to different schemas. Dave Longley: Yeah, something to keep in mind is we might want to split that out, but we might want to leave it. It would be a good exercise to think through what that would mean. for a server to be told to go to complete an exchange somewhere else. It's important to remember that a redirect URL can carry an interaction URL in it. And so it's not that you're being told to go view a website in HTML. You could be handed an interaction URL to be told to go continue and exchange somewhere else. And that could be a way for a client to signal that a server is meant to switch and become the client and go interact somewhere. So that root use case should not be ruled 00:40:00 Benjamin Young: Sounds good. In other news, it does look like GitHub refreshed the changes without me touching anything. do we have enough here for somebody to pick up VR? I would think so. Okay, Nate, you excited about this one? Can I assign it to you? Nate Otto: Yeah, I can take it. Benjamin Young: Thank you. somebody else is going to have to. There's only three people on the list. Dave Longley: is yeah, GitHub handles autonomy. Manu Sporny: I got it. Dave Longley: I don't know if it Benjamin Young: Nice. Benjamin Young: Yeah, I don't know if I could have seen that. Time for at least one more. long way. This is you again. Multi-step workflow example. Dave Longley: yeah, let me remember yeah, this is just I don't think what we don't have as an example in the spec today is showing multiple steps where subsequent steps rely on results from previous steps and someone reading the spec and trying to implement it could figure out, hey, I can Dave Longley: do some neat things where in the first step if the client presents X my workflow service will store that result and then the second step can be a template that can use that result to decide what to do in the second step and so it's like we have the basics of prim b we have some basic primitives and basic basic code that you can run through templates and variable Dave Longley: And it would be good to more explicitly show someone, hey, you can do this neat thing with your steps based on these primitives. someone could figure it out, but it would be good to have that as an example. And I think I listed one possible example which I'd be reading here now to remember it. this example is an exchange client can send its own VPR. So when it starts an exchange, it could say, I want a certain credential from you before I'm willing to do something like give me your registered business VC for example. And if the exchange is set up to allow that sort of thing to happen, the first step would just be optionally give me a VPR and… Dave Longley: if you don't give me one, I'll just go to the next step. If you do give me one then I will potentially make a different choice in that step and what the next step is. Hopefully that made sense. Benjamin Young: when you said and… Benjamin Young: what the next step is. there's some routing based on what's in the first step. So it might skip steps. Dave Longley: Yeah, the second step will look different. And I think I mentioned here there maybe being a third step. I don't know, maybe I didn't mention that. Benjamin Young: Yeah, you did in include the issued PCs from step two in the Dave Longley: Yeah, none or a third step, is determined by this choice. I mean, it's just probably the best thing to do is to have a three step workflow that shows in the first step something's received and… optionally received. In the second step, some kind of response is made that determines what the third step will be or something along those lines. Dave Longley: Benjamin Young: If this second step is an optional response,… Benjamin Young: does that mean you're possibly going to just advance to step three and get a final response? Dave Longley: Yeah, I meant the first step would be the optional response. Dave Longley: It's which is yes,… Benjamin Young: Okay. Gotcha. 00:45:00 Dave Longley: the first step is if you send me a VPR, I'm going to save that VPR and the second step might do something different or we should do something different. And then based on how you respond to the second step, we can make that do something different there. You might be able to simplify this down to two steps, but it might be nice to show three for branching so people can understand, hey, you can do a lot of different things with this without while allowing a coordinator to outsource all of that to a workflow. Benjamin Young: Gotcha. Anyone have thoughts on this? Manu Sporny: We would need a concrete I'm trying to figure out what's the concrete thing that we'd end up using in the examples. Struggling. Benjamin Young: Go ahead. Nate Otto: I'm generally okay with this. I do note that the workflows piece of the spec is potentially quite complicated. It is good to be able to provide some documentation. I wonder if there is any ability to ship a second document alongside the core specification where we can split out more advanced examples. because I'm familiar with the open badges spec is very long and the length of it provide poses a barrier to adoption in some cases and… Benjamin Young: Good night. Nate Otto: we have developers not noticing and knowing about certain sections of the spec because of the overall length. up. Just curious there. Manu Sporny: Yes, plus one to that. I was just thinking about that. I was also reading about there was another issue we had where it's show a complete open ID for example and it's pages and pages of config things and protocol responses back and forth and I mean and we already have complex examples in the spec I think we're going to take up 30 pages in the spec just with protocol messages back and forth plus one to Manu Sporny: that I think we can have a spec that's a examples appendix or something like that. I don't think we should do an implementation guide or anything like that. We're just like hey if you want to see some really involved examples go here and check them out and try to keep the spec a little cleaner. the other thing I was considering is do some code folding for let me go back. The vast majority of the spec is OAS just reprinted over and over and over again, right? Manu Sporny: and while it's nice to have all of that it's very accurate, it's just wall of text and you don't care about most of it until you really want to know what the object is. So I'm wondering if we should do some display folding if we look at section 352 create presentation that thing property description this entire thing maybe it starts off folded and you click a little button and it expands. Manu Sporny: that might help a lot with kind of readability in the spec or I have a button that's expand everything I'm implementing. I need to see everything, so two proposals there plus one to what Nate's saying. I'm getting concerned about the amount of, example stuff. and maybe we just want to put that in a separate document but within this repository. So you just click on it and you just go to something that's just protocol messages and data objects and then for this spec do some code folding on the repetitive tables and things like that. we stop Dave Longley: Yeah, I just wanted to say Nate brought up the same point last week. and we talked about how a lot of those OAS specs have things and here's where you put a verifiable credential and there's no reason for us to have to expand the whole definition of what a VC is. even a spec implement is not going to care about that. They're probably never going to unfold that. So, being able to make those sorts of distinctions is important, too. 00:50:00 Manu Sporny: I'm not following … Dave Longley: I mean I mean so you're submitting a verifiable presentation there. Manu Sporny: what concrete thing would that change Dave Longley: In this particular case that's on the screen it would be what goes here is a JSON LD verifiable presentation. that whole thing could be rolled up. There are some other places where we might need a contextual hint or something in the OAS for what to don't know but the general idea folding is great. I don't know if we need to go even further and fold specific things for specific descriptions based on… Dave Longley: what makes contextual sense and we might have to know that for the different calls. Benjamin Young: Yeah. … Benjamin Young: I'm also noticing that this text mentions a VP without a proof and then the object description includes a proof. Dave Longley: That's nested under verifiable credential. Benjamin Young: That rendering is terrible. Yep, you're right. Dave Longley: Yeah, because the wall of text makes it too hard to even see that. Yep. Benjamin Young: It's too long. it'd be nice to collapse them maybe one by one. Go ahead and trunk. Manu Sporny: Plus one that, if you go to section 362, that's another example, Benjamin, of something that's just like, are you kidding me? roll scroll down, right? It's just like you got all that,… Benjamin Young: Yeah. Who shrunk to? Manu Sporny: right? Yeah. Benjamin Young: We have an example in Manu Sporny: Yeah. Mhm. Dave Longley: Yeah, that's an example of… Dave Longley: where I think you specify maybe a verifiable presentation request within a step. and it's like there's no reason to need all a couple lines down from that says verifiable presentation request and that's just a VPR goes here. that should not be unrolled like that. And that's the sort of thing where you would know contextually you don't want that to probably we have a step schema and the step schema might need a note or something. I don't know that sounds like more work for someone to write but in the YAML you could say hey don't unroll this in the step schema. Someone could click it to unroll it… Benjamin Young: Right now, Dave Longley: if they want to, but it's not useful usually. Manu Sporny: So, I think we've established let's figure out a way to make this easier to read. and it's either going to be autofold everything or fold based on hints. And that's just, code that someone has to write into respec oas. if there is also a better way to render this stuff, and you've got ideas, please suggest. This is just what I did in the beginning because we're at the very tip of the spear and doing this at W3C. No other group that I know of is doing this. because they haven't had to yet. Manu Sporny: And if there is a better way to render this or you've seen a better way to render this, please us know. the other thing to point out and I don't know if a lot of people know that this spec can do this, but there are endpoints that you can go to. Let me try and find all right one second. where is the repository link? there are endpoints that you can go to that will render. here we go. So if you go to this endpoint, it will take the OAS and use RedO to render it. And there we also do Rapid Do and Swagger outputs as well. takes the exact same thing and renders it using this other mechanism. So there are multiple views on the specification. Manu Sporny: We had initially done this because Ary was like I want to see absolutely everything. don't ask me to implement something when it's not written down in the spec. I want every single variable on the screen. So we tried to figure out a way to make that happen. I think at this point it's gotten a bit unwieldy. So, concrete takeaways from this is maybe we start off seeing if we can do some hinting at things that should be collapsed. and if that's difficult, then we auto collapse everything. Manu Sporny: auto collapse the entire table and maybe just talk about the top level, attributes and say, "Hey, click here if you want to really see the gory details." I don't think it would be good to make people jump between different documents to see details. That probably isn't good. so yeah, there's some things that we can try out here. But I think the goal here is let's see if we can collapse these things by default in the spec and only when you want to see the details do you click the button to see the details. 00:55:00 Manu Sporny: Yeah, that's a Benjamin Young: Sounds good. Benjamin Young: Do we want an issue for that? I mean, is it some point it'll be Yeah,… Manu Sporny: Yeah, might as well track Benjamin Young: I don't think it's a discussion issue more for a Okay. GitHub's not happy with me today. Benjamin Young: get some of your examples. This one was the worst, I think. Yeah, I'm just going to stop there. and whoever's into UX tomorrow can fix it and send us a PR because I'm sure it's easy and fast. Okay, we're down to three minutes. I don't think we're going to open another can of worms. Cody 599. Kayode Ezike: I just want to say feel free to close issue 599 now. Benjamin Young: This one has fixed in. Kayode Ezike: Yes. 603 Benjamin Young: Okay. Something is not loading at all. There it goes. Yep. And thank you for that. Awesome. Meeting ended after 00:57:49 👋 *This editable transcript was computer generated and might contain errors. People can also change the text after it was created.*
Received on Wednesday, 11 March 2026 13:57:52 UTC