ObjectStackObjectStack

Router

Router protocol schemas

Source: packages/spec/src/api/router.zod.ts

TypeScript Usage

import { ConflictResolutionStrategy, HttpMethod, RouteCategory, RouteDefinitionSchema, RouterConfigSchema } from '@objectstack/spec/api';
import type { ConflictResolutionStrategy, HttpMethod, RouteCategory, RouteDefinition, RouterConfig } from '@objectstack/spec/api';

// Validate data
const result = ConflictResolutionStrategy.parse(data);

ConflictResolutionStrategy

Allowed Values

  • error
  • priority
  • first-wins
  • last-wins

HttpMethod

HTTP method — the full routing vocabulary (api/* endpoints, router and REST-server routes). The narrower HttpMethodSubset is what view data sources may request.

Allowed Values

  • GET
  • POST
  • PUT
  • DELETE
  • PATCH
  • HEAD
  • OPTIONS

RouteCategory

Allowed Values

  • system
  • api
  • auth
  • static
  • webhook
  • plugin

RouteDefinition

Properties

PropertyTypeRequiredDescription
methodEnum<'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH' | 'HEAD' | 'OPTIONS'>HTTP method — the full routing vocabulary (api/* endpoints, router and REST-server routes). The narrower HttpMethodSubset is what view data sources may request.
pathstringURL Path pattern
categoryEnum<'system' | 'api' | 'auth' | 'static' | 'webhook' | 'plugin'>optional (default: "api")
handlerstringUnique handler identifier
summarystringoptionalOpenAPI summary
descriptionstringoptionalOpenAPI description
publicbooleanoptional (default: false)Is publicly accessible
permissionsstring[]optionalRequired permissions
timeoutintegeroptionalExecution timeout in ms
rateLimitstringoptionalRate limit policy name

RouterConfig

Properties

PropertyTypeRequiredDescription
basePathstringoptional (default: "/api")Global API prefix
mounts{ data: string; metadata: string; auth: string; automation: string; … }optional (has default)
cors{ enabled: boolean; origins: string | string[]; methods?: Enum<'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH' | 'HEAD' | 'OPTIONS'>[]; credentials: boolean; … }optional
staticMounts{ path: string; directory: string; cacheControl?: string }[]optional

Nested Shape: RouterConfig.mounts

PropertyTypeRequiredDescription
datastringoptional (default: "/data")Data Protocol (CRUD)
metadatastringoptional (default: "/meta")Metadata Protocol (Schemas)
authstringoptional (default: "/auth")Auth Protocol
automationstringoptional (default: "/automation")Automation Protocol
storagestringoptional (default: "/storage")Storage Protocol
analyticsstringoptional (default: "/analytics")Analytics Protocol
uistringoptional (default: "/ui")UI Metadata Protocol (Views, Layouts)
realtimestringoptional (default: "/realtime")Realtime/WebSocket Protocol
notificationsstringoptional (default: "/notifications")Notification Protocol
aistringoptional (default: "/ai")AI Engine Protocol (NLQ, Chat, Suggest)
i18nstringoptional (default: "/i18n")Internationalization Protocol
packagesstringoptional (default: "/packages")Package Management Protocol

Nested Shape: RouterConfig.cors

PropertyTypeRequiredDescription
enabledbooleanoptional (default: true)Enable CORS
originsstring | string[]optional (default: "*")Allowed origins (* for all)
methodsEnum<'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH' | 'HEAD' | 'OPTIONS'>[]optionalAllowed HTTP methods
credentialsbooleanoptional (default: false)Allow credentials (cookies, authorization headers)
maxAgeintegeroptionalPreflight cache duration in seconds

Nested Shape: RouterConfig.staticMounts[number]

PropertyTypeRequiredDescription
pathstringURL path to serve from
directorystringPhysical directory to serve
cacheControlstringoptionalCache-Control header value

On this page