AppView in a box as a Vite plugin thing hatk.dev

title: API Overview description: XRPC endpoints served by your Hatk server.#

Hatk serves XRPC endpoints at /xrpc/{nsid}. All built-in endpoints use the dev.hatk namespace.

Protocol#

  • Queries are GET requests with parameters in the query string
  • Procedures are POST requests with JSON (or binary) request bodies
  • All responses are JSON unless otherwise noted

Authentication#

hatk supports two authentication methods:

Session cookies (recommended for SvelteKit apps) -- login(), logout(), and parseViewer() from $hatk/client handle the full OAuth flow and store the session in an encrypted cookie. See the Auth guide.

DPoP browser tokens -- for direct XRPC calls from external clients, pass an OAuth DPoP bearer token in the Authorization header:

Authorization: DPoP <token>

Configure OAuth in your hatk.config.ts to enable authentication. See Configuration.

Client usage#

The generated callXrpc() function from $hatk/client provides typed access to all endpoints:

import { callXrpc } from "$hatk/client";

// Query (GET)
const { items, cursor } = await callXrpc("dev.hatk.getRecords", {
  collection: "fm.teal.alpha.feed.play",
  limit: 10,
});

// Procedure (POST)
const { uri, cid } = await callXrpc("dev.hatk.createRecord", {
  collection: "fm.teal.alpha.feed.play",
  repo: userDid,
  record: { createdAt: new Date().toISOString() },
});

// Pass SvelteKit's fetch for SSR deduplication
const data = await callXrpc("dev.hatk.getFeed", { feed: "recent" }, fetch);

The optional third parameter customFetch accepts a fetch function. Pass SvelteKit's fetch from load functions to enable request deduplication between server and client renders.

Built-in endpoints#

Endpoint Type Auth Description
getRecord Query No Fetch a single record by AT URI
getRecords Query No List records with filters
createRecord Procedure Yes Create a record via user's PDS
putRecord Procedure Yes Create or update a record
deleteRecord Procedure Yes Delete a record
getFeed Query No Retrieve a named feed
describeFeeds Query No List available feeds
searchRecords Query No Full-text search
uploadBlob Procedure Yes Upload a binary blob
getPreferences Query Yes Get user preferences
putPreference Procedure Yes Set a preference
describeLabels Query No List label definitions
createReport Procedure Yes Report an account or record
describeCollections Query No List indexed collections