Skip to main content

Protocol specification

Datasets

Grouping credentials on the issuer side so consumers can tell them apart.

A dataset is the issuer's label for a group of related credentials. When a firm issues different credential types (attorneys, of counsel, founding partners, alumni), each group is its own dataset. The credential's dataset field points at the one it belongs to, so consumers can render and filter credentials in context.

Shape

Datasets appear inside a credential document's olpn_credential.dataset field:

{
  "olpn_credential": {
    ...
    "dataset": {
      "id": "§:dataset:hkgclaw.com/attorneys",
      "name": "Attorneys"
    }
  }
}

Fields

  • id (string) — the dataset ID, §:dataset:{domain}/{path}.
  • name (string) — human-readable name.

Why the issuer domain is in the ID

Datasets are scoped to their issuer. Two firms can both have an "Attorneys" dataset; they are distinguished by the domain in the ID. This makes dataset IDs globally unique and avoids a separate registry.

Path encoding

The path after the issuer domain is arbitrary. Common choices are short slugs that describe the group:

  • §:dataset:firm.com/attorneys
  • §:dataset:firm.com/alumni
  • §:dataset:firm.com/of-counsel
  • §:dataset:bar.example.com/active-members
  • §:dataset:bar.example.com/emeritus
  • §:dataset:olpn.org/founding-supporters

The resolver does not interpret the path. It is opaque from the protocol's perspective. Issuers should keep the path stable if they want credentials to remain legible across renders.

Datasets and the credential ID path

Credential IDs can optionally encode the dataset path: @[email protected]/attorneys. This is a hint for the resolver about where the credential lives, but the credential's dataset.id is the authoritative mapping. The two should agree. When they diverge, consumers should trust the dataset.id in the credential document body.

No enumeration endpoint

OLPN does not define a "list all datasets" or "list all credentials in dataset X" endpoint. Datasets are a grouping label, not an index. A consumer who wants to list every attorney at a firm has to find that through other means (crawling, an out-of-band list, or a platform-specific API). The protocol is designed to verify a claim once you have it, not to enumerate claims at a distance.

Future: dataset manifests

The protocol may grow a separate dataset manifest document in the future ({domain}/{path}/olpn-dataset.json) that lists all credentials in a dataset. This is not currently implemented. When it is, it will be additive and opt-in.