Griflan Developer Resources

Machine-readable access to griflan.com — the website of Griflan, a creative agency for branding, website design, web development, and digital experiences. Everything below is public, read-only, and needs no API key.

Griflan Content API

Static JSON documents generated at build time from the same records the site renders.

OpenAPI specification

The API surface is described by an OpenAPI 3.1 document at /openapi.json. It is also advertised from every page with <link rel="service-desc">.

API discovery

An RFC 9727 API catalog is published at /.well-known/api-catalog as an RFC 9264 Linkset, naming the API and linking its specification, documentation and metadata. Every response also carries Link: </.well-known/api-catalog>; rel="api-catalog".

Errors

Every path under /api that does not exist returns 404 with a JSON body — never an HTML page. Fields follow the member names of RFC 9457, plus code, resolution and available_endpoints so a client can correct itself without reading these docs.

curl -s https://griflan.com/api/does-not-exist

Markdown content negotiation

Every page serves a Markdown representation from its canonical URL to clients that ask for one, following the acceptmarkdown.com convention. Responses carry Vary: Accept, and an unsatisfiable Accept returns 406 Not Acceptable.

curl -H "Accept: text/markdown" https://griflan.com/work/upshop

The same document is also addressable directly by appending .md to any page path, e.g. /work/upshop.md. Pages advertise it with <link rel="alternate" type="text/markdown"> and a Link response header.

Agent and crawler files

Conventions