VC Examples
< Back
Digital receipt
Credential
{ "@context": [ "https://www.w3.org/ns/credentials/v2", "https://w3id.org/retail-dw/v1rc5", "https://w3id.org/vc/render-method/v2rc2" ], "type": [ "VerifiableCredential", "RetailCredential" ], "issuer": { "id": "did:example:maverikissuer123", "name": "Maverik", "description": "A verifiable digital receipt issuer solutions." }, "name": "Maverik Digital Receipt", "description": "A verifiable digital receipt for a Maverik purchase.", "validFrom": "2026-03-24T18:57:12Z", "validUntil": "2035-03-24T18:57:12Z", "credentialSubject": { "type": "Receipt", "description": "Your Maverik purchase on March 24th 2026.", "confirmationNumber": "F7-3829948", "transactionID": "7839", "eventStartDateTime": "2026-03-24T18:55:20Z", "eventEndDateTime": "2026-03-24T18:57:12Z", "seller": { "type": "Store", "organizationID": "123", "description": "Maverik", "taxID": "123457896", "storeLocationID": "234", "cashierID": "485", "sourcePOI": "lane-4", "tillID": "1", "telephone": "15555554958", "location": { "type": "PostalAddress", "streetAddress": "743 S. Broadway", "addressLocality": "Denver", "addressRegion": "CO", "postalCode": "80209" } }, "transactionDetailGroup": [ { "type": "PosJournalItemLine", "transactionLineSequenceNumber": 1, "description": "Electro Energy Drink", "itemCode": { "type": "ItemCode", "posCode": "1234567891234", "posCodeFormat": { "type": "PosCodeFormat", "format": "gtin", "checkDigit": "present" } }, "regularSellPrice": { "type": "Amount", "value": "3.99", "currency": "USD" }, "discount": [ { "type": "Discount", "discountReason": "storeCouponOffer", "discountAmount": { "type": "Amount", "value": "-0.50", "currency": "USD" } } ], "itemTaxes": [ { "type": "Tax", "taxCollectedAmount": { "type": "Amount", "value": "0.21", "currency": "USD" } } ], "actualSalesPrice": { "type": "Amount", "value": "3.49", "currency": "USD" } }, { "type": "PosJournalItemLine", "transactionLineSequenceNumber": 2, "description": "Fresh Brew Coffee 16oz", "itemCode": { "type": "ItemCode", "posCode": "2345678912345", "posCodeFormat": { "type": "PosCodeFormat", "format": "gtin", "checkDigit": "present" } }, "regularSellPrice": { "type": "Amount", "value": "2.49", "currency": "USD" }, "itemTaxes": [ { "type": "Tax", "taxCollectedAmount": { "type": "Amount", "value": "0.15", "currency": "USD" } } ], "actualSalesPrice": { "type": "Amount", "value": "2.49", "currency": "USD" } }, { "type": "PosJournalItemLine", "transactionLineSequenceNumber": 3, "description": "Turkey Club Sandwich", "itemCode": { "type": "ItemCode", "posCode": "3456789123456", "posCodeFormat": { "type": "PosCodeFormat", "format": "gtin", "checkDigit": "present" } }, "regularSellPrice": { "type": "Amount", "value": "5.99", "currency": "USD" }, "discount": [ { "type": "Discount", "discountName": "Combo Deal", "discountReason": "storeCouponOffer", "discountAmount": { "type": "Amount", "value": "-1.00", "currency": "USD" } } ], "itemTaxes": [ { "type": "Tax", "taxCollectedAmount": { "type": "Amount", "value": "0.30", "currency": "USD" } } ], "actualSalesPrice": { "type": "Amount", "value": "4.99", "currency": "USD" } }, { "type": "PosJournalItemLine", "transactionLineSequenceNumber": 4, "description": "Bag of Kettle Chips", "itemCode": { "type": "ItemCode", "posCode": "4567891234567", "posCodeFormat": { "type": "PosCodeFormat", "format": "gtin", "checkDigit": "present" } }, "regularSellPrice": { "type": "Amount", "value": "1.79", "currency": "USD" }, "itemTaxes": [ { "type": "Tax", "taxCollectedAmount": { "type": "Amount", "value": "0.11", "currency": "USD" } } ], "actualSalesPrice": { "type": "Amount", "value": "1.79", "currency": "USD" } }, { "type": "PosJournalTenderInfoLine", "transactionLineSequenceNumber": 5, "description": "Payment (Card)", "tender": { "type": "TenderID", "tenderCode": "card" }, "tenderAmount": { "type": "Amount", "value": "13.53", "currency": "USD" } } ] }, "renderMethod": [ { "name": "HTML", "type": "TemplateRenderMethod", "renderSuite": "html", "mediaType": "text/html", "template": "data:text/html;base64,PGRpdiBjbGFzcz0icmMtd3JhcCI+CiAgPHN0eWxlPgogICAgLyogRmx1aWQgZG9jdW1lbnQ6IGZpbGxzIHRoZSB3aWR0aCB1cCB0byAzODBweCwgY2VudGVyZWQ7IGZvbnRzIHN0YXkgaW4gcHgKICAgICAgIChhIHJlY2VpcHQgc2hvdWxkIHJlZmxvdyBhbmQgc3RheSByZWFkYWJsZSwgbm90IHNocmluayBwcm9wb3J0aW9uYWxseSkuICovCiAgICAucmMtd3JhcCB7IG1hcmdpbjogMCBhdXRvOyBmb250LWZhbWlseTogQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZjsgd2lkdGg6IDEwMCU7IH0KICAgIC5yYyB7IHdpZHRoOiAxMDAlOyBtYXgtd2lkdGg6IDM4MHB4OyBtYXJnaW46IDAgYXV0bzsgYmFja2dyb3VuZDogI2ZmZjsKICAgICAgYm9yZGVyLXJhZGl1czogMTRweDsgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgYm94LXNoYWRvdzogMCA2cHggMjBweCByZ2JhKDAsMCwwLC4xOCk7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IH0KICAgIC5yYy1oZWFkZXIgeyBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTgwZGVnLCAjZTEyNTFiIDAlLCAjYjUxYTFmIDEwMCUpOwogICAgICBwYWRkaW5nOiAxOHB4IDAgMTJweDsgdGV4dC1hbGlnbjogY2VudGVyOyB9CiAgICAucmMtaGVhZGVyIHN2ZyB7IGRpc3BsYXk6IGJsb2NrOyB3aWR0aDogMTE4cHg7IGhlaWdodDogYXV0bzsgbWFyZ2luOiAwIGF1dG8gOHB4OyB9CiAgICAucmMta2lja2VyIHsgY29sb3I6ICNmZmY7IGZvbnQtc2l6ZTogMTFweDsgZm9udC13ZWlnaHQ6IDcwMDsgbGV0dGVyLXNwYWNpbmc6IDNweDsgfQogICAgLnJjLWJvZHkgeyBwYWRkaW5nOiAxNnB4IDI2cHggMjBweDsgY29sb3I6ICMyMjI7IH0KICAgIC5tb25vIHsgZm9udC1mYW1pbHk6IE1lbmxvLCBDb25zb2xhcywgJ0NvdXJpZXIgTmV3JywgbW9ub3NwYWNlOyB9CiAgICAucmMtc3RvcmUgeyB0ZXh0LWFsaWduOiBjZW50ZXI7IGZvbnQtc2l6ZTogMTRweDsgZm9udC13ZWlnaHQ6IDcwMDsgY29sb3I6ICMxMTE7IH0KICAgIC5yYy1hZGRyIHsgdGV4dC1hbGlnbjogY2VudGVyOyBmb250LXNpemU6IDEwcHg7IGNvbG9yOiAjNDQ0OyBtYXJnaW4tdG9wOiAzcHg7IH0KICAgIC5yYy1zZXAgeyBib3JkZXI6IDA7IGJvcmRlci10b3A6IDFweCBkYXNoZWQgI2NmY2ZjZjsgbWFyZ2luOiAxMnB4IDA7IH0KICAgIC5yYy1yb3cgeyBkaXNwbGF5OiBmbGV4OyBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47IGdhcDogMTJweDsKICAgICAgZm9udC1zaXplOiAxMHB4OyBtYXJnaW46IDRweCAwOyB9CiAgICAucmMtcm93IC5rIHsgY29sb3I6ICM2NjY7IH0KICAgIC5yYy1yb3cgLnYgeyBjb2xvcjogIzIyMjsgdGV4dC1hbGlnbjogcmlnaHQ7IH0KICAgIC5yYy1jb2xzIHsgZGlzcGxheTogZmxleDsganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOyBmb250LXNpemU6IDlweDsKICAgICAgZm9udC13ZWlnaHQ6IDcwMDsgY29sb3I6ICM5OTk7IGxldHRlci1zcGFjaW5nOiAxcHg7IG1hcmdpbi1ib3R0b206IDZweDsgfQogICAgLnJjLWl0ZW0geyBkaXNwbGF5OiBmbGV4OyBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47IGdhcDogMTJweDsKICAgICAgZm9udC1zaXplOiAxMHB4OyBjb2xvcjogIzIyMjsgbWFyZ2luOiA1cHggMDsgfQogICAgLnJjLWl0ZW0gLmFtdCB7IHRleHQtYWxpZ246IHJpZ2h0OyB3aGl0ZS1zcGFjZTogbm93cmFwOyB9CiAgICAucmMtbGluZSB7IGRpc3BsYXk6IGZsZXg7IGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsgZ2FwOiAxMnB4OwogICAgICBmb250LXNpemU6IDEwcHg7IG1hcmdpbjogM3B4IDAgM3B4IDEycHg7IH0KICAgIC5yYy1kaXNjIHsgY29sb3I6ICMxYTdmMzc7IH0KICAgIC5yYy10YXhsaW5lIHsgY29sb3I6ICM2NjY7IH0KICAgIC5yYy1zdWJ0b3RhbCB7IGNvbG9yOiAjNDQ0OyB9CiAgICAucmMtdG90YWwgeyBkaXNwbGF5OiBmbGV4OyBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47CiAgICAgIGZvbnQtZmFtaWx5OiBBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDEzcHg7IGZvbnQtd2VpZ2h0OiA3MDA7CiAgICAgIGNvbG9yOiAjMTExOyBtYXJnaW46IDZweCAwOyB9CiAgICAucmMtdG90YWwgLmFtdCB7IGNvbG9yOiAjZTEyNTFiOyB9CiAgICAucmMtcGF5IHsgZGlzcGxheTogZmxleDsganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOyBmb250LXNpemU6IDEwcHg7CiAgICAgIGNvbG9yOiAjMjIyOyBtYXJnaW46IDRweCAwOyB9CiAgICAucmMtaW1hZ2UgeyB0ZXh0LWFsaWduOiBjZW50ZXI7IG1hcmdpbjogMTJweCAwIDA7IH0KICAgIC5yYy1pbWFnZSBpbWcgeyBtYXgtd2lkdGg6IDEwMCU7IGhlaWdodDogYXV0bzsgYm9yZGVyLXJhZGl1czogNnB4OyB9CiAgICAucmMtdGhhbmtzIHsgdGV4dC1hbGlnbjogY2VudGVyOyBmb250LXNpemU6IDEwcHg7IGZvbnQtd2VpZ2h0OiA3MDA7CiAgICAgIGNvbG9yOiAjMzMzOyBtYXJnaW4tdG9wOiAxNHB4OyB9CgogICAgLyogU21hbGwgcGhvbmVzOiByZWNsYWltIGhvcml6b250YWwgcm9vbSBieSB0cmltbWluZyB0aGUgcGFkZGluZy4gKi8KICAgIEBtZWRpYSAobWF4LXdpZHRoOiAzNjBweCkgewogICAgICAucmMtaGVhZGVyIHsgcGFkZGluZzogMTRweCAwIDEwcHg7IH0KICAgICAgLnJjLWJvZHkgeyBwYWRkaW5nOiAxNHB4IDE2cHggMThweDsgfQogICAgfQogIDwvc3R5bGU+CgogIDxkaXYgY2xhc3M9InJjIj4KICAgIDxkaXYgY2xhc3M9InJjLWhlYWRlciI+CiAgICAgIDxzdmcgdmlld0JveD0iMCAwIDE1NSA2MCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBhcmlhLWhpZGRlbj0idHJ1ZSI+CiAgICAgICAgPHBhdGggZmlsbD0iI2ZmZmZmZiIgZD0ibTY1LjkgNTkuNjggNy4zNC0xMi43MiA3LjM0IDEyLjcyem0tOS41NyAwIDEyLjEzLTIxIDMuMzcgNS44NS04Ljc0IDE1LjE1em0yNy4wNiAwLTguNzUtMTUuMTUgNi4zOC0xMS4wNCAxNS4xMiAyNi4xOXptMzguNDgtMjcuOTRWLjAxaC04LjA3djI4Ljk4YzIuOC44MyA1LjQ5IDEuNzUgOC4wNyAyLjc1bTEyLjMgNS44NFYyMi42NmMzLjIuNDUgNC43MSAzLjggNC43MSA1LjkzIDAgMCAuMjMgNy42Ni4zNSAxMi4yMiAzLjI0IDIuMjggNi4wNyA0Ljc0IDguNDQgNy4zNC4xLjEuMjIuMi4zMi4zLS4wOC01LjA0LS4yMy0xNC4yMi0uMy0xNy4wMi0uMTktNi45Ny0xLjU1LTExLjczLTYuMTYtMTMuNjlsOC0xNy43NGgtOC43N2wtNi41OSAxNC42M1YwaC04LjYzdjMzLjI1YzMuMDggMS4zMyA1Ljk2IDIuNzggOC42MyA0LjMzTTk4LjQ1IDI1LjQ1bC4wNy05LjcxczEuMjcuMSAxLjg5LjJjMS42Ni4yOSAyLjE1IDEuMzEgMi4yNyAzLjY3LjA3IDEuMzguMTUgNC42NC4xOSA2LjY1IDIuNzMuNTUgNS40IDEuMTggNy45OCAxLjg4LS4xLTIuNDYtLjI2LTYuNTItLjM0LTguMDYtLjE5LTMuNTMtMi44Mi01LjQ2LTMuODMtNS45NSAxLjY0LS41MiAzLjgyLTMuMjYgMy44Mi02LjUgMC01LjIyLTIuMTQtNy41OS05LjM4LTcuNTlDOTYuNzIgMCA5MS4zNCAwIDkxLjM0IDB2MjQuNDVjMi40MS4yOCA0Ljc4LjYxIDcuMTEgMW0uMTQtMjAuMjRzMS0uMDEgMS44Mi0uMDFjMS4zOSAwIDMuMTEuNTkgMy4xMSAyLjQ2IDAgMi4wMy0uODYgMy4wMy0zLjM0IDMuMDEtLjUzLS4wMy0xLjYtLjEtMS42LS4xek0zNi43NSAyOC4yN2wuNy00LjUgNS43OC0xLjI5LjkyIDRjMi40Ni0uNTIgNC45OC0uOTggNy41Ni0xLjM3TDQ0LjcxIDBIMzMuODhMMjguNyAzMC44MWMyLjU4LS45MiA1LjI3LTEuNzcgOC4wNS0yLjU0bTMuMTQtMjAuMzEgMi4xMyA5LjI2LTMuNjcuNzJ6bTM0LjE1IDE1LjVoLjA5YzEuMTkgMCAyLjM3LjAyIDMuNTQuMDRoLjA4cTUuNDQ1LjEzNSAxMC42OC42M2MwLTEuNTYtLjAxLTUuNTEtLjAxLTYuMTItMi42NS0uMTctNi43Mi0uMzQtOC42LS4zOHYtMy42bDUuNzUuMVY5LjJoLTUuNzFWNS42NGg4LjU3VjBINzIuOTF2MjMuNDdjLjM4IDAgLjc1LS4wMSAxLjEzLS4wMU0xNy45IDBsLTQuMjIgMTEuNzlMOS4zOSAwSC4wMUMuMDEgOS4yIDAgMzYuOTYgMCA0OC42MWMyLjM3LTIuNjggNS4yMy01LjIxIDguNTEtNy41NlYxNi45bDQuMDUgMTAuNzIgMi41MS0xLjExIDMuODItMTEuMTQuMDEgMTkuNTRjMi40OS0xLjIyIDUuMTItMi4zNSA3Ljg4LTMuNFYwem00NS42MiAwTDYwLjcgMTUuMjcgNTYuODcgMGgtOC4xM2w2LjkyIDI0LjU3YzMuMzItLjQxIDYuNzItLjcxIDEwLjE4LS44OUw3MS4wMiAweiIvPgogICAgICA8L3N2Zz4KICAgICAgPGRpdiBjbGFzcz0icmMta2lja2VyIj5ESUdJVEFMIFJFQ0VJUFQ8L2Rpdj4KICAgIDwvZGl2PgogICAgPGRpdiBjbGFzcz0icmMtYm9keSIgaWQ9InJjLWJvZHkiPjwvZGl2PgogIDwvZGl2PgoKICA8c2NyaXB0PgogICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsICgpID0+IHsKICAgICAgdHJ5IHsKICAgICAgICBjb25zdCBjcmVkZW50aWFsID0gSlNPTi5wYXJzZShkb2N1bWVudC5xdWVyeVNlbGVjdG9yKAogICAgICAgICAgJ2hlYWQgPiBzY3JpcHRbbmFtZT0iY3JlZGVudGlhbCJdJykuaW5uZXJIVE1MKTsKICAgICAgICBjb25zdCBjcyA9IGNyZWRlbnRpYWwuY3JlZGVudGlhbFN1YmplY3QgfHwge307CiAgICAgICAgY29uc3Qgc2VsbGVyID0gY3Muc2VsbGVyIHx8IHt9OwogICAgICAgIGNvbnN0IGxvYyA9IHNlbGxlci5sb2NhdGlvbiB8fCB7fTsKICAgICAgICBjb25zdCBib2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3JjLWJvZHknKTsKCiAgICAgICAgLy8gLS0tLSBoZWxwZXJzIC0tLS0KICAgICAgICBjb25zdCBoYXMgPSAodikgPT4gdiAhPT0gdW5kZWZpbmVkICYmIHYgIT09IG51bGwgJiYgdiAhPT0gJyc7CiAgICAgICAgbGV0IGN1cnJlbmN5ID0gJ1VTRCc7CiAgICAgICAgY29uc3QgcmVtZW1iZXJDdXIgPSAoYW10KSA9PiB7IGlmIChhbXQgJiYgaGFzKGFtdC5jdXJyZW5jeSkpIGN1cnJlbmN5ID0gYW10LmN1cnJlbmN5OyB9OwogICAgICAgIGNvbnN0IHN5bSA9IChjdXIpID0+IChjdXIgPT09ICdVU0QnID8gJyQnIDogKGN1ciA/IGN1ciArICcgJyA6ICckJykpOwogICAgICAgIC8vIG1vbmV5KGFtb3VudC1vci1udW1iZXIpIC0+ICIkMy45OSIgLyAiLSQwLjUwIgogICAgICAgIGNvbnN0IG1vbmV5ID0gKHYsIGN1cikgPT4gewogICAgICAgICAgbGV0IG47CiAgICAgICAgICBpZiAodHlwZW9mIHYgPT09ICdvYmplY3QnICYmIHYpIHsgcmVtZW1iZXJDdXIodik7IGN1ciA9IGN1ciB8fCB2LmN1cnJlbmN5OyBuID0gcGFyc2VGbG9hdCh2LnZhbHVlKTsgfQogICAgICAgICAgZWxzZSB7IG4gPSB0eXBlb2YgdiA9PT0gJ251bWJlcicgPyB2IDogcGFyc2VGbG9hdCh2KTsgfQogICAgICAgICAgaWYgKGlzTmFOKG4pKSByZXR1cm4gJyc7CiAgICAgICAgICBjb25zdCBzID0gc3ltKGN1ciB8fCBjdXJyZW5jeSk7CiAgICAgICAgICByZXR1cm4gKG4gPCAwID8gJy0nIDogJycpICsgcyArIE1hdGguYWJzKG4pLnRvRml4ZWQoMik7CiAgICAgICAgfTsKICAgICAgICBjb25zdCBudW0gPSAoYW10KSA9PiB7CiAgICAgICAgICBjb25zdCBuID0gYW10ID8gcGFyc2VGbG9hdChhbXQudmFsdWUpIDogTmFOOwogICAgICAgICAgcmV0dXJuIGlzTmFOKG4pID8gMCA6IG47CiAgICAgICAgfTsKICAgICAgICBjb25zdCBmbXREYXRlID0gKGlzbykgPT4gewogICAgICAgICAgaWYgKCFoYXMoaXNvKSkgcmV0dXJuICcnOwogICAgICAgICAgY29uc3QgZCA9IG5ldyBEYXRlKGlzbyk7CiAgICAgICAgICBpZiAoaXNOYU4oZCkpIHJldHVybiBTdHJpbmcoaXNvKTsKICAgICAgICAgIHJldHVybiBkLnRvTG9jYWxlU3RyaW5nKCdlbi1VUycsIHsKICAgICAgICAgICAgeWVhcjogJ251bWVyaWMnLCBtb250aDogJ3Nob3J0JywgZGF5OiAnbnVtZXJpYycsCiAgICAgICAgICAgIGhvdXI6ICdudW1lcmljJywgbWludXRlOiAnMi1kaWdpdCcKICAgICAgICAgIH0pOwogICAgICAgIH07CiAgICAgICAgY29uc3QgZWxlbSA9ICh0YWcsIGNscywgdGV4dCkgPT4gewogICAgICAgICAgY29uc3QgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQodGFnKTsKICAgICAgICAgIGlmIChjbHMpIGUuY2xhc3NOYW1lID0gY2xzOwogICAgICAgICAgaWYgKGhhcyh0ZXh0KSkgZS50ZXh0Q29udGVudCA9IHRleHQ7CiAgICAgICAgICByZXR1cm4gZTsKICAgICAgICB9OwogICAgICAgIGNvbnN0IHNlcCA9ICgpID0+IGJvZHkuYXBwZW5kQ2hpbGQoZWxlbSgnaHInLCAncmMtc2VwJykpOwogICAgICAgIGNvbnN0IGt2ID0gKGssIHYsIGNscykgPT4gewogICAgICAgICAgaWYgKCFoYXModikpIHJldHVybjsKICAgICAgICAgIGNvbnN0IHJvdyA9IGVsZW0oJ2RpdicsICdyYy1yb3cgbW9ubycgKyAoY2xzID8gJyAnICsgY2xzIDogJycpKTsKICAgICAgICAgIHJvdy5hcHBlbmRDaGlsZChlbGVtKCdzcGFuJywgJ2snLCBrKSk7CiAgICAgICAgICByb3cuYXBwZW5kQ2hpbGQoZWxlbSgnc3BhbicsICd2JywgdikpOwogICAgICAgICAgYm9keS5hcHBlbmRDaGlsZChyb3cpOwogICAgICAgIH07CiAgICAgICAgY29uc3QgdHdvQ29sID0gKGxlZnQsIHJpZ2h0LCByb3dDbHMsIGxlZnRDbHMsIHJpZ2h0Q2xzKSA9PiB7CiAgICAgICAgICBjb25zdCByb3cgPSBlbGVtKCdkaXYnLCByb3dDbHMpOwogICAgICAgICAgcm93LmFwcGVuZENoaWxkKGVsZW0oJ3NwYW4nLCBsZWZ0Q2xzIHx8ICcnLCBsZWZ0KSk7CiAgICAgICAgICByb3cuYXBwZW5kQ2hpbGQoZWxlbSgnc3BhbicsIChyaWdodENscyB8fCAnJykgKyAnIGFtdCcsIHJpZ2h0KSk7CiAgICAgICAgICBib2R5LmFwcGVuZENoaWxkKHJvdyk7CiAgICAgICAgfTsKCiAgICAgICAgLy8gLS0tLSBzdG9yZSAvIHNlbGxlciAtLS0tCiAgICAgICAgaWYgKGhhcyhzZWxsZXIuZGVzY3JpcHRpb24pKSB7CiAgICAgICAgICBib2R5LmFwcGVuZENoaWxkKGVsZW0oJ2RpdicsICdyYy1zdG9yZScsIHNlbGxlci5kZXNjcmlwdGlvbikpOwogICAgICAgIH0KICAgICAgICBpZiAoaGFzKGxvYy5zdHJlZXRBZGRyZXNzKSkgewogICAgICAgICAgYm9keS5hcHBlbmRDaGlsZChlbGVtKCdkaXYnLCAncmMtYWRkciBtb25vJywgbG9jLnN0cmVldEFkZHJlc3MpKTsKICAgICAgICB9CiAgICAgICAgY29uc3QgY2l0eUxpbmUgPSBbbG9jLmFkZHJlc3NMb2NhbGl0eSwgbG9jLmFkZHJlc3NSZWdpb25dCiAgICAgICAgICAuZmlsdGVyKGhhcykuam9pbignLCAnKSArIChoYXMobG9jLnBvc3RhbENvZGUpID8gJyAnICsgbG9jLnBvc3RhbENvZGUgOiAnJyk7CiAgICAgICAgaWYgKGNpdHlMaW5lLnRyaW0oKSkgewogICAgICAgICAgYm9keS5hcHBlbmRDaGlsZChlbGVtKCdkaXYnLCAncmMtYWRkciBtb25vJywgY2l0eUxpbmUudHJpbSgpLnJlcGxhY2UoL14sXHMqLywgJycpKSk7CiAgICAgICAgfQogICAgICAgIGlmIChoYXMoc2VsbGVyLnRlbGVwaG9uZSkpIHsKICAgICAgICAgIGJvZHkuYXBwZW5kQ2hpbGQoZWxlbSgnZGl2JywgJ3JjLWFkZHIgbW9ubycsICdUZWw6ICcgKyBzZWxsZXIudGVsZXBob25lKSk7CiAgICAgICAgfQoKICAgICAgICAvLyAtLS0tIHRyYW5zYWN0aW9uIG1ldGEgLS0tLQogICAgICAgIHNlcCgpOwogICAgICAgIGt2KCdEYXRlJywgZm10RGF0ZShjcy5ldmVudFN0YXJ0RGF0ZVRpbWUpKTsKICAgICAgICBrdignVHJhbnNhY3Rpb24gIycsIGNzLnRyYW5zYWN0aW9uSUQpOwogICAgICAgIGt2KCdDb25maXJtYXRpb24nLCBjcy5jb25maXJtYXRpb25OdW1iZXIpOwogICAgICAgIGNvbnN0IHN0bCA9IFtzZWxsZXIuc3RvcmVMb2NhdGlvbklELCBzZWxsZXIudGlsbElELCBzZWxsZXIuc291cmNlUE9JXQogICAgICAgICAgLmZpbHRlcihoYXMpLmpvaW4oJyAvICcpOwogICAgICAgIGt2KCdTdG9yZSAvIFRpbGwgLyBMYW5lJywgc3RsKTsKICAgICAgICBrdignQ2FzaGllcicsIHNlbGxlci5jYXNoaWVySUQpOwoKICAgICAgICAvLyAtLS0tIGxpbmUgaXRlbXMgKGR5bmFtaWMsIE4gaXRlbXMpIC0tLS0KICAgICAgICBjb25zdCBsaW5lcyA9IEFycmF5LmlzQXJyYXkoY3MudHJhbnNhY3Rpb25EZXRhaWxHcm91cCkKICAgICAgICAgID8gY3MudHJhbnNhY3Rpb25EZXRhaWxHcm91cCA6IFtdOwogICAgICAgIGNvbnN0IGl0ZW1zID0gbGluZXMuZmlsdGVyKAogICAgICAgICAgKGwpID0+IGwgJiYgKGwudHlwZSA9PT0gJ1Bvc0pvdXJuYWxJdGVtTGluZScgfHwgbC5yZWd1bGFyU2VsbFByaWNlIHx8IGwuYWN0dWFsU2FsZXNQcmljZSkpOwogICAgICAgIGNvbnN0IHRlbmRlcnMgPSBsaW5lcy5maWx0ZXIoCiAgICAgICAgICAobCkgPT4gbCAmJiAobC50eXBlID09PSAnUG9zSm91cm5hbFRlbmRlckluZm9MaW5lJyB8fCBsLnRlbmRlckFtb3VudCkpOwoKICAgICAgICBsZXQgc3VidG90YWwgPSAwOwogICAgICAgIGxldCB0YXhUb3RhbCA9IDA7CgogICAgICAgIGlmIChpdGVtcy5sZW5ndGgpIHsKICAgICAgICAgIHNlcCgpOwogICAgICAgICAgdHdvQ29sKCdJVEVNJywgJ0FNT1VOVCcsICdyYy1jb2xzJyk7CiAgICAgICAgICBmb3IgKGNvbnN0IGl0IG9mIGl0ZW1zKSB7CiAgICAgICAgICAgIGNvbnN0IHByaWNlID0gaXQucmVndWxhclNlbGxQcmljZSB8fCBpdC5hY3R1YWxTYWxlc1ByaWNlOwogICAgICAgICAgICByZW1lbWJlckN1cihwcmljZSk7CiAgICAgICAgICAgIHR3b0NvbChpdC5kZXNjcmlwdGlvbiB8fCAnSXRlbScsIG1vbmV5KHByaWNlKSwgJ3JjLWl0ZW0gbW9ubycpOwoKICAgICAgICAgICAgLy8gcGVyLWl0ZW0gZGlzY291bnRzICgwLi5uKQogICAgICAgICAgICBjb25zdCBkaXNjb3VudHMgPSBBcnJheS5pc0FycmF5KGl0LmRpc2NvdW50KSA/IGl0LmRpc2NvdW50CiAgICAgICAgICAgICAgOiAoaXQuZGlzY291bnQgPyBbaXQuZGlzY291bnRdIDogW10pOwogICAgICAgICAgICBsZXQgZGlzY1N1bSA9IDA7CiAgICAgICAgICAgIGZvciAoY29uc3QgZCBvZiBkaXNjb3VudHMpIHsKICAgICAgICAgICAgICBjb25zdCBsYWJlbCA9IGQuZGlzY291bnRSZWFzb24gPT09ICdzdG9yZUNvdXBvbk9mZmVyJyA/ICdTdG9yZSBDb3Vwb24nCiAgICAgICAgICAgICAgICA6IChkLmRpc2NvdW50TmFtZSB8fCBkLmRpc2NvdW50UmVhc29uIHx8ICdEaXNjb3VudCcpOwogICAgICAgICAgICAgIHR3b0NvbChsYWJlbCwgbW9uZXkoZC5kaXNjb3VudEFtb3VudCksICdyYy1saW5lIG1vbm8gcmMtZGlzYycpOwogICAgICAgICAgICAgIGRpc2NTdW0gKz0gbnVtKGQuZGlzY291bnRBbW91bnQpOwogICAgICAgICAgICB9CgogICAgICAgICAgICAvLyBwZXItaXRlbSB0YXhlcyAoMC4ubikg4oCUIG9wdGlvbmFsCiAgICAgICAgICAgIGNvbnN0IHRheGVzID0gQXJyYXkuaXNBcnJheShpdC5pdGVtVGF4ZXMpID8gaXQuaXRlbVRheGVzCiAgICAgICAgICAgICAgOiAoaXQuaXRlbVRheGVzID8gW2l0Lml0ZW1UYXhlc10gOiBbXSk7CiAgICAgICAgICAgIGZvciAoY29uc3QgdCBvZiB0YXhlcykgewogICAgICAgICAgICAgIHR3b0NvbCgnVGF4JywgbW9uZXkodC50YXhDb2xsZWN0ZWRBbW91bnQpLCAncmMtbGluZSBtb25vIHJjLXRheGxpbmUnKTsKICAgICAgICAgICAgICB0YXhUb3RhbCArPSBudW0odC50YXhDb2xsZWN0ZWRBbW91bnQpOwogICAgICAgICAgICB9CgogICAgICAgICAgICAvLyBuZXQgZm9yIHRoaXMgaXRlbTogcHJlZmVyIGFjdHVhbFNhbGVzUHJpY2UsIGVsc2UgcmVndWxhciArIGRpc2NvdW50cwogICAgICAgICAgICBjb25zdCBuZXQgPSBpdC5hY3R1YWxTYWxlc1ByaWNlCiAgICAgICAgICAgICAgPyBudW0oaXQuYWN0dWFsU2FsZXNQcmljZSkKICAgICAgICAgICAgICA6IG51bShpdC5yZWd1bGFyU2VsbFByaWNlKSArIGRpc2NTdW07CiAgICAgICAgICAgIHN1YnRvdGFsICs9IG5ldDsKICAgICAgICAgIH0KCiAgICAgICAgICBzZXAoKTsKICAgICAgICAgIHR3b0NvbCgnU3VidG90YWwnLCBtb25leShzdWJ0b3RhbCksICdyYy1pdGVtIG1vbm8gcmMtc3VidG90YWwnKTsKICAgICAgICAgIGlmICh0YXhUb3RhbCA+IDApIHsKICAgICAgICAgICAgdHdvQ29sKCdUYXgnLCBtb25leSh0YXhUb3RhbCksICdyYy1pdGVtIG1vbm8gcmMtc3VidG90YWwnKTsKICAgICAgICAgIH0KICAgICAgICAgIHR3b0NvbCgnVE9UQUwnLCBtb25leShzdWJ0b3RhbCArIHRheFRvdGFsKSwgJ3JjLXRvdGFsJyk7CiAgICAgICAgfQoKICAgICAgICAvLyAtLS0tIHBheW1lbnQgLyB0ZW5kZXIgbGluZXMgLS0tLQogICAgICAgIGlmICh0ZW5kZXJzLmxlbmd0aCkgewogICAgICAgICAgc2VwKCk7CiAgICAgICAgICBmb3IgKGNvbnN0IHQgb2YgdGVuZGVycykgewogICAgICAgICAgICBjb25zdCBjb2RlID0gdC50ZW5kZXIgJiYgdC50ZW5kZXIudGVuZGVyQ29kZTsKICAgICAgICAgICAgY29uc3QgbGFiZWwgPSB0LmRlc2NyaXB0aW9uCiAgICAgICAgICAgICAgfHwgKCdQYXltZW50JyArIChoYXMoY29kZSkgPyAnICgnICsgY29kZSArICcpJyA6ICcnKSk7CiAgICAgICAgICAgIHR3b0NvbChsYWJlbCwgbW9uZXkodC50ZW5kZXJBbW91bnQpLCAncmMtcGF5IG1vbm8nKTsKICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIC8vIC0tLS0gb3B0aW9uYWwgcmVjZWlwdCBpbWFnZSAtLS0tCiAgICAgICAgaWYgKGhhcyhjcy5pbWFnZSkpIHsKICAgICAgICAgIGNvbnN0IHdyYXAgPSBlbGVtKCdkaXYnLCAncmMtaW1hZ2UnKTsKICAgICAgICAgIGNvbnN0IGltZyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2ltZycpOwogICAgICAgICAgaW1nLnNyYyA9IGNzLmltYWdlOwogICAgICAgICAgaW1nLmFsdCA9ICdSZWNlaXB0IGltYWdlJzsKICAgICAgICAgIHdyYXAuYXBwZW5kQ2hpbGQoaW1nKTsKICAgICAgICAgIGJvZHkuYXBwZW5kQ2hpbGQod3JhcCk7CiAgICAgICAgfQoKICAgICAgICAvLyAtLS0tIGZvb3RlciAtLS0tCiAgICAgICAgYm9keS5hcHBlbmRDaGlsZChlbGVtKCdkaXYnLCAncmMtdGhhbmtzJywKICAgICAgICAgICdUaGFuayB5b3UgZm9yIHNob3BwaW5nIGF0ICcgKyAoc2VsbGVyLmRlc2NyaXB0aW9uIHx8ICdNYXZlcmlrJykgKyAnIScpKTsKCiAgICAgICAgd2luZG93LnJlbmRlck1ldGhvZFJlYWR5KCk7CiAgICAgIH0gY2F0Y2ggKGVycikgewogICAgICAgIGlmICh3aW5kb3cucmVuZGVyTWV0aG9kUmVhZHkpCiAgICAgICAgICB3aW5kb3cucmVuZGVyTWV0aG9kUmVhZHkoZXJyIGluc3RhbmNlb2YgRXJyb3IgPyBlcnIgOiBuZXcgRXJyb3IoU3RyaW5nKGVycikpKTsKICAgICAgfQogICAgfSk7CiAgPC9zY3JpcHQ+CjwvZGl2Pgo=", "outputPreference": { "mode": [ "visual" ], "mediaType": "application/html" } } ] }
Queries
{ "default": { "type": "QueryByExample", "credentialQuery": [ { "reason": "Please present your Receipt credential to verify your purchase.", "example": { "@context": [ "https://www.w3.org/ns/credentials/v2", "https://w3id.org/retail-dw/v1rc5" ], "type": [ "RetailCredential" ], "credentialSubject": { "type": "Receipt" } }, "acceptedCryptosuites": [ "eddsa-rdfc-2022", "ecdsa-rdfc-2019", "bbs-2023", "ecdsa-sd-2023" ] } ] } }