Skip to main content
Version: v0.25.0 (Latest)

Developer Console

The Developer Console is the deployment-aware API workspace. It shows only mounted and licensed API surfaces, renders their current OpenAPI descriptions and examples in Scalar, generates matching Postman artifacts, and forwards approved live requests without exposing the access token to browser code.

Use it beside Credentials, status, and trust, not as a replacement for that explanation. The guide tells you which operations belong together; the Developer Console tells you which of those operations this deployment actually exposes.

Runtime base path: /api/developer-console/v1

Three views of the same contract

GET /catalog returns a policy-filtered list of mounted tools. A missing tool may be disabled, unmounted, or unlicensed; the browser does not receive hidden entries and then conceal them with CSS.

For credential work, look for these surfaces:

Guide stepMounted API surface
Define SD-JWT, mdoc, or W3C designCredential design
Create and transition statusStatus-list management
Fetch public signed statusStatus-list hosting
Create offer and issueOID4VCI issuer
Author format-specific queryDCQL
Create request and verifyOID4VP verifier
Resolve provider, key, and certificateKMS
Admit issuer/VICAL signer and attach policyTrust domain
Loading example...

Run one complete credential profile

Do not mix folders. Choose one row and keep its design, OID4VCI format, credential status reference, public status response, and verification query aligned.

Collection folderCredential formatStatus formatWhat to inspect after issuance
01 JWT Token Status List + SD-JWT VCdc+sd-jwtJWT Token Status, application/statuslist+jwtSD-JWT vct, holder binding, disclosures, status.status_list URI/index
02 CWT Token Status List + ISO mdocmso_mdocCWT Token Status, application/statuslist+cwtCBOR/MSO docType, DSC x5chain, device/holder binding, MSO status URI/index
03 W3C VCDM 1.1 + StatusList2021jwt_vc_jsonStatusList2021 VC-JWT, application/vc+jwtVCDM 1.1 context/type and credentialStatus
04 W3C VCDM 2.0 + StatusList2021jwt_vc_json-ldStatusList2021 VC-JWT, application/vc+jwtVCDM 2.0 context/type and credentialStatus

The fifth folder contains Azure KMS, BYOK, and BYOC mutations. Those requests are disabled by default because they require an explicitly approved Azure target and tenant-owned credentials.

Before running a folder

Populate only values owned by your local or approved test deployment:

  • tenant and gateway bases resolved from that deployment;
  • a tenant-scoped management token held in an approved secret mechanism;
  • a status-list KMS resource handle and provider-native signing alias;
  • the issuer verification method or X.509 signing selection required by the profile;
  • the OID4VCI credential endpoint, wallet access token, credential identifier, and proof obtained from the live protocol flow.

The collection does not manufacture a valid wallet proof or bypass OID4VCI. An empty credentialEndpoint, walletAccessToken, credentialIdentifier, or proofJwt means the issuance request is not ready.

Profile 1: SD-JWT VC and JWT Token Status

SD-JWT VC uses JSON claims and selective disclosures. Its OID4VCI format is dc+sd-jwt. The status reference is issuer-signed as status.status_list.uri and idx; the referenced publication is a compact JWT Token Status List.

Run folder 01 in this order:

  1. Create JWT status list and save the returned list id.
  2. Fetch JWT status list and confirm application/statuslist+jwt.
  3. Complete the live OID4VCI offer/token steps and set the four wallet variables.
  4. Issue SD-JWT VC and decode the issuer-signed payload.
  5. Revoke SD-JWT status entry, fetch again after the cache policy permits, and verify rejection of the same credential.

Profile 2: ISO mdoc and CWT Token Status

mdoc uses mso_mdoc, CBOR issuer-signed data, a DSC certificate chain, and optionally device authentication. Its status publication is raw COSE/CWT bytes. VICAL may contribute mdoc trust anchors, but it is not the status list.

Run folder 02 in this order:

  1. Create CWT mdoc status list and confirm cwt, mdocProfile: status_list, and one-bit status.
  2. Fetch CWT mdoc status list and confirm application/statuslist+cwt; do not parse it as JSON.
  3. Complete the live OID4VCI mdoc offer/token steps.
  4. Issue ISO mdoc, base64url-decode the returned opaque credential as CBOR, and inspect the MSO status URI/index.
  5. Revoke mdoc status entry, refresh the CWT, and verify rejection of the same mdoc.

Read mDoc VICAL and CWT status before claiming VICAL-backed verification.

Profile 3: W3C VCDM 1.1 in JWT and StatusList2021

VCDM 1.1 uses OID4VCI jwt_vc_json, the VCDM 1.1 context, and an issuer-signed credentialStatus object. The public status artifact is a StatusList2021 credential serialized as application/vc+jwt.

Run folder 03 in this order:

  1. Create VCDM 1.1 credential design and confirm its context and EmployeeCredentialV11 binding.
  2. Create VCDM 1.1 StatusList2021 list.
  3. Complete OID4VCI issuance using the jwt_vc_json configuration.
  4. Decode the VC JWT and confirm credentialStatus.statusListCredential and statusListIndex.
  5. Fetch VCDM 1.1 StatusList2021 credential, then revoke and prove rejection after refresh.

The curated folder currently supplies the design, list, fetch, and revoke contracts. Preserve the real OID4VCI request and response as sanitized runtime evidence; do not infer issuance from design creation.

Profile 4: W3C VCDM 2.0 in JWT and StatusList2021

VCDM 2.0 uses OID4VCI jwt_vc_json-ld and the VCDM 2.0 context. It can use the same StatusList2021 entry shape as the VCDM 1.1 lane, but its credential contract is not interchangeable with 1.1.

Run folder 04 in this order:

  1. Create VCDM 2.0 credential design and confirm its context and EmployeeCredentialV20 binding.
  2. Create VCDM 2.0 StatusList2021 list.
  3. Complete OID4VCI issuance using the jwt_vc_json-ld configuration.
  4. Decode the VC JWT and confirm VCDM 2.0 content plus credentialStatus.
  5. Fetch, revoke, refresh, and prove rejection as in the 1.1 lane.

Do not advertise VCDM 2.0 as jwt_vc_json merely because its serialization is a JWT.

From issuance to verification

The four curated folders emphasize design and status. To complete the lifecycle in the live Developer Console, continue through the mounted OID4VCI, DCQL, and OID4VP tools:

  1. Create an offer for the exact credential configuration.
  2. Complete the wallet token and credential request.
  3. Inspect and store the credential in a real wallet.
  4. Author a DCQL query using the matching format and claim paths.
  5. Bind a pinned query version to the verifier.
  6. Create the OID4VP request and complete it with the wallet.
  7. Record signature/holder or device binding, trust, and status outcomes separately.
Verifier testing surface for the complete wallet flow

A created offer, server-side testing session, or rendered QR is not proof that a wallet stored or presented a credential.

Exposure and safety model

Two settings decide what appears:

  • Console exposure is tenant-wide: PUBLIC or AS_PROTECTED; the default is protected.
  • Tool exposure is per tool: INHERIT, PUBLIC, or AS_PROTECTED; a tool can tighten but not weaken the console policy.

Each tool also has a safety class:

ClassReach
STATICSpecification and documentation only
BROWSER_LOCALRuns locally without tenant state
TENANT_READReads tenant data
TENANT_EXECUTEExecutes without persisting a change
TENANT_MUTATEChanges tenant state

Anything above BROWSER_LOCAL, and anything not explicitly public-capable, is forced to AS_PROTECTED. A missing tenant or licensed capability returns 404 so unavailable tools are not exposed as a discoverable permission list.

How live Try it keeps tokens out of browser code

The backend-for-frontend owns the authorization-code session:

The browser sends an allowlisted route id. The server chooses authority, resource, audience, scope, and redirect rules, then returns an authorization URL plus HttpOnly session cookies and a CSRF value.

Loading example...

The BFF is not an arbitrary proxy: the browser cannot choose an unrestricted upstream URL, audience, or scope. A 409 from an issuer remains a 409; read the upstream body before diagnosing it as a console failure.

Diagnose unavailable surfaces

  • 404: console disabled, tool disabled, route unmounted, or capability unlicensed. These are intentionally indistinguishable.
  • 401: authentication is required for the effective exposure.
  • 503: configuration or catalog resolution failed; treat this as an operational fault.