PID

dPID • Persistent Identifiers • Content Adressing
The dPID system for research objects allows resolution to the underlying components in a consistent and granular way over HTTP and the IPFS network. You can learn more about the schema, syntax and variants below. Note that the system is under active development, and the specification is subject to change.
CID refers to Content Identifier according to the Multiformats CID Specification

dPID anatomy

HTTP URL = {Resolver}/{PID}/{version identifier OR CID}/{Component index}/{Component suffix}
Component
Component Description
Resolver
The DNS resolver, currently beta.dpid.org
PID
The registry's unique and version-invariant PID
Version identifier or CID
The version identifier (e.g. "v1" or "0") mapped to the CID of the manifest file or the manifest CID
Component index
The index of the component in the research object's data model, or the component ID
Component suffix
JSONPath to manifest component. Encoded with slashes and compact format for URL friendliness.
Example dPID Links for Data Access
Note: Excluding ?raw results in resolving the human-accessible data in the Nodes App or another configured resolver application.
API for Research Objects
Route
Behavior
GET https://beta.dpid.org/api/v1/dpid
List all registered research objects
Query Params
page: number = 1 // first page
size: number = 100 // 100 items
sort: "asc" | "desc" = "desc" // sort descending

Response

{
"dpid": "54",
"id": "0x0...",
"recentCid": "bafkre...",
"researchObject": {
"id": "0x0...",
"versions": [
{
"id": "0x0...",
"time": 1685098464,
"cid": "bafkre...",
},
{
"id": "0x0...",
"time": 1685098776,
"cid": "bafkre...",
}
]
}
}
GET https://beta.dpid.org/46/v1?raw
Get metadata for specific version of specific research object (application format) Response Typescript specification: https://github.com/desci-labs/nodes/blob/develop/desci-models/src/ResearchObject.ts
GET https://beta.dpid.org/46/v1?jsonld
Get metadata for specific version of specific research object (semantic format) Returns in RO-Crate 1.1 format Response Typescript specification: https://github.com/desci-labs/nodes/blob/develop/desci-models/src/RoCrate.ts
Navigating Data via dPID API
Route
Behavior
GET https://beta.dpid.org/46/root?raw GET https://beta.dpid.org/46/v1/root?raw deprecated GET https://beta.dpid.org/46/data?raw GET https://beta.dpid.org/46/v1/data?raw
These all do the same thing. Get the DAG-JSON encoded content of the root data folder. If version specified, uses that version, otherwise uses latest version.
Download the specific file specified, if not a file, but a folder, the DAG-JSON encoded content is shown
Valid PID syntax and variants
There are three different and valid variants of the PIDs that can be resolved over HTTP. These variants offer different levels of friendliness for humans.
Variant types
Variant syntax (human)
Variant syntax (machine)
Short form URL variant (recommended)
Short form URL variant 0-index
⚠️
deprecated
Long form URL
⚠️
coming soon
dpid.org/42/bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdi/1/measurements.csv
dpid.org/42/bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdi/1/measurements.csv?raw