Users
The DFOS API exposes public user profiles. A profile carries only public identity information — a protocol DID, handle, display name, avatar, bio, and profile links. It never exposes presence (whether someone is online), account data, or any exact numbers about a person.
Public by default
DFOS user profiles are public by design. Every profile is listed and fetchable
by default, and an owner can opt out to make their profile private. A private
profile does not appear in the listing, and fetching it directly returns
404 Not Found — indistinguishable from a profile that does not exist.
Identifying a user
GET /v1/users/{user} accepts three forms of identifier:
- Handle (username), e.g.
bvalosek. Handles are case-insensitive. - Identity entity id, e.g.
identity_6encc4akrze2ah9kntzd9t. - Protocol DID, e.g.
did:dfos:6encc4akrze2ah9kntzd9tc8zr24crc— the samedidvalue the API returns.
A handle is a mutable alias: it can change or be released, and a released handle may later belong to a different user. The identity id and protocol DID are the canonical, stable identifiers to store.
Legacy internal identifiers are not accepted and return 404 Not Found.
Listing
GET /v1/users lists public profiles, cursor-paginated. Ordering is
deterministic and stable across pages but otherwise unspecified — do not depend
on it. Test/QA accounts are excluded from the listing.
See Conventions for the pagination contract, and Posts for how a user appears as a post author.