Property document (olpn-property.json)
The per-site record that confirms which entities own a given property.
A property is a domain or site an entity claims ownership of. The property document at https://{property-domain}/olpn-property.json is the site's side of that claim: it names the entities that own it. Two-way ownership verification requires both the entity (via its olpn.json properties[]) and the property (via its olpn-property.json ownership[]) to name each other.
Shape
{
"olpn_property": {
"id": "§:property:example.com",
"name": "Example Law",
"url": "https://example.com",
"type": "Law Firm Website",
"description": "The firm's public website.",
"ownership": [
{ "network_id": "§:entity:example.com" }
]
}
}Fields
olpn_property.id (string, required)
Property identifier, §:property:{domain}. The {domain} should match the host serving the document.
olpn_property.url (string, recommended)
HTTPS URL to the property's public-facing home page. Used by the resolver to link out from the verified property card.
olpn_property.name (string, recommended)
Human-readable name. Shown on search results pages.
olpn_property.type (string, optional)
Free-form classification. Common values in existing deployments:
Website— generic personal or professional siteLaw Firm Website— firm homepageProtocol Site— sites that host protocol infrastructure (olpn.org itself)Newsletter— a Substack-style publicationProfile— a profile page on a larger platform (contributor profiles, etc.)
olpn_property.description (string, optional)
Free-form description, one or two sentences.
olpn_property.ownership (array, required for verification)
An array of PropertyOwner objects. Each has a single field:
network_id(string) — the OLPN entity ID of an owner.
A property can be owned by more than one entity. Each entity's olpn.json must list this property in its properties[], and this document's ownership[] must list that entity, for the ownership claim to verify.
Minimum viable document
{
"olpn_property": {
"id": "§:property:example.com",
"ownership": [
{ "network_id": "§:entity:example.com" }
]
}
}Serving rules
- Path: exactly
/olpn-property.jsonat the property's domain. - Content-Type:
application/json. - HTTP status: 200.
- CORS: no specific requirement.
Multi-owner properties
A firm website owned by three partners would list all three in ownership[]:
{
"olpn_property": {
"id": "§:property:smithjonesdoe.com",
"name": "Smith Jones Doe LLP",
"url": "https://smithjonesdoe.com",
"type": "Law Firm Website",
"ownership": [
{ "network_id": "§:entity:smith.law" },
{ "network_id": "§:entity:jones.law" },
{ "network_id": "§:entity:doe.law" }
]
}
}Each partner's olpn.json needs to include §:property:smithjonesdoe.com in properties[] for their individual ownership claim to verify. Partners who don't list it are still named in ownership[] but won't verify from the resolver's perspective.