Skip to content
fossyl

Type-safe REST API framework designed for AI-assisted development

Type-Safe Routes

Full TypeScript type inference for routes, parameters, and responses

Pure Functional

Validator-library agnostic with simple function types

Query Validation

Optional type-safe query parameter validation

Authentication

Type-safe authentication with custom authentication functions

AI-First

Designed for seamless integration with AI coding assistants

export const getUserRoute = { path: string method: RestMethod steps: Steps[] handler: Function authenticator?: AuthenticationFunction<any> validator?: ValidatorFunction<any> queryValidator?: ValidatorFunction<any> urlParamValidator?: ValidatorFunction<any> paginationConfig?: PaginationConfig hasTransaction: boolean } = routerRouter<"/api/users">
.createEndpoint<Path extends `/api/users${string}`>( path: Path, ) => Endpoint<Path, true>("/api/users/:id")
.get<Response extends ResponseData>( handler: ( parameters: { url: { id: string } & { readonly __kind: "url" } } & { readonly __kind: "parameters" }, ) => () => Promise<Response>, ) => Route((params{ url: { id: string } & { readonly __kind: "url" } } & { readonly __kind: "parameters" }) => async () => {
const userUserRow = { id: number name: string email: string created_at: string } = await userService.getUserRoute = { path: string method: RestMethod steps: Steps[] handler: Function authenticator?: AuthenticationFunction<any> validator?: ValidatorFunction<any> queryValidator?: ValidatorFunction<any> urlParamValidator?: ValidatorFunction<any> paginationConfig?: PaginationConfig hasTransaction: boolean }(Number(params{ url: { id: string } & { readonly __kind: "url" } } & { readonly __kind: "parameters" }.url{ id: string } & { readonly __kind: "url" }.idstring));
return { typeName: "User" as const, ...userUserRow = { id: number name: string email: string created_at: string } };
});