Files
hope-events/backend/scripts/openapi.ts
T
joshuaandClaude Opus 5.5 735a76cc74 API v2 registrations and payments (1.51.1)
- v2: register, get, cancel and checkout a registration (owner/admin only).
- Registration create/cancel moved to src/services/registrations.ts and online checkout to
  src/services/payments.ts; v1 controllers call the same services (ServiceError carries status).
- Typed frontend calls: npm run api:types writes openapi.json and schema.d.ts; apiV2() helper.
  Register page, Pay now and My Events cancel use v2; apiFetch reads v2 errors.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Ls1vMdg2GYqbnKZmPaX1ot
2026-10-29 09:09:09 +02:00

23 lines
963 B
TypeScript

/**
* Writes the /api/v2 OpenAPI document to frontend/src/lib/api-v2/openapi.json, from which the
* frontend's types are generated (`npm run api:types` in the repo root does both). Run it after
* adding or changing a v2 route; tests/v2.test.ts fails while the saved copy is out of date.
*/
import 'dotenv/config';
import fs from 'fs';
import path from 'path';
import { buildOpenApi } from '../src/v2/openapi';
import '../src/v2';
export const OPENAPI_FILE = path.join(__dirname, '..', '..', 'frontend', 'src', 'lib', 'api-v2', 'openapi.json');
// The version is left out so a release bump doesn't change the file.
export const currentDocument = () => JSON.stringify(buildOpenApi({ version: 'v2' }), null, 2) + '\n';
if (require.main === module) {
fs.mkdirSync(path.dirname(OPENAPI_FILE), { recursive: true });
fs.writeFileSync(OPENAPI_FILE, currentDocument());
console.log(`Wrote ${path.relative(process.cwd(), OPENAPI_FILE)}`);
process.exit(0);
}