Add consent-gated media exchange library

This commit is contained in:
jjbrunton committed 2026-08-09 19:24:38 +01:00
1 parent b8e4a1bb88
commit bf474dfe10
42 files changed
+2533 -9

No files matched your search

+10
View File
@@ -88,6 +88,16 @@ export const API_OPERATIONS: readonly ApiOperation[] = [
operation('getMediaSync', 'GET', '/api/media/sync', 'Get media sync state', ['Media']),
operation('triggerMediaSync', 'POST', '/api/media/sync', 'Trigger media sync', ['Media']),
operation('triggerFullMediaSync', 'POST', '/api/media/sync/full', 'Trigger full media sync', ['Media']),
operation('listMediaLibrary', 'GET', '/api/media-library', 'List operator-owned exchange images', ['Media Library']),
operation('uploadMediaLibraryImage', 'POST', '/api/media-library', 'Upload and classify an operator-owned exchange image', ['Media Library'], { successStatus: 201 }),
operation('updateMediaLibraryImage', 'PATCH', '/api/media-library/{id}', 'Correct tags or enable an exchange image', ['Media Library'], {
requestSchema: z.strictObject({
tags: z.array(z.enum(['penis', 'chest', 'selfie', 'topless', 'feet'])).min(1),
safety: z.enum(['sfw', 'nsfw']),
enabled: z.boolean(),
}),
}),
operation('deleteMediaLibraryImage', 'DELETE', '/api/media-library/{id}', 'Delete an exchange image', ['Media Library']),
operation('startBot', 'POST', '/api/start', 'Start bot processing (legacy)', ['Control']),
operation('stopBot', 'POST', '/api/stop', 'Stop bot processing (legacy)', ['Control']),
operation('getTimers', 'GET', '/api/timers', 'Get rate-limit timers', ['Analytics']),