Add choices API endpoint and OpenAPI client setup
Introduces a new /api/choices/ endpoint for fetching model choices with multilingual labels. Updates Django models to use 'cz#' prefix for Czech labels. Adds OpenAPI client generation via orval, refactors frontend API structure, and provides documentation and helper scripts for dynamic choices and OpenAPI usage.
This commit is contained in:
25
frontend/scripts/fetch-openapi.js
Normal file
25
frontend/scripts/fetch-openapi.js
Normal file
@@ -0,0 +1,25 @@
|
||||
import fs from "fs";
|
||||
import path from "path";
|
||||
import axios from "axios";
|
||||
|
||||
// Single config point
|
||||
const config = { schemaUrl: "/api/schema/", baseUrl: "/api/" };
|
||||
|
||||
async function main() {
|
||||
const outDir = path.resolve("./src/openapi");
|
||||
const outFile = path.join(outDir, "schema.json");
|
||||
const base = process.env.VITE_API_BASE_URL || "http://localhost:8000";
|
||||
const url = new URL(config.schemaUrl, base).toString();
|
||||
|
||||
console.log(`[openapi] Fetching schema from ${url}`);
|
||||
const res = await axios.get(url, { headers: { Accept: "application/json" } });
|
||||
|
||||
await fs.promises.mkdir(outDir, { recursive: true });
|
||||
await fs.promises.writeFile(outFile, JSON.stringify(res.data, null, 2), "utf8");
|
||||
console.log(`[openapi] Wrote ${outFile}`);
|
||||
}
|
||||
|
||||
main().catch((err) => {
|
||||
console.error("[openapi] Failed to fetch schema:", err?.message || err);
|
||||
process.exit(1);
|
||||
});
|
||||
Reference in New Issue
Block a user