PowerShell samples

$env:DILIGENCE_BASE_URL = 'https://api.example.diligence.id'
$env:DILIGENCE_API_KEY  = 'YOUR_API_KEY'

$Base       = $env:DILIGENCE_BASE_URL
$Mgmt       = "$Base/management"
$ApiVersion = '2026-08-30'
$Headers    = @{ Authorization = "ApiKey $($env:DILIGENCE_API_KEY)" }

Read the key from the environment or a secret store. Do not put it in the script.

Management

List issuers

$issuers = Invoke-RestMethod -Uri "$Mgmt/issuers?api-version=$ApiVersion" -Headers $Headers
$issuers.value | Format-Table issuerId, displayName, status

The response is { value, nextLink } — read .value, and loop on .nextLink when it becomes non-null.

Create an issuer

$body = @{
    displayName           = 'Sample Issuer'
    organisationReference = 'YOUR_ORGANISATION_REFERENCE'
    issuerType            = 'Root'
    signingKey            = @{ algorithm = 'ES256'; provider = 'Software' }
} | ConvertTo-Json -Depth 5

$issuer = Invoke-RestMethod -Method Post -Uri "$Mgmt/issuers?api-version=$ApiVersion" `
    -Headers $Headers -ContentType 'application/json' -Body $body

$issuerId = $issuer.name

Configure it, conditionally

$response = Invoke-WebRequest -Uri "$Mgmt/issuers/$issuerId`?api-version=$ApiVersion" -Headers $Headers
$etag = $response.Headers['ETag']

$update = @{ displayName = 'Sample Issuer (renamed)' } | ConvertTo-Json

Invoke-RestMethod -Method Patch -Uri "$Mgmt/issuers/$issuerId`?api-version=$ApiVersion" `
    -Headers ($Headers + @{ 'If-Match' = $etag }) -ContentType 'application/json' -Body $update

A stale tag returns 412. Re-read, re-apply, retry.

Readiness and activation

$readiness = Invoke-RestMethod -Uri "$Mgmt/issuers/$issuerId/readiness?api-version=$ApiVersion" -Headers $Headers
$readiness.properties

if ($readiness.properties.readyForActivation) {
    Invoke-RestMethod -Method Post -Uri "$Mgmt/issuers/$issuerId/activate?api-version=$ApiVersion" -Headers $Headers
}

Product

Issue

$issuance = @{
    issuerId                 = $issuerId
    credentialConfiguration  = 'sample-membership'
    externalSubjectReference = 'sample-subject'
    claims                   = @{ member_number = 'M-000123' }
} | ConvertTo-Json -Depth 5

$result = Invoke-RestMethod -Method Post -Uri "$Base/v1.0/credentials/issuance" `
    -Headers ($Headers + @{ 'Idempotency-Key' = 'sample-issue-001' }) `
    -ContentType 'application/json' -Body $issuance

$result.data.status   # awaiting_wallet

Handle errors

try {
    Invoke-RestMethod -Method Post -Uri "$Mgmt/issuers/$issuerId/activate?api-version=$ApiVersion" -Headers $Headers
}
catch {
    $body = $_.ErrorDetails.Message | ConvertFrom-Json
    Write-Warning "code=$($body.error.code) requestId=$($body.error.innerError.requestId)"
}

Branch on error.code. Log requestId — it is what makes a support request answerable.

Edit this page on GitHub