ObjectStackObjectStack

Contract

Contract protocol schemas

Standard Create Request

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

TypeScript Usage

import { ApiError, BaseResponse, BatchLoadingStrategy, BulkRequest, BulkResponse, CreateRequest, DataLoaderConfig, DeleteResponse, ExportRequest, IdRequest, ListRecordResponse, ModificationResult, QueryOptimizationConfig, RecordData, SingleRecordResponse, UpdateRequest } from '@objectstack/spec/api';
import type { ApiError, BaseResponse, BatchLoadingStrategy, BulkRequest, BulkResponse, CreateRequest, DataLoaderConfig, DeleteResponse, ExportRequest, IdRequest, ListRecordResponse, ModificationResult, QueryOptimizationConfig, RecordData, SingleRecordResponse, UpdateRequest } from '@objectstack/spec/api';

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

ApiError

Properties

PropertyTypeRequiredDescription
codestringError code (e.g. validation_error)
messagestringReadable error message
categorystringoptionalError category (e.g. validation, authorization)
detailsanyoptionalAdditional error context (e.g. field validation errors)
requestIdstringoptionalRequest ID for tracking

BaseResponse

Properties

PropertyTypeRequiredDescription
successbooleanOperation success status
errorObjectoptionalError details if success is false
metaObjectoptionalResponse metadata

BatchLoadingStrategy

Properties

PropertyTypeRequiredDescription
strategyEnum<'dataloader' | 'windowed' | 'prefetch'>Batch loading strategy type
windowMsnumberoptionalCollection window duration in milliseconds (for windowed strategy)
prefetchDepthintegeroptionalDepth of relation prefetching (for prefetch strategy)
associationLoadingEnum<'lazy' | 'eager' | 'batch'>How to load related associations

BulkRequest

Properties

PropertyTypeRequiredDescription
recordsRecord<string, any>[]Array of records to process
allOrNonebooleanIf true, rollback entire transaction on any failure

BulkResponse

Properties

PropertyTypeRequiredDescription
successbooleanOperation success status
errorObjectoptionalError details if success is false
metaObjectoptionalResponse metadata
dataObject[]Results for each item in the batch

CreateRequest

Properties

PropertyTypeRequiredDescription
dataRecord<string, any>Record data to insert

DataLoaderConfig

Properties

PropertyTypeRequiredDescription
maxBatchSizeintegerMaximum number of keys per batch load
batchScheduleFnEnum<'microtask' | 'timeout' | 'manual'>Scheduling strategy for collecting batch keys
cacheEnabledbooleanEnable per-request result caching
cacheKeyFnstringoptionalName or identifier of the cache key function
cacheTtlnumberoptionalCache time-to-live in seconds (0 = no expiration)
coalesceRequestsbooleanDeduplicate identical requests within a batch window
maxConcurrencyintegeroptionalMaximum parallel batch requests

DeleteResponse

Properties

PropertyTypeRequiredDescription
successbooleanOperation success status
errorObjectoptionalError details if success is false
metaObjectoptionalResponse metadata
idstringID of the deleted record

ExportRequest

Properties

PropertyTypeRequiredDescription
objectstringObject name (e.g. account)
fields[__schema1](./__schema1)[]optionalFields to retrieve
where[__schema2](./__schema2)optionalFiltering criteria (WHERE)
searchObjectoptionalFull-text search configuration ($search parameter)
orderByObject[]optionalSorting instructions (ORDER BY)
limitnumberoptionalMax records to return (LIMIT)
offsetnumberoptionalRecords to skip (OFFSET)
topnumberoptionalAlias for limit (OData compatibility)
cursorRecord<string, any>optionalCursor for keyset pagination
joinsObject[]optionalExplicit Table Joins
aggregationsObject[]optionalAggregation functions
groupBystring[]optionalGROUP BY fields
having[__schema2](./__schema2)optionalHAVING clause for aggregation filtering
windowFunctionsObject[]optionalWindow functions with OVER clause
distinctbooleanoptionalSELECT DISTINCT flag
expandRecord<string, [__schema0](./__schema0)>optionalRecursive relation loading map. Keys are lookup/master_detail field names; values are nested QueryAST objects that control select, filter, sort, and further expansion on the related object. The engine resolves expand via batch $in queries (driver-agnostic) with a default max depth of 3.

IdRequest

Properties

PropertyTypeRequiredDescription
idstringRecord ID

ListRecordResponse

Properties

PropertyTypeRequiredDescription
successbooleanOperation success status
errorObjectoptionalError details if success is false
metaObjectoptionalResponse metadata
dataRecord<string, any>[]Array of matching records
paginationObjectPagination info

ModificationResult

Properties

PropertyTypeRequiredDescription
idstringoptionalRecord ID if processed
successboolean
errorsObject[]optional
indexnumberoptionalIndex in original request
dataanyoptionalResult data (e.g. created record)

QueryOptimizationConfig

Properties

PropertyTypeRequiredDescription
preventNPlusOnebooleanEnable N+1 query detection and prevention
dataLoaderObjectoptionalDataLoader batch loading configuration
batchStrategyObjectoptionalBatch loading strategy configuration
maxQueryDepthintegerMaximum depth for nested relation queries
queryComplexityLimitnumberoptionalMaximum allowed query complexity score
enableQueryPlanbooleanLog query execution plans for debugging


SingleRecordResponse

Properties

PropertyTypeRequiredDescription
successbooleanOperation success status
errorObjectoptionalError details if success is false
metaObjectoptionalResponse metadata
dataRecord<string, any>The requested or modified record

UpdateRequest

Properties

PropertyTypeRequiredDescription
dataRecord<string, any>Partial record data to update

On this page