.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.

Edit this page on GitHub