ObjectStackObjectStack

Documentation

Documentation protocol schemas

API Documentation & Testing Interface Protocol

Provides schemas for generating interactive API documentation and testing

interfaces similar to Swagger UI, GraphQL Playground, Postman, etc.

Features:

  • OpenAPI/Swagger specification generation

  • Interactive API testing playground

  • API versioning and changelog

  • Code generation templates

  • Mock server configuration

Architecture Alignment:

  • Swagger UI: Interactive API documentation

  • Postman: API testing collections

  • GraphQL Playground: GraphQL-specific testing

  • Redoc: Documentation rendering

@example Documentation Config


const docConfig: ApiDocumentationConfig = \{

enabled: true,

title: 'ObjectStack API',

version: '1.0.0',

servers: [\{ url: 'https://api.example.com', description: 'Production' \}],

ui: \{

type: 'swagger-ui',

theme: 'light',

enableTryItOut: true

\}

\}

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

TypeScript Usage

import { ApiChangelogEntry, ApiDocumentationConfig, ApiTestCollection, ApiTestRequest, ApiTestingUiConfig, ApiTestingUiType, CodeGenerationTemplate, GeneratedApiDocumentation, OpenApiSecurityScheme, OpenApiServer, OpenApiSpec } from '@objectstack/spec/api';
import type { ApiChangelogEntry, ApiDocumentationConfig, ApiTestCollection, ApiTestRequest, ApiTestingUiConfig, ApiTestingUiType, CodeGenerationTemplate, GeneratedApiDocumentation, OpenApiSecurityScheme, OpenApiServer, OpenApiSpec } from '@objectstack/spec/api';

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

ApiChangelogEntry

Properties

PropertyTypeRequiredDescription
versionstringAPI version
datestringRelease date
changesObjectVersion changes
migrationGuidestringoptionalMigration guide URL or text

ApiDocumentationConfig

Properties

PropertyTypeRequiredDescription
enabledbooleanEnable API documentation
titlestringDocumentation title
versionstringAPI version
descriptionstringoptionalAPI description
serversObject[]API server URLs
uiObjectoptionalTesting UI configuration
generateOpenApibooleanGenerate OpenAPI 3.0 specification
generateTestCollectionsbooleanGenerate API test collections
testCollectionsObject[]Predefined test collections
changelogObject[]API version changelog
codeTemplatesObject[]Code generation templates
termsOfServicestringoptionalTerms of service URL
contactObjectoptionalContact information
licenseObjectoptionalAPI license
externalDocsObjectoptionalExternal documentation link
securitySchemesRecord<string, Object>optionalSecurity scheme definitions
tagsObject[]optionalGlobal tag definitions

ApiTestCollection

Properties

PropertyTypeRequiredDescription
namestringCollection name
descriptionstringoptionalCollection description
variablesRecord<string, any>Shared variables
requestsObject[]Test requests in this collection
foldersObject[]optionalRequest folders for organization

ApiTestRequest

Properties

PropertyTypeRequiredDescription
namestringTest request name
descriptionstringoptionalRequest description
methodEnum<'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE' | 'HEAD' | 'OPTIONS'>HTTP method
urlstringRequest URL (can include variables)
headersRecord<string, string>Request headers
queryParamsRecord<string, string | number | boolean>Query parameters
bodyanyoptionalRequest body
variablesRecord<string, any>Template variables
expectedResponseObjectoptionalExpected response for validation

ApiTestingUiConfig

Properties

PropertyTypeRequiredDescription
typeEnum<'swagger-ui' | 'redoc' | 'rapidoc' | 'stoplight' | 'scalar' | 'graphql-playground' | 'graphiql' | 'postman' | 'custom'>Testing UI implementation
pathstringURL path for documentation UI
themeEnum<'light' | 'dark' | 'auto'>UI color theme
enableTryItOutbooleanEnable interactive API testing
enableFilterbooleanEnable endpoint filtering
enableCorsbooleanEnable CORS for browser testing
defaultModelsExpandDepthintegerDefault expand depth for schemas (-1 = fully expand)
displayRequestDurationbooleanShow request duration
syntaxHighlightingbooleanEnable syntax highlighting
customCssUrlstringoptionalCustom CSS stylesheet URL
customJsUrlstringoptionalCustom JavaScript URL
layoutObjectoptionalLayout configuration

ApiTestingUiType

Allowed Values

  • swagger-ui
  • redoc
  • rapidoc
  • stoplight
  • scalar
  • graphql-playground
  • graphiql
  • postman
  • custom

CodeGenerationTemplate

Properties

PropertyTypeRequiredDescription
languagestringTarget language/framework (e.g., typescript, python, curl)
namestringTemplate name
templatestringCode template with placeholders
variablesstring[]optionalRequired template variables

GeneratedApiDocumentation

Properties

PropertyTypeRequiredDescription
openApiSpecObjectoptionalGenerated OpenAPI specification
testCollectionsObject[]optionalGenerated test collections
markdownstringoptionalGenerated markdown documentation
htmlstringoptionalGenerated HTML documentation
generatedAtstringGeneration timestamp
sourceApisstring[]Source API IDs used for generation

OpenApiSecurityScheme

Properties

PropertyTypeRequiredDescription
typeEnum<'apiKey' | 'http' | 'oauth2' | 'openIdConnect'>Security type
schemestringoptionalHTTP auth scheme (bearer, basic, etc.)
bearerFormatstringoptionalBearer token format (e.g., JWT)
namestringoptionalAPI key parameter name
inEnum<'header' | 'query' | 'cookie'>optionalAPI key location
flowsObjectoptionalOAuth2 flows
openIdConnectUrlstringoptionalOpenID Connect discovery URL
descriptionstringoptionalSecurity scheme description

OpenApiServer

Properties

PropertyTypeRequiredDescription
urlstringServer base URL
descriptionstringoptionalServer description
variablesRecord<string, Object>optionalURL template variables

OpenApiSpec

Properties

PropertyTypeRequiredDescription
openapistringOpenAPI specification version
infoObjectAPI metadata
serversObject[]API servers
pathsRecord<string, any>API paths and operations
componentsObjectoptionalReusable components
securityRecord<string, string[]>[]optionalGlobal security requirements
tagsObject[]optionalTag definitions
externalDocsObjectoptionalExternal documentation

On this page