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.