{"openapi":"3.1.0","info":{"title":"Veylumia API","description":"REST-API von Veylumia: KI-Videos, -Bilder und -Audio aus 54 Templates erzeugen.\n\n**Authentifizierung:** Header `X-API-Key` (Key im Studio unter *Workspace → API-Keys*\nerzeugen, Business-Tarif; org-gebundene Keys arbeiten automatisch im Team-Kontext) — alternativ\n`Authorization: Bearer <Session-Token>` aus dem Login.\n\n**Ablauf:** `GET /api/templates` (Katalog + Param-Schema) → `POST /api/jobs`\n(multipart: `template`, `params` als JSON-String, Dateien als Form-Felder) →\n`GET /api/jobs/{id}` pollen bis `status=done` → Medium über `output_url` laden.\nKosten in Credits stehen am Template; endgültig fehlgeschlagene Jobs werden\nautomatisch erstattet.\n\n**MCP:** Agenten (Claude Code, Cursor …) verbinden sich mit `POST /mcp`\n(Streamable HTTP, gleicher API-Key); claude.ai und ChatGPT per OAuth-Connector in jedem Tarif\n(Free: ein Job gleichzeitig). Werkzeug-Liste: `GET /api/mcp/tools`.\n","version":"1.0.0"},"paths":{"/api/auth/register":{"post":{"tags":["Auth"],"summary":"Register","operationId":"register_api_auth_register_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Credentials"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/auth/login":{"post":{"tags":["Auth"],"summary":"Login","operationId":"login_api_auth_login_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Credentials"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/auth/verify":{"get":{"tags":["Auth"],"summary":"Verify Email","description":"Verifikations-Link aus der E-Mail (P2). Idempotent. DB haelt nur den\nToken-Hash (S2-#15); Alt-Konten mit Klartext-Token werden per Fallback\nweiter akzeptiert (einmalig, danach ist das Token ohnehin verbraucht).","operationId":"verify_email_api_auth_verify_get","parameters":[{"name":"token","in":"query","required":true,"schema":{"type":"string","title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/auth/email/confirm":{"post":{"tags":["Auth"],"summary":"Confirm Email Change","description":"Bestaetigt den E-Mail-Wechsel ueber den Link an die NEUE Adresse (oeffentlich\nwie /verify). Setzt users.email, raeumt die Wechsel-Felder ab und beendet alle\nSessions. Kollision (Adresse inzwischen vergeben) -> 409.","operationId":"confirm_email_change_api_auth_email_confirm_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EmailConfirmBody"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/auth/verify/resend":{"post":{"tags":["Auth"],"summary":"Resend Verify","operationId":"resend_verify_api_auth_verify_resend_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/auth/forgot":{"post":{"tags":["Auth"],"summary":"Forgot Password","description":"Antwortet immer ok (kein E-Mail-Enumeration-Orakel).","operationId":"forgot_password_api_auth_forgot_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForgotBody"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/auth/reset":{"post":{"tags":["Auth"],"summary":"Reset Password","description":"Setzt das Passwort per Reset-Token und beendet alle offenen Sessions.","operationId":"reset_password_api_auth_reset_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResetBody"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/auth/logout":{"post":{"tags":["Auth"],"summary":"Logout","operationId":"logout_api_auth_logout_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/auth/2fa/status":{"get":{"tags":["Auth 2FA / Passkeys / Social"],"summary":"Twofa Status","operationId":"twofa_status_api_auth_2fa_status_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/auth/2fa/setup":{"post":{"tags":["Auth 2FA / Passkeys / Social"],"summary":"Twofa Setup","description":"Neues Secret erzeugen (noch NICHT aktiv) + QR-Code. Aktivierung erst nach\nerfolgreicher Code-Eingabe (enable) — so kann sich niemand aussperren.","operationId":"twofa_setup_api_auth_2fa_setup_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/auth/2fa/enable":{"post":{"tags":["Auth 2FA / Passkeys / Social"],"summary":"Twofa Enable","description":"Setup-Code bestaetigen -> 2FA aktiv + Recovery-Codes (nur JETZT im Klartext).","operationId":"twofa_enable_api_auth_2fa_enable_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CodeBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/auth/2fa/disable":{"post":{"tags":["Auth 2FA / Passkeys / Social"],"summary":"Twofa Disable","description":"Deaktivierung nur mit gueltigem Code oder Recovery-Code (nicht ohne Nachweis).","operationId":"twofa_disable_api_auth_2fa_disable_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CodeBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/auth/2fa/verify":{"post":{"tags":["Auth 2FA / Passkeys / Social"],"summary":"Twofa Verify","description":"Zweiter Login-Schritt: Pending-Token + TOTP- ODER Recovery-Code -> Session.","operationId":"twofa_verify_api_auth_2fa_verify_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TwoFAVerifyBody"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/auth/passkeys":{"get":{"tags":["Auth 2FA / Passkeys / Social"],"summary":"List Passkeys","operationId":"list_passkeys_api_auth_passkeys_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/auth/passkeys/{cred_id}":{"delete":{"tags":["Auth 2FA / Passkeys / Social"],"summary":"Delete Passkey","operationId":"delete_passkey_api_auth_passkeys__cred_id__delete","parameters":[{"name":"cred_id","in":"path","required":true,"schema":{"type":"string","title":"Cred Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/auth/passkey/register/begin":{"post":{"tags":["Auth 2FA / Passkeys / Social"],"summary":"Passkey Register Begin","operationId":"passkey_register_begin_api_auth_passkey_register_begin_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/auth/passkey/register/complete":{"post":{"tags":["Auth 2FA / Passkeys / Social"],"summary":"Passkey Register Complete","operationId":"passkey_register_complete_api_auth_passkey_register_complete_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PasskeyRegisterComplete"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/auth/passkey/login/begin":{"post":{"tags":["Auth 2FA / Passkeys / Social"],"summary":"Passkey Login Begin","description":"Options fuer passwortlosen Login. Mit E-Mail: nur deren Passkeys; ohne:\nDiscoverable-Login (der Authenticator waehlt selbst).","operationId":"passkey_login_begin_api_auth_passkey_login_begin_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PasskeyLoginBegin"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/auth/passkey/login/complete":{"post":{"tags":["Auth 2FA / Passkeys / Social"],"summary":"Passkey Login Complete","operationId":"passkey_login_complete_api_auth_passkey_login_complete_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PasskeyLoginComplete"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/auth/oidc/providers":{"get":{"tags":["Auth 2FA / Passkeys / Social"],"summary":"Oidc Providers","description":"Welche Social-Buttons das Frontend zeigen soll (nur konfigurierte).","operationId":"oidc_providers_api_auth_oidc_providers_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/auth/oidc/{provider}/start":{"get":{"tags":["Auth 2FA / Passkeys / Social"],"summary":"Oidc Start","description":"`tos=1` kommt von der Registrierungsseite mit angehakten Nutzungsbedingungen (S4-2) und reist signiert im\nState mit – nur dann darf der Callback ein NEUES Konto anlegen (Login bestehender Konten braucht ihn nicht).\nV3-35: src/cmp/ref = erste Herkunft der Sitzung (Quell-Tag, utm_campaign, Empfehlungscode), ebenfalls im State.","operationId":"oidc_start_api_auth_oidc__provider__start_get","parameters":[{"name":"provider","in":"path","required":true,"schema":{"type":"string","title":"Provider"}},{"name":"tos","in":"query","required":false,"schema":{"type":"string","default":"","title":"Tos"}},{"name":"src","in":"query","required":false,"schema":{"type":"string","default":"","title":"Src"}},{"name":"cmp","in":"query","required":false,"schema":{"type":"string","default":"","title":"Cmp"}},{"name":"ref","in":"query","required":false,"schema":{"type":"string","default":"","title":"Ref"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/auth/oidc/{provider}/callback":{"get":{"tags":["Auth 2FA / Passkeys / Social"],"summary":"Oidc Callback","operationId":"oidc_callback_api_auth_oidc__provider__callback_get","parameters":[{"name":"provider","in":"path","required":true,"schema":{"type":"string","title":"Provider"}},{"name":"code","in":"query","required":false,"schema":{"type":"string","default":"","title":"Code"}},{"name":"state","in":"query","required":false,"schema":{"type":"string","default":"","title":"State"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["Auth 2FA / Passkeys / Social"],"summary":"Oidc Callback Post","description":"Apple nutzt response_mode=form_post -> Code/State kommen als Formularfelder.","operationId":"oidc_callback_post_api_auth_oidc__provider__callback_post","parameters":[{"name":"provider","in":"path","required":true,"schema":{"type":"string","title":"Provider"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/account/security":{"get":{"tags":["Konto-Einstellungen"],"summary":"Account Security","operationId":"account_security_api_account_security_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/account/profile":{"patch":{"tags":["Konto-Einstellungen"],"summary":"Update Profile","description":"Nur whitelistete Felder — kein Mass-Assignment auf email/plan/credits.","operationId":"update_profile_api_account_profile_patch","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProfileBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/account/password":{"post":{"tags":["Konto-Einstellungen"],"summary":"Change Password","description":"Passwort im eingeloggten Zustand aendern (Reauth mit altem Passwort + ggf. 2FA).","operationId":"change_password_api_account_password_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PasswordChangeBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/account/password/set":{"post":{"tags":["Konto-Einstellungen"],"summary":"Set Password","description":"Erstmalig ein Passwort SETZEN (passwortlose Social-/Passkey-Konten). Kein\naltes Passwort noetig; Session-Besitz + ggf. 2FA legitimieren.","operationId":"set_password_api_account_password_set_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PasswordSetBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/account/email/change-request":{"post":{"tags":["Konto-Einstellungen"],"summary":"Request Email Change","description":"Startet den E-Mail-Wechsel: Bestaetigungslink an die NEUE Adresse, Warnung\nan die ALTE. Kollision -> generisches 'ok' (kein Enumerations-Orakel).","operationId":"request_email_change_api_account_email_change_request_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EmailChangeBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/account/email/change/cancel":{"post":{"tags":["Konto-Einstellungen"],"summary":"Cancel Email Change","operationId":"cancel_email_change_api_account_email_change_cancel_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/account/sessions":{"get":{"tags":["Konto-Einstellungen"],"summary":"List Sessions","operationId":"list_sessions_api_account_sessions_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/account/sessions/{sid}":{"delete":{"tags":["Konto-Einstellungen"],"summary":"Revoke Session","operationId":"revoke_session_api_account_sessions__sid__delete","parameters":[{"name":"sid","in":"path","required":true,"schema":{"type":"string","title":"Sid"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/account/sessions/revoke-all":{"post":{"tags":["Konto-Einstellungen"],"summary":"Revoke All Sessions","description":"Ueberall abmelden ausser dem aktuellen Geraet (Reauth-gated).","operationId":"revoke_all_sessions_api_account_sessions_revoke_all_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReauthBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/account/connections":{"get":{"tags":["Konto-Einstellungen"],"summary":"List Connections","operationId":"list_connections_api_account_connections_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/account/connections/{provider}":{"delete":{"tags":["Konto-Einstellungen"],"summary":"Unlink Connection","operationId":"unlink_connection_api_account_connections__provider__delete","parameters":[{"name":"provider","in":"path","required":true,"schema":{"type":"string","title":"Provider"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReauthBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/account/export":{"post":{"tags":["Konto-Einstellungen"],"summary":"Export Data","description":"Alle nutzerbezogenen Daten als maschinenlesbares JSON (Reauth-gated).\nSecrets (Hashes/Token/Secrets) werden ausgeschlossen; Medien als Referenzen.","operationId":"export_data_api_account_export_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReauthBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/account/delete":{"post":{"tags":["Konto-Einstellungen"],"summary":"Request Deletion","description":"Startet die Konto-Loeschung mit Karenzzeit. Reauth + getippte Bestaetigung.\nBlockiert, solange der Nutzer Owner einer Organisation mit weiteren Mitgliedern\nist (Org darf nicht verwaisen).","operationId":"request_deletion_api_account_delete_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/account/delete/cancel":{"post":{"tags":["Konto-Einstellungen"],"summary":"Cancel Deletion","operationId":"cancel_deletion_api_account_delete_cancel_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/plans":{"get":{"tags":["Billing & Tarife"],"summary":"List Plans","operationId":"list_plans_api_plans_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/packs":{"get":{"tags":["Billing & Tarife"],"summary":"List Packs","description":"Top-up-Pakete oeffentlich (Studio Noir N9, /preise nach dem Start): dieselben Daten wie in /api/billing/info,\nohne Login. Ob die Seite sie zeigt, entscheidet der Launch-Schalter im Frontend.","operationId":"list_packs_api_packs_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/subscribe":{"post":{"tags":["Billing & Tarife"],"summary":"Subscribe","description":"Legacy-Mock-Checkout (nur ohne Stripe-Keys). Mit Stripe: /api/billing/checkout.","operationId":"subscribe_api_subscribe_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app__routers__billing__SubscribeBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/billing/info":{"get":{"tags":["Billing & Tarife"],"summary":"Billing Info","description":"Tarife, Top-up-Packs, Stripe-Status und aktives Abo fuer die Billing-UI.","operationId":"billing_info_api_billing_info_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/billing/checkout":{"post":{"tags":["Billing & Tarife"],"summary":"Billing Checkout","description":"Startet den Stripe-Checkout (Abo ODER Top-up-Pack), mit org_id fuer den Team-Pool (V-48). Ohne Stripe-Keys:\nMock-Buchung direkt (Dev). Antwort: {url} zum Redirect bzw. {mock: true}.","operationId":"billing_checkout_api_billing_checkout_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/billing/withdrawals":{"get":{"tags":["Billing & Tarife"],"summary":"Billing Withdrawals","description":"S4-26: Kaeufe, die noch widerrufen werden koennen (14 Tage je Kauf; Pakete und Erstabo), mit Erstattung.","operationId":"billing_withdrawals_api_billing_withdrawals_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/billing/withdraw":{"post":{"tags":["Billing & Tarife"],"summary":"Billing Withdraw","description":"S4-26: „Vertrag widerrufen“ – erstattet den ungenutzten Anteil, beendet ein Abo sofort, nimmt die Credits\nzurueck (Ledger + Audit). Prueft Eigentum, Frist und Status selbst; 404/409/422/502 mit deutschem Text.","operationId":"billing_withdraw_api_billing_withdraw_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WithdrawBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/billing/verify-card":{"post":{"tags":["Billing & Tarife"],"summary":"Verify Card","description":"S1 Anti-Sybil: schaltet die einmaligen Gratis-Credits nach Karten-\nVerifikation frei. Mit Stripe -> Setup-Checkout ({url}, Gutschrift erst per\nWebhook). Ohne Stripe (Dev/Mock) -> sofortige Gutschrift ({mock, credits}).","operationId":"verify_card_api_billing_verify_card_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/billing/portal":{"post":{"tags":["Billing & Tarife"],"summary":"Billing Portal","description":"Stripe-Kundenportal (Abo verwalten, Rechnungen). Nur mit aktivem Stripe.","operationId":"billing_portal_api_billing_portal_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/stripe/webhook":{"post":{"tags":["Billing & Tarife"],"summary":"Stripe Webhook","description":"Stripe-Webhook: Signatur pruefen, Event idempotent verarbeiten (P3).","operationId":"stripe_webhook_api_stripe_webhook_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/orgs":{"post":{"tags":["Teams"],"summary":"Create Org","operationId":"create_org_api_orgs_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrgBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]},"get":{"tags":["Teams"],"summary":"List Orgs","operationId":"list_orgs_api_orgs_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/orgs/{org_id}":{"patch":{"tags":["Teams"],"summary":"Update Org Settings","description":"Workspace-Einstellungen (Welle 3): Datenschutz-Lane. local_only = nur\nlokale EU-Verarbeitung, alle externen Provider (fal/US-Cloud) werden im\nSubmit-Kern geblockt. Nur owner/admin.","operationId":"update_org_settings_api_orgs__org_id__patch","parameters":[{"name":"org_id","in":"path","required":true,"schema":{"type":"string","title":"Org Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrgSettingsBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/orgs/{org_id}/members":{"post":{"tags":["Teams"],"summary":"Add Member","description":"Haertung 3.8.: legt eine EINLADUNG an (Mail mit Annahme-Link) statt das\nKonto still hinzuzufuegen. Antwort ist IMMER {ok:true} — ob zur E-Mail ein\nKonto existiert, bleibt geheim (vorher: 404 = Enumeration-Orakel).","operationId":"add_member_api_orgs__org_id__members_post","parameters":[{"name":"org_id","in":"path","required":true,"schema":{"type":"string","title":"Org Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app__routers__orgs__InviteBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]},"get":{"tags":["Teams"],"summary":"List Members","operationId":"list_members_api_orgs__org_id__members_get","parameters":[{"name":"org_id","in":"path","required":true,"schema":{"type":"string","title":"Org Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/orgs/{org_id}/invites":{"get":{"tags":["Teams"],"summary":"List Invites","description":"Ausstehende Einladungen (owner/admin) — fuer Anzeige + Widerruf.","operationId":"list_invites_api_orgs__org_id__invites_get","parameters":[{"name":"org_id","in":"path","required":true,"schema":{"type":"string","title":"Org Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/orgs/{org_id}/invites/{invite_id}":{"delete":{"tags":["Teams"],"summary":"Revoke Invite","operationId":"revoke_invite_api_orgs__org_id__invites__invite_id__delete","parameters":[{"name":"org_id","in":"path","required":true,"schema":{"type":"string","title":"Org Id"}},{"name":"invite_id","in":"path","required":true,"schema":{"type":"string","title":"Invite Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/orgs/invites/accept":{"post":{"tags":["Teams"],"summary":"Accept Invite","description":"Einladung annehmen: signierter Token -> Invite-Zeile; die E-Mail des\neingeloggten Kontos MUSS zur Einladung passen (verifiziert).","operationId":"accept_invite_api_orgs_invites_accept_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AcceptBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/orgs/{org_id}/members/{member_id}":{"patch":{"tags":["Teams"],"summary":"Set Member Role","operationId":"set_member_role_api_orgs__org_id__members__member_id__patch","parameters":[{"name":"org_id","in":"path","required":true,"schema":{"type":"string","title":"Org Id"}},{"name":"member_id","in":"path","required":true,"schema":{"type":"string","title":"Member Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RoleBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]},"delete":{"tags":["Teams"],"summary":"Remove Member","operationId":"remove_member_api_orgs__org_id__members__member_id__delete","parameters":[{"name":"org_id","in":"path","required":true,"schema":{"type":"string","title":"Org Id"}},{"name":"member_id","in":"path","required":true,"schema":{"type":"string","title":"Member Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/orgs/{org_id}/analytics":{"get":{"tags":["Teams"],"summary":"Org Analytics","description":"Admin-Dashboard (B6): Credit-Verbrauch je Mitglied und Template (Netto,\nRefunds als negative Events eingerechnet). Nur owner/admin.","operationId":"org_analytics_api_orgs__org_id__analytics_get","parameters":[{"name":"org_id","in":"path","required":true,"schema":{"type":"string","title":"Org Id"}},{"name":"days","in":"query","required":false,"schema":{"type":"integer","default":30,"title":"Days"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/keys":{"post":{"tags":["API-Keys"],"summary":"Create Key","description":"API-Key erzeugen. Im Team-Kontext (nur admin/owner) org-gebunden: der Key\narbeitet dann automatisch im Team (Pool + geteilte Assets). Klartext nur einmalig.\nGate (31.08., C4): Business-Tarif (effektiv: Org-Plan im Team, sonst Nutzer-Plan),\nbestaetigte E-Mail, max. 10 Keys je Kontext — deps.api_key_principal prueft\ndieselben Bedingungen spaeter bei jedem Aufruf.","operationId":"create_key_api_keys_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}},{"name":"x-org-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Org-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/KeyBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]},"get":{"tags":["API-Keys"],"summary":"List Keys","operationId":"list_keys_api_keys_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}},{"name":"x-org-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Org-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/keys/{key_id}":{"delete":{"tags":["API-Keys"],"summary":"Delete Key","operationId":"delete_key_api_keys__key_id__delete","parameters":[{"name":"key_id","in":"path","required":true,"schema":{"type":"string","title":"Key Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/voices":{"post":{"tags":["Stimmen & Charaktere"],"summary":"Create Voice","operationId":"create_voice_api_voices_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}},{"name":"x-org-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Org-Id"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_create_voice_api_voices_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]},"get":{"tags":["Stimmen & Charaktere"],"summary":"List Voices","operationId":"list_voices_api_voices_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}},{"name":"x-org-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Org-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/voices/{voice_id}":{"delete":{"tags":["Stimmen & Charaktere"],"summary":"Delete Voice","operationId":"delete_voice_api_voices__voice_id__delete","parameters":[{"name":"voice_id","in":"path","required":true,"schema":{"type":"string","title":"Voice Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/characters":{"post":{"tags":["Stimmen & Charaktere"],"summary":"Create Character","operationId":"create_character_api_characters_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}},{"name":"x-org-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Org-Id"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_create_character_api_characters_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]},"get":{"tags":["Stimmen & Charaktere"],"summary":"List Characters","operationId":"list_characters_api_characters_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}},{"name":"x-org-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Org-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/characters/generate":{"post":{"tags":["Stimmen & Charaktere"],"summary":"Generate Character","description":"KI-Avatar (Session 2): Text-Prompt -> fotorealistisches Portrait via image_studio\nSDXL-Graph -> ArcFace-Embedding -> Character(kind=generated). Kostet image_studio-Credits.","operationId":"generate_character_api_characters_generate_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}},{"name":"x-org-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Org-Id"}}],"requestBody":{"required":true,"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_generate_character_api_characters_generate_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/characters/{character_id}/thumb":{"get":{"tags":["Stimmen & Charaktere"],"summary":"Character Thumb","operationId":"character_thumb_api_characters__character_id__thumb_get","parameters":[{"name":"character_id","in":"path","required":true,"schema":{"type":"string","title":"Character Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/characters/{character_id}":{"delete":{"tags":["Stimmen & Charaktere"],"summary":"Delete Character","operationId":"delete_character_api_characters__character_id__delete","parameters":[{"name":"character_id","in":"path","required":true,"schema":{"type":"string","title":"Character Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/brandkit":{"get":{"tags":["Brand Kit"],"summary":"Get Brand Kit","operationId":"get_brand_kit_api_brandkit_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}},{"name":"x-org-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Org-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]},"post":{"tags":["Brand Kit"],"summary":"Put Brand Kit","description":"Upsert: ein Kit pro Kontext (persoenlich oder Team; im Team nur admin/owner).","operationId":"put_brand_kit_api_brandkit_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}},{"name":"x-org-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Org-Id"}}],"requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_put_brand_kit_api_brandkit_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]},"delete":{"tags":["Brand Kit"],"summary":"Delete Brand Kit","operationId":"delete_brand_kit_api_brandkit_delete","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}},{"name":"x-org-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Org-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/projects":{"post":{"tags":["Jobs & Projekte"],"summary":"Create Project","operationId":"create_project_api_projects_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}},{"name":"x-org-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Org-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]},"get":{"tags":["Jobs & Projekte"],"summary":"List Projects","operationId":"list_projects_api_projects_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}},{"name":"x-org-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Org-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/projects/{project_id}":{"delete":{"tags":["Jobs & Projekte"],"summary":"Delete Project","description":"Loescht nur den Ordner — zugeordnete Jobs bleiben (project_id=NULL).","operationId":"delete_project_api_projects__project_id__delete","parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string","title":"Project Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}},{"name":"x-org-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Org-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]},"get":{"summary":"Project Detail","operationId":"project_detail_api_projects__project_id__get","parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string","title":"Project Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}},{"name":"x-org-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Org-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/jobs":{"post":{"tags":["Jobs & Projekte"],"summary":"Create Job","operationId":"create_job_api_jobs_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}},{"name":"x-org-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Org-Id"}}],"requestBody":{"required":true,"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_create_job_api_jobs_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]},"get":{"tags":["Jobs & Projekte"],"summary":"List Jobs","operationId":"list_jobs_api_jobs_get","parameters":[{"name":"project_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Project Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}},{"name":"x-org-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Org-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/jobs/{job_id}/feedback":{"post":{"tags":["Jobs & Projekte"],"summary":"Job Feedback","description":"H8.1 (14.09.): Daumen hoch/runter + Text je Job (Upsert) — Beta-Signal fuer Admin › Feedback + Digest.","operationId":"job_feedback_api_jobs__job_id__feedback_post","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FeedbackBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/jobs/{job_id}/retry":{"post":{"tags":["Jobs & Projekte"],"summary":"Retry Job","description":"„Neuer Seed\" (UX#11, Sprint-Plan Schritt 1): fertigen oder endgueltig\nfehlgeschlagenen Job mit denselben serverseitig gespeicherten Eingaben neu\neinreichen. Laeuft durch den regulaeren Submit-Kern (Rate-Limit, Gating,\nPolicy, Debit, Refund-Versprechen) — nur der Seed variiert: seed_variation\nhebt ctx.attempt an (worker.py), aus dem die Templates ihre Seeds ableiten.","operationId":"retry_job_api_jobs__job_id__retry_post","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}},{"name":"x-org-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Org-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/jobs/{job_id}/hd":{"post":{"tags":["Jobs & Projekte"],"summary":"Hd Job","description":"S2-3 (21.10.2026): HD-Fassung eines fertigen Recast-Drafts — dieselben serverseitigen Eingaben, Stufe HD,\n`draft_ref` auf den Draft; laeuft durch submit_job_core (Gating, Debit = die zweite Abbuchung, Refund).","operationId":"hd_job_api_jobs__job_id__hd_post","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}},{"name":"x-org-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Org-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/jobs/{job_id}/cancel":{"post":{"tags":["Jobs & Projekte"],"summary":"Cancel Job","operationId":"cancel_job_api_jobs__job_id__cancel_post","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/jobs/{job_id}":{"get":{"tags":["Jobs & Projekte"],"summary":"Get Job","operationId":"get_job_api_jobs__job_id__get","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/jobs/{job_id}/like":{"post":{"tags":["Jobs & Projekte"],"summary":"Toggle Like","description":"Favoriten-Flag (Schritt 6): Herz an der Ergebnis-Karte, speist den\nFavoriten-Tab des Referenz-Pickers.","operationId":"toggle_like_api_jobs__job_id__like_post","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/jobs/{job_id}/approval":{"post":{"tags":["Jobs & Projekte"],"summary":"Set Approval","description":"Freigabe-Workflow (B5): Ersteller/Mitglieder reichen zur Review ein\n(in_review); approved/rejected setzen nur admin/owner (Team) bzw. der\nErsteller selbst (persoenlicher Kontext).","operationId":"set_approval_api_jobs__job_id__approval_post","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApprovalBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/jobs/{job_id}/output":{"get":{"tags":["Jobs & Projekte"],"summary":"Job Output","description":"S1: Zugriff nur mit gueltigem signiertem Token (fuer <video>/<img>) ODER\nals authentifizierter Eigentuemer. Frueher komplett offen.","operationId":"job_output_api_jobs__job_id__output_get","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}},{"name":"token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Token"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/jobs/{job_id}/preview":{"get":{"tags":["Jobs & Projekte"],"summary":"Job Preview","description":"Zwischenvorschau (Plan U/U8): JPEG aus Chunk 1 / Szenen-Anker; signierter\nToken ODER eingeloggter Eigentuemer (wie /output).","operationId":"job_preview_api_jobs__job_id__preview_get","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}},{"name":"token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Token"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/jobs/{job_id}/input":{"get":{"tags":["Jobs & Projekte"],"summary":"Job Input","description":"Original-Eingabe fuer den Vorher/Nachher-Vergleich (enhance/translate/\neraser …). Auth wie job_output: signierter Token (eigener Scope ':input',\ndamit ein geleakter Output-Token nicht auch die Eingabe oeffnet) oder Login.","operationId":"job_input_api_jobs__job_id__input_get","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}},{"name":"token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Token"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/batches":{"post":{"tags":["Batches"],"summary":"Create Batch","description":"N Jobs desselben Templates in einem Rutsch (JSON, API-first — Dateien via\njob_ref/character-IDs referenzieren). Alles-oder-nichts (create_batch_core).","operationId":"create_batch_api_batches_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}},{"name":"x-org-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Org-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BatchBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/batches/{batch_id}":{"get":{"tags":["Batches"],"summary":"Get Batch","operationId":"get_batch_api_batches__batch_id__get","parameters":[{"name":"batch_id","in":"path","required":true,"schema":{"type":"string","title":"Batch Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/campaign-brief":{"post":{"tags":["URL-to-Ad"],"summary":"Campaign Brief","description":"Kampagnen-Agent (Welle 4, Blaupause #13): Brief -> Strategie + fertige\nSkript-Varianten (hook/script/cta_text/creative_mode, ad_studio-kompatibel).\nLLM: lokales Qwen3.6-35B-A3B via LM Studio (AVP_LLM_URL); ohne LLM-Server\nliefert die regelbasierte Hook×Winkel-Fabrik den Plan (engine im Response).\nKostenlos: reine Planung, Credits fallen erst bei den Video-Jobs an.","operationId":"campaign_brief_api_campaign_brief_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CampaignBriefBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/url-to-ad":{"post":{"tags":["URL-to-Ad"],"summary":"Url To Ad","description":"Produkt-URL -> Ad-Studio-Job (Higgsfield-Marketing-Studio-Konter, W3-10).\nDuenner REST-Handler; Kern = url_to_ad_core (auch MCP url_to_ad).","operationId":"url_to_ad_api_url_to_ad_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}},{"name":"x-org-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Org-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UrlToAdBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/ad-variants":{"post":{"tags":["URL-to-Ad"],"summary":"Ad Variants","description":"Varianten-Fabrik (Welle 3, Higgsfield-Ads-2.0-Konter): EIN Produkt-Brief\n-> N Talking-Avatar-Ad-Varianten (Hook x Winkel x Ratio) als Batch.\nAlles-oder-nichts wie /api/batches: erst alle validieren + costen,\ndann Summe abbuchen und Jobs anlegen. Kern = ad_variants_core (auch MCP ad_variants, H10.4).","operationId":"ad_variants_api_ad_variants_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}},{"name":"x-org-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Org-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdVariantsBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/prompt/enhance":{"post":{"tags":["Meta"],"summary":"Enhance Prompt Endpoint","description":"„Prompt verbessern\" (UX#4): Rohprompt -> Regie-Prompt via lokalem LLM\n(LM Studio, campaign_agent-Stack, COGS ≈ 0). Ohne erreichbaren LLM-Server\n503 — das Frontend laesst den Prompt dann unveraendert.","operationId":"enhance_prompt_endpoint_api_prompt_enhance_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnhanceBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/script":{"post":{"tags":["Meta"],"summary":"Write Script Endpoint","description":"Produktions-Assistent Schritt 3 (Plan §2.7 Bahn 2, umgesetzt 27.7.):\nDrehbuch via lokalem LLM — REST-Pendant zum MCP-Tool write_script.\nKostenlos (lokal); ohne LLM-Server liefert screenplay einen regelbasierten\n6-Akt-Bogen (source='fallback').","operationId":"write_script_endpoint_api_script_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScriptBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/health":{"get":{"tags":["Meta"],"summary":"Health","description":"Betriebsstatus (AP2): GPU-Pool je URL, Queue-Tiefen, Backlog und\nTagesspends — UptimeRobot haengt hierauf (Plan AP5). 'comfyui' bleibt als\nBestandsfeld: true, sobald IRGENDEIN Pool-Endpunkt gesund ist; ohne\nWorker-Thread in diesem Prozess (AVP_NO_WORKER=1) Live-Check wie bisher.","operationId":"health_api_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/launch":{"get":{"tags":["Meta"],"summary":"Launch Status","description":"Oeffentlich und leichtgewichtig (Coming-Soon-Seite): Ist die Plattform freigegeben? Der Launch ist\nmanuell (services/launch.py, PO 20.10.) — vor der Freigabe zeigt die Seite Warteliste + Countdown,\ndanach „Jetzt starten“. Kein Datum schaltet hier etwas.","operationId":"launch_status_api_launch_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/metrics":{"get":{"tags":["Meta"],"summary":"Metrics","description":"Plan H / H9-S1.4: Prometheus-Text (Queue je Lane, Wartezeit p50/p95, Jobdauer je Template, GPU-\nEndpunkte/Pods, API-Latenz). Nur mit X-Metrics-Token == AVP_METRICS_TOKEN; ohne Konfiguration 404.","operationId":"metrics_api_metrics_get","parameters":[{"name":"x-metrics-token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Metrics-Token"}}],"responses":{"200":{"description":"Successful Response","content":{"text/plain":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/templates":{"get":{"tags":["Meta"],"summary":"List Templates","operationId":"list_templates_api_templates_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/products":{"get":{"tags":["Meta"],"summary":"List Products","description":"Produkt-Katalog mit Ampel (V3-3, 26.10.2026): acht benannte Ergebnis-Produkte statt 52\nTemplates — status 'verkaufbar' | 'fast' | 'aus', Preis je Ergebnis als Einstieg in Credits\n(1 Credit ≈ 1 s Video). Gleiche Daten wie get_template_guide/catalog_overview; oeffentlich\nlesbar wie /api/templates.","operationId":"list_products_api_products_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/waitlist":{"post":{"tags":["Meta"],"summary":"Join Waitlist","description":"Warteliste/Newsletter vor dem Start (oeffentlich, Coming-Soon-Landing).\nRate-limitiert gegen Spam; idempotent (doppelte E-Mail = OK). Keine Auth —\ndas ist der Lead-Sammelpunkt fuer TikTok/Instagram-Traffic.","operationId":"join_waitlist_api_waitlist_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WaitlistBody"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/waitlist/confirm":{"get":{"tags":["Meta"],"summary":"Confirm Waitlist","description":"Bestaetigungs-Klick aus der DOI-Mail: verifiziert den signierten Token\nund stempelt confirmed_at (idempotent).","operationId":"confirm_waitlist_api_waitlist_confirm_get","parameters":[{"name":"token","in":"query","required":false,"schema":{"type":"string","default":"","title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/waitlist/unsubscribe":{"get":{"tags":["Meta"],"summary":"Unsubscribe Waitlist","description":"Abmelde-Klick aus einer Mail bzw. One-Click-POST des Mail-Programms (List-Unsubscribe-Post): setzt\nunsubscribed_at (idempotent, Suppression — Zeile bleibt, Exporte schliessen sie aus). Kein Login,\nkeine Rueckfrage: Abmelden muss der einfachste Klick der Welt sein.","operationId":"unsubscribe_waitlist_api_waitlist_unsubscribe_get","parameters":[{"name":"token","in":"query","required":false,"schema":{"type":"string","default":"","title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]},"post":{"tags":["Admin","Warteliste"],"summary":" Waitlist One Click","description":"RFC 8058: One-Click-POST des Mail-Programms auf den Wartelisten-Abmeldelink (Token in der URL, Body\n`List-Unsubscribe=One-Click` wird nicht ausgewertet) – dieselbe Wirkung wie der GET-Klick in routers/meta.py.","operationId":"_waitlist_one_click_api_waitlist_unsubscribe_post","parameters":[{"name":"token","in":"query","required":false,"schema":{"type":"string","default":"","title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/waitlist/stats":{"get":{"tags":["Meta"],"summary":"Waitlist Stats","description":"Lead-Uebersicht fuer den Betreiber: Gesamtzahl, Einwilligungen und\nAufschluesselung nach Quelle (tiktok/instagram/…) — zeigt, welcher Kanal\nkonvertiert. Admin-Token-gated.","operationId":"waitlist_stats_api_waitlist_stats_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/waitlist/export":{"get":{"tags":["Meta"],"summary":"Waitlist Export","description":"Waitlist als CSV (E-Mail, Quelle, Einwilligung, Datum) — Betreiber holt die\nLeads vor dem Launch ab (Import ins Mail-Tool). Admin-Token-gated. Nur\nEingewilligte gesondert filterbar via ?consent=1 (Rechtssicherheit §7 UWG:\nMarketing-Mails nur an Consent=1); ?confirmed=1 = nur Double-Opt-In-\nbestaetigte (DER Filter fuer den Newsletter-Import).","operationId":"waitlist_export_api_waitlist_export_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/assistant/plan":{"post":{"tags":["Meta"],"summary":"Assistant Plan","description":"Studio-Assistent Auto-Pilot (Nutzer-Wunsch 12.7.): freier Wunsch ->\nTemplate + fertig ausgefuellte Parameter + exakte Credits VOR dem Erzeugen.\nPlaner = lokales Qwen3.6 (campaign_agent-Infrastruktur); ohne LLM-Server\ngreift Stichwort-Routing. Dateien (Foto/Video) kann der Plan nicht liefern —\ndie ergaenzt der Nutzer im vorbefuellten Generator.\n\nAuth + Rate-Limit (Audit 12.7. S1-#2): sonst waere teure LLM-Inferenz\nanonym und ungedrosselt (DoS-/Kosten-Flaeche).","operationId":"assistant_plan_api_assistant_plan_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/templates/{name}/cost":{"post":{"tags":["Meta"],"summary":"Preview Cost","description":"Live-Kostenvorschau (Welle 5, U6): Credits fuer die AKTUELLEN Formular-\nWerte — laengenabhaengige Templates (Skript/Shots/Dauer) rechnen live mit;\ndateibasierte Kosten (Audio-Dauer) bleiben Basiswert, bis der Job laeuft.\nBewusst ohne Auth: keine sensiblen Daten, identische Logik wie /templates.","operationId":"preview_cost_api_templates__name__cost_post","parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string","title":"Name"}}],"requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"type":"object","additionalProperties":true},{"type":"null"}],"title":"Params"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/me":{"get":{"tags":["Meta"],"summary":"Me","operationId":"me_api_me_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}},{"name":"x-org-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Org-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/events":{"post":{"tags":["Analytics"],"summary":"Track Events","operationId":"track_events_api_events_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}},{"name":"x-org-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Org-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EventsBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/elements":{"get":{"tags":["Elements"],"summary":"List Elements","description":"Elemente + Characters (read-only, source='character') des Kontexts.\nsort: created | used | name (Picker-Sortierung aus dem Teardown).","operationId":"list_elements_api_elements_get","parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","default":"","title":"Q"}},{"name":"category","in":"query","required":false,"schema":{"type":"string","default":"","title":"Category"}},{"name":"sort","in":"query","required":false,"schema":{"type":"string","default":"created","title":"Sort"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}},{"name":"x-org-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Org-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]},"post":{"tags":["Elements"],"summary":"Create Element","operationId":"create_element_api_elements_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}},{"name":"x-org-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Org-Id"}}],"requestBody":{"required":true,"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_create_element_api_elements_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/elements/from-job":{"post":{"tags":["Elements"],"summary":"Element From Job","description":"UI-Pendant zum MCP-Tool create_element_from_job (Produktions-Assistent\nSchritt 2, 27.7.): gewähltes Bild-Ergebnis wird Element — gleiche Regeln\n(Handle, Consent, nur Bild-Outputs), gleiche Implementierung.","operationId":"element_from_job_api_elements_from_job_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}},{"name":"x-org-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Org-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FromJobBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/elements/{element_id}":{"delete":{"tags":["Elements"],"summary":"Delete Element","operationId":"delete_element_api_elements__element_id__delete","parameters":[{"name":"element_id","in":"path","required":true,"schema":{"type":"string","title":"Element Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/elements/{element_id}/thumb":{"get":{"tags":["Elements"],"summary":"Element Thumb","operationId":"element_thumb_api_elements__element_id__thumb_get","parameters":[{"name":"element_id","in":"path","required":true,"schema":{"type":"string","title":"Element Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}},{"name":"x-org-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Org-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/chats":{"get":{"tags":["Chats"],"summary":"List Chats","operationId":"list_chats_api_chats_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}},{"name":"x-org-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Org-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]},"post":{"tags":["Chats"],"summary":"Create Chat","operationId":"create_chat_api_chats_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}},{"name":"x-org-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Org-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ThreadBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/chats/{thread_id}":{"get":{"tags":["Chats"],"summary":"Get Chat","operationId":"get_chat_api_chats__thread_id__get","parameters":[{"name":"thread_id","in":"path","required":true,"schema":{"type":"string","title":"Thread Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]},"put":{"tags":["Chats"],"summary":"Update Chat","operationId":"update_chat_api_chats__thread_id__put","parameters":[{"name":"thread_id","in":"path","required":true,"schema":{"type":"string","title":"Thread Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ThreadBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]},"delete":{"tags":["Chats"],"summary":"Delete Chat","operationId":"delete_chat_api_chats__thread_id__delete","parameters":[{"name":"thread_id","in":"path","required":true,"schema":{"type":"string","title":"Thread Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/admin/overview":{"get":{"tags":["Admin"],"summary":"Overview","description":"Business-Kennzahlen auf einen Blick: Nutzer, Abos/MRR, Umsatz, Credits/COGS,\nJobs und Warteliste. Bewusst ohne GPU-Pool-Live-Checks (die macht /api/health) —\ndieser Endpoint bleibt schnell und offline-testbar.\n?demo=1 (V2): Manifestations-Sicht — komplett simulierte Zahlen aus dem\nDemo-Verlauf, Antwort traegt demo:true (nie mit echten Daten gemischt).","operationId":"overview_api_admin_overview_get","parameters":[{"name":"demo","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Demo"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/admin/timeseries":{"get":{"tags":["Admin"],"summary":"Timeseries","description":"Je Tag: Registrierungen, Umsatz (EUR), Jobs, Credits — Chart-Futter.\nAggregation in Python (dialekt-neutral; Datenmengen sind Admin-tauglich klein).","operationId":"timeseries_api_admin_timeseries_get","parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"integer","default":30,"title":"Days"}},{"name":"demo","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Demo"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/admin/subscriptions":{"get":{"tags":["Admin"],"summary":"Subscriptions","description":"Letzte Abos inkl. Nutzer-E-Mail — Neuzugaenge und Kuendigungen im Blick.\n?demo=1: dieselben Fantasie-Kunden wie im Manifestations-Push-Verlauf.","operationId":"subscriptions_api_admin_subscriptions_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}},{"name":"demo","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Demo"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/admin/users":{"get":{"tags":["Admin"],"summary":"Users List","description":"Nutzer-Suche (E-Mail-Substring) fuer Support + Rollenvergabe.","operationId":"users_list_api_admin_users_get","parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","default":"","title":"Q"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/admin/users/{user_id}/role":{"post":{"tags":["Admin"],"summary":"Set Role","description":"Plattform-Rolle vergeben (Marketing-Uebergabe ohne Code-Aenderung).\nSelbstschutz: der letzte Admin kann sich nicht selbst degradieren.","operationId":"set_role_api_admin_users__user_id__role_post","parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"string","title":"User Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RoleBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/admin/funnel":{"get":{"tags":["Admin"],"summary":"Funnel","description":"FunnelEvent-Aggregation (erster Lese-Endpoint fuer die Tabelle):\nZaehlung je Event-Typ + je Template (nur job_submit) im Zeitfenster.\nTestzugaenge (source='demo', 31.08.) bleiben per Default draussen.","operationId":"funnel_api_admin_funnel_get","parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"integer","default":30,"title":"Days"}},{"name":"include_demo","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Include Demo"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/admin/ping":{"get":{"tags":["Admin"],"summary":"Admin Ping","description":"Leichtgewichtige Zugangs-Probe fuer die UI (zeigt Unlock-Banner bei 403).","operationId":"admin_ping_api_admin_ping_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/admin/unlock/begin":{"post":{"tags":["Admin"],"summary":"Admin Unlock Begin","operationId":"admin_unlock_begin_api_admin_unlock_begin_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/admin/unlock/complete":{"post":{"tags":["Admin"],"summary":"Admin Unlock Complete","operationId":"admin_unlock_complete_api_admin_unlock_complete_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnlockComplete"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/admin/marketing":{"get":{"tags":["Admin"],"summary":"Marketing","description":"Marketing-Uebersicht: Customer-Journey, Lead-Quellen, Wachstum je Tag,\nKampagnen-Performance, Aktivitaeten-Feed. require_marketing — auch die\nkuenftige Marketing-Rolle darf hier rein. ?demo=1 = Simulations-Sicht.","operationId":"marketing_api_admin_marketing_get","parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"integer","default":30,"title":"Days"}},{"name":"demo","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Demo"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/admin/waitlist.csv":{"get":{"tags":["Admin"],"summary":"Waitlist Export Admin","description":"Warteliste-Export direkt aus dem Dashboard (Session-Auth statt des\nToken-Gates in meta.py — das bleibt fuer Skripte). Audit-pflichtig.","operationId":"waitlist_export_admin_api_admin_waitlist_csv_get","parameters":[{"name":"confirmed","in":"query","required":false,"schema":{"type":"integer","default":1,"title":"Confirmed"}},{"name":"consent","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Consent"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/admin/push/broadcast":{"post":{"tags":["Admin"],"summary":"Push Broadcast","description":"Kampagne an ALLE Push-Abos (Versand im Hintergrund-Thread). Rolle\nadmin ODER marketing + Step-up + Audit; Titel/Text bewusst kurz gehalten\n(OS-Notification schneidet ab).","operationId":"push_broadcast_api_admin_push_broadcast_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BroadcastBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/admin/push/test":{"post":{"tags":["Admin"],"summary":"Push Test","description":"'Test an mich': Probe-Push nur an die eigenen Geraete — vor jedem\nechten Broadcast nutzbar, ohne Step-up.","operationId":"push_test_api_admin_push_test_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/admin/push/stats":{"get":{"tags":["Admin"],"summary":"Push Stats","operationId":"push_stats_api_admin_push_stats_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/admin/push/campaigns":{"get":{"tags":["Admin"],"summary":"Push Campaigns","operationId":"push_campaigns_api_admin_push_campaigns_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/admin/demo-push":{"get":{"tags":["Admin"],"summary":"Demo Push Status","description":"Zustand + Verlauf des Manifestations-Modus (simulierte Erfolgs-Pushes\nnur an Admin-Geraete; echte Tabellen bleiben unberuehrt).","operationId":"demo_push_status_api_admin_demo_push_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]},"post":{"tags":["Admin"],"summary":"Demo Push Toggle","operationId":"demo_push_toggle_api_admin_demo_push_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DemoPushBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/admin/demo-push/fire":{"post":{"tags":["Admin"],"summary":"Demo Push Fire","description":"Sofort eine Demo-Meldung senden (Test des Push-Kanals).","operationId":"demo_push_fire_api_admin_demo_push_fire_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/admin/demo-push/reseed":{"post":{"tags":["Admin"],"summary":"Demo Push Reseed","description":"Simulations-Historie neu wuerfeln (ersetzt die bisherige komplett).\n?seed= (10.8.): deterministische Wuerfelung — gleicher Seed, gleicher Verlauf.","operationId":"demo_push_reseed_api_admin_demo_push_reseed_post","parameters":[{"name":"seed","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Seed"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/admin/gpu":{"get":{"tags":["Admin"],"summary":"Gpu Overview","description":"Admin-Karte „GPU\": eigene Pods (Runpod + Buchfuehrung), Pool-Zustand je URL, Kosten heute/Monat,\nRegeln (Start-on-demand, Auto-Delete, Cap), Selbstheilungs-Zaehler.","operationId":"gpu_overview_api_admin_gpu_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/admin/capacity":{"get":{"tags":["Admin"],"summary":"Capacity","description":"H9-S1.4: Kapazitaets-Karte — Queue je Lane, Wartezeit p50/p95 (24 h), Jobdauer je Template,\nGPU-Angebot vs. Nachfrage (letzte Stunde), Headroom, Nutzer-je-Pod-Schaetzung, API-Latenz.","operationId":"capacity_api_admin_capacity_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/admin/ops":{"get":{"tags":["Admin"],"summary":"Ops Get","description":"H9-S1.2: Betriebs-Deckel (Env-Wert, Override, effektiv).","operationId":"ops_get_api_admin_ops_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]},"put":{"tags":["Admin"],"summary":"Ops Put","description":"Deckel ohne Neustart setzen (null = Override loeschen); nur erlaubte Schluessel, Grenzen geprueft.","operationId":"ops_put_api_admin_ops_put","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OpsBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/admin/gpu/pods":{"post":{"tags":["Admin"],"summary":"Gpu Pod Create","description":"Pod anlegen (Kosten-Gate: Tages-Cap; Nutzer-Go = dieser Klick). Antwort sofort, der Pod bootet\n3-8 min; der Pool nimmt ihn auf, sobald ComfyUI antwortet.","operationId":"gpu_pod_create_api_admin_gpu_pods_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GpuPodBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/admin/gpu/pods/{pod_id}":{"delete":{"tags":["Admin"],"summary":"Gpu Pod Delete","operationId":"gpu_pod_delete_api_admin_gpu_pods__pod_id__delete","parameters":[{"name":"pod_id","in":"path","required":true,"schema":{"type":"string","title":"Pod Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/admin/keys/temp":{"post":{"tags":["Admin"],"summary":"Temp Key","description":"Befristeter API-Key fuer Smokes/Selbsttests statt docker-exec: haengt am Admin-Konto (kein Team),\nlaeuft nach ttl_minutes (max. 120) ab, Klartext nur in dieser Antwort; Widerruf wie jeder Key ueber\nDELETE /api/keys/{id}. Audit-Eintrag. Business-Gate gilt nicht (Staff-Konto, Smoke-Zweck).","operationId":"temp_key_api_admin_keys_temp_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TempKeyBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/admin/market":{"get":{"tags":["Admin"],"summary":"Market","description":"Letzter Lauf von scripts/market_radar.py (Higgsfield-Changelog, fal-Neuheiten, Paritaets-Matrix)\naus backend/data/market_radar.json — ohne Lauf: leere Struktur mit Hinweis (kein Netzaufruf hier).","operationId":"market_api_admin_market_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/admin/readiness":{"get":{"tags":["Admin"],"summary":"Admin Readiness","description":"Go-Live-Ampel (Stripe-Launch-Ready): dieselbe Checkliste wie\nscripts/stripe_go_live_check.py — der Launch-Tag ist nur noch\n.env fuellen -> alles gruen -> Registrierung oeffnen.","operationId":"admin_readiness_api_admin_readiness_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/admin/launch":{"post":{"tags":["Admin"],"summary":"Admin Launch","description":"Launch-Schalter (PO 20.10.): Registrierung von Hand oeffnen oder wieder schliessen — jederzeit, ohne\nDeploy. Kein Datum und kein Automatismus legt ihn um; jeder Wechsel steht im Audit-Log und geht als\nAdmin-Alert raus. Antwort = die Go-Live-Ampel mit dem neuen Stand (`live`).","operationId":"admin_launch_api_admin_launch_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LaunchBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/admin/watch":{"get":{"tags":["Admin"],"summary":"Admin Watch","description":"Letzte Warnungen des Programm-Watch (Margen/Review-Stau/Klick-Anomalien/\nVerbindlichkeit/Review-Termine) + aktive Schwellen — read-only Sicht;\ngesendet wird ueber notify_admins (E-Mail + Push).","operationId":"admin_watch_api_admin_watch_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/admin/audit":{"get":{"tags":["Admin"],"summary":"Audit List","operationId":"audit_list_api_admin_audit_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":100,"title":"Limit"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/admin/cogs":{"get":{"tags":["Admin"],"summary":"Admin Cogs","operationId":"admin_cogs_api_admin_cogs_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/admin/feedback":{"get":{"tags":["Admin"],"summary":"Admin Feedback","operationId":"admin_feedback_api_admin_feedback_get","parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"integer","default":30,"title":"Days"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":200,"title":"Limit"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/admin/beta":{"get":{"tags":["Admin"],"summary":"Admin Beta Cohort","description":"Beta-Kohorte: Konten mit Testzugang (demo_until) oder Business-Pilot (aus DemoInvite) + Nutzung 30 Tage.","operationId":"admin_beta_cohort_api_admin_beta_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/admin/agent-runs":{"get":{"tags":["Admin"],"summary":"Admin Agent Runs","description":"Plan J / J10: Director-Laeufe — Status-Zaehler, Ereignis-Zaehler (Seed-Neuversuch, Lane-Wechsel,\nFreigaben, Judge, Abbrueche), Kosten je Template, LLM-Aufrufe, Lauf-Liste (mit E-Mail statt Hash).\nDieselbe Sicht wie /api/ops/agent-runs fuer die Control Plane.","operationId":"admin_agent_runs_api_admin_agent_runs_get","parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"integer","default":7,"title":"Days"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/admin/agent-runs/{run_id}":{"get":{"tags":["Admin"],"summary":"Admin Agent Run","description":"J10: Zeitstrahl (Ereignisse) + Versuche + Kosten eines Laufs, fuer jeden Nutzer sichtbar.","operationId":"admin_agent_run_api_admin_agent_runs__run_id__get","parameters":[{"name":"run_id","in":"path","required":true,"schema":{"type":"string","title":"Run Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/push/pubkey":{"get":{"tags":["Meta"],"summary":"Push Pubkey","description":"VAPID-Public-Key fuer pushManager.subscribe. Leer = Feature aus.","operationId":"push_pubkey_api_push_pubkey_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/push/subscribe":{"post":{"tags":["Meta"],"summary":"Push Subscribe","operationId":"push_subscribe_api_push_subscribe_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app__routers__push__SubscribeBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/push/unsubscribe":{"post":{"tags":["Meta"],"summary":"Push Unsubscribe","operationId":"push_unsubscribe_api_push_unsubscribe_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnsubscribeBody"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/news":{"get":{"tags":["News & Blog"],"summary":"List News","description":"Galerie-Band: neueste veroeffentlichte Eintraege (alle Arten).","operationId":"list_news_api_news_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":6,"title":"Limit"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/blog":{"get":{"tags":["News & Blog"],"summary":"List Blog","description":"OEFFENTLICH: veroeffentlichte Guides fuer die Blog-Uebersicht.","operationId":"list_blog_api_blog_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/blog/{slug}":{"get":{"tags":["News & Blog"],"summary":"Get Blog","description":"OEFFENTLICH: ein Guide inkl. Volltext.","operationId":"get_blog_api_blog__slug__get","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/admin/news":{"get":{"tags":["News & Blog"],"summary":"Admin List","operationId":"admin_list_api_admin_news_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]},"post":{"tags":["News & Blog"],"summary":"Admin Create","operationId":"admin_create_api_admin_news_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NewsBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/admin/news/{post_id}":{"put":{"tags":["News & Blog"],"summary":"Admin Update","operationId":"admin_update_api_admin_news__post_id__put","parameters":[{"name":"post_id","in":"path","required":true,"schema":{"type":"string","title":"Post Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NewsBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]},"delete":{"tags":["News & Blog"],"summary":"Admin Delete","operationId":"admin_delete_api_admin_news__post_id__delete","parameters":[{"name":"post_id","in":"path","required":true,"schema":{"type":"string","title":"Post Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/ref/track":{"post":{"tags":["Referral & Partner"],"summary":"Track Click","description":"Klick auf einen ?ref=-Link zaehlen (aggregierter Tages-Zaehler, keine\nEinzel-Klick-Zeilen). Antwort ist IMMER ok — ob ein Code existiert, bleibt\ngeheim (kein Enumerations-Orakel).","operationId":"track_click_api_ref_track_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TrackBody"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/partner/apply":{"post":{"tags":["Referral & Partner"],"summary":"Partner Apply","description":"Partner-Bewerbung von der oeffentlichen /partner-Seite. Schutzschichten\nwie die Warteliste: Honeypot -> Rate-Limit -> Turnstile. Antwort verraet\nnie, ob die Adresse schon beworben/Partner ist.","operationId":"partner_apply_api_partner_apply_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PartnerApplyBody"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/partner/stats":{"get":{"tags":["Referral & Partner"],"summary":"Partner Stats","description":"Magic-Link-Partner-Dashboard (Partner haben vor Launch kein Konto):\nsignierter Token aus der Freigabe-Mail -> Klicks/Signups/Conversions/\noffene Provision. Token ~180 Tage gueltig; neue Mail = frischer Link.","operationId":"partner_stats_api_partner_stats_get","parameters":[{"name":"token","in":"query","required":false,"schema":{"type":"string","default":"","title":"Token"}},{"name":"days","in":"query","required":false,"schema":{"type":"integer","default":30,"title":"Days"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/referral/me":{"get":{"tags":["Referral & Partner"],"summary":"Referral Me","description":"Eigener Empfehlungscode (lazy erzeugt), Share-URL, Fortschritt und\nReward-Historie fuer die Workspace-Sektion 'Freunde werben'.","operationId":"referral_me_api_referral_me_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/admin/referral":{"get":{"tags":["Referral & Partner"],"summary":"Admin Referral","description":"EIN Aggregations-Endpoint fuer die Admin-Sektion 'Partner & Referral':\nFunnel, Wachstums-Zeitreihe, K-Faktor, Partner-Leaderboard, Stat-Tiles.\n?demo=1 = Simulations-Sicht aus dem Manifestations-Verlauf (demo:true,\nNIE mit echten Tabellen gemischt).","operationId":"admin_referral_api_admin_referral_get","parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"integer","default":30,"title":"Days"}},{"name":"demo","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Demo"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/admin/affiliates":{"get":{"tags":["Referral & Partner"],"summary":"Admin Affiliates","operationId":"admin_affiliates_api_admin_affiliates_get","parameters":[{"name":"status","in":"query","required":false,"schema":{"type":"string","default":"","title":"Status"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/admin/affiliates/{partner_id}/status":{"post":{"tags":["Referral & Partner"],"summary":"Admin Affiliate Status","operationId":"admin_affiliate_status_api_admin_affiliates__partner_id__status_post","parameters":[{"name":"partner_id","in":"path","required":true,"schema":{"type":"string","title":"Partner Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AffiliateStatusBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/admin/affiliates/statements":{"post":{"tags":["Referral & Partner"],"summary":"Admin Send Statements","description":"Monats-Statements sofort erzeugen/senden (sonst automatisch im\nJanitor-Takt nach Monatswechsel).","operationId":"admin_send_statements_api_admin_affiliates_statements_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/admin/rewards":{"get":{"tags":["Referral & Partner"],"summary":"Admin Rewards","operationId":"admin_rewards_api_admin_rewards_get","parameters":[{"name":"status","in":"query","required":false,"schema":{"type":"string","default":"pending_review","title":"Status"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":100,"title":"Limit"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/admin/rewards/{reward_id}/decide":{"post":{"tags":["Referral & Partner"],"summary":"Admin Reward Decide","operationId":"admin_reward_decide_api_admin_rewards__reward_id__decide_post","parameters":[{"name":"reward_id","in":"path","required":true,"schema":{"type":"string","title":"Reward Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RewardDecideBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/admin/referral.csv":{"get":{"tags":["Referral & Partner"],"summary":"Admin Referral Csv","description":"Attributionskette als CSV (Code, Art, Status, Zeitpunkte) — Audit-pflichtig\nwie der Waitlist-Export.","operationId":"admin_referral_csv_api_admin_referral_csv_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/admin/demo-invites":{"post":{"tags":["Admin"],"summary":"Create Invite","description":"Neuen Testzugang ausstellen — der Link erscheint NUR in dieser Antwort.","operationId":"create_invite_api_admin_demo_invites_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app__routers__demo_access__InviteBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]},"get":{"tags":["Admin"],"summary":"List Invites","description":"Liste inkl. Nutzung (Jobs, Credits verbraucht/rest, letzter Login, Status).","operationId":"list_invites_api_admin_demo_invites_get","parameters":[{"name":"status","in":"query","required":false,"schema":{"type":"string","default":"all","title":"Status"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":100,"title":"Limit"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/admin/demo-invites/{invite_id}/revoke":{"post":{"tags":["Admin"],"summary":"Revoke Invite","operationId":"revoke_invite_api_admin_demo_invites__invite_id__revoke_post","parameters":[{"name":"invite_id","in":"path","required":true,"schema":{"type":"string","title":"Invite Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/admin/demo-invites/{invite_id}/pilot":{"post":{"tags":["Admin"],"summary":"Pilot Invite","description":"Testzugang -> Business-Pilot (Block E, Onboarding vor dem Launch): echte\nE-Mail + Bestaetigungsmail (DOI), Plan Business, kein Ablauf; danach kann die\nAgentur API-Keys anlegen und den claude.ai-Connector verbinden.","operationId":"pilot_invite_api_admin_demo_invites__invite_id__pilot_post","parameters":[{"name":"invite_id","in":"path","required":true,"schema":{"type":"string","title":"Invite Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PilotBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/admin/demo-invites/{invite_id}/relink":{"post":{"tags":["Admin"],"summary":"Relink Invite","description":"Neuer Einmal-Link fuer dasselbe Konto (Geraetewechsel).","operationId":"relink_invite_api_admin_demo_invites__invite_id__relink_post","parameters":[{"name":"invite_id","in":"path","required":true,"schema":{"type":"string","title":"Invite Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/admin/demo-invites/{invite_id}/extend":{"post":{"tags":["Admin"],"summary":"Extend Invite","operationId":"extend_invite_api_admin_demo_invites__invite_id__extend_post","parameters":[{"name":"invite_id","in":"path","required":true,"schema":{"type":"string","title":"Invite Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExtendBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/demo/redeem":{"post":{"tags":["Admin"],"summary":"Redeem","description":"Magic-Link einloesen -> Session (wie Login-Antwort) + Demo-Metadaten.\nOeffentlich; kein Login-IP-Gate (s. Modul-Docstring).","operationId":"redeem_api_demo_redeem_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RedeemBody"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/oauth/register":{"post":{"tags":["OAuth (Connectoren)"],"summary":"Register Client","description":"Dynamic Client Registration — claude.ai registriert seinen Connector selbst.\nSchutz: Redirect-Allowlist, 10/h je IP, Deckel unbenutzter Clients, GC 24 h.","operationId":"register_client_api_oauth_register_post","responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/oauth/authorize/info":{"get":{"tags":["OAuth (Connectoren)"],"summary":"Authorize Info","description":"Vorpruefung fuer die Consent-Seite: Client + redirect_uri + Scopes. Fehler\n-> 400 (nie Redirect, RFC 6749 §4.1.2.1).","operationId":"authorize_info_api_oauth_authorize_info_get","parameters":[{"name":"client_id","in":"query","required":false,"schema":{"type":"string","default":"","title":"Client Id"}},{"name":"redirect_uri","in":"query","required":false,"schema":{"type":"string","default":"","title":"Redirect Uri"}},{"name":"scope","in":"query","required":false,"schema":{"type":"string","default":"","title":"Scope"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/oauth/authorize":{"post":{"tags":["OAuth (Connectoren)"],"summary":"Authorize","description":"Consent-Entscheidung (Studio-Session). Gates wie beim API-Key-Anlegen\n(assert_machine_access), Team nur bei Mitgliedschaft, PKCE Pflicht. Antwort =\n{redirect_to}: die Seite leitet den Browser zum Client zurueck.","operationId":"authorize_api_oauth_authorize_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthorizeBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/oauth/token":{"post":{"tags":["OAuth (Connectoren)"],"summary":"Token","description":"authorization_code (PKCE, einmalig) oder refresh_token (Rotation).\nForm-urlencoded; Client-Auth per Basic, Formfeld oder public (client_id).","operationId":"token_api_oauth_token_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/oauth/revoke":{"post":{"tags":["OAuth (Connectoren)"],"summary":"Revoke","description":"RFC 7009: Token (Access oder Refresh) widerrufen = Grant trennen. Immer 200.","operationId":"revoke_api_oauth_revoke_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/oauth/grants":{"get":{"tags":["OAuth (Connectoren)"],"summary":"List Grants","operationId":"list_grants_api_oauth_grants_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}},{"name":"x-org-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Org-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/oauth/grants/{grant_id}":{"delete":{"tags":["OAuth (Connectoren)"],"summary":"Delete Grant","description":"Trennen: eigener Grant oder (owner/admin) Team-Grant. 404 ohne Existenz-Preisgabe.","operationId":"delete_grant_api_oauth_grants__grant_id__delete","parameters":[{"name":"grant_id","in":"path","required":true,"schema":{"type":"string","title":"Grant Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/uploads":{"get":{"tags":["Uploads"],"summary":"Get Uploads","description":"Bibliothek des Kontexts, neueste zuerst; kind = image|audio|video, q sucht\nin Name und ID.","operationId":"get_uploads_api_uploads_get","parameters":[{"name":"kind","in":"query","required":false,"schema":{"type":"string","default":"","title":"Kind"}},{"name":"q","in":"query","required":false,"schema":{"type":"string","default":"","title":"Q"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":100,"title":"Limit"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}},{"name":"x-org-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Org-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]},"post":{"tags":["Uploads"],"summary":"Post Upload","description":"Datei in die Bibliothek legen (Multipart-Feld 'file'). Gleicher\nRate-Zaehler wie MCP upload_asset; Caps/Probe/NSFW wie jeder Upload.","operationId":"post_upload_api_uploads_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}},{"name":"x-org-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Org-Id"}}],"requestBody":{"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_post_upload_api_uploads_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/uploads/import":{"post":{"tags":["Uploads"],"summary":"Import Upload","description":"Plan U/U9: Datei-URL ODER YouTube-/TikTok-URL in die Bibliothek (Seiten-URL:\nAusschnitt start_s/end_s, Rechte-Zaun rights_confirmed + usage='own_or_licensed').","operationId":"import_upload_api_uploads_import_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}},{"name":"x-org-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Org-Id"}}],"requestBody":{"required":true,"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_import_upload_api_uploads_import_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/uploads/{asset_id}/extract-audio":{"post":{"tags":["Uploads"],"summary":"Extract Audio","description":"Plan U/U9: Tonspur eines Video-Uploads als neues Audio-Asset.","operationId":"extract_audio_api_uploads__asset_id__extract_audio_post","parameters":[{"name":"asset_id","in":"path","required":true,"schema":{"type":"string","title":"Asset Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}},{"name":"x-org-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Org-Id"}}],"requestBody":{"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_extract_audio_api_uploads__asset_id__extract_audio_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/uploads/{asset_id}":{"delete":{"tags":["Uploads"],"summary":"Remove Upload","operationId":"remove_upload_api_uploads__asset_id__delete","parameters":[{"name":"asset_id","in":"path","required":true,"schema":{"type":"string","title":"Asset Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}},{"name":"x-org-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Org-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/uploads/{asset_id}/thumb":{"get":{"tags":["Uploads"],"summary":"Upload Thumb","description":"Vorschau fuer Bibliothek, Picker und Chat-Kacheln: Bild verkleinert, Video =\nFrame bei ~1 s (Cache <id>_thumb.jpg neben der Datei), Audio -> 204. Zugriff per\nsigniertem Token (MCP Apps, <img> ohne Auth) ODER als eingeloggter Eigentuemer.","operationId":"upload_thumb_api_uploads__asset_id__thumb_get","parameters":[{"name":"asset_id","in":"path","required":true,"schema":{"type":"string","title":"Asset Id"}},{"name":"token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Token"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}},{"name":"x-org-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Org-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/live":{"get":{"tags":["Live"],"summary":"Live Stream","description":"text/event-stream: `hello` beim Verbinden, danach `job` (schlanke Job-\nSicht) und `activity` (Spur-Zeile); alle 15 s ein Kommentar-Ping. limit > 0\nschliesst nach so vielen Events (Tests/Debug).","operationId":"live_stream_api_live_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Limit"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}},{"name":"x-org-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Org-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/activities":{"get":{"tags":["Live"],"summary":"Get Activities","operationId":"get_activities_api_activities_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}},{"name":"x-org-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Org-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/showcase":{"get":{"tags":["Trends"],"summary":"Showcase Manifest","description":"Beispiel-Galerie (17.09.): gesperrt = nur fuer Angemeldete, mit signierten Medien-URLs.","operationId":"showcase_manifest_api_showcase_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/showcase/status":{"get":{"tags":["Trends"],"summary":"Showcase Status","description":"Leichtgewichtig fuer Landing-Seiten: Link „Beispiele ansehen“ nur zeigen, wenn oeffentlich.","operationId":"showcase_status_api_showcase_status_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/trends":{"get":{"tags":["Trends"],"summary":"List Trends","operationId":"list_trends_api_trends_get","parameters":[{"name":"sort","in":"query","required":false,"schema":{"type":"string","default":"hot","title":"Sort"}},{"name":"template","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Template"}},{"name":"tag","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tag"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":24,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Offset"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]},"post":{"tags":["Trends"],"summary":"Publish","operationId":"publish_api_trends_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}},{"name":"x-org-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Org-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app__routers__trends__PublishBody"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/trends/consents":{"get":{"tags":["Trends"],"summary":"Consent Texts","operationId":"consent_texts_api_trends_consents_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/trends/mine":{"get":{"tags":["Trends"],"summary":"My Trends","operationId":"my_trends_api_trends_mine_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/trends/{recipe_id}":{"get":{"tags":["Trends"],"summary":"Get Trend","operationId":"get_trend_api_trends__recipe_id__get","parameters":[{"name":"recipe_id","in":"path","required":true,"schema":{"type":"string","title":"Recipe Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]},"delete":{"tags":["Trends"],"summary":"Delete","operationId":"delete_api_trends__recipe_id__delete","parameters":[{"name":"recipe_id","in":"path","required":true,"schema":{"type":"string","title":"Recipe Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/trends/{recipe_id}/clip":{"get":{"tags":["Trends"],"summary":"Clip","description":"G7.3 Hover-Play: stummer 3-s-Clip (480 px) neben der JPG-Vorschau.","operationId":"clip_api_trends__recipe_id__clip_get","parameters":[{"name":"recipe_id","in":"path","required":true,"schema":{"type":"string","title":"Recipe Id"}},{"name":"t","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"T"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/trends/{recipe_id}/preview":{"get":{"tags":["Trends"],"summary":"Preview","operationId":"preview_api_trends__recipe_id__preview_get","parameters":[{"name":"recipe_id","in":"path","required":true,"schema":{"type":"string","title":"Recipe Id"}},{"name":"t","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"T"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/trends/{recipe_id}/remix":{"post":{"tags":["Trends"],"summary":"Remix","description":"'Nachmachen': liefert die Vorbefuellung (Template, Engine, Parameter, Prompt) und zaehlt.","operationId":"remix_api_trends__recipe_id__remix_post","parameters":[{"name":"recipe_id","in":"path","required":true,"schema":{"type":"string","title":"Recipe Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/trends/{recipe_id}/{kind}":{"post":{"tags":["Trends"],"summary":"Toggle","operationId":"toggle_api_trends__recipe_id___kind__post","parameters":[{"name":"recipe_id","in":"path","required":true,"schema":{"type":"string","title":"Recipe Id"}},{"name":"kind","in":"path","required":true,"schema":{"type":"string","title":"Kind"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/ReportBody"},{"type":"null"}],"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/admin/trends/queue":{"get":{"tags":["Trends"],"summary":"Admin Queue","operationId":"admin_queue_api_admin_trends_queue_get","parameters":[{"name":"status","in":"query","required":false,"schema":{"type":"string","default":"pending","title":"Status"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/admin/trends/radar":{"get":{"tags":["Trends"],"summary":"Admin Radar","operationId":"admin_radar_api_admin_trends_radar_get","parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"integer","default":7,"title":"Days"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/admin/trends/{recipe_id}/{action}":{"post":{"tags":["Trends"],"summary":"Admin Moderate","operationId":"admin_moderate_api_admin_trends__recipe_id___action__post","parameters":[{"name":"recipe_id","in":"path","required":true,"schema":{"type":"string","title":"Recipe Id"}},{"name":"action","in":"path","required":true,"schema":{"type":"string","title":"Action"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/ModerateBody"},{"type":"null"}],"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/agent/plan":{"post":{"tags":["Agent"],"summary":"Create Plan","description":"Wunsch -> Plan-Vorschau (AgentRun draft). Kein Geld, keine Jobs (L3). Free-Tarif: Tageslimit (V3-47).","operationId":"create_plan_api_agent_plan_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}},{"name":"x-org-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Org-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/agent/execute":{"post":{"tags":["Agent"],"summary":"Execute","description":"Bestaetigter Plan -> Schritt 1 einreichen (alles durch submit_job_core).\nbody.steps = [{index, params: {<name>: <str>}, assets: {<feld>: <asset_id>}}].","operationId":"execute_api_agent_execute_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}},{"name":"x-org-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Org-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/agent/runs/{run_id}/resume":{"post":{"tags":["Agent"],"summary":"Resume","description":"H2.4: fehlgeschlagenen Lauf am gescheiterten Schritt fortsetzen.","operationId":"resume_api_agent_runs__run_id__resume_post","parameters":[{"name":"run_id","in":"path","required":true,"schema":{"type":"string","title":"Run Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}},{"name":"x-org-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Org-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/agent/runs/{run_id}/choose":{"post":{"tags":["Agent"],"summary":"Choose","description":"H2.7: Varianten-Wahl (body.job_id) — der Plan laeuft mit dem gewaehlten Ergebnis weiter.","operationId":"choose_api_agent_runs__run_id__choose_post","parameters":[{"name":"run_id","in":"path","required":true,"schema":{"type":"string","title":"Run Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}},{"name":"x-org-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Org-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/agent/runs/{run_id}/approve":{"post":{"tags":["Agent"],"summary":"Approve","description":"Plan J / J4: offene Freigabe (budget_increase | judge_override) beantworten.\nbody = {hash, decision: approve|reject, option?} — hash aus GET /runs/{id}.approval.","operationId":"approve_api_agent_runs__run_id__approve_post","parameters":[{"name":"run_id","in":"path","required":true,"schema":{"type":"string","title":"Run Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}},{"name":"x-org-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Org-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/agent/runs":{"get":{"tags":["Agent"],"summary":"List Runs","operationId":"list_runs_api_agent_runs_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}},{"name":"x-org-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Org-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/agent/runs/{run_id}":{"get":{"tags":["Agent"],"summary":"Get Run","description":"Lauf mit Ereignisprotokoll (`events`, aufsteigend), Versuchen (`attempts`) und\nKostensumme (`cost`) — Plan J / J1.","operationId":"get_run_api_agent_runs__run_id__get","parameters":[{"name":"run_id","in":"path","required":true,"schema":{"type":"string","title":"Run Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}},{"name":"x-org-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Org-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/agent/runs/{run_id}/steps/{idx}/remove":{"post":{"tags":["Agent"],"summary":"Remove Step","description":"Vorschau kuerzen: nur der letzte Schritt, nur im Draft.","operationId":"remove_step_api_agent_runs__run_id__steps__idx__remove_post","parameters":[{"name":"run_id","in":"path","required":true,"schema":{"type":"string","title":"Run Id"}},{"name":"idx","in":"path","required":true,"schema":{"type":"integer","title":"Idx"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}},{"name":"x-org-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Org-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/agent/runs/{run_id}/cancel":{"post":{"tags":["Agent"],"summary":"Cancel","operationId":"cancel_api_agent_runs__run_id__cancel_post","parameters":[{"name":"run_id","in":"path","required":true,"schema":{"type":"string","title":"Run Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}},{"name":"x-org-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Org-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/projects/{project_id}/messages":{"get":{"summary":"Project Messages","operationId":"project_messages_api_projects__project_id__messages_get","parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string","title":"Project Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":100,"title":"Limit"}},{"name":"after","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"After"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}},{"name":"x-org-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Org-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]},"post":{"summary":"Post Project Message","operationId":"post_project_message_api_projects__project_id__messages_post","parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string","title":"Project Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}},{"name":"x-org-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Org-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/projects/{project_id}/messages/{message_id}/react":{"post":{"summary":"React Project Message","operationId":"react_project_message_api_projects__project_id__messages__message_id__react_post","parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string","title":"Project Id"}},{"name":"message_id","in":"path","required":true,"schema":{"type":"string","title":"Message Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}},{"name":"x-org-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Org-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReactBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/projects/{project_id}/messages/{message_id}":{"delete":{"summary":"Delete Project Message","operationId":"delete_project_message_api_projects__project_id__messages__message_id__delete","parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string","title":"Project Id"}},{"name":"message_id","in":"path","required":true,"schema":{"type":"string","title":"Message Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}},{"name":"x-org-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Org-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/apps":{"post":{"summary":"Publish App","operationId":"publish_app_api_apps_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}},{"name":"x-org-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Org-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app__routers__apps__PublishBody"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]},"get":{"summary":"List Apps","operationId":"list_apps_api_apps_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":60,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/apps/check":{"post":{"summary":"Check App","description":"Vorpruefung ohne Anlegen (Builder-Iteration im Chat).","operationId":"check_app_api_apps_check_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app__routers__apps__PublishBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/apps/mine":{"get":{"summary":"My Apps","operationId":"my_apps_api_apps_mine_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/apps/{slug}":{"get":{"summary":"App Meta","operationId":"app_meta_api_apps__slug__get","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]},"delete":{"summary":"Delete App","operationId":"delete_app_api_apps__slug__delete","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/apps/{slug}/runtime":{"get":{"summary":"App Runtime","description":"HTML fuer die sandboxed iframe (srcdoc-Alternative): Bruecke + App. Eigene CSP: nur Inline.","operationId":"app_runtime_api_apps__slug__runtime_get","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/admin/apps/queue":{"get":{"summary":"Admin Apps Queue","operationId":"admin_apps_queue_api_admin_apps_queue_get","parameters":[{"name":"status","in":"query","required":false,"schema":{"type":"string","default":"pending","title":"Status"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/admin/apps/{slug}/{action}":{"post":{"summary":"Admin Apps Moderate","operationId":"admin_apps_moderate_api_admin_apps__slug___action__post","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}},{"name":"action","in":"path","required":true,"schema":{"type":"string","title":"Action"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/ModerateBody"},{"type":"null"}],"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/ops/summary":{"get":{"tags":["Ops"],"summary":"Ops Summary","operationId":"ops_summary_api_ops_summary_get","parameters":[{"name":"x-ops-token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Ops-Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/ops/jobs":{"get":{"tags":["Ops"],"summary":"Ops Jobs","operationId":"ops_jobs_api_ops_jobs_get","parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"integer","default":7,"title":"Days"}},{"name":"x-ops-token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Ops-Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/ops/jobs-failed":{"get":{"tags":["Ops"],"summary":"Ops Jobs Failed","operationId":"ops_jobs_failed_api_ops_jobs_failed_get","parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"integer","default":7,"title":"Days"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":200,"title":"Limit"}},{"name":"x-ops-token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Ops-Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/ops/feedback":{"get":{"tags":["Ops"],"summary":"Ops Feedback","operationId":"ops_feedback_api_ops_feedback_get","parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"integer","default":30,"title":"Days"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":200,"title":"Limit"}},{"name":"x-ops-token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Ops-Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/ops/cogs":{"get":{"tags":["Ops"],"summary":"Ops Cogs","operationId":"ops_cogs_api_ops_cogs_get","parameters":[{"name":"x-ops-token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Ops-Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/ops/agent-runs":{"get":{"tags":["Ops"],"summary":"Ops Agent Runs","operationId":"ops_agent_runs_api_ops_agent_runs_get","parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"integer","default":7,"title":"Days"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":100,"title":"Limit"}},{"name":"x-ops-token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Ops-Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/ops/engine-stats":{"get":{"tags":["Ops"],"summary":"Ops Engine Stats","operationId":"ops_engine_stats_api_ops_engine_stats_get","parameters":[{"name":"template","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Template"}},{"name":"window_days","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Window Days"}},{"name":"x-ops-token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Ops-Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/ops/fraud-queue":{"get":{"tags":["Ops"],"summary":"Ops Fraud Queue","operationId":"ops_fraud_queue_api_ops_fraud_queue_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":100,"title":"Limit"}},{"name":"x-ops-token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Ops-Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/ops/catalog":{"get":{"tags":["Ops"],"summary":"Ops Catalog","operationId":"ops_catalog_api_ops_catalog_get","parameters":[{"name":"x-ops-token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Ops-Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/ops/post-package":{"post":{"tags":["Ops"],"summary":"Ops Post Package","description":"Paket fuer Social Media aus einem fertigen Job oder Showcase-Eintrag: 9:16-Clip mit\nKI-Kennzeichnung, Cover (+ Text-Overlay), Transkript (SRT), Fakten. Kein Modellaufruf ausser\ndem Transkript; die Caption schreibt die Control Plane.","operationId":"ops_post_package_api_ops_post_package_post","parameters":[{"name":"x-ops-token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Ops-Token"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PostPackageIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/ops/trend-brief":{"post":{"tags":["Ops"],"summary":"Ops Trend Brief","description":"Stufe A des Trend-Nachbaus: ein Brief (oder Playbook) wird als Director-Lauf unter dem\nRunner-Konto gestartet — Judge, Retry-Politik, Budget wie jeder Lauf, gedeckelt auf\nAVP_TREND_BRIEF_COGS_USD / _MAX_CREDITS (E-J9). Braucht ein Brief Eingaben (Foto, Pflichtfelder),\nbleibt er Entwurf und die Antwort nennt sie (`needs_input`).","operationId":"ops_trend_brief_api_ops_trend_brief_post","parameters":[{"name":"x-ops-token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Ops-Token"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TrendBriefIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/ops/trend-runs/{run_id}":{"get":{"tags":["Ops"],"summary":"Ops Trend Run","description":"Stand eines Trend-Laufs: Status, Schritte, Job-IDs (fuer das Post-Paket), Kosten, letzte Ereignisse.","operationId":"ops_trend_run_api_ops_trend_runs__run_id__get","parameters":[{"name":"run_id","in":"path","required":true,"schema":{"type":"string","title":"Run Id"}},{"name":"x-ops-token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Ops-Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/ops/post-packages":{"get":{"tags":["Ops"],"summary":"Ops Post Packages","operationId":"ops_post_packages_api_ops_post_packages_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}},{"name":"x-ops-token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Ops-Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/ops/post-package/{pkg_id}":{"get":{"tags":["Ops"],"summary":"Ops Post Package Get","operationId":"ops_post_package_get_api_ops_post_package__pkg_id__get","parameters":[{"name":"pkg_id","in":"path","required":true,"schema":{"type":"string","title":"Pkg Id"}},{"name":"x-ops-token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Ops-Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/ops/post-package/{pkg_id}/{name}":{"get":{"tags":["Ops"],"summary":"Ops Post Package File","operationId":"ops_post_package_file_api_ops_post_package__pkg_id___name__get","parameters":[{"name":"pkg_id","in":"path","required":true,"schema":{"type":"string","title":"Pkg Id"}},{"name":"name","in":"path","required":true,"schema":{"type":"string","title":"Name"}},{"name":"x-ops-token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Ops-Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/admin/growth":{"get":{"tags":["Admin"],"summary":"Growth","description":"Woche gegen Vorwoche, Kanal-Tabelle ueber `weeks` Wochen, Top-Inhalte, bester Kanal, Ampel (V3-34).","operationId":"growth_api_admin_growth_get","parameters":[{"name":"weeks","in":"query","required":false,"schema":{"type":"integer","default":8,"title":"Weeks"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/admin/cohorts":{"get":{"tags":["Admin"],"summary":"Cohorts","description":"Aktivierung und Kohorten je Anmeldewoche (V3-37): aktiviert = erster PASS-Job in 7 Tagen (K-5), Median bis\nzum ersten Ergebnis, zahlend nach 30 Tagen, aktiv in Woche 2–4. Ohne Team- und Testkonten, nur Summen.","operationId":"cohorts_api_admin_cohorts_get","parameters":[{"name":"weeks","in":"query","required":false,"schema":{"type":"integer","default":8,"title":"Weeks"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/admin/revenue":{"get":{"tags":["Admin"],"summary":"Revenue Clean","description":"Umsatz sauber (V3-38): netto, ohne mock_*/Stripe-Test, ohne Team- und Testkonten, Team-Abo = ein Kunde,\nChurn ueber subscriptions.updated_at. Nur Summen.","operationId":"revenue_clean_api_admin_revenue_get","parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"integer","default":30,"title":"Days"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/admin/products":{"get":{"tags":["Admin"],"summary":"Products","description":"Credits, Marge und Fehlschlaege je Vorlage (V3-41, Montags-Regel K-5): Inhalt von /api/ops/jobs plus\nGratis-Anteil, Wert und Marge, dazu COGS gegen Netto-Umsatz. Nur Summen.","operationId":"products_api_admin_products_get","parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"integer","default":7,"title":"Days"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/admin/channel-costs":{"get":{"tags":["Admin"],"summary":"Costs List","operationId":"costs_list_api_admin_channel_costs_get","parameters":[{"name":"weeks","in":"query","required":false,"schema":{"type":"integer","default":8,"title":"Weeks"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]},"post":{"tags":["Admin"],"summary":"Costs Add","description":"Kosten einer Woche fuer einen Kanal (Werbebudget, bezahlte Tools). Mehrere Zeilen je Woche/Kanal erlaubt.","operationId":"costs_add_api_admin_channel_costs_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CostBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/admin/channel-costs/{cost_id}":{"delete":{"tags":["Admin"],"summary":"Costs Delete","operationId":"costs_delete_api_admin_channel_costs__cost_id__delete","parameters":[{"name":"cost_id","in":"path","required":true,"schema":{"type":"string","title":"Cost Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/admin/growth/thresholds":{"get":{"tags":["Admin"],"summary":"Thresholds Get","operationId":"thresholds_get_api_admin_growth_thresholds_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]},"put":{"tags":["Admin"],"summary":"Thresholds Put","description":"Schwellen speichern; confirmed=true nimmt die Marke „Vorschlag“ weg (nach der PO-Bestaetigung).","operationId":"thresholds_put_api_admin_growth_thresholds_put","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ThresholdBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/admin/waitlist/reconsent":{"get":{"tags":["Admin"],"summary":"Reconsent Preview","operationId":"reconsent_preview_api_admin_waitlist_reconsent_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]},"post":{"tags":["Admin"],"summary":"Reconsent Send","operationId":"reconsent_send_api_admin_waitlist_reconsent_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReconsentBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/waitlist/reconsent":{"get":{"tags":["Admin"],"summary":"Reconsent Confirm","description":"Klick aus der Mail: Einwilligung bestaetigt (consent_source='bestaetigt'), idempotent.","operationId":"reconsent_confirm_api_waitlist_reconsent_get","parameters":[{"name":"token","in":"query","required":false,"schema":{"type":"string","default":"","title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/account/mail-unsubscribe":{"get":{"tags":["Admin"],"summary":"Mail Unsubscribe","description":"K-11: Abmeldelink aus den Mails mit Kaufbezug – ein Klick ohne Login widerruft die Werbe-Einwilligung des\nKontos (marketing_consent = 0). POST = One-Click des Mail-Programms (RFC 8058, Body `List-Unsubscribe=One-Click`,\ndas Token steht in der URL). Wieder einschalten nur im Konto selbst (Einstellungen).","operationId":"mail_unsubscribe_api_account_mail_unsubscribe_get","parameters":[{"name":"token","in":"query","required":false,"schema":{"type":"string","default":"","title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]},"post":{"tags":["Admin"],"summary":"Mail Unsubscribe","description":"K-11: Abmeldelink aus den Mails mit Kaufbezug – ein Klick ohne Login widerruft die Werbe-Einwilligung des\nKontos (marketing_consent = 0). POST = One-Click des Mail-Programms (RFC 8058, Body `List-Unsubscribe=One-Click`,\ndas Token steht in der URL). Wieder einschalten nur im Konto selbst (Einstellungen).","operationId":"mail_unsubscribe_api_account_mail_unsubscribe_post","parameters":[{"name":"token","in":"query","required":false,"schema":{"type":"string","default":"","title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/admin/outreach":{"get":{"tags":["Admin"],"summary":"Outreach List","description":"Alle Agenturen mit Stufe, Datum je Stufe und verknuepftem Testzugang; Kennzahlen und freie Testzugaenge.","operationId":"outreach_list_api_admin_outreach_get","parameters":[{"name":"stage","in":"query","required":false,"schema":{"type":"string","default":"","title":"Stage"}},{"name":"q","in":"query","required":false,"schema":{"type":"string","default":"","title":"Q"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]},"post":{"tags":["Admin"],"summary":"Outreach Add","operationId":"outreach_add_api_admin_outreach_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContactBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/admin/outreach/{contact_id}":{"patch":{"tags":["Admin"],"summary":"Outreach Patch","operationId":"outreach_patch_api_admin_outreach__contact_id__patch","parameters":[{"name":"contact_id","in":"path","required":true,"schema":{"type":"string","title":"Contact Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PatchBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]},"delete":{"tags":["Admin"],"summary":"Outreach Delete","operationId":"outreach_delete_api_admin_outreach__contact_id__delete","parameters":[{"name":"contact_id","in":"path","required":true,"schema":{"type":"string","title":"Contact Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/admin/outreach/import":{"post":{"tags":["Admin"],"summary":"Outreach Import","description":"CSV der Lead-Liste: dry_run=true zeigt nur, was passieren wuerde; false legt die neuen Zeilen an.","operationId":"outreach_import_api_admin_outreach_import_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImportBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/admin/brand-revenue":{"get":{"tags":["Admin"],"summary":"Brand Revenue","description":"Umsatz von Veylumia (Ledger, V3-38) und Allonz (Handeingabe) je Kalenderjahr, Zaehler gegen 55.000 EUR mit\nlinearer Hochrechnung und Warnstufe, Rechtsquellen mit Datum. Nur Summen.","operationId":"brand_revenue_api_admin_brand_revenue_get","parameters":[{"name":"year","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Year"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/admin/brand-revenue/{brand}/{month}":{"put":{"tags":["Admin"],"summary":"Month Set","description":"Monatsumsatz brutto (was Kunden gezahlt haben) eintragen oder ueberschreiben; 0 = Monat ohne Umsatz.","operationId":"month_set_api_admin_brand_revenue__brand___month__put","parameters":[{"name":"brand","in":"path","required":true,"schema":{"type":"string","title":"Brand"}},{"name":"month","in":"path","required":true,"schema":{"type":"string","title":"Month"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MonthBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]},"delete":{"tags":["Admin"],"summary":"Month Delete","operationId":"month_delete_api_admin_brand_revenue__brand___month__delete","parameters":[{"name":"brand","in":"path","required":true,"schema":{"type":"string","title":"Brand"}},{"name":"month","in":"path","required":true,"schema":{"type":"string","title":"Month"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/onboarding/first-video":{"get":{"tags":["Onboarding"],"summary":"First Video State","description":"Stand des gefuehrten Pfads: eligible (noch kein eigener Job), state offen|laeuft|fertig|warnung|fehlgeschlagen,\nVorbelegung mit Herkunft (Sprache, Format, Engine, Portraet aus der Bibliothek), drei Skripte, Preis, Job.","operationId":"first_video_state_api_onboarding_first_video_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]},"post":{"tags":["Onboarding"],"summary":"First Video Start","description":"Startet das erste Video ueber den normalen Submit-Kern (Credits, Rechte, Gesichts-Gate, Limits).","operationId":"first_video_start_api_onboarding_first_video_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FirstVideoBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/jobs/{job_id}/lieferschein.pdf":{"get":{"tags":["Jobs"],"summary":"Job Lieferschein","description":"PDF zum fertigen Job (Studio und API-Key). Tarif des Job-Kontexts: Team-Jobs zaehlen den Team-Plan, sonst den\neigenen. 403 unter Business, 409 solange der Job nicht fertig ist.","operationId":"job_lieferschein_api_jobs__job_id__lieferschein_pdf_get","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/jobs/{job_id}/poster.jpg":{"get":{"tags":["Jobs"],"summary":"Job Poster","description":"Poster des fertigen Jobs (Session oder API-Key, Rechte wie beim Output). 404 ohne Poster, 409 vor done.","operationId":"job_poster_api_jobs__job_id__poster_jpg_get","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/jobs/{job_id}/export":{"get":{"tags":["Jobs"],"summary":"Job Export","description":"Posting-Export zum fertigen Job: `srt` + `subtitle_source` (script|scenes|ref|transkript|''), `caption`\n(mit „KI-generiert“), `hashtags`, `script`. `llm=false` erzwingt den regelbasierten Rueckfall,\n`transcribe=false` laesst den Whisper-Rueckfall aus (nur Skript).","operationId":"job_export_api_jobs__job_id__export_get","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}},{"name":"llm","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Llm"}},{"name":"transcribe","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Transcribe"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/jobs/{job_id}/subtitles.srt":{"get":{"tags":["Jobs"],"summary":"Job Subtitles","description":"SRT-Datei zum fertigen Job (Skript zuerst, Transkription als Rueckfall). 404 ohne Untertitel.","operationId":"job_subtitles_api_jobs__job_id__subtitles_srt_get","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}},{"name":"transcribe","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Transcribe"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/mcp/tools":{"get":{"tags":["Meta"],"summary":"Mcp Tools","description":"MCP-Tools in Registrierungsreihenfolge, dazu die Zahl der Katalog-Templates.","operationId":"mcp_tools_api_mcp_tools_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Mcp Tools Api Mcp Tools Get"}}}}}}},"/api/motion-presets":{"get":{"summary":"List Motion Presets","description":"Galerie als JSON (API/MCP): Slug, Label, Notiz, Poster- und Clip-URL.","operationId":"list_motion_presets_api_motion_presets_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Response List Motion Presets Api Motion Presets Get"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/thumbs/presets/dance_video/motion_preset/{name}":{"get":{"summary":"Motion Preset Poster","operationId":"motion_preset_poster_thumbs_presets_dance_video_motion_preset__name__get","parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string","title":"Name"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/thumbs/previews/{name}":{"get":{"summary":"Preview Clip","description":"Hover-Clip: Motion-Preset aus dem Datenordner, sonst die statische Datei des WebUI-Builds.","operationId":"preview_clip_thumbs_previews__name__get","parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string","title":"Name"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/mcp":{"get":{"summary":"Mcp Get","operationId":"mcp_get_mcp_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}},"post":{"summary":"Mcp Endpoint","operationId":"mcp_endpoint_mcp_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}},"delete":{"summary":"Mcp Delete","operationId":"mcp_delete_mcp_delete","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}}},"components":{"schemas":{"AcceptBody":{"properties":{"token":{"type":"string","title":"Token"}},"type":"object","required":["token"],"title":"AcceptBody"},"AdVariantsBody":{"properties":{"url":{"type":"string","title":"Url"},"avatar":{"type":"string","title":"Avatar"},"num_variants":{"type":"integer","title":"Num Variants","default":4},"image_description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Image Description"},"orientations":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Orientations"}},"type":"object","required":["url","avatar"],"title":"AdVariantsBody"},"AffiliateStatusBody":{"properties":{"action":{"type":"string","title":"Action"},"code":{"type":"string","title":"Code","default":""},"pct":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Pct"}},"type":"object","required":["action"],"title":"AffiliateStatusBody"},"ApprovalBody":{"properties":{"status":{"type":"string","title":"Status"}},"type":"object","required":["status"],"title":"ApprovalBody"},"AuthorizeBody":{"properties":{"client_id":{"type":"string","title":"Client Id"},"redirect_uri":{"type":"string","title":"Redirect Uri"},"scope":{"type":"string","title":"Scope","default":""},"state":{"type":"string","title":"State","default":""},"code_challenge":{"type":"string","title":"Code Challenge","default":""},"code_challenge_method":{"type":"string","title":"Code Challenge Method","default":"S256"},"resource":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Resource"},"org_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Org Id"},"decision":{"type":"string","title":"Decision","default":"allow"}},"type":"object","required":["client_id","redirect_uri"],"title":"AuthorizeBody"},"BatchBody":{"properties":{"template":{"type":"string","title":"Template"},"items":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Items"}},"type":"object","required":["template","items"],"title":"BatchBody"},"Body_create_character_api_characters_post":{"properties":{"name":{"type":"string","title":"Name"},"photos":{"items":{"type":"string","contentMediaType":"application/octet-stream"},"type":"array","title":"Photos"},"consent":{"type":"boolean","title":"Consent","default":false}},"type":"object","required":["name","photos"],"title":"Body_create_character_api_characters_post"},"Body_create_element_api_elements_post":{"properties":{"name":{"type":"string","title":"Name"},"description":{"type":"string","title":"Description","default":""},"category":{"type":"string","title":"Category","default":"auto"},"consent":{"type":"boolean","title":"Consent","default":false}},"type":"object","required":["name"],"title":"Body_create_element_api_elements_post"},"Body_create_job_api_jobs_post":{"properties":{"template":{"type":"string","title":"Template"},"params":{"type":"string","title":"Params","default":"{}"},"label":{"type":"string","title":"Label","default":""}},"type":"object","required":["template"],"title":"Body_create_job_api_jobs_post"},"Body_create_voice_api_voices_post":{"properties":{"name":{"type":"string","title":"Name"},"language":{"type":"string","title":"Language","default":"German"},"sample":{"type":"string","contentMediaType":"application/octet-stream","title":"Sample"},"consent":{"type":"boolean","title":"Consent","default":false}},"type":"object","required":["name","sample"],"title":"Body_create_voice_api_voices_post"},"Body_extract_audio_api_uploads__asset_id__extract_audio_post":{"properties":{"start_s":{"type":"number","title":"Start S","default":0.0},"end_s":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"End S"},"name":{"type":"string","title":"Name","default":""},"rights_confirmed":{"type":"string","title":"Rights Confirmed","default":""}},"type":"object","title":"Body_extract_audio_api_uploads__asset_id__extract_audio_post"},"Body_generate_character_api_characters_generate_post":{"properties":{"name":{"type":"string","title":"Name"},"prompt":{"type":"string","title":"Prompt"}},"type":"object","required":["name","prompt"],"title":"Body_generate_character_api_characters_generate_post"},"Body_import_upload_api_uploads_import_post":{"properties":{"url":{"type":"string","title":"Url"},"name":{"type":"string","title":"Name","default":""},"start_s":{"type":"number","title":"Start S","default":0.0},"end_s":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"End S"},"rights_confirmed":{"type":"string","title":"Rights Confirmed","default":""},"usage":{"type":"string","title":"Usage","default":""}},"type":"object","required":["url"],"title":"Body_import_upload_api_uploads_import_post"},"Body_post_upload_api_uploads_post":{"properties":{"name":{"type":"string","title":"Name","default":""}},"type":"object","title":"Body_post_upload_api_uploads_post"},"Body_put_brand_kit_api_brandkit_post":{"properties":{"primary_color":{"type":"string","title":"Primary Color","default":"#ffd65a"},"secondary_color":{"type":"string","title":"Secondary Color","default":"#101218"},"default_cta":{"type":"string","title":"Default Cta","default":""},"tone":{"type":"string","title":"Tone","default":""},"logo":{"anyOf":[{"type":"string","contentMediaType":"application/octet-stream"},{"type":"null"}],"title":"Logo"}},"type":"object","title":"Body_put_brand_kit_api_brandkit_post"},"BroadcastBody":{"properties":{"title":{"type":"string","title":"Title"},"body":{"type":"string","title":"Body","default":""},"url":{"type":"string","title":"Url","default":"/"},"password":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Password"},"code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Code"}},"type":"object","required":["title"],"title":"BroadcastBody"},"CampaignBriefBody":{"properties":{"produkt":{"type":"string","title":"Produkt"},"beschreibung":{"type":"string","title":"Beschreibung"},"zielgruppe":{"type":"string","title":"Zielgruppe","default":""},"ziel":{"type":"string","title":"Ziel","default":"Verkäufe"},"varianten":{"type":"integer","title":"Varianten","default":4}},"type":"object","required":["produkt","beschreibung"],"title":"CampaignBriefBody"},"CheckoutBody":{"properties":{"plan":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Plan"},"pack":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Pack"},"interval":{"type":"string","title":"Interval","default":"month"},"return_path":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Return Path"},"org_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Org Id"}},"type":"object","title":"CheckoutBody"},"CodeBody":{"properties":{"code":{"type":"string","title":"Code"}},"type":"object","required":["code"],"title":"CodeBody"},"ContactBody":{"properties":{"company":{"type":"string","title":"Company"},"country":{"type":"string","title":"Country","default":""},"city":{"type":"string","title":"City","default":""},"website":{"type":"string","title":"Website","default":""},"contact_name":{"type":"string","title":"Contact Name","default":""},"contact_role":{"type":"string","title":"Contact Role","default":""},"channel":{"type":"string","title":"Channel","default":"linkedin"},"note":{"type":"string","title":"Note","default":""},"contacted_on":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Contacted On"}},"type":"object","required":["company"],"title":"ContactBody"},"CostBody":{"properties":{"week":{"type":"string","title":"Week"},"channel":{"type":"string","title":"Channel"},"amount_eur":{"type":"number","title":"Amount Eur"},"note":{"type":"string","title":"Note","default":""}},"type":"object","required":["week","channel","amount_eur"],"title":"CostBody"},"Credentials":{"properties":{"email":{"type":"string","format":"email","title":"Email"},"password":{"type":"string","title":"Password"},"tos_accepted":{"type":"boolean","title":"Tos Accepted","default":false},"ref_code":{"type":"string","title":"Ref Code","default":""},"utm_source":{"type":"string","title":"Utm Source","default":""},"source":{"type":"string","title":"Source","default":""},"campaign":{"type":"string","title":"Campaign","default":""}},"type":"object","required":["email","password"],"title":"Credentials"},"DeleteBody":{"properties":{"current_password":{"type":"string","title":"Current Password","default":""},"code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Code"},"confirm":{"type":"string","title":"Confirm","default":""}},"type":"object","title":"DeleteBody"},"DemoPushBody":{"properties":{"enabled":{"type":"boolean","title":"Enabled"}},"type":"object","required":["enabled"],"title":"DemoPushBody"},"EmailChangeBody":{"properties":{"new_email":{"type":"string","title":"New Email"},"current_password":{"type":"string","title":"Current Password","default":""},"code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Code"}},"type":"object","required":["new_email"],"title":"EmailChangeBody"},"EmailConfirmBody":{"properties":{"token":{"type":"string","title":"Token"}},"type":"object","required":["token"],"title":"EmailConfirmBody"},"EnhanceBody":{"properties":{"text":{"type":"string","title":"Text"}},"type":"object","required":["text"],"title":"EnhanceBody"},"EventIn":{"properties":{"event":{"type":"string","title":"Event"},"template":{"type":"string","title":"Template","default":""},"meta":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Meta"}},"type":"object","required":["event"],"title":"EventIn"},"EventsBody":{"properties":{"events":{"items":{"$ref":"#/components/schemas/EventIn"},"type":"array","title":"Events"}},"type":"object","required":["events"],"title":"EventsBody"},"ExtendBody":{"properties":{"days":{"type":"integer","title":"Days","default":0},"credits":{"type":"integer","title":"Credits","default":0}},"type":"object","title":"ExtendBody"},"FeedbackBody":{"properties":{"score":{"type":"integer","title":"Score"},"text":{"type":"string","title":"Text","default":""}},"type":"object","required":["score"],"title":"FeedbackBody"},"FirstVideoBody":{"properties":{"asset_id":{"type":"string","title":"Asset Id"},"script_id":{"type":"integer","title":"Script Id","default":0},"rights_confirmed":{"type":"boolean","title":"Rights Confirmed","default":false}},"type":"object","required":["asset_id"],"title":"FirstVideoBody"},"ForgotBody":{"properties":{"email":{"type":"string","format":"email","title":"Email"}},"type":"object","required":["email"],"title":"ForgotBody"},"FromJobBody":{"properties":{"job_id":{"type":"string","title":"Job Id"},"name":{"type":"string","title":"Name"},"description":{"type":"string","title":"Description","default":""},"category":{"type":"string","title":"Category","default":"auto"},"consent":{"type":"boolean","title":"Consent","default":false},"layer":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Layer"}},"type":"object","required":["job_id","name"],"title":"FromJobBody"},"GpuPodBody":{"properties":{"name":{"type":"string","title":"Name","default":""},"gpus":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Gpus"}},"type":"object","title":"GpuPodBody"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"ImportBody":{"properties":{"csv":{"type":"string","title":"Csv"},"dry_run":{"type":"boolean","title":"Dry Run","default":true}},"type":"object","required":["csv"],"title":"ImportBody"},"KeyBody":{"properties":{"name":{"type":"string","title":"Name"}},"type":"object","required":["name"],"title":"KeyBody"},"LaunchBody":{"properties":{"live":{"type":"boolean","title":"Live"}},"type":"object","required":["live"],"title":"LaunchBody"},"MessageBody":{"properties":{"text":{"type":"string","title":"Text","default":""},"reply_to":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reply To"},"job_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Job Id"},"asset_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Asset Id"}},"type":"object","title":"MessageBody"},"ModerateBody":{"properties":{"reason":{"type":"string","title":"Reason","default":""}},"type":"object","title":"ModerateBody"},"MonthBody":{"properties":{"amount_eur":{"type":"number","title":"Amount Eur"},"note":{"type":"string","title":"Note","default":""}},"type":"object","required":["amount_eur"],"title":"MonthBody"},"NewsBody":{"properties":{"kind":{"type":"string","title":"Kind","default":"update"},"title":{"type":"string","maxLength":140,"minLength":2,"title":"Title"},"teaser":{"type":"string","maxLength":200,"title":"Teaser","default":""},"body":{"type":"string","maxLength":40000,"title":"Body","default":""},"link":{"type":"string","maxLength":300,"title":"Link","default":""},"image":{"type":"string","maxLength":200,"title":"Image","default":""},"slug":{"type":"string","maxLength":80,"title":"Slug","default":""},"published":{"type":"boolean","title":"Published","default":true}},"type":"object","required":["title"],"title":"NewsBody"},"OpsBody":{"properties":{"values":{"additionalProperties":true,"type":"object","title":"Values"}},"type":"object","required":["values"],"title":"OpsBody"},"OrgBody":{"properties":{"name":{"type":"string","title":"Name"}},"type":"object","required":["name"],"title":"OrgBody"},"OrgSettingsBody":{"properties":{"processing_policy":{"type":"string","title":"Processing Policy"}},"type":"object","required":["processing_policy"],"title":"OrgSettingsBody"},"PartnerApplyBody":{"properties":{"name":{"type":"string","title":"Name"},"email":{"type":"string","title":"Email"},"channel":{"type":"string","title":"Channel"},"audience":{"type":"string","title":"Audience","default":""},"message":{"type":"string","title":"Message","default":""},"turnstile_token":{"type":"string","title":"Turnstile Token","default":""},"website":{"type":"string","title":"Website","default":""}},"type":"object","required":["name","email","channel"],"title":"PartnerApplyBody"},"PasskeyLoginBegin":{"properties":{"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"}},"type":"object","title":"PasskeyLoginBegin"},"PasskeyLoginComplete":{"properties":{"state":{"type":"string","title":"State"},"response":{"additionalProperties":true,"type":"object","title":"Response"}},"type":"object","required":["state","response"],"title":"PasskeyLoginComplete"},"PasskeyRegisterComplete":{"properties":{"state":{"type":"string","title":"State"},"response":{"additionalProperties":true,"type":"object","title":"Response"},"name":{"type":"string","title":"Name","default":"Passkey"}},"type":"object","required":["state","response"],"title":"PasskeyRegisterComplete"},"PasswordChangeBody":{"properties":{"current_password":{"type":"string","title":"Current Password","default":""},"new_password":{"type":"string","title":"New Password"},"code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Code"}},"type":"object","required":["new_password"],"title":"PasswordChangeBody"},"PasswordSetBody":{"properties":{"new_password":{"type":"string","title":"New Password"},"code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Code"}},"type":"object","required":["new_password"],"title":"PasswordSetBody"},"PatchBody":{"properties":{"company":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Company"},"country":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country"},"city":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"City"},"website":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Website"},"contact_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Contact Name"},"contact_role":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Contact Role"},"channel":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Channel"},"note":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Note"},"contacted_on":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Contacted On"},"talk_on":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Talk On"},"trial_on":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Trial On"},"pilot_on":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Pilot On"},"partner_on":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Partner On"},"demo_invite_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Demo Invite Id"},"advance":{"type":"boolean","title":"Advance","default":false}},"type":"object","title":"PatchBody","description":"Teil-Aenderung: nur gesetzte Felder zaehlen. `advance` setzt die naechste Stufe auf heute (Wien)."},"PilotBody":{"properties":{"email":{"type":"string","format":"email","title":"Email"},"credits":{"type":"integer","title":"Credits","default":0}},"type":"object","required":["email"],"title":"PilotBody"},"PostPackageIn":{"properties":{"job_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Job Id"},"showcase_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Showcase Id"},"batch_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Batch Id"},"overlay_text":{"type":"string","title":"Overlay Text","default":""},"overlay_style":{"type":"string","title":"Overlay Style","default":""},"transcript":{"type":"boolean","title":"Transcript","default":true}},"type":"object","title":"PostPackageIn"},"ProfileBody":{"properties":{"display_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Display Name"},"language":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Language"},"marketing_consent":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Marketing Consent"}},"type":"object","title":"ProfileBody"},"ProjectBody":{"properties":{"name":{"type":"string","title":"Name"}},"type":"object","required":["name"],"title":"ProjectBody"},"ReactBody":{"properties":{"emoji":{"type":"string","title":"Emoji"}},"type":"object","required":["emoji"],"title":"ReactBody"},"ReauthBody":{"properties":{"current_password":{"type":"string","title":"Current Password","default":""},"code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Code"}},"type":"object","title":"ReauthBody"},"ReconsentBody":{"properties":{"expected":{"type":"integer","title":"Expected"}},"type":"object","required":["expected"],"title":"ReconsentBody"},"RedeemBody":{"properties":{"token":{"type":"string","title":"Token"}},"type":"object","required":["token"],"title":"RedeemBody"},"ReportBody":{"properties":{"reason":{"type":"string","title":"Reason","default":""}},"type":"object","title":"ReportBody"},"ResetBody":{"properties":{"token":{"type":"string","title":"Token"},"password":{"type":"string","title":"Password"}},"type":"object","required":["token","password"],"title":"ResetBody"},"RewardDecideBody":{"properties":{"action":{"type":"string","title":"Action"}},"type":"object","required":["action"],"title":"RewardDecideBody"},"RoleBody":{"properties":{"role":{"type":"string","title":"Role"}},"type":"object","required":["role"],"title":"RoleBody"},"ScriptBody":{"properties":{"premise":{"type":"string","title":"Premise"},"scenes":{"type":"integer","title":"Scenes","default":6},"hero_hint":{"type":"string","title":"Hero Hint","default":""}},"type":"object","required":["premise"],"title":"ScriptBody"},"TempKeyBody":{"properties":{"ttl_minutes":{"type":"integer","title":"Ttl Minutes","default":60},"name":{"type":"string","title":"Name","default":"smoke-temp"}},"type":"object","title":"TempKeyBody"},"ThreadBody":{"properties":{"title":{"type":"string","title":"Title","default":""},"messages":{"items":{},"type":"array","title":"Messages","default":[]}},"type":"object","title":"ThreadBody"},"ThresholdBody":{"properties":{"values":{"additionalProperties":true,"type":"object","title":"Values"},"confirmed":{"type":"boolean","title":"Confirmed","default":false}},"type":"object","required":["values"],"title":"ThresholdBody"},"TrackBody":{"properties":{"code":{"type":"string","title":"Code"},"source":{"type":"string","title":"Source","default":""}},"type":"object","required":["code"],"title":"TrackBody"},"TrendBriefIn":{"properties":{"title":{"type":"string","title":"Title","default":""},"brief":{"type":"string","title":"Brief"},"recipe_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Recipe Id"},"cogs_cap_usd":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Cogs Cap Usd"},"credits_cap":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Credits Cap"},"source_ref":{"type":"string","title":"Source Ref","default":""}},"type":"object","required":["brief"],"title":"TrendBriefIn"},"TwoFAVerifyBody":{"properties":{"mfa_token":{"type":"string","title":"Mfa Token"},"code":{"type":"string","title":"Code"}},"type":"object","required":["mfa_token","code"],"title":"TwoFAVerifyBody"},"UnlockComplete":{"properties":{"state":{"type":"string","title":"State"},"response":{"additionalProperties":true,"type":"object","title":"Response"}},"type":"object","required":["state","response"],"title":"UnlockComplete"},"UnsubscribeBody":{"properties":{"endpoint":{"type":"string","title":"Endpoint"}},"type":"object","required":["endpoint"],"title":"UnsubscribeBody"},"UrlToAdBody":{"properties":{"url":{"type":"string","title":"Url"},"format_mode":{"type":"string","title":"Format Mode","default":"cgi_showcase"},"layout":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Layout"},"avatar":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Avatar"},"script":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Script"},"image_description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Image Description"},"cta_text":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cta Text"},"language":{"type":"string","title":"Language","default":"German"},"orientation":{"type":"string","title":"Orientation","default":"portrait"}},"type":"object","required":["url"],"title":"UrlToAdBody"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"WaitlistBody":{"properties":{"email":{"type":"string","title":"Email"},"source":{"type":"string","title":"Source","default":""},"consent":{"type":"boolean","title":"Consent","default":false},"ref_code":{"type":"string","title":"Ref Code","default":""},"campaign":{"type":"string","title":"Campaign","default":""},"landing":{"type":"string","title":"Landing","default":""},"company":{"type":"string","title":"Company","default":""},"turnstile_token":{"type":"string","title":"Turnstile Token","default":""},"website":{"type":"string","title":"Website","default":""}},"type":"object","required":["email"],"title":"WaitlistBody"},"WithdrawBody":{"properties":{"kind":{"type":"string","title":"Kind"},"id":{"type":"string","title":"Id"}},"type":"object","required":["kind","id"],"title":"WithdrawBody"},"app__routers__apps__PublishBody":{"properties":{"title":{"type":"string","title":"Title"},"html":{"type":"string","title":"Html"},"description":{"type":"string","title":"Description","default":""},"cover_job_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cover Job Id"}},"type":"object","required":["title","html"],"title":"PublishBody"},"app__routers__billing__SubscribeBody":{"properties":{"plan":{"type":"integer","title":"Plan"}},"type":"object","required":["plan"],"title":"SubscribeBody"},"app__routers__demo_access__InviteBody":{"properties":{"agency":{"type":"string","title":"Agency"},"contact_email":{"anyOf":[{"type":"string","format":"email"},{"type":"null"}],"title":"Contact Email"},"credits":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Credits"},"days":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Days"},"note":{"type":"string","title":"Note","default":""}},"type":"object","required":["agency"],"title":"InviteBody"},"app__routers__orgs__InviteBody":{"properties":{"email":{"type":"string","format":"email","title":"Email"},"role":{"type":"string","title":"Role","default":"member"}},"type":"object","required":["email"],"title":"InviteBody"},"app__routers__push__SubscribeBody":{"properties":{"endpoint":{"type":"string","title":"Endpoint"},"p256dh":{"type":"string","title":"P256Dh"},"auth":{"type":"string","title":"Auth"}},"type":"object","required":["endpoint","p256dh","auth"],"title":"SubscribeBody"},"app__routers__trends__PublishBody":{"properties":{"job_id":{"type":"string","title":"Job Id"},"title":{"type":"string","title":"Title"},"tags":{"items":{"type":"string"},"type":"array","title":"Tags","default":[]},"consents":{"additionalProperties":true,"type":"object","title":"Consents","default":{}},"visibility":{"type":"string","title":"Visibility","default":"public"}},"type":"object","required":["job_id","title"],"title":"PublishBody"}},"securitySchemes":{"ApiKeyAuth":{"type":"apiKey","in":"header","name":"X-API-Key","description":"API-Key aus Workspace → API-Keys"},"BearerAuth":{"type":"http","scheme":"bearer","description":"Session-Token aus POST /api/auth/login"}}},"tags":[{"name":"Meta","description":"Health, Template-Katalog, Kontostand"},{"name":"Jobs & Projekte","description":"Kern-Workflow: Jobs einreichen, pollen, Output laden; Projekt-Ordner"},{"name":"Stimmen & Charaktere","description":"Voice-Cloning und wiederverwendbare Identitäten"},{"name":"Batches","description":"Bis 20 Jobs desselben Templates atomar anlegen"},{"name":"URL-to-Ad","description":"Produkt-URL → fertiges Werbevideo (Zero-Input)"},{"name":"Brand Kit","description":"Markenfarben/Logo/CTA, automatisch in Ads angewandt"},{"name":"Teams","description":"Organisationen, Mitglieder, Rollen, Analytics"},{"name":"API-Keys","description":"Maschinelle Zugänge für REST + MCP"},{"name":"Auth","description":"Konto-Registrierung, Login, Verifikation (Browser-Flows)"},{"name":"Billing & Tarife","description":"Tarife, Stripe-Checkout, Zahlungshistorie"},{"name":"Admin","description":"Betreiber-Dashboard (rollen-, IP- und 2FA-gesichert)"}]}