diff --git a/docs/api.md b/docs/api.md index a3f9e90..b85dea5 100644 --- a/docs/api.md +++ b/docs/api.md @@ -210,6 +210,19 @@ curl -s -X DELETE -H "Authorization: Bearer $TOKEN" \ Liefert eine Variante aus. Die Pfade stehen am Medium unter `variants`, je Eintrag mit `width`, `format` und `path`. +## Zeitsteuerung + +### POST /api/v1/publish-due + +Veröffentlicht alle Beiträge, deren Termin erreicht ist. Der Aufruf gehört einer Zeitsteuerung, nicht einem Zugang, und verlangt `CRON_SECRET` als Bearer-Token. + +```bash +curl -s -X POST -H "Authorization: Bearer $CRON_SECRET" \ + http://localhost:4700/api/v1/publish-due +``` + +Antwort: `{ "published": [...], "meta": { "total": 0 } }`. + ## Werkzeuge | Adresse | Inhalt | diff --git a/src/app/admin/api/page.tsx b/src/app/admin/api/page.tsx index 2efc50f..51e1546 100644 --- a/src/app/admin/api/page.tsx +++ b/src/app/admin/api/page.tsx @@ -274,6 +274,26 @@ export default async function AdminApiPage() { /> +
+ Dateien und Zeitsteuerung + + '} + /> + + +
+
Datum und Nummer
diff --git a/src/lib/openapi.ts b/src/lib/openapi.ts index df35f82..d567231 100644 --- a/src/lib/openapi.ts +++ b/src/lib/openapi.ts @@ -346,6 +346,36 @@ export function openApiDocument(baseUrl: string) { }, }, }, + '/api/v1/media/file/{path}': { + get: { + summary: 'Bilddatei ausliefern', + description: 'Die Pfade stehen am Medium unter variants, je Eintrag mit width, format und path.', + parameters: [{ name: 'path', in: 'path', required: true, schema: { type: 'string' } }], + responses: { + '200': { description: 'Bilddatei' }, + ...errors([401, 404]), + }, + }, + }, + '/api/v1/openapi.json': { + get: { + summary: 'Diese Beschreibung abrufen', + responses: { + '200': { description: 'OpenAPI-Dokument' }, + ...errors([401]), + }, + }, + }, + '/api/v1/publish-due': { + post: { + summary: 'Fällige Termine veröffentlichen', + description: 'Für eine Zeitsteuerung gedacht, nicht für Zugänge. Verlangt CRON_SECRET als Bearer-Token.', + responses: { + '200': { description: 'Veröffentlichte Einträge' }, + ...errors([401]), + }, + }, + }, '/api/v1/media/{id}': { delete: { summary: 'Bild löschen',