.NET samples
Using the generated SDK.
using DiligenceID;
using DiligenceID.Management.Models;
using DiligenceID.Product.Models;
const string ApiVersion = "2026-08-30";
var apiKey = Environment.GetEnvironmentVariable("DILIGENCE_API_KEY")
?? throw new InvalidOperationException("DILIGENCE_API_KEY is not set.");
var credential = new DiligenceApiKeyCredential(apiKey);
var endpoint = new Uri("https://api.example.diligence.id");
var management = DiligenceClients.CreateManagement(endpoint, credential);
var product = DiligenceClients.CreateProduct(endpoint, credential);
List issuers
var issuers = await management.Management.Issuers.GetAsync(c => c.QueryParameters.ApiVersion = ApiVersion);
foreach (var issuer in issuers!.Value!)
{
Console.WriteLine($"{issuer.IssuerId}\t{issuer.Status}\t{issuer.DisplayName}");
}
Create an issuer
var created = await management.Management.Issuers.PostAsync(
new CreatePublicIssuerRequest
{
DisplayName = "Sample Issuer",
OrganisationReference = "YOUR_ORGANISATION_REFERENCE",
IssuerType = "Root",
},
c => c.QueryParameters.ApiVersion = ApiVersion);
var issuerId = created!.Name!;
Configure it, conditionally
var current = await management.Management.Issuers[issuerId].GetAsync(
c => c.QueryParameters.ApiVersion = ApiVersion);
await management.Management.Issuers[issuerId].PatchAsync(
new PublicIssuerConfigurationRequest { DisplayName = "Sample Issuer (renamed)" },
c =>
{
c.QueryParameters.ApiVersion = ApiVersion;
c.Headers.Add("If-Match", current!.Etag!);
});
Readiness and activation
var readiness = await management.Management.Issuers[issuerId].Readiness.GetAsync(
c => c.QueryParameters.ApiVersion = ApiVersion);
await management.Management.Issuers[issuerId].Activate.PostAsync(
c => c.QueryParameters.ApiVersion = ApiVersion);
Issue
var issuance = await product.V10.Credentials.Issuance.PostAsync(
new CreateIssuanceTransactionRequest
{
IssuerId = issuerId,
CredentialConfiguration = "sample-membership",
ExternalSubjectReference = "sample-subject",
},
c => c.Headers.Add("Idempotency-Key", "sample-issue-001"));
Console.WriteLine(issuance!.Data!.Status); // awaiting_wallet
Handle errors
try
{
await management.Management.Issuers[issuerId].Activate.PostAsync(
c => c.QueryParameters.ApiVersion = ApiVersion);
}
catch (ErrorEnvelope error)
{
Console.Error.WriteLine($"code={error.Error?.Code} requestId={error.Error?.InnerError?.RequestId}");
}
See SDK errors.