Defining an API

Core types

Route primitives exported from the core package.

Types

These types are exported from accorudo/core:

type Route<Method, Fragment, Query, Body, Response>            // JSON (default)
type MultipartRoute<Method, Fragment, Query, Body, Response>   // file uploads
type RouteFragment<Path, PathParams>                           // e.g. "/user/:id", { id: string }
type CombineRouteFragments<Left, Right>                        // compose nested paths
type PaginationOptions                                         // { limit?, offset? }

RouteFragment

A reusable path segment with typed :params:

import type { RouteFragment } from "accorudo/core"

export type IdentifyWidgetRouteFragment = RouteFragment<"/widget/:id", { id: string }>;
// path: "/widget/:id", pathParams: { id: string }

CombineRouteFragments

Compose nested path segments. Path params from both fragments are merged:

import type { CombineRouteFragments } from "accorudo/core"

export type WidgetTagsRouteFragment = CombineRouteFragments<
  IdentifyWidgetRouteFragment,
  RouteFragment<"/tags">
>;
// path: "/widget/:id/tags", pathParams: { id: string }

Route

The default route type for JSON request/response bodies. The fifth generic is the expected response shape.

import type { Route } from "accorudo/core"

export type GetWidgetRoute = Route<
  "get",                            // method
  IdentifyWidgetRouteFragment,      // path fragment
  {},                               // query parameters
  {},                               // body parameters
  Success<WidgetEntity>             // response
>;

MultipartRoute

Same shape as Route, but typed for multipart/form-data uploads. See Multipart routes.

Copyright © 2026