OpenAPI
How It Works
1
2
Serve as JSON Endpoint
// app/api/docs/[table]/route.ts
import { generateOpenApiSpec } from '@tablecraft/engine';
import * as configs from '@/tablecraft.config';
export async function GET(
request: Request,
{ params }: { params: { table: string } }
) {
const config = configs[params.table];
if (!config) {
return Response.json({ error: 'Table not found' }, { status: 404 });
}
const spec = generateOpenApiSpec(config.toConfig());
return Response.json(spec);
}3
Combine Multiple Tables
function generateFullSpec() {
const baseSpec = {
openapi: '3.0.3',
info: { title: 'My API', version: '1.0.0' },
paths: {},
};
// Merge all table specs
for (const [name, config] of Object.entries(configs)) {
const tableSpec = generateOpenApiSpec(config.toConfig());
Object.assign(baseSpec.paths, tableSpec.paths);
}
return baseSpec;
}Generated Spec Structure
Example Input
const orders = defineTable(ordersTable)
.search('status', 'customerName')
.options('status', [
{ value: 'pending', label: 'Pending' },
{ value: 'completed', label: 'Completed' },
])
.aggregate('totalRevenue', 'sum', 'total')
.exportable('csv', 'json')
.access({ roles: ['admin', 'sales'] });Generated Output (Snippet)
Use Cases
What Gets Included
✅ Automatically Generated
❌ Not Included
Last updated
Was this helpful?
