Issuer Analytics

View as Markdown

4.5.1. Dashboard Widgets ##### When to use

You want to see a quick snapshot of issuance and revocation activity for your DID(s).

Before you begin

Issuer role.

Steps
  1. Navigate to /issuer/analytics. 2. The page renders:
    • KPIs — Issued (lifetime), Issued (30d), Revoked (30d), Active credentials.
    • Issuance trend chart — daily counts over selectable range.
    • Revocation trend chart — daily counts.
    • Top schemas — ranked by issuance volume.
    • Recent activity — last 50 events.
API
$curl "https://adid.dev/api/v1/issuers/did:adi:0xOrg.../analytics?from=2026-03-26&to=2026-04-26" \
> -H "Authorization: Bearer $ACCESS_TOKEN"

(Implemented at issuer_analytics.go, registered at router.go:154.)

Response (truncated):

1{
2 "issuerDid":"did:adi:0xOrg...",
3 "from":"2026-03-26","to":"2026-04-26",
4 "issued":{ "total": 42, "byDay":[{"day":"2026-04-25","count":5},{"day":"2026-04-26","count":7}] },
5 "revoked":{ "total": 3, "byDay":[...] },
6 "activeCredentials": 39,
7 "topSchemas":[{ "schemaId":"schema-uuid-1", "name":"OrganisationMembership", "issuedCount": 30 }]
8}
  • Stacked bars for issuance show schemas as colour stacks — useful to spot which credential type is dominating volume.
  • Line + area for revocation shows the running sum of active credentials.
  • Hover any data point to see the exact count and a click-through to the underlying credentials.

💡 Tip — A sudden spike in revocations is often the signal of a key compromise. Set up an email alert at /profile → Notifications → Daily revocation digest.

4.5.3. Activity Log ##### When to use

You want a per-event audit trail for compliance.

API
$curl "https://adid.dev/api/v1/issuers/did:adi:0xOrg.../activity?limit=50&offset=0" \
> -H "Authorization: Bearer $ACCESS_TOKEN"

(Implemented at issuer_analytics.go, registered at router.go:155.)

Response:

1{
2 "data":[
3 { "ts":"2026-04-26T11:59:01Z", "type":"issued", "credentialId":"...", "subjectDid":"did:adi:0x9a2c...", "schemaId":"..." },
4 { "ts":"2026-04-26T12:05:12Z", "type":"revoked", "credentialId":"...", "reason":"employment terminated" }
5 ],
6 "total": 50
7}
Export

Click Download CSV in the activity panel for a CSV export covering the current filter range. Output is signed with the platform’s audit key for downstream non-repudiation.

Verify

Cross-reference the activity log against your own internal records. Counts should match.

Troubleshooting
SymptomCauseFix
Counts don’t matchTime-zone mismatchActivity log is in UTC.
Some rows missingFilter too tightReset filters.
403 NOT_ISSUER_DIDCaller is not the issuerSign in as the right DID’s controller.