Developers — pseudobun.dev

Everything on pseudobun.dev that is meant to be read by a machine: two public read-only endpoints, an OpenAPI specification, Markdown representations of every page, and the open-source projects behind the work described here.

What this is, and what it is not

This is the personal site of Urban Vidovič, not a product. There is no product API, no account system, no API keys, no OAuth, no webhooks, and no sandbox environment — if you are looking for those, you are looking for the wrong domain. What does exist is documented here honestly and completely.

Everything below is public, unauthenticated, and read-only. You do not need to register, request access, or send a token. Please be reasonable with request volume: the host applies automatic bot mitigation, and sustained automated traffic can trip it and temporarily challenge every visitor to the site.

Public endpoints

GET /api/cv/
Renders the current CV to a PDF and returns it as an attachment (`application/pdf`, filename `urban-vidovic-cv.pdf`). Generated per request from the same source data as the HTML CV, so the two cannot diverge. Takes no parameters.
GET /api/og/
Returns the 1200x630 PNG social preview image for this site, including a daily snapshot of aggregate public GitHub contribution statistics. Takes no parameters.
curl -sSL -o cv.pdf https://pseudobun.dev/api/cv/
curl -sSL -o preview.png https://pseudobun.dev/api/og/

OpenAPI specification

The full machine-readable description lives at /openapi.json. It is OpenAPI 3.1.0, with a unique `operationId` and a description on every operation, typed response schemas, and an explicitly empty security scheme — which is how a client can tell that no credentials are expected rather than merely missing.

curl -sS https://pseudobun.dev/openapi.json | jq '.paths | keys'

Errors

Every failure under `/api` returns `application/problem+json` rather than an HTML error page, so a client never has to scrape a stack trace. The body always carries a stable `code`, a human-readable `message`, a `hint` naming the next thing to try, the `status`, and a `documentation_url` pointing back here.

{
  "error": {
    "code": "not_found",
    "message": "No such endpoint.",
    "hint": "The published endpoints are GET /api/cv/ and GET /api/og/. See /openapi.json for the full specification.",
    "status": 404,
    "documentation_url": "https://pseudobun.dev/en/developers/"
  }
}

Defined codes are `not_found` (404), `method_not_allowed` (405, with an `Allow` header), `internal_error` (500), and `upstream_unavailable` (503).

Markdown for agents

Every page on this site has a Markdown representation at the same URL. Send `Accept: text/markdown` and you get Markdown instead of HTML, per acceptmarkdown.com; those responses set `Vary: Accept`. A request that accepts neither `text/html` nor `text/markdown` gets a `406`. Quality values are honoured, so `text/markdown;q=0.9, text/html;q=0.8` resolves to Markdown.

curl -sS -H "Accept: text/markdown" https://pseudobun.dev/en/about/

Machine-readable files

/llms.txt
Site index in llmstxt.org format, including an explicit "when to use this site" section. Start here.
/agent.txt
The same guidance plus protocol notes, for tooling that probes this path.
/openapi.json
OpenAPI 3.1.0 description of the endpoints above.
/sitemap.xml
Every canonical URL, with hreflang alternates.
/robots.txt
Crawl policy.
/.well-known/keybase.txt
Signed proof binding this domain to the Keybase identity.

Open-source projects

The work described on this site is mostly public. Source for the projects below is on GitHub; each has its own documentation and release process in its own repository, and none of it is served from this domain.

Masca
A MetaMask Snap for decentralized identity — manage DIDs and verifiable credentials in the MetaMask wallet. masca.io
LutraID
Standards-based platform for issuing and verifying digital documents (OID4VCI, ISO mDoc). id.lutralabs.io
Swaylend
Lending protocol on Fuel Network, written in Sway. swaylend.com
EduCTX
Educational verifiable credentials conforming to W3C decentralized identity standards. platform2.eductx.org

Getting in touch

Integration questions, bug reports about anything above, and security disclosures all go to [email protected] — use the PGP key on Keybase for anything sensitive. Full details on the contact page.