samples/dotnet/inproc/ in the repository (veriqa.app/source)
and are MIT-licensed.
How each of them works
Every sample is one process in two roles: the Veriqa issuer (embedded) and the backend that calls it only over the public HTTP API. Point the backend at a standalone Veriqa and it works the same.POST /connect/tokenwithgrant_type=client_credentials.POST /api/transaction/confirmationwith the declaredaction_typeand itsslot_values.- The page shows
channel_entry.qr— the QR image the API returns — for the user to scan with their phone. - The backend polls
GET /api/transaction/{id}/result. - On
confirmedit may exchange the transaction once for theid_tokenof the person who confirmed (grant_type=urn:veriqa:params:oauth:grant-type:confirmation).
The configuration that makes it work
The backend’s client entry inappsettings.json carries:
AllowClientCredentials: true— the backend may get a token for the API (needs aClientSecret);AllowConfirmationTokenGrant: trueandopenidinAllowedScopes— step 5;MessageTemplates:<action type>— the declaration of the action:Contract:SlotsandTemplates. It belongs in the client entry; an action type declared only at the host level is refused withaction_type_unknown;- for
step-upalsoIdentityMatchComparableTypes, which declares the identity compared with the person who confirmed. Without it the request is refused withcandidate_type_undeclared.
Veriqa:Channels:OutcomeNotice:DisplayIntent to NewMessage: the receipt
arrives as a message of its own and the question with the wording of the action stays in the
conversation. See OutcomeNotice in Configuration.
Run a sample
Each sample needs a trusted local HTTPS certificate (dotnet dev-certs https --trust) and a Telegram
bot token from @BotFather. Pass the token through user secrets, not a
committed file:
step-up and agent-approval replace the project path. In Development the bot runs in polling
mode, so no public URL is needed. Without an enabled channel, creating a confirmation fails with
503 channel_display_failed.
What to try in each:
- confirmation — click Ask for approval, confirm in the bot: the page shows
Outcome: confirmedand the claims of theid_token. - step-up — delete a project: the first person to confirm becomes the owner. Delete another one from a different Telegram account: the confirmation succeeds, but the page shows Not deleted — confirmed, but not by the owner.
- agent-approval — click Hand the ticket to the agent: the agent stops at
refund_paymentuntil you approve. Decline on a second run: the refund is not executed and the agent tells the customer a colleague will contact them. The agent follows a fixed plan, so no model or API key is needed.