Credential document (olpn-credential.json)
Per-credential records issued by a property and back-linked to the subject.
A credential document is the issuer's side of a credential claim. It names the subject the credential was issued to and describes the credential itself. The issuer publishes one document per credential, at a predictable path on its own domain.
Where it lives
https://{issuer-domain}/{username}/olpn-credential.jsonWhere {issuer-domain} is the domain that issued the credential and {username} is an issuer-assigned handle for the subject. The credential ID that the subject publishes (@{username}@{issuer-domain}) tells the resolver which document to fetch.
Shape
{
"olpn_entity_id": "§:entity:subject.com",
"olpn_credential": {
"id": "@[email protected]",
"title": "Active Member",
"type": "Member",
"description": "Active member in good standing.",
"property": {
"id": "§:property:bar.example.com",
"name": "Example Bar Association",
"url": "https://bar.example.com",
"type": "Bar Association",
"description": "State bar of example.",
"ownership": [
{ "network_id": "§:entity:bar.example.com" }
]
},
"dataset": {
"id": "§:dataset:bar.example.com/members",
"name": "Active Members"
},
"profile_url": "https://bar.example.com/members/jane"
}
}Top-level fields
olpn_entity_id (string, required)
The network ID of the entity the credential was issued to. This is the back-link. The resolver matches this field against the network ID of the entity it is verifying. A mismatch means the credential is not for this entity and will not verify.
olpn_credential (object, required)
The credential body.
Credential object fields
id (string, recommended)
The credential ID in @username@domain[/path] form. Should match the URL path this document is served at. See Identifiers for the format.
title (string, required for meaningful display)
Human-readable title. Shown on search results: "Active Member", "Founding Supporter", "Contributor", "Partner".
type (string, optional)
Free-form classification. Common values:
Employment— employed by the issuerMember— member of the issuing organizationPublishing— contributor to the issuer's publicationSupport— supporter or donorEducation— educational credentialCertification— professional certification
description (string, optional)
Free-form description of what the credential attests to.
property (object, recommended)
A nested Property describing the issuing site. Same shape as a standalone property document, but embedded. This lets the resolver display issuer details without a separate fetch.
dataset (object, optional)
A Dataset reference grouping this credential with others issued by the same property. Has two fields:
id(string) — dataset ID, typically§:dataset:{issuer-domain}/{path}.name(string) — human-readable name, e.g., "Active Members", "Founding Supporters".
profile_url (string, optional)
A URL to the subject's profile on the issuing site. For example, a firm's bio page for the attorney, or a publication's author page. Lets the resolver link from the verified credential to the issuer's public view of the subject.
Minimum viable document
{
"olpn_entity_id": "§:entity:subject.com",
"olpn_credential": {
"title": "Member"
}
}The resolver will verify this credential as long as the entity's olpn.json also references the credential ID. The lack of property, dataset, and profile_url means the result page will have less context to display, but the verification itself succeeds.
Serving rules
- Path: exactly
/{username}/olpn-credential.jsonwhere{username}matches the username portion of the credential ID. - Content-Type:
application/json. - HTTP status: 200.