Ctrl K
ComunidadGuías…

openapi.yaml

Rama master · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
# phlix-server OpenAPI description (S65).
#
# ⚠ THIS FILE IS HAND-MAINTAINED AND MACHINE-CHECKED.
#
# `paths` must be an EXACT bijection with the composed route registry the
# server actually serves — the routes `Application` registers PLUS the routes
# the container-composed `WebPortalRouter` registers, with `Application` winning
# any method+path both routers expose (HttpHandler dispatches `Application` first
# and only falls through to `WebPortalRouter` on its 404). That is enforced by
# tests/Unit/Server/Contracts/OpenapiSpecCurrencyTest.php, which drives the REAL
# production container, recomposes both routers, and fails on any tuple present in
# one artefact and not the other, or on any middleware-chain mismatch. Adding,
# moving or re-gating a route therefore requires editing this file in the same
# commit. This file is never regenerated in CI — a self-adjusting spec cannot go
# red, which is exactly the S204 defect this guard exists to prevent.
#
# Machine-checked extension:
#   x-phlix-middleware  the route-level middleware chain, in order, by class
#                       short name. `[]` means no route-level middleware is
#                       registered — NOT proof a handler is ungated (a controller
#                       may gate as its first statement; see the S272 note in
#                       ApplicationRouterWirePathGuardTest).
#
# info.version is intentionally pinned to Phlix\Common\Version::STRING by
# OpenapiSpecCurrencyTest — a release bump that leaves the contract version stale
# turns the suite red rather than drifting silently (the whole point of this file).
#
# SPEC_TOKEN: CS65OPENAPISPECX9G
openapi: 3.1.0
info:
  title: "Phlix Media Server API"
  version: "1.2.3"
  summary: "REST surface of the Phlix media server"
  description: |-
    The HTTP API a Phlix server exposes: library and media browsing, playback
    sessions and progress, authentication (password, WebAuthn, OAuth providers,
    account linking), profiles and parental controls, casting (Chromecast, AirPlay,
    Roku, DLNA), Live TV, SyncPlay, transcoding/HLS/DASH, music/books/photos, plugins,
    webhooks, backup, the OPDS catalog, and the full `/api/v1/admin/*` control plane.
  license:
    name: "MIT"
    identifier: "MIT"
  contact:
    name: "Phlix"
servers:
  - url: "http://localhost:8096"
    description: |-
      The plain-HTTP address the Workerman HTTP worker `start.php` binds directly
      (the only served entry). The daemon itself terminates no TLS; this entry is
      the local/unproxied form.
  - url: "https://{host}"
    description: |-
      Production form of the identical surface: reached over HTTPS through the
      deployment's TLS-terminating reverse proxy. Always prefer this scheme for
      real traffic — the JWT bearer credential below is only safe over TLS.
    variables:
      host:
        default: "phlix.example.com"
        description: "The deployment's HTTPS hostname."
tags:
  - name: "Administration"
    description: "Operator control-plane routes under /api/v1/admin/* (settings, users, plugins, maintenance, backups, webhooks)."
  - name: "Authentication"
    description: "Sign-in, token refresh, logout, and WebAuthn / OAuth provider flows."
  - name: "Casting"
    description: "Chromecast, AirPlay, Roku and DLNA device discovery and control."
  - name: "Collections"
    description: "User playlists and custom collections."
  - name: "General"
    description: "Cross-cutting routes that fit no single domain (search, health, misc utilities)."
  - name: "Integrations"
    description: "Third-party metadata and service integrations (Trakt and similar)."
  - name: "Libraries"
    description: "Media library CRUD and scanning."
  - name: "Live TV"
    description: "Live TV tuners, the channel guide and recording."
  - name: "Media"
    description: "Media item browsing, metadata, posters and playback info."
  - name: "Music & Books"
    description: "Music, audiobook and e-book library endpoints."
  - name: "OPDS Catalog"
    description: "OPDS catalog feeds for e-readers."
  - name: "Photos"
    description: "Photo library and album endpoints."
  - name: "Profiles"
    description: "User profiles and parental-control settings."
  - name: "Sessions"
    description: "Device sessions and playback / continue-watching state."
  - name: "SyncPlay"
    description: "Watch-together SyncPlay group and time-sync endpoints."
  - name: "System"
    description: "Server-level system and status endpoints."
  - name: "Telemetry"
    description: "Consent-gated client telemetry (S518/AD-27) — opt-in device heartbeats and the admin fleet census."
  - name: "Theming"
    description: "Appearance and theme endpoints."
  - name: "Transcoding"
    description: "HLS/DASH transcode job control and ABR ladder endpoints."
  - name: "Users"
    description: "Account and profile-scoped user data (favorites, ratings, watch history)."
paths:
  "/.well-known/jwks.json":
    get:
      operationId: "get_well_known_jwks_json"
      tags: ["System"]
      summary: "Jwks.json"
      description: "Jwks.json (get /.well-known/jwks.json)."
      x-phlix-middleware: []
      security: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/admin/health/jobs":
    get:
      operationId: "get_admin_health_jobs"
      tags: ["Administration"]
      summary: "Jobs"
      description: "Jobs (get /admin/health/jobs)."
      x-phlix-middleware: [AuthMiddleware]
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1":
    get:
      operationId: "get_api_v1"
      tags: ["General"]
      summary: "V1"
      description: "V1 (get /api/v1)."
      x-phlix-middleware: []
      security: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/admin/auth-providers":
    get:
      operationId: "get_api_v1_admin_auth_providers"
      tags: ["Administration"]
      summary: "List providers"
      description: "List providers (get /api/v1/admin/auth-providers)."
      x-phlix-middleware: [AdminMiddleware]
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/admin/auth-providers/github/config":
    get:
      operationId: "get_api_v1_admin_auth_providers_github_config"
      tags: ["Administration"]
      summary: "Get settings"
      description: "Get settings (get /api/v1/admin/auth-providers/github/config)."
      x-phlix-middleware: [AdminMiddleware]
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "429":
          $ref: "#/components/responses/TooManyRequests"
    post:
      operationId: "post_api_v1_admin_auth_providers_github_config"
      tags: ["Administration"]
      summary: "Save settings"
      description: "Save settings (post /api/v1/admin/auth-providers/github/config)."
      x-phlix-middleware: [AdminMiddleware]
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "400":
          $ref: "#/components/responses/BadRequest"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/admin/auth-providers/github/schema":
    get:
      operationId: "get_api_v1_admin_auth_providers_github_schema"
      tags: ["Administration"]
      summary: "Get schema"
      description: "Get schema (get /api/v1/admin/auth-providers/github/schema)."
      x-phlix-middleware: [AdminMiddleware]
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/admin/auth-providers/ldap/config":
    get:
      operationId: "get_api_v1_admin_auth_providers_ldap_config"
      tags: ["Administration"]
      summary: "Get settings"
      description: "Get settings (get /api/v1/admin/auth-providers/ldap/config)."
      x-phlix-middleware: [AdminMiddleware]
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "429":
          $ref: "#/components/responses/TooManyRequests"
    post:
      operationId: "post_api_v1_admin_auth_providers_ldap_config"
      tags: ["Administration"]
      summary: "Save settings"
      description: "Save settings (post /api/v1/admin/auth-providers/ldap/config)."
      x-phlix-middleware: [AdminMiddleware]
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "400":
          $ref: "#/components/responses/BadRequest"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/admin/auth-providers/ldap/schema":
    get:
      operationId: "get_api_v1_admin_auth_providers_ldap_schema"
      tags: ["Administration"]
      summary: "Get schema"
      description: "Get schema (get /api/v1/admin/auth-providers/ldap/schema)."
      x-phlix-middleware: [AdminMiddleware]
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/admin/auth-providers/ldap/test":
    post:
      operationId: "post_api_v1_admin_auth_providers_ldap_test"
      tags: ["Administration"]
      summary: "Test connection"
      description: "Test connection (post /api/v1/admin/auth-providers/ldap/test)."
      x-phlix-middleware: [AdminMiddleware]
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "400":
          $ref: "#/components/responses/BadRequest"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/admin/auth-providers/oidc/config":
    get:
      operationId: "get_api_v1_admin_auth_providers_oidc_config"
      tags: ["Administration"]
      summary: "Get settings"
      description: "Get settings (get /api/v1/admin/auth-providers/oidc/config)."
      x-phlix-middleware: [AdminMiddleware]
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "429":
          $ref: "#/components/responses/TooManyRequests"
    post:
      operationId: "post_api_v1_admin_auth_providers_oidc_config"
      tags: ["Administration"]
      summary: "Save settings"
      description: "Save settings (post /api/v1/admin/auth-providers/oidc/config)."
      x-phlix-middleware: [AdminMiddleware]
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "400":
          $ref: "#/components/responses/BadRequest"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/admin/auth-providers/oidc/schema":
    get:
      operationId: "get_api_v1_admin_auth_providers_oidc_schema"
      tags: ["Administration"]
      summary: "Get schema"
      description: "Get schema (get /api/v1/admin/auth-providers/oidc/schema)."
      x-phlix-middleware: [AdminMiddleware]
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/admin/auth-providers/{name}/config-schema":
    get:
      operationId: "get_api_v1_admin_auth_providers_name_config_schema"
      tags: ["Administration"]
      summary: "Get config schema"
      description: "Get config schema (get /api/v1/admin/auth-providers/{name}/config-schema)."
      x-phlix-middleware: [AdminMiddleware]
      parameters:
        - name: "name"
          in: path
          required: true
          description: "Plugin name."
          schema:
            type: string
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/admin/auth-providers/{name}/disable":
    post:
      operationId: "post_api_v1_admin_auth_providers_name_disable"
      tags: ["Administration"]
      summary: "Disable provider"
      description: "Disable provider (post /api/v1/admin/auth-providers/{name}/disable)."
      x-phlix-middleware: [AdminMiddleware]
      parameters:
        - name: "name"
          in: path
          required: true
          description: "Plugin name."
          schema:
            type: string
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "400":
          $ref: "#/components/responses/BadRequest"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/admin/auth-providers/{name}/enable":
    post:
      operationId: "post_api_v1_admin_auth_providers_name_enable"
      tags: ["Administration"]
      summary: "Enable provider"
      description: "Enable provider (post /api/v1/admin/auth-providers/{name}/enable)."
      x-phlix-middleware: [AdminMiddleware]
      parameters:
        - name: "name"
          in: path
          required: true
          description: "Plugin name."
          schema:
            type: string
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "400":
          $ref: "#/components/responses/BadRequest"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/admin/backup/create":
    post:
      operationId: "post_api_v1_admin_backup_create"
      tags: ["Administration"]
      summary: "Create"
      description: "Create (post /api/v1/admin/backup/create)."
      x-phlix-middleware: [AdminMiddleware]
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "400":
          $ref: "#/components/responses/BadRequest"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/admin/backup/list":
    get:
      operationId: "get_api_v1_admin_backup_list"
      tags: ["Administration"]
      summary: "List"
      description: "List (get /api/v1/admin/backup/list)."
      x-phlix-middleware: [AdminMiddleware]
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/admin/backup/schedule":
    get:
      operationId: "get_api_v1_admin_backup_schedule"
      tags: ["Administration"]
      summary: "Get schedule"
      description: "Get schedule (get /api/v1/admin/backup/schedule)."
      x-phlix-middleware: [AdminMiddleware]
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "429":
          $ref: "#/components/responses/TooManyRequests"
    put:
      operationId: "put_api_v1_admin_backup_schedule"
      tags: ["Administration"]
      summary: "Update schedule"
      description: "Update schedule (put /api/v1/admin/backup/schedule)."
      x-phlix-middleware: [AdminMiddleware]
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "400":
          $ref: "#/components/responses/BadRequest"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/admin/backup/{id}":
    delete:
      operationId: "delete_api_v1_admin_backup_id"
      tags: ["Administration"]
      summary: "Delete"
      description: "Delete (delete /api/v1/admin/backup/{id})."
      x-phlix-middleware: [AdminMiddleware]
      parameters:
        - name: "id"
          in: path
          required: true
          description: "Resource id."
          schema:
            type: string
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "400":
          $ref: "#/components/responses/BadRequest"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/admin/backup/{id}/restore":
    post:
      operationId: "post_api_v1_admin_backup_id_restore"
      tags: ["Administration"]
      summary: "Restore"
      description: "Restore (post /api/v1/admin/backup/{id}/restore)."
      x-phlix-middleware: [AdminMiddleware]
      parameters:
        - name: "id"
          in: path
          required: true
          description: "Resource id."
          schema:
            type: string
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "400":
          $ref: "#/components/responses/BadRequest"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/admin/backup/{id}/upload-s3":
    post:
      operationId: "post_api_v1_admin_backup_id_upload_s3"
      tags: ["Administration"]
      summary: "Upload s3"
      description: "Upload s3 (post /api/v1/admin/backup/{id}/upload-s3)."
      x-phlix-middleware: [AdminMiddleware]
      parameters:
        - name: "id"
          in: path
          required: true
          description: "Resource id."
          schema:
            type: string
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "400":
          $ref: "#/components/responses/BadRequest"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/admin/dashboard/activity":
    get:
      operationId: "get_api_v1_admin_dashboard_activity"
      tags: ["Administration"]
      summary: "Activity"
      description: "Activity (get /api/v1/admin/dashboard/activity)."
      x-phlix-middleware: [AdminMiddleware]
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/admin/dashboard/now-playing":
    get:
      operationId: "get_api_v1_admin_dashboard_now_playing"
      tags: ["Administration"]
      summary: "Now playing"
      description: "Now playing (get /api/v1/admin/dashboard/now-playing)."
      x-phlix-middleware: [AdminMiddleware]
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/admin/dashboard/storage":
    get:
      operationId: "get_api_v1_admin_dashboard_storage"
      tags: ["Administration"]
      summary: "Storage"
      description: "Storage (get /api/v1/admin/dashboard/storage)."
      x-phlix-middleware: [AdminMiddleware]
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/admin/dashboard/top-media":
    get:
      operationId: "get_api_v1_admin_dashboard_top_media"
      tags: ["Administration"]
      summary: "Top media"
      description: "Top media (get /api/v1/admin/dashboard/top-media)."
      x-phlix-middleware: [AdminMiddleware]
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/admin/dashboard/top-users":
    get:
      operationId: "get_api_v1_admin_dashboard_top_users"
      tags: ["Administration"]
      summary: "Top users"
      description: "Top users (get /api/v1/admin/dashboard/top-users)."
      x-phlix-middleware: [AdminMiddleware]
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/admin/dlna/start":
    post:
      operationId: "post_api_v1_admin_dlna_start"
      tags: ["Administration"]
      summary: "Start"
      description: "Start (post /api/v1/admin/dlna/start)."
      x-phlix-middleware: [AdminMiddleware]
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "400":
          $ref: "#/components/responses/BadRequest"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/admin/dlna/status":
    get:
      operationId: "get_api_v1_admin_dlna_status"
      tags: ["Administration"]
      summary: "Status"
      description: "Status (get /api/v1/admin/dlna/status)."
      x-phlix-middleware: [AdminMiddleware]
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/admin/dlna/stop":
    post:
      operationId: "post_api_v1_admin_dlna_stop"
      tags: ["Administration"]
      summary: "Stop"
      description: "Stop (post /api/v1/admin/dlna/stop)."
      x-phlix-middleware: [AdminMiddleware]
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "400":
          $ref: "#/components/responses/BadRequest"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/admin/fs/browse":
    get:
      operationId: "get_api_v1_admin_fs_browse"
      tags: ["Administration"]
      summary: "Browse"
      description: "Browse (get /api/v1/admin/fs/browse)."
      x-phlix-middleware: [AdminMiddleware]
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/admin/libraries/{id}/duplicates":
    get:
      operationId: "get_api_v1_admin_libraries_id_duplicates"
      tags: ["Administration"]
      summary: "Duplicates"
      description: "Duplicates (get /api/v1/admin/libraries/{id}/duplicates)."
      x-phlix-middleware: [AdminMiddleware]
      parameters:
        - name: "id"
          in: path
          required: true
          description: "Resource id."
          schema:
            type: string
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/admin/livetv/channels":
    get:
      operationId: "get_api_v1_admin_livetv_channels"
      tags: ["Administration"]
      summary: "List channels"
      description: "List channels (get /api/v1/admin/livetv/channels)."
      x-phlix-middleware: [AdminMiddleware]
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/admin/livetv/channels/{id}":
    get:
      operationId: "get_api_v1_admin_livetv_channels_id"
      tags: ["Administration"]
      summary: "Get channel"
      description: "Get channel (get /api/v1/admin/livetv/channels/{id})."
      x-phlix-middleware: [AdminMiddleware]
      parameters:
        - name: "id"
          in: path
          required: true
          description: "Resource id."
          schema:
            type: string
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "429":
          $ref: "#/components/responses/TooManyRequests"
    put:
      operationId: "put_api_v1_admin_livetv_channels_id"
      tags: ["Administration"]
      summary: "Update channel"
      description: "Update channel (put /api/v1/admin/livetv/channels/{id})."
      x-phlix-middleware: [AdminMiddleware]
      parameters:
        - name: "id"
          in: path
          required: true
          description: "Resource id."
          schema:
            type: string
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "400":
          $ref: "#/components/responses/BadRequest"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/admin/livetv/channels/{id}/stream":
    get:
      operationId: "get_api_v1_admin_livetv_channels_id_stream"
      tags: ["Administration"]
      summary: "Stream channel"
      description: "Stream channel (get /api/v1/admin/livetv/channels/{id}/stream)."
      x-phlix-middleware: [AdminMiddleware]
      parameters:
        - name: "id"
          in: path
          required: true
          description: "Resource id."
          schema:
            type: string
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success. Streams the media/binary resource."
          content:
            '*/*':
              schema: {}
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/admin/livetv/guide":
    get:
      operationId: "get_api_v1_admin_livetv_guide"
      tags: ["Administration"]
      summary: "List guide"
      description: "List guide (get /api/v1/admin/livetv/guide)."
      x-phlix-middleware: [AdminMiddleware]
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/admin/livetv/guide/programs/{id}":
    get:
      operationId: "get_api_v1_admin_livetv_guide_programs_id"
      tags: ["Administration"]
      summary: "Get program"
      description: "Get program (get /api/v1/admin/livetv/guide/programs/{id})."
      x-phlix-middleware: [AdminMiddleware]
      parameters:
        - name: "id"
          in: path
          required: true
          description: "Resource id."
          schema:
            type: string
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/admin/livetv/guide/refresh":
    post:
      operationId: "post_api_v1_admin_livetv_guide_refresh"
      tags: ["Administration"]
      summary: "Refresh guide"
      description: "Refresh guide (post /api/v1/admin/livetv/guide/refresh)."
      x-phlix-middleware: [AdminMiddleware]
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "400":
          $ref: "#/components/responses/BadRequest"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/admin/livetv/recordings":
    get:
      operationId: "get_api_v1_admin_livetv_recordings"
      tags: ["Administration"]
      summary: "List recordings"
      description: "List recordings (get /api/v1/admin/livetv/recordings)."
      x-phlix-middleware: [AdminMiddleware]
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "429":
          $ref: "#/components/responses/TooManyRequests"
    post:
      operationId: "post_api_v1_admin_livetv_recordings"
      tags: ["Administration"]
      summary: "Create recording"
      description: "Create recording (post /api/v1/admin/livetv/recordings)."
      x-phlix-middleware: [AdminMiddleware]
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "400":
          $ref: "#/components/responses/BadRequest"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/admin/livetv/recordings/series/{seriesId}":
    get:
      operationId: "get_api_v1_admin_livetv_recordings_series_seriesId"
      tags: ["Administration"]
      summary: "List by series"
      description: "List by series (get /api/v1/admin/livetv/recordings/series/{seriesId})."
      x-phlix-middleware: [AdminMiddleware]
      parameters:
        - name: "seriesId"
          in: path
          required: true
          description: "Series id."
          schema:
            type: string
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/admin/livetv/recordings/upcoming":
    get:
      operationId: "get_api_v1_admin_livetv_recordings_upcoming"
      tags: ["Administration"]
      summary: "List upcoming recordings"
      description: "List upcoming recordings (get /api/v1/admin/livetv/recordings/upcoming)."
      x-phlix-middleware: [AdminMiddleware]
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/admin/livetv/recordings/{id}":
    get:
      operationId: "get_api_v1_admin_livetv_recordings_id"
      tags: ["Administration"]
      summary: "Get recording"
      description: "Get recording (get /api/v1/admin/livetv/recordings/{id})."
      x-phlix-middleware: [AdminMiddleware]
      parameters:
        - name: "id"
          in: path
          required: true
          description: "Resource id."
          schema:
            type: string
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "429":
          $ref: "#/components/responses/TooManyRequests"
    delete:
      operationId: "delete_api_v1_admin_livetv_recordings_id"
      tags: ["Administration"]
      summary: "Delete recording"
      description: "Delete recording (delete /api/v1/admin/livetv/recordings/{id})."
      x-phlix-middleware: [AdminMiddleware]
      parameters:
        - name: "id"
          in: path
          required: true
          description: "Resource id."
          schema:
            type: string
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "400":
          $ref: "#/components/responses/BadRequest"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/admin/livetv/series-rules":
    get:
      operationId: "get_api_v1_admin_livetv_series_rules"
      tags: ["Administration"]
      summary: "List series rules"
      description: "List series rules (get /api/v1/admin/livetv/series-rules)."
      x-phlix-middleware: [AdminMiddleware]
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "429":
          $ref: "#/components/responses/TooManyRequests"
    post:
      operationId: "post_api_v1_admin_livetv_series_rules"
      tags: ["Administration"]
      summary: "Create series rule"
      description: "Create series rule (post /api/v1/admin/livetv/series-rules)."
      x-phlix-middleware: [AdminMiddleware]
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "400":
          $ref: "#/components/responses/BadRequest"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/admin/livetv/series-rules/{id}":
    get:
      operationId: "get_api_v1_admin_livetv_series_rules_id"
      tags: ["Administration"]
      summary: "Get series rule"
      description: "Get series rule (get /api/v1/admin/livetv/series-rules/{id})."
      x-phlix-middleware: [AdminMiddleware]
      parameters:
        - name: "id"
          in: path
          required: true
          description: "Resource id."
          schema:
            type: string
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "429":
          $ref: "#/components/responses/TooManyRequests"
    put:
      operationId: "put_api_v1_admin_livetv_series_rules_id"
      tags: ["Administration"]
      summary: "Update series rule"
      description: "Update series rule (put /api/v1/admin/livetv/series-rules/{id})."
      x-phlix-middleware: [AdminMiddleware]
      parameters:
        - name: "id"
          in: path
          required: true
          description: "Resource id."
          schema:
            type: string
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "400":
          $ref: "#/components/responses/BadRequest"
        "429":
          $ref: "#/components/responses/TooManyRequests"
    delete:
      operationId: "delete_api_v1_admin_livetv_series_rules_id"
      tags: ["Administration"]
      summary: "Delete series rule"
      description: "Delete series rule (delete /api/v1/admin/livetv/series-rules/{id})."
      x-phlix-middleware: [AdminMiddleware]
      parameters:
        - name: "id"
          in: path
          required: true
          description: "Resource id."
          schema:
            type: string
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "400":
          $ref: "#/components/responses/BadRequest"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/admin/livetv/tuners":
    get:
      operationId: "get_api_v1_admin_livetv_tuners"
      tags: ["Administration"]
      summary: "List tuners"
      description: "List tuners (get /api/v1/admin/livetv/tuners)."
      x-phlix-middleware: [AdminMiddleware]
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/admin/livetv/tuners/scan":
    get:
      operationId: "get_api_v1_admin_livetv_tuners_scan"
      tags: ["Administration"]
      summary: "Scan tuners"
      description: "Scan tuners (get /api/v1/admin/livetv/tuners/scan)."
      x-phlix-middleware: [AdminMiddleware]
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/admin/livetv/tuners/{id}":
    get:
      operationId: "get_api_v1_admin_livetv_tuners_id"
      tags: ["Administration"]
      summary: "Get tuner"
      description: "Get tuner (get /api/v1/admin/livetv/tuners/{id})."
      x-phlix-middleware: [AdminMiddleware]
      parameters:
        - name: "id"
          in: path
          required: true
          description: "Resource id."
          schema:
            type: string
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "429":
          $ref: "#/components/responses/TooManyRequests"
    put:
      operationId: "put_api_v1_admin_livetv_tuners_id"
      tags: ["Administration"]
      summary: "Update tuner"
      description: "Update tuner (put /api/v1/admin/livetv/tuners/{id})."
      x-phlix-middleware: [AdminMiddleware]
      parameters:
        - name: "id"
          in: path
          required: true
          description: "Resource id."
          schema:
            type: string
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "400":
          $ref: "#/components/responses/BadRequest"
        "429":
          $ref: "#/components/responses/TooManyRequests"
    delete:
      operationId: "delete_api_v1_admin_livetv_tuners_id"
      tags: ["Administration"]
      summary: "Delete tuner"
      description: "Delete tuner (delete /api/v1/admin/livetv/tuners/{id})."
      x-phlix-middleware: [AdminMiddleware]
      parameters:
        - name: "id"
          in: path
          required: true
          description: "Resource id."
          schema:
            type: string
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "400":
          $ref: "#/components/responses/BadRequest"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/admin/logs":
    get:
      operationId: "get_api_v1_admin_logs"
      tags: ["Administration"]
      summary: "Index"
      description: "Index (get /api/v1/admin/logs)."
      x-phlix-middleware: [AdminMiddleware]
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/admin/logs/tail":
    get:
      operationId: "get_api_v1_admin_logs_tail"
      tags: ["Administration"]
      summary: "Tail"
      description: "Tail (get /api/v1/admin/logs/tail)."
      x-phlix-middleware: [AdminMiddleware]
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/admin/logs/tail-all":
    get:
      operationId: "get_api_v1_admin_logs_tail_all"
      tags: ["Administration"]
      summary: "Tail all"
      description: "Tail all (get /api/v1/admin/logs/tail-all)."
      x-phlix-middleware: [AdminMiddleware]
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/admin/maintenance/cleanup-orphaned-stats":
    post:
      operationId: "post_api_v1_admin_maintenance_cleanup_orphaned_stats"
      tags: ["Administration"]
      summary: "Cleanup orphaned stats"
      description: "Cleanup orphaned stats (post /api/v1/admin/maintenance/cleanup-orphaned-stats)."
      x-phlix-middleware: [AdminMiddleware]
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "400":
          $ref: "#/components/responses/BadRequest"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/admin/maintenance/dedupe-paths":
    post:
      operationId: "post_api_v1_admin_maintenance_dedupe_paths"
      tags: ["Administration"]
      summary: "Dedupe paths"
      description: "Dedupe paths (post /api/v1/admin/maintenance/dedupe-paths)."
      x-phlix-middleware: [AdminMiddleware]
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "400":
          $ref: "#/components/responses/BadRequest"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/admin/maintenance/jobs":
    get:
      operationId: "get_api_v1_admin_maintenance_jobs"
      tags: ["Administration"]
      summary: "Jobs"
      description: "Jobs (get /api/v1/admin/maintenance/jobs)."
      x-phlix-middleware: [AdminMiddleware]
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/admin/maintenance/jobs/{id}":
    get:
      operationId: "get_api_v1_admin_maintenance_jobs_id"
      tags: ["Administration"]
      summary: "Job"
      description: "Job (get /api/v1/admin/maintenance/jobs/{id})."
      x-phlix-middleware: [AdminMiddleware]
      parameters:
        - name: "id"
          in: path
          required: true
          description: "Resource id."
          schema:
            type: string
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/admin/maintenance/reap-scan-jobs":
    post:
      operationId: "post_api_v1_admin_maintenance_reap_scan_jobs"
      tags: ["Administration"]
      summary: "Reap scan jobs"
      description: "Reap scan jobs (post /api/v1/admin/maintenance/reap-scan-jobs)."
      x-phlix-middleware: [AdminMiddleware]
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "400":
          $ref: "#/components/responses/BadRequest"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/admin/maintenance/reap-transcode-jobs":
    post:
      operationId: "post_api_v1_admin_maintenance_reap_transcode_jobs"
      tags: ["Administration"]
      summary: "Reap transcode jobs"
      description: "Reap transcode jobs (post /api/v1/admin/maintenance/reap-transcode-jobs)."
      x-phlix-middleware: [AdminMiddleware]
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "400":
          $ref: "#/components/responses/BadRequest"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/admin/maintenance/storage-snapshot":
    post:
      operationId: "post_api_v1_admin_maintenance_storage_snapshot"
      tags: ["Administration"]
      summary: "Storage snapshot"
      description: "Storage snapshot (post /api/v1/admin/maintenance/storage-snapshot)."
      x-phlix-middleware: [AdminMiddleware]
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "400":
          $ref: "#/components/responses/BadRequest"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/admin/maintenance/tasks":
    get:
      operationId: "get_api_v1_admin_maintenance_tasks"
      tags: ["Administration"]
      summary: "Tasks"
      description: "Tasks (get /api/v1/admin/maintenance/tasks)."
      x-phlix-middleware: [AdminMiddleware]
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/admin/media/merge":
    post:
      operationId: "post_api_v1_admin_media_merge"
      tags: ["Administration"]
      summary: "Merge"
      description: "Merge (post /api/v1/admin/media/merge)."
      x-phlix-middleware: [AdminMiddleware]
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "400":
          $ref: "#/components/responses/BadRequest"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/admin/metadata/sources":
    get:
      operationId: "get_api_v1_admin_metadata_sources"
      tags: ["Administration"]
      summary: "Index"
      description: "Index (get /api/v1/admin/metadata/sources)."
      x-phlix-middleware: [AdminMiddleware]
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/admin/metrics/connections":
    get:
      operationId: "get_api_v1_admin_metrics_connections"
      tags: ["Administration"]
      summary: "Connections"
      description: "Connections (get /api/v1/admin/metrics/connections)."
      x-phlix-middleware: [AdminMiddleware]
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/admin/metrics/history":
    get:
      operationId: "get_api_v1_admin_metrics_history"
      tags: ["Administration"]
      summary: "History"
      description: "History (get /api/v1/admin/metrics/history)."
      x-phlix-middleware: [AdminMiddleware]
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/admin/metrics/routes":
    get:
      operationId: "get_api_v1_admin_metrics_routes"
      tags: ["Administration"]
      summary: "Routes"
      description: "Routes (get /api/v1/admin/metrics/routes)."
      x-phlix-middleware: [AdminMiddleware]
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/admin/metrics/snapshot":
    get:
      operationId: "get_api_v1_admin_metrics_snapshot"
      tags: ["Administration"]
      summary: "Snapshot"
      description: "Snapshot (get /api/v1/admin/metrics/snapshot)."
      x-phlix-middleware: [AdminMiddleware]
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/admin/plugins":
    get:
      operationId: "get_api_v1_admin_plugins"
      tags: ["Administration"]
      summary: "Index"
      description: "Index (get /api/v1/admin/plugins)."
      x-phlix-middleware: [AdminMiddleware]
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/admin/plugins/auto-update":
    get:
      operationId: "get_api_v1_admin_plugins_auto_update"
      tags: ["Administration"]
      summary: "Auto update"
      description: "Auto update (get /api/v1/admin/plugins/auto-update)."
      x-phlix-middleware: [AdminMiddleware]
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "429":
          $ref: "#/components/responses/TooManyRequests"
    put:
      operationId: "put_api_v1_admin_plugins_auto_update"
      tags: ["Administration"]
      summary: "Auto update"
      description: "Auto update (put /api/v1/admin/plugins/auto-update)."
      x-phlix-middleware: [AdminMiddleware]
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "400":
          $ref: "#/components/responses/BadRequest"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/admin/plugins/catalog":
    get:
      operationId: "get_api_v1_admin_plugins_catalog"
      tags: ["Administration"]
      summary: "Index"
      description: "Index (get /api/v1/admin/plugins/catalog)."
      x-phlix-middleware: [AdminMiddleware]
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/admin/plugins/catalog/channel":
    get:
      operationId: "get_api_v1_admin_plugins_catalog_channel"
      tags: ["Administration"]
      summary: "Channel"
      description: "Channel (get /api/v1/admin/plugins/catalog/channel)."
      x-phlix-middleware: [AdminMiddleware]
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "429":
          $ref: "#/components/responses/TooManyRequests"
    put:
      operationId: "put_api_v1_admin_plugins_catalog_channel"
      tags: ["Administration"]
      summary: "Channel"
      description: "Channel (put /api/v1/admin/plugins/catalog/channel)."
      x-phlix-middleware: [AdminMiddleware]
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "400":
          $ref: "#/components/responses/BadRequest"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/admin/plugins/catalog/sources":
    post:
      operationId: "post_api_v1_admin_plugins_catalog_sources"
      tags: ["Administration"]
      summary: "Add source"
      description: "Add source (post /api/v1/admin/plugins/catalog/sources)."
      x-phlix-middleware: [AdminMiddleware]
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "400":
          $ref: "#/components/responses/BadRequest"
        "429":
          $ref: "#/components/responses/TooManyRequests"
    delete:
      operationId: "delete_api_v1_admin_plugins_catalog_sources"
      tags: ["Administration"]
      summary: "Remove source"
      description: "Remove source (delete /api/v1/admin/plugins/catalog/sources)."
      x-phlix-middleware: [AdminMiddleware]
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "400":
          $ref: "#/components/responses/BadRequest"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/admin/plugins/install":
    post:
      operationId: "post_api_v1_admin_plugins_install"
      tags: ["Administration"]
      summary: "Install"
      description: "Install (post /api/v1/admin/plugins/install)."
      x-phlix-middleware: [AdminMiddleware]
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "201":
          description: "Created."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "400":
          $ref: "#/components/responses/BadRequest"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/admin/plugins/updates":
    get:
      operationId: "get_api_v1_admin_plugins_updates"
      tags: ["Administration"]
      summary: "Updates"
      description: "Updates (get /api/v1/admin/plugins/updates)."
      x-phlix-middleware: [AdminMiddleware]
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/admin/plugins/updates/apply":
    post:
      operationId: "post_api_v1_admin_plugins_updates_apply"
      tags: ["Administration"]
      summary: "Apply updates"
      description: "Apply updates (post /api/v1/admin/plugins/updates/apply)."
      x-phlix-middleware: [AdminMiddleware]
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "400":
          $ref: "#/components/responses/BadRequest"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/admin/plugins/{name}":
    get:
      operationId: "get_api_v1_admin_plugins_name"
      tags: ["Administration"]
      summary: "Show"
      description: "Show (get /api/v1/admin/plugins/{name})."
      x-phlix-middleware: [AdminMiddleware]
      parameters:
        - name: "name"
          in: path
          required: true
          description: "Plugin name."
          schema:
            type: string
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "429":
          $ref: "#/components/responses/TooManyRequests"
    delete:
      operationId: "delete_api_v1_admin_plugins_name"
      tags: ["Administration"]
      summary: "Uninstall"
      description: "Uninstall (delete /api/v1/admin/plugins/{name})."
      x-phlix-middleware: [AdminMiddleware]
      parameters:
        - name: "name"
          in: path
          required: true
          description: "Plugin name."
          schema:
            type: string
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "400":
          $ref: "#/components/responses/BadRequest"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/admin/plugins/{name}/disable":
    post:
      operationId: "post_api_v1_admin_plugins_name_disable"
      tags: ["Administration"]
      summary: "Disable"
      description: "Disable (post /api/v1/admin/plugins/{name}/disable)."
      x-phlix-middleware: [AdminMiddleware]
      parameters:
        - name: "name"
          in: path
          required: true
          description: "Plugin name."
          schema:
            type: string
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "400":
          $ref: "#/components/responses/BadRequest"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/admin/plugins/{name}/enable":
    post:
      operationId: "post_api_v1_admin_plugins_name_enable"
      tags: ["Administration"]
      summary: "Enable"
      description: "Enable (post /api/v1/admin/plugins/{name}/enable)."
      x-phlix-middleware: [AdminMiddleware]
      parameters:
        - name: "name"
          in: path
          required: true
          description: "Plugin name."
          schema:
            type: string
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "400":
          $ref: "#/components/responses/BadRequest"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/admin/plugins/{name}/settings":
    put:
      operationId: "put_api_v1_admin_plugins_name_settings"
      tags: ["Administration"]
      summary: "Update settings"
      description: "Update settings (put /api/v1/admin/plugins/{name}/settings)."
      x-phlix-middleware: [AdminMiddleware]
      parameters:
        - name: "name"
          in: path
          required: true
          description: "Plugin name."
          schema:
            type: string
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "400":
          $ref: "#/components/responses/BadRequest"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/admin/plugins/{name}/test":
    post:
      operationId: "post_api_v1_admin_plugins_name_test"
      tags: ["Administration"]
      summary: "Test credentials"
      description: "Test credentials (post /api/v1/admin/plugins/{name}/test)."
      x-phlix-middleware: [AdminMiddleware]
      parameters:
        - name: "name"
          in: path
          required: true
          description: "Plugin name."
          schema:
            type: string
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "400":
          $ref: "#/components/responses/BadRequest"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/admin/plugins/{name}/update":
    post:
      operationId: "post_api_v1_admin_plugins_name_update"
      tags: ["Administration"]
      summary: "Update plugin"
      description: "Update plugin (post /api/v1/admin/plugins/{name}/update)."
      x-phlix-middleware: [AdminMiddleware]
      parameters:
        - name: "name"
          in: path
          required: true
          description: "Plugin name."
          schema:
            type: string
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "400":
          $ref: "#/components/responses/BadRequest"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/admin/profiles/{id}":
    get:
      operationId: "get_api_v1_admin_profiles_id"
      tags: ["Administration"]
      summary: "Get"
      description: "Get (get /api/v1/admin/profiles/{id})."
      x-phlix-middleware: [AdminMiddleware]
      parameters:
        - name: "id"
          in: path
          required: true
          description: "Resource id."
          schema:
            type: string
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "429":
          $ref: "#/components/responses/TooManyRequests"
    put:
      operationId: "put_api_v1_admin_profiles_id"
      tags: ["Administration"]
      summary: "Update"
      description: "Update (put /api/v1/admin/profiles/{id})."
      x-phlix-middleware: [AdminMiddleware]
      parameters:
        - name: "id"
          in: path
          required: true
          description: "Resource id."
          schema:
            type: string
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "400":
          $ref: "#/components/responses/BadRequest"
        "429":
          $ref: "#/components/responses/TooManyRequests"
    delete:
      operationId: "delete_api_v1_admin_profiles_id"
      tags: ["Administration"]
      summary: "Delete"
      description: "Delete (delete /api/v1/admin/profiles/{id})."
      x-phlix-middleware: [AdminMiddleware]
      parameters:
        - name: "id"
          in: path
          required: true
          description: "Resource id."
          schema:
            type: string
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "400":
          $ref: "#/components/responses/BadRequest"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/admin/profiles/{id}/pin":
    post:
      operationId: "post_api_v1_admin_profiles_id_pin"
      tags: ["Administration"]
      summary: "Set pin"
      description: "Set pin (post /api/v1/admin/profiles/{id}/pin)."
      x-phlix-middleware: [AdminMiddleware]
      parameters:
        - name: "id"
          in: path
          required: true
          description: "Resource id."
          schema:
            type: string
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "400":
          $ref: "#/components/responses/BadRequest"
        "429":
          $ref: "#/components/responses/TooManyRequests"
    delete:
      operationId: "delete_api_v1_admin_profiles_id_pin"
      tags: ["Administration"]
      summary: "Delete pin"
      description: "Delete pin (delete /api/v1/admin/profiles/{id}/pin)."
      x-phlix-middleware: [AdminMiddleware]
      parameters:
        - name: "id"
          in: path
          required: true
          description: "Resource id."
          schema:
            type: string
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "400":
          $ref: "#/components/responses/BadRequest"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/admin/profiles/{profileId}/active-streams":
    get:
      operationId: "get_api_v1_admin_profiles_profileId_active_streams"
      tags: ["Administration"]
      summary: "Get active streams"
      description: "Get active streams (get /api/v1/admin/profiles/{profileId}/active-streams)."
      x-phlix-middleware: [AdminMiddleware]
      parameters:
        - name: "profileId"
          in: path
          required: true
          description: "User profile id."
          schema:
            type: string
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/admin/profiles/{profileId}/schedules":
    get:
      operationId: "get_api_v1_admin_profiles_profileId_schedules"
      tags: ["Administration"]
      summary: "List for profile"
      description: "List for profile (get /api/v1/admin/profiles/{profileId}/schedules)."
      x-phlix-middleware: [AdminMiddleware]
      parameters:
        - name: "profileId"
          in: path
          required: true
          description: "User profile id."
          schema:
            type: string
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "429":
          $ref: "#/components/responses/TooManyRequests"
    post:
      operationId: "post_api_v1_admin_profiles_profileId_schedules"
      tags: ["Administration"]
      summary: "Create for profile"
      description: "Create for profile (post /api/v1/admin/profiles/{profileId}/schedules)."
      x-phlix-middleware: [AdminMiddleware]
      parameters:
        - name: "profileId"
          in: path
          required: true
          description: "User profile id."
          schema:
            type: string
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "201":
          description: "Created."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "400":
          $ref: "#/components/responses/BadRequest"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/admin/profiles/{profileId}/schedules/{scheduleId}":
    get:
      operationId: "get_api_v1_admin_profiles_profileId_schedules_scheduleId"
      tags: ["Administration"]
      summary: "Get schedule"
      description: "Get schedule (get /api/v1/admin/profiles/{profileId}/schedules/{scheduleId})."
      x-phlix-middleware: [AdminMiddleware]
      parameters:
        - name: "profileId"
          in: path
          required: true
          description: "User profile id."
          schema:
            type: string
        - name: "scheduleId"
          in: path
          required: true
          description: "Access schedule id."
          schema:
            type: string
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "429":
          $ref: "#/components/responses/TooManyRequests"
    put:
      operationId: "put_api_v1_admin_profiles_profileId_schedules_scheduleId"
      tags: ["Administration"]
      summary: "Update schedule"
      description: "Update schedule (put /api/v1/admin/profiles/{profileId}/schedules/{scheduleId})."
      x-phlix-middleware: [AdminMiddleware]
      parameters:
        - name: "profileId"
          in: path
          required: true
          description: "User profile id."
          schema:
            type: string
        - name: "scheduleId"
          in: path
          required: true
          description: "Access schedule id."
          schema:
            type: string
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "400":
          $ref: "#/components/responses/BadRequest"
        "429":
          $ref: "#/components/responses/TooManyRequests"
    delete:
      operationId: "delete_api_v1_admin_profiles_profileId_schedules_scheduleId"
      tags: ["Administration"]
      summary: "Delete schedule"
      description: "Delete schedule (delete /api/v1/admin/profiles/{profileId}/schedules/{scheduleId})."
      x-phlix-middleware: [AdminMiddleware]
      parameters:
        - name: "profileId"
          in: path
          required: true
          description: "User profile id."
          schema:
            type: string
        - name: "scheduleId"
          in: path
          required: true
          description: "Access schedule id."
          schema:
            type: string
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "400":
          $ref: "#/components/responses/BadRequest"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/admin/profiles/{profileId}/stream-limits":
    get:
      operationId: "get_api_v1_admin_profiles_profileId_stream_limits"
      tags: ["Administration"]
      summary: "Get stream limits"
      description: "Get stream limits (get /api/v1/admin/profiles/{profileId}/stream-limits)."
      x-phlix-middleware: [AdminMiddleware]
      parameters:
        - name: "profileId"
          in: path
          required: true
          description: "User profile id."
          schema:
            type: string
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "429":
          $ref: "#/components/responses/TooManyRequests"
    put:
      operationId: "put_api_v1_admin_profiles_profileId_stream_limits"
      tags: ["Administration"]
      summary: "Update stream limits"
      description: "Update stream limits (put /api/v1/admin/profiles/{profileId}/stream-limits)."
      x-phlix-middleware: [AdminMiddleware]
      parameters:
        - name: "profileId"
          in: path
          required: true
          description: "User profile id."
          schema:
            type: string
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "400":
          $ref: "#/components/responses/BadRequest"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/admin/profiles/{profileId}/tags":
    get:
      operationId: "get_api_v1_admin_profiles_profileId_tags"
      tags: ["Administration"]
      summary: "List for profile"
      description: "List for profile (get /api/v1/admin/profiles/{profileId}/tags)."
      x-phlix-middleware: [AdminMiddleware]
      parameters:
        - name: "profileId"
          in: path
          required: true
          description: "User profile id."
          schema:
            type: string
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "429":
          $ref: "#/components/responses/TooManyRequests"
    post:
      operationId: "post_api_v1_admin_profiles_profileId_tags"
      tags: ["Administration"]
      summary: "Create for profile"
      description: "Create for profile (post /api/v1/admin/profiles/{profileId}/tags)."
      x-phlix-middleware: [AdminMiddleware]
      parameters:
        - name: "profileId"
          in: path
          required: true
          description: "User profile id."
          schema:
            type: string
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "201":
          description: "Created."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "400":
          $ref: "#/components/responses/BadRequest"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/admin/profiles/{profileId}/tags/{tagId}":
    delete:
      operationId: "delete_api_v1_admin_profiles_profileId_tags_tagId"
      tags: ["Administration"]
      summary: "Delete tag"
      description: "Delete tag (delete /api/v1/admin/profiles/{profileId}/tags/{tagId})."
      x-phlix-middleware: [AdminMiddleware]
      parameters:
        - name: "profileId"
          in: path
          required: true
          description: "User profile id."
          schema:
            type: string
        - name: "tagId"
          in: path
          required: true
          description: "Tag id."
          schema:
            type: string
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "400":
          $ref: "#/components/responses/BadRequest"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/admin/remote/hub/complete":
    post:
      operationId: "post_api_v1_admin_remote_hub_complete"
      tags: ["Administration"]
      summary: "Hub complete"
      description: "Hub complete (post /api/v1/admin/remote/hub/complete)."
      x-phlix-middleware: [AdminMiddleware]
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "400":
          $ref: "#/components/responses/BadRequest"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/admin/remote/hub/heartbeat":
    post:
      operationId: "post_api_v1_admin_remote_hub_heartbeat"
      tags: ["Administration"]
      summary: "Hub heartbeat"
      description: "Hub heartbeat (post /api/v1/admin/remote/hub/heartbeat)."
      x-phlix-middleware: [AdminMiddleware]
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "400":
          $ref: "#/components/responses/BadRequest"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/admin/remote/hub/pair":
    post:
      operationId: "post_api_v1_admin_remote_hub_pair"
      tags: ["Administration"]
      summary: "Hub pair"
      description: "Hub pair (post /api/v1/admin/remote/hub/pair)."
      x-phlix-middleware: [AdminMiddleware]
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "400":
          $ref: "#/components/responses/BadRequest"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/admin/remote/hub/poll":
    post:
      operationId: "post_api_v1_admin_remote_hub_poll"
      tags: ["Administration"]
      summary: "Hub poll"
      description: "Hub poll (post /api/v1/admin/remote/hub/poll)."
      x-phlix-middleware: [AdminMiddleware]
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "400":
          $ref: "#/components/responses/BadRequest"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/admin/remote/hub/status":
    get:
      operationId: "get_api_v1_admin_remote_hub_status"
      tags: ["Administration"]
      summary: "Hub status"
      description: "Hub status (get /api/v1/admin/remote/hub/status)."
      x-phlix-middleware: [AdminMiddleware]
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/admin/remote/hub/unenroll":
    post:
      operationId: "post_api_v1_admin_remote_hub_unenroll"
      tags: ["Administration"]
      summary: "Hub unenroll"
      description: "Hub unenroll (post /api/v1/admin/remote/hub/unenroll)."
      x-phlix-middleware: [AdminMiddleware]
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "400":
          $ref: "#/components/responses/BadRequest"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/admin/remote/portforward/candidates":
    get:
      operationId: "get_api_v1_admin_remote_portforward_candidates"
      tags: ["Administration"]
      summary: "Port forward candidates"
      description: "Port forward candidates (get /api/v1/admin/remote/portforward/candidates)."
      x-phlix-middleware: [AdminMiddleware]
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/admin/remote/portforward/disable":
    post:
      operationId: "post_api_v1_admin_remote_portforward_disable"
      tags: ["Administration"]
      summary: "Port forward disable"
      description: "Port forward disable (post /api/v1/admin/remote/portforward/disable)."
      x-phlix-middleware: [AdminMiddleware]
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "400":
          $ref: "#/components/responses/BadRequest"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/admin/remote/portforward/enable":
    post:
      operationId: "post_api_v1_admin_remote_portforward_enable"
      tags: ["Administration"]
      summary: "Port forward enable"
      description: "Port forward enable (post /api/v1/admin/remote/portforward/enable)."
      x-phlix-middleware: [AdminMiddleware]
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "400":
          $ref: "#/components/responses/BadRequest"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/admin/remote/portforward/status":
    get:
      operationId: "get_api_v1_admin_remote_portforward_status"
      tags: ["Administration"]
      summary: "Port forward status"
      description: "Port forward status (get /api/v1/admin/remote/portforward/status)."
      x-phlix-middleware: [AdminMiddleware]
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/admin/remote/relay/disable":
    post:
      operationId: "post_api_v1_admin_remote_relay_disable"
      tags: ["Administration"]
      summary: "Relay disable"
      description: "Relay disable (post /api/v1/admin/remote/relay/disable)."
      x-phlix-middleware: [AdminMiddleware]
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "400":
          $ref: "#/components/responses/BadRequest"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/admin/remote/relay/enable":
    post:
      operationId: "post_api_v1_admin_remote_relay_enable"
      tags: ["Administration"]
      summary: "Relay enable"
      description: "Relay enable (post /api/v1/admin/remote/relay/enable)."
      x-phlix-middleware: [AdminMiddleware]
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "400":
          $ref: "#/components/responses/BadRequest"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/admin/remote/relay/ping":
    post:
      operationId: "post_api_v1_admin_remote_relay_ping"
      tags: ["Administration"]
      summary: "Relay ping"
      description: "Relay ping (post /api/v1/admin/remote/relay/ping)."
      x-phlix-middleware: [AdminMiddleware]
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "400":
          $ref: "#/components/responses/BadRequest"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/admin/remote/relay/status":
    get:
      operationId: "get_api_v1_admin_remote_relay_status"
      tags: ["Administration"]
      summary: "Relay status"
      description: "Relay status (get /api/v1/admin/remote/relay/status)."
      x-phlix-middleware: [AdminMiddleware]
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/admin/remote/subdomain/claim":
    post:
      operationId: "post_api_v1_admin_remote_subdomain_claim"
      tags: ["Administration"]
      summary: "Subdomain claim"
      description: "Subdomain claim (post /api/v1/admin/remote/subdomain/claim)."
      x-phlix-middleware: [AdminMiddleware]
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "400":
          $ref: "#/components/responses/BadRequest"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/admin/remote/subdomain/release":
    post:
      operationId: "post_api_v1_admin_remote_subdomain_release"
      tags: ["Administration"]
      summary: "Subdomain release"
      description: "Subdomain release (post /api/v1/admin/remote/subdomain/release)."
      x-phlix-middleware: [AdminMiddleware]
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "400":
          $ref: "#/components/responses/BadRequest"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/admin/remote/subdomain/status":
    get:
      operationId: "get_api_v1_admin_remote_subdomain_status"
      tags: ["Administration"]
      summary: "Subdomain status"
      description: "Subdomain status (get /api/v1/admin/remote/subdomain/status)."
      x-phlix-middleware: [AdminMiddleware]
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/admin/restart":
    post:
      operationId: "post_api_v1_admin_restart"
      tags: ["Administration"]
      summary: "Restart"
      description: "Restart (post /api/v1/admin/restart)."
      x-phlix-middleware: [AdminMiddleware]
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "400":
          $ref: "#/components/responses/BadRequest"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/admin/services/lastfm/disconnect":
    post:
      operationId: "post_api_v1_admin_services_lastfm_disconnect"
      tags: ["Administration"]
      summary: "Api disconnect"
      description: "Api disconnect (post /api/v1/admin/services/lastfm/disconnect)."
      x-phlix-middleware: [AdminMiddleware]
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "400":
          $ref: "#/components/responses/BadRequest"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/admin/services/lastfm/status":
    get:
      operationId: "get_api_v1_admin_services_lastfm_status"
      tags: ["Administration"]
      summary: "Status"
      description: "Status (get /api/v1/admin/services/lastfm/status)."
      x-phlix-middleware: [AdminMiddleware]
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/admin/services/trakt/disconnect":
    post:
      operationId: "post_api_v1_admin_services_trakt_disconnect"
      tags: ["Administration"]
      summary: "Disconnect"
      description: "Disconnect (post /api/v1/admin/services/trakt/disconnect)."
      x-phlix-middleware: [AdminMiddleware]
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "400":
          $ref: "#/components/responses/BadRequest"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/admin/services/trakt/status":
    get:
      operationId: "get_api_v1_admin_services_trakt_status"
      tags: ["Administration"]
      summary: "Status"
      description: "Status (get /api/v1/admin/services/trakt/status)."
      x-phlix-middleware: [AdminMiddleware]
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/admin/settings":
    get:
      operationId: "get_api_v1_admin_settings"
      tags: ["Administration"]
      summary: "Index"
      description: "Index (get /api/v1/admin/settings)."
      x-phlix-middleware: [AdminMiddleware]
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "429":
          $ref: "#/components/responses/TooManyRequests"
    put:
      operationId: "put_api_v1_admin_settings"
      tags: ["Administration"]
      summary: "Update"
      description: "Update (put /api/v1/admin/settings)."
      x-phlix-middleware: [AdminMiddleware]
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "400":
          $ref: "#/components/responses/BadRequest"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/admin/stats/playback":
    get:
      operationId: "get_api_v1_admin_stats_playback"
      tags: ["Administration"]
      summary: "Playback"
      description: "Playback (get /api/v1/admin/stats/playback)."
      x-phlix-middleware: [AdminMiddleware]
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/admin/stats/storage":
    get:
      operationId: "get_api_v1_admin_stats_storage"
      tags: ["Administration"]
      summary: "Storage"
      description: "Storage (get /api/v1/admin/stats/storage)."
      x-phlix-middleware: [AdminMiddleware]
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/admin/stats/top-media":
    get:
      operationId: "get_api_v1_admin_stats_top_media"
      tags: ["Administration"]
      summary: "Top media"
      description: "Top media (get /api/v1/admin/stats/top-media)."
      x-phlix-middleware: [AdminMiddleware]
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/admin/stats/top-users":
    get:
      operationId: "get_api_v1_admin_stats_top_users"
      tags: ["Administration"]
      summary: "Top users"
      description: "Top users (get /api/v1/admin/stats/top-users)."
      x-phlix-middleware: [AdminMiddleware]
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/admin/sync/enable":
    put:
      operationId: "put_api_v1_admin_sync_enable"
      tags: ["Administration"]
      summary: "Set enabled"
      description: "Set enabled (put /api/v1/admin/sync/enable)."
      x-phlix-middleware: []
      security: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "400":
          $ref: "#/components/responses/BadRequest"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/admin/sync/status":
    get:
      operationId: "get_api_v1_admin_sync_status"
      tags: ["Administration"]
      summary: "Get sync status"
      description: "Get sync status (get /api/v1/admin/sync/status)."
      x-phlix-middleware: []
      security: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/admin/sync/trash-guides":
    post:
      operationId: "post_api_v1_admin_sync_trash_guides"
      tags: ["Administration"]
      summary: "Trigger sync"
      description: "Trigger sync (post /api/v1/admin/sync/trash-guides)."
      x-phlix-middleware: []
      security: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "400":
          $ref: "#/components/responses/BadRequest"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/admin/telemetry/clients":
    get:
      operationId: "get_api_v1_admin_telemetry_clients"
      tags: ["Administration"]
      summary: "List consenting client heartbeats"
      description: "List consenting client heartbeats (get /api/v1/admin/telemetry/clients)."
      x-phlix-middleware: [AdminMiddleware]
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/admin/transcoding/accelerators":
    get:
      operationId: "get_api_v1_admin_transcoding_accelerators"
      tags: ["Administration"]
      summary: "Accelerators"
      description: "Accelerators (get /api/v1/admin/transcoding/accelerators)."
      x-phlix-middleware: [AdminMiddleware]
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/admin/transcoding/tone-mapping":
    get:
      operationId: "get_api_v1_admin_transcoding_tone_mapping"
      tags: ["Administration"]
      summary: "Tone mapping"
      description: "Tone mapping (get /api/v1/admin/transcoding/tone-mapping)."
      x-phlix-middleware: [AdminMiddleware]
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "429":
          $ref: "#/components/responses/TooManyRequests"
    put:
      operationId: "put_api_v1_admin_transcoding_tone_mapping"
      tags: ["Administration"]
      summary: "Set tone mapping"
      description: "Set tone mapping (put /api/v1/admin/transcoding/tone-mapping)."
      x-phlix-middleware: [AdminMiddleware]
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "400":
          $ref: "#/components/responses/BadRequest"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/admin/updates/check":
    post:
      operationId: "post_api_v1_admin_updates_check"
      tags: ["Administration"]
      summary: "Check"
      description: "Check (post /api/v1/admin/updates/check)."
      x-phlix-middleware: [AdminMiddleware]
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "202":
          description: "Accepted - asynchronous job queued (body: job_id, status)."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "400":
          $ref: "#/components/responses/BadRequest"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/admin/updates/settings":
    put:
      operationId: "put_api_v1_admin_updates_settings"
      tags: ["Administration"]
      summary: "Update settings"
      description: "Update settings (put /api/v1/admin/updates/settings)."
      x-phlix-middleware: [AdminMiddleware]
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "400":
          $ref: "#/components/responses/BadRequest"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/admin/updates/status":
    get:
      operationId: "get_api_v1_admin_updates_status"
      tags: ["Administration"]
      summary: "Status"
      description: "Status (get /api/v1/admin/updates/status)."
      x-phlix-middleware: [AdminMiddleware]
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/admin/users":
    get:
      operationId: "get_api_v1_admin_users"
      tags: ["Administration"]
      summary: "List"
      description: "List (get /api/v1/admin/users)."
      x-phlix-middleware: [AdminMiddleware]
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "429":
          $ref: "#/components/responses/TooManyRequests"
    post:
      operationId: "post_api_v1_admin_users"
      tags: ["Administration"]
      summary: "Create"
      description: "Create (post /api/v1/admin/users)."
      x-phlix-middleware: [AdminMiddleware]
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "201":
          description: "Created."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "400":
          $ref: "#/components/responses/BadRequest"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/admin/users/{id}":
    get:
      operationId: "get_api_v1_admin_users_id"
      tags: ["Administration"]
      summary: "Get"
      description: "Get (get /api/v1/admin/users/{id})."
      x-phlix-middleware: [AdminMiddleware]
      parameters:
        - name: "id"
          in: path
          required: true
          description: "Resource id."
          schema:
            type: string
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "429":
          $ref: "#/components/responses/TooManyRequests"
    put:
      operationId: "put_api_v1_admin_users_id"
      tags: ["Administration"]
      summary: "Update"
      description: "Update (put /api/v1/admin/users/{id})."
      x-phlix-middleware: [AdminMiddleware]
      parameters:
        - name: "id"
          in: path
          required: true
          description: "Resource id."
          schema:
            type: string
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "400":
          $ref: "#/components/responses/BadRequest"
        "429":
          $ref: "#/components/responses/TooManyRequests"
    delete:
      operationId: "delete_api_v1_admin_users_id"
      tags: ["Administration"]
      summary: "Delete"
      description: "Delete (delete /api/v1/admin/users/{id})."
      x-phlix-middleware: [AdminMiddleware]
      parameters:
        - name: "id"
          in: path
          required: true
          description: "Resource id."
          schema:
            type: string
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "400":
          $ref: "#/components/responses/BadRequest"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/admin/users/{id}/approve":
    post:
      operationId: "post_api_v1_admin_users_id_approve"
      tags: ["Administration"]
      summary: "Approve"
      description: "Approve (post /api/v1/admin/users/{id}/approve)."
      x-phlix-middleware: [AdminMiddleware]
      parameters:
        - name: "id"
          in: path
          required: true
          description: "Resource id."
          schema:
            type: string
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "400":
          $ref: "#/components/responses/BadRequest"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/admin/users/{id}/disable":
    post:
      operationId: "post_api_v1_admin_users_id_disable"
      tags: ["Administration"]
      summary: "Disable"
      description: "Disable (post /api/v1/admin/users/{id}/disable)."
      x-phlix-middleware: [AdminMiddleware]
      parameters:
        - name: "id"
          in: path
          required: true
          description: "Resource id."
          schema:
            type: string
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "400":
          $ref: "#/components/responses/BadRequest"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/admin/users/{id}/reject":
    post:
      operationId: "post_api_v1_admin_users_id_reject"
      tags: ["Administration"]
      summary: "Reject"
      description: "Reject (post /api/v1/admin/users/{id}/reject)."
      x-phlix-middleware: [AdminMiddleware]
      parameters:
        - name: "id"
          in: path
          required: true
          description: "Resource id."
          schema:
            type: string
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "400":
          $ref: "#/components/responses/BadRequest"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/admin/users/{id}/reset-password":
    post:
      operationId: "post_api_v1_admin_users_id_reset_password"
      tags: ["Administration"]
      summary: "Reset password"
      description: "Reset password (post /api/v1/admin/users/{id}/reset-password)."
      x-phlix-middleware: [AdminMiddleware]
      parameters:
        - name: "id"
          in: path
          required: true
          description: "Resource id."
          schema:
            type: string
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "400":
          $ref: "#/components/responses/BadRequest"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/admin/users/{id}/set-admin":
    post:
      operationId: "post_api_v1_admin_users_id_set_admin"
      tags: ["Administration"]
      summary: "Set admin"
      description: "Set admin (post /api/v1/admin/users/{id}/set-admin)."
      x-phlix-middleware: [AdminMiddleware]
      parameters:
        - name: "id"
          in: path
          required: true
          description: "Resource id."
          schema:
            type: string
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "400":
          $ref: "#/components/responses/BadRequest"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/admin/users/{userId}/profiles":
    get:
      operationId: "get_api_v1_admin_users_userId_profiles"
      tags: ["Administration"]
      summary: "List for user"
      description: "List for user (get /api/v1/admin/users/{userId}/profiles)."
      x-phlix-middleware: [AdminMiddleware]
      parameters:
        - name: "userId"
          in: path
          required: true
          description: "User id."
          schema:
            type: string
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "429":
          $ref: "#/components/responses/TooManyRequests"
    post:
      operationId: "post_api_v1_admin_users_userId_profiles"
      tags: ["Administration"]
      summary: "Create for user"
      description: "Create for user (post /api/v1/admin/users/{userId}/profiles)."
      x-phlix-middleware: [AdminMiddleware]
      parameters:
        - name: "userId"
          in: path
          required: true
          description: "User id."
          schema:
            type: string
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "201":
          description: "Created."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "400":
          $ref: "#/components/responses/BadRequest"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/admin/watch-history":
    get:
      operationId: "get_api_v1_admin_watch_history"
      tags: ["Administration"]
      summary: "Index"
      description: "Index (get /api/v1/admin/watch-history)."
      x-phlix-middleware: [AdminMiddleware]
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/admin/webhooks":
    get:
      operationId: "get_api_v1_admin_webhooks"
      tags: ["Administration"]
      summary: "Index"
      description: "Index (get /api/v1/admin/webhooks)."
      x-phlix-middleware: []
      security: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "429":
          $ref: "#/components/responses/TooManyRequests"
    post:
      operationId: "post_api_v1_admin_webhooks"
      tags: ["Administration"]
      summary: "Create"
      description: "Create (post /api/v1/admin/webhooks)."
      x-phlix-middleware: []
      security: []
      responses:
        "201":
          description: "Created."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "400":
          $ref: "#/components/responses/BadRequest"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/admin/webhooks/deliveries":
    get:
      operationId: "get_api_v1_admin_webhooks_deliveries"
      tags: ["Administration"]
      summary: "Get deliveries"
      description: "Get deliveries (get /api/v1/admin/webhooks/deliveries)."
      x-phlix-middleware: [AdminMiddleware]
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/admin/webhooks/subscriptions":
    get:
      operationId: "get_api_v1_admin_webhooks_subscriptions"
      tags: ["Administration"]
      summary: "List subscriptions"
      description: "List subscriptions (get /api/v1/admin/webhooks/subscriptions)."
      x-phlix-middleware: [AdminMiddleware]
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "429":
          $ref: "#/components/responses/TooManyRequests"
    post:
      operationId: "post_api_v1_admin_webhooks_subscriptions"
      tags: ["Administration"]
      summary: "Create subscription"
      description: "Create subscription (post /api/v1/admin/webhooks/subscriptions)."
      x-phlix-middleware: [AdminMiddleware]
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "201":
          description: "Created."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "400":
          $ref: "#/components/responses/BadRequest"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/admin/webhooks/subscriptions/{id}":
    delete:
      operationId: "delete_api_v1_admin_webhooks_subscriptions_id"
      tags: ["Administration"]
      summary: "Delete subscription"
      description: "Delete subscription (delete /api/v1/admin/webhooks/subscriptions/{id})."
      x-phlix-middleware: [AdminMiddleware]
      parameters:
        - name: "id"
          in: path
          required: true
          description: "Resource id."
          schema:
            type: string
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "204":
          description: "No Content - resource deleted; response body is empty."
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "400":
          $ref: "#/components/responses/BadRequest"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/admin/webhooks/{id}":
    put:
      operationId: "put_api_v1_admin_webhooks_id"
      tags: ["Administration"]
      summary: "Update"
      description: "Update (put /api/v1/admin/webhooks/{id})."
      x-phlix-middleware: []
      parameters:
        - name: "id"
          in: path
          required: true
          description: "Resource id."
          schema:
            type: string
      security: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "404":
          $ref: "#/components/responses/NotFound"
        "400":
          $ref: "#/components/responses/BadRequest"
        "429":
          $ref: "#/components/responses/TooManyRequests"
    delete:
      operationId: "delete_api_v1_admin_webhooks_id"
      tags: ["Administration"]
      summary: "Delete"
      description: "Delete (delete /api/v1/admin/webhooks/{id})."
      x-phlix-middleware: []
      parameters:
        - name: "id"
          in: path
          required: true
          description: "Resource id."
          schema:
            type: string
      security: []
      responses:
        "204":
          description: "No Content - resource deleted; response body is empty."
        "404":
          $ref: "#/components/responses/NotFound"
        "400":
          $ref: "#/components/responses/BadRequest"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/admin/webhooks/{id}/test":
    post:
      operationId: "post_api_v1_admin_webhooks_id_test"
      tags: ["Administration"]
      summary: "Test"
      description: "Test (post /api/v1/admin/webhooks/{id}/test)."
      x-phlix-middleware: []
      parameters:
        - name: "id"
          in: path
          required: true
          description: "Resource id."
          schema:
            type: string
      security: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "404":
          $ref: "#/components/responses/NotFound"
        "400":
          $ref: "#/components/responses/BadRequest"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/airplay/devices":
    get:
      operationId: "get_api_v1_airplay_devices"
      tags: ["Casting"]
      summary: "List devices"
      description: "List devices (get /api/v1/airplay/devices)."
      x-phlix-middleware: [AuthMiddleware, CastingEnabledMiddleware]
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/airplay/devices/{id}/pause":
    post:
      operationId: "post_api_v1_airplay_devices_id_pause"
      tags: ["Casting"]
      summary: "Pause"
      description: "Pause (post /api/v1/airplay/devices/{id}/pause)."
      x-phlix-middleware: [AuthMiddleware, CastingEnabledMiddleware]
      parameters:
        - name: "id"
          in: path
          required: true
          description: "Resource id."
          schema:
            type: string
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "400":
          $ref: "#/components/responses/BadRequest"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/airplay/devices/{id}/resume":
    post:
      operationId: "post_api_v1_airplay_devices_id_resume"
      tags: ["Casting"]
      summary: "Resume"
      description: "Resume (post /api/v1/airplay/devices/{id}/resume)."
      x-phlix-middleware: [AuthMiddleware, CastingEnabledMiddleware]
      parameters:
        - name: "id"
          in: path
          required: true
          description: "Resource id."
          schema:
            type: string
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "400":
          $ref: "#/components/responses/BadRequest"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/airplay/devices/{id}/status":
    get:
      operationId: "get_api_v1_airplay_devices_id_status"
      tags: ["Casting"]
      summary: "Get status"
      description: "Get status (get /api/v1/airplay/devices/{id}/status)."
      x-phlix-middleware: [AuthMiddleware, CastingEnabledMiddleware]
      parameters:
        - name: "id"
          in: path
          required: true
          description: "Resource id."
          schema:
            type: string
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/airplay/devices/{id}/stop":
    post:
      operationId: "post_api_v1_airplay_devices_id_stop"
      tags: ["Casting"]
      summary: "Stop"
      description: "Stop (post /api/v1/airplay/devices/{id}/stop)."
      x-phlix-middleware: [AuthMiddleware, CastingEnabledMiddleware]
      parameters:
        - name: "id"
          in: path
          required: true
          description: "Resource id."
          schema:
            type: string
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "400":
          $ref: "#/components/responses/BadRequest"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/airplay/devices/{id}/stream":
    post:
      operationId: "post_api_v1_airplay_devices_id_stream"
      tags: ["Casting"]
      summary: "Stream"
      description: "Stream (post /api/v1/airplay/devices/{id}/stream)."
      x-phlix-middleware: [AuthMiddleware, CastingEnabledMiddleware]
      parameters:
        - name: "id"
          in: path
          required: true
          description: "Resource id."
          schema:
            type: string
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success. Streams the media/binary resource."
          content:
            '*/*':
              schema: {}
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "400":
          $ref: "#/components/responses/BadRequest"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/audiobooks":
    get:
      operationId: "get_api_v1_audiobooks"
      tags: ["Music & Books"]
      summary: "List audiobooks"
      description: "List audiobooks (get /api/v1/audiobooks)."
      x-phlix-middleware: [AuthMiddleware]
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/audiobooks/{id}":
    get:
      operationId: "get_api_v1_audiobooks_id"
      tags: ["Music & Books"]
      summary: "Get audiobook"
      description: "Get audiobook (get /api/v1/audiobooks/{id})."
      x-phlix-middleware: [AuthMiddleware]
      parameters:
        - name: "id"
          in: path
          required: true
          description: "Resource id."
          schema:
            type: string
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/audiobooks/{id}/chapters":
    get:
      operationId: "get_api_v1_audiobooks_id_chapters"
      tags: ["Music & Books"]
      summary: "Get chapters"
      description: "Get chapters (get /api/v1/audiobooks/{id}/chapters)."
      x-phlix-middleware: [AuthMiddleware]
      parameters:
        - name: "id"
          in: path
          required: true
          description: "Resource id."
          schema:
            type: string
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/audiobooks/{id}/progress":
    get:
      operationId: "get_api_v1_audiobooks_id_progress"
      tags: ["Music & Books"]
      summary: "Get progress"
      description: "Get progress (get /api/v1/audiobooks/{id}/progress)."
      x-phlix-middleware: [AuthMiddleware]
      parameters:
        - name: "id"
          in: path
          required: true
          description: "Resource id."
          schema:
            type: string
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "429":
          $ref: "#/components/responses/TooManyRequests"
    post:
      operationId: "post_api_v1_audiobooks_id_progress"
      tags: ["Music & Books"]
      summary: "Save progress"
      description: "Save progress (post /api/v1/audiobooks/{id}/progress)."
      x-phlix-middleware: [AuthMiddleware]
      parameters:
        - name: "id"
          in: path
          required: true
          description: "Resource id."
          schema:
            type: string
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "400":
          $ref: "#/components/responses/BadRequest"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/audiobooks/{id}/read":
    get:
      operationId: "get_api_v1_audiobooks_id_read"
      tags: ["Music & Books"]
      summary: "Read audiobook"
      description: "Read audiobook (get /api/v1/audiobooks/{id}/read)."
      x-phlix-middleware: [SignedUrlMiddleware]
      parameters:
        - name: "id"
          in: path
          required: true
          description: "Resource id."
          schema:
            type: string
      security: []
      responses:
        "200":
          description: "Success. Streams the media/binary resource."
          content:
            '*/*':
              schema: {}
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/audiobooks/{id}/stream":
    get:
      operationId: "get_api_v1_audiobooks_id_stream"
      tags: ["Music & Books"]
      summary: "Stream audiobook"
      description: "Stream audiobook (get /api/v1/audiobooks/{id}/stream)."
      x-phlix-middleware: [SignedUrlMiddleware]
      parameters:
        - name: "id"
          in: path
          required: true
          description: "Resource id."
          schema:
            type: string
      security: []
      responses:
        "200":
          description: "Success. Streams the media/binary resource."
          content:
            '*/*':
              schema: {}
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/auth/hub-token":
    post:
      operationId: "post_api_v1_auth_hub_token"
      tags: ["Authentication"]
      summary: "Hub token"
      description: "Hub token (post /api/v1/auth/hub-token)."
      x-phlix-middleware: []
      security: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "400":
          $ref: "#/components/responses/BadRequest"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "429":
          $ref: "#/components/responses/TooManyRequests"
        "503":
          description: "Server not enrolled with a hub (hub.not_enrolled)."
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
  "/api/v1/auth/login":
    post:
      operationId: "post_api_v1_auth_login"
      tags: ["Authentication"]
      summary: "Login"
      description: "Login (post /api/v1/auth/login)."
      x-phlix-middleware: []
      security: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "400":
          $ref: "#/components/responses/BadRequest"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/auth/me":
    get:
      operationId: "get_api_v1_auth_me"
      tags: ["Authentication"]
      summary: "Me"
      description: "Me (get /api/v1/auth/me)."
      x-phlix-middleware: []
      security: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/auth/quick-connect/initiate":
    post:
      operationId: "post_api_v1_auth_quick_connect_initiate"
      tags: ["Authentication"]
      summary: "Start a quick-connect pairing"
      description: "Start a quick-connect pairing (post /api/v1/auth/quick-connect/initiate)."
      x-phlix-middleware: []
      security: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/auth/quick-connect/{code}/approve":
    post:
      operationId: "post_api_v1_auth_quick_connect_code_approve"
      tags: ["Authentication"]
      summary: "Approve a quick-connect pairing"
      description: "Approve a quick-connect pairing (post /api/v1/auth/quick-connect/{code}/approve)."
      x-phlix-middleware: [AuthMiddleware]
      parameters:
        - name: "code"
          in: path
          required: true
          description: "Quick-connect pairing code (6 unambiguous uppercase letters)."
          schema:
            type: string
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "400":
          $ref: "#/components/responses/BadRequest"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "409":
          description: "Pairing is not pending."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/auth/quick-connect/{code}/status":
    get:
      operationId: "get_api_v1_auth_quick_connect_code_status"
      tags: ["Authentication"]
      summary: "Poll quick-connect pairing state"
      description: "Poll quick-connect pairing state (get /api/v1/auth/quick-connect/{code}/status)."
      x-phlix-middleware: []
      parameters:
        - name: "code"
          in: path
          required: true
          description: "Quick-connect pairing code (6 unambiguous uppercase letters)."
          schema:
            type: string
      security: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "404":
          $ref: "#/components/responses/NotFound"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/auth/quick-connect/{code}/token":
    post:
      operationId: "post_api_v1_auth_quick_connect_code_token"
      tags: ["Authentication"]
      summary: "Redeem an approved quick-connect pairing"
      description: "Redeem an approved quick-connect pairing (post /api/v1/auth/quick-connect/{code}/token)."
      x-phlix-middleware: []
      parameters:
        - name: "code"
          in: path
          required: true
          description: "Quick-connect pairing code (6 unambiguous uppercase letters)."
          schema:
            type: string
      security: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "400":
          $ref: "#/components/responses/BadRequest"
        "404":
          $ref: "#/components/responses/NotFound"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/auth/logout":
    post:
      operationId: "post_api_v1_auth_logout"
      tags: ["Authentication"]
      summary: "Logout"
      description: >-
        Logout (post /api/v1/auth/logout). JSON companion of the form-path
        /auth/logout, answered 204 with no body. Every accepted call clears
        the phlix_session and phlix_refresh cookies via expiry Set-Cookie
        headers, gated by nothing else; a call attached to a user additionally
        bumps the server-side token watermark, invalidating every issued
        token. A cookie-bearing call whose Origin/Referer fails the
        same-site law (including the Sec-Fetch-Site cross-site belt) is
        refused by the CSRF gate with 403 and no side effects; bearer calls
        never ride that gate.
      x-phlix-middleware: []
      security: []
      responses:
        "204":
          description: "Logged out; the cookie jar is cleared; no body."
        "403":
          $ref: "#/components/responses/Forbidden"
  "/api/v1/auth/sessions":
    get:
      operationId: "get_api_v1_auth_sessions"
      tags: ["Authentication"]
      summary: "List login families"
      description: >-
        List this account's live login families (get /api/v1/auth/sessions).
        CP-029 / D-1a: one row per login ceremony whose token lineage is still
        alive, each carrying id, created_at, last_used_at, device_type,
        device_name (NULL where the minting surface knew no device) and a
        server-computed current flag for the family the caller authenticated
        with. Not the legacy playback-device /api/v1/me/sessions registry.
      x-phlix-middleware: [AuthMiddleware]
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
  "/api/v1/auth/sessions/{id}":
    delete:
      operationId: "delete_api_v1_auth_sessions_id"
      tags: ["Authentication"]
      summary: "End one login family"
      description: >-
        End exactly one login family (delete /api/v1/auth/sessions/{id}).
        Per-device sign-out: every other device keeps its session and the
        account-wide watermark is NOT bumped. Unknown and foreign-owned ids
        answer the identical 404 (no probe oracle); revoking one's own
        already-revoked family is idempotent and answers 204.
      x-phlix-middleware: [AuthMiddleware]
      parameters:
        - name: "id"
          in: path
          required: true
          description: "Family id (the sid claim)."
          schema:
            type: string
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "204":
          description: "Family ended (or was already ended); no body."
        "401":
          $ref: "#/components/responses/Unauthorized"
        "404":
          $ref: "#/components/responses/NotFound"
  "/api/v1/auth/refresh":
    post:
      operationId: "post_api_v1_auth_refresh"
      tags: ["Authentication"]
      summary: "Refresh"
      description: "Refresh (post /api/v1/auth/refresh)."
      x-phlix-middleware: []
      security: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "400":
          $ref: "#/components/responses/BadRequest"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/auth/register":
    post:
      operationId: "post_api_v1_auth_register"
      tags: ["Authentication"]
      summary: "Register"
      description: >-
        Register (post /api/v1/auth/register). JSON client: 201 with the token
        pair when the account is created active (open mode or the first-user
        admin bootstrap); 202 with {status:pending} and NO tokens when the
        signup gate is 'approval'; 400 on validation failure (duplicate
        username/email, policy); 403 code=signup_disabled when the gate is
        'disabled' (first user still bootstraps regardless of mode). Browser
        form posts get 302 redirects instead (see /auth/register).
      x-phlix-middleware: []
      security: []
      responses:
        "201":
          description: "Account created active; token pair returned."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "202":
          description: "Account created pending administrator approval; no tokens."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "400":
          $ref: "#/components/responses/BadRequest"
        "403":
          $ref: "#/components/responses/Forbidden"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/auth/webauthn/login/options":
    post:
      operationId: "post_api_v1_auth_webauthn_login_options"
      tags: ["Authentication"]
      summary: "Start authentication"
      description: "Start authentication (post /api/v1/auth/webauthn/login/options)."
      x-phlix-middleware: []
      security: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "400":
          $ref: "#/components/responses/BadRequest"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/auth/webauthn/login/verify":
    post:
      operationId: "post_api_v1_auth_webauthn_login_verify"
      tags: ["Authentication"]
      summary: "Finish authentication"
      description: >-
        Finish authentication (post /api/v1/auth/webauthn/login/verify).
        Verifies the assertion cryptographically (challenge/origin/rpId/UV
        flags plus the COSE signature and a monotonic counter) against the
        DB-stored single-use challenge and the stored credential; the identity
        in the returned token pair is the OWNER OF THE STORED CREDENTIAL, not
        anything the client asserts. Success mints the full JWT pair; any
        verification failure (bad signature, expired/consumed challenge,
        origin/rpId mismatch, counter rollback, credential/user mismatch)
        answers 401.
      x-phlix-middleware: []
      security: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "400":
          $ref: "#/components/responses/BadRequest"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/auth/webauthn/register/options":
    post:
      operationId: "post_api_v1_auth_webauthn_register_options"
      tags: ["Authentication"]
      summary: "Start registration"
      description: "Start registration (post /api/v1/auth/webauthn/register/options)."
      x-phlix-middleware: []
      security: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "400":
          $ref: "#/components/responses/BadRequest"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/auth/webauthn/register/verify":
    post:
      operationId: "post_api_v1_auth_webauthn_register_verify"
      tags: ["Authentication"]
      summary: "Finish registration"
      description: "Finish registration (post /api/v1/auth/webauthn/register/verify)."
      x-phlix-middleware: []
      security: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "400":
          $ref: "#/components/responses/BadRequest"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/books":
    get:
      operationId: "get_api_v1_books"
      tags: ["Music & Books"]
      summary: "List books"
      description: "List books (get /api/v1/books)."
      x-phlix-middleware: [AuthMiddleware]
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/books/{id}":
    get:
      operationId: "get_api_v1_books_id"
      tags: ["Music & Books"]
      summary: "Get book"
      description: "Get book (get /api/v1/books/{id})."
      x-phlix-middleware: [AuthMiddleware]
      parameters:
        - name: "id"
          in: path
          required: true
          description: "Resource id."
          schema:
            type: string
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/books/{id}/cover":
    get:
      operationId: "get_api_v1_books_id_cover"
      tags: ["Music & Books"]
      summary: "Get cover"
      description: "Get cover (get /api/v1/books/{id}/cover)."
      x-phlix-middleware: [SignedUrlMiddleware]
      parameters:
        - name: "id"
          in: path
          required: true
          description: "Resource id."
          schema:
            type: string
      security: []
      responses:
        "200":
          description: "Success. Streams the media/binary resource."
          content:
            '*/*':
              schema: {}
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/books/{id}/download":
    get:
      operationId: "get_api_v1_books_id_download"
      tags: ["Music & Books"]
      summary: "Download book"
      description: "Download book (get /api/v1/books/{id}/download)."
      x-phlix-middleware: [SignedUrlMiddleware]
      parameters:
        - name: "id"
          in: path
          required: true
          description: "Resource id."
          schema:
            type: string
      security: []
      responses:
        "200":
          description: "Success. Streams the media/binary resource."
          content:
            '*/*':
              schema: {}
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/books/{id}/progress":
    get:
      operationId: "get_api_v1_books_id_progress"
      tags: ["Music & Books"]
      summary: "Get progress"
      description: "Get progress (get /api/v1/books/{id}/progress)."
      x-phlix-middleware: [AuthMiddleware]
      parameters:
        - name: "id"
          in: path
          required: true
          description: "Resource id."
          schema:
            type: string
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "429":
          $ref: "#/components/responses/TooManyRequests"
    post:
      operationId: "post_api_v1_books_id_progress"
      tags: ["Music & Books"]
      summary: "Save progress"
      description: "Save progress (post /api/v1/books/{id}/progress)."
      x-phlix-middleware: [AuthMiddleware]
      parameters:
        - name: "id"
          in: path
          required: true
          description: "Resource id."
          schema:
            type: string
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/books/{id}/read":
    get:
      operationId: "get_api_v1_books_id_read"
      tags: ["Music & Books"]
      summary: "Read book"
      description: "Read book (get /api/v1/books/{id}/read)."
      x-phlix-middleware: [SignedUrlMiddleware]
      parameters:
        - name: "id"
          in: path
          required: true
          description: "Resource id."
          schema:
            type: string
      security: []
      responses:
        "200":
          description: "Success. Streams the media/binary resource."
          content:
            '*/*':
              schema: {}
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/cast/devices":
    get:
      operationId: "get_api_v1_cast_devices"
      tags: ["Casting"]
      summary: "List devices"
      description: "List devices (get /api/v1/cast/devices)."
      x-phlix-middleware: [AuthMiddleware, CastingEnabledMiddleware]
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/cast/devices/{id}/cast":
    post:
      operationId: "post_api_v1_cast_devices_id_cast"
      tags: ["Casting"]
      summary: "Cast"
      description: "Cast (post /api/v1/cast/devices/{id}/cast)."
      x-phlix-middleware: [AuthMiddleware, CastingEnabledMiddleware]
      parameters:
        - name: "id"
          in: path
          required: true
          description: "Resource id."
          schema:
            type: string
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "400":
          $ref: "#/components/responses/BadRequest"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/cast/devices/{id}/pause":
    post:
      operationId: "post_api_v1_cast_devices_id_pause"
      tags: ["Casting"]
      summary: "Pause"
      description: "Pause (post /api/v1/cast/devices/{id}/pause)."
      x-phlix-middleware: [AuthMiddleware, CastingEnabledMiddleware]
      parameters:
        - name: "id"
          in: path
          required: true
          description: "Resource id."
          schema:
            type: string
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "400":
          $ref: "#/components/responses/BadRequest"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/cast/devices/{id}/play":
    post:
      operationId: "post_api_v1_cast_devices_id_play"
      tags: ["Casting"]
      summary: "Play"
      description: "Play (post /api/v1/cast/devices/{id}/play)."
      x-phlix-middleware: [AuthMiddleware, CastingEnabledMiddleware]
      parameters:
        - name: "id"
          in: path
          required: true
          description: "Resource id."
          schema:
            type: string
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "400":
          $ref: "#/components/responses/BadRequest"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/cast/devices/{id}/seek":
    post:
      operationId: "post_api_v1_cast_devices_id_seek"
      tags: ["Casting"]
      summary: "Seek"
      description: "Seek (post /api/v1/cast/devices/{id}/seek)."
      x-phlix-middleware: [AuthMiddleware, CastingEnabledMiddleware]
      parameters:
        - name: "id"
          in: path
          required: true
          description: "Resource id."
          schema:
            type: string
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "400":
          $ref: "#/components/responses/BadRequest"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/cast/devices/{id}/status":
    get:
      operationId: "get_api_v1_cast_devices_id_status"
      tags: ["Casting"]
      summary: "Get status"
      description: "Get status (get /api/v1/cast/devices/{id}/status)."
      x-phlix-middleware: [AuthMiddleware, CastingEnabledMiddleware]
      parameters:
        - name: "id"
          in: path
          required: true
          description: "Resource id."
          schema:
            type: string
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/cast/devices/{id}/stop":
    post:
      operationId: "post_api_v1_cast_devices_id_stop"
      tags: ["Casting"]
      summary: "Stop"
      description: "Stop (post /api/v1/cast/devices/{id}/stop)."
      x-phlix-middleware: [AuthMiddleware, CastingEnabledMiddleware]
      parameters:
        - name: "id"
          in: path
          required: true
          description: "Resource id."
          schema:
            type: string
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "400":
          $ref: "#/components/responses/BadRequest"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/collections":
    get:
      operationId: "get_api_v1_collections"
      tags: ["Collections"]
      summary: "Index"
      description: "Index (get /api/v1/collections)."
      x-phlix-middleware: [AuthMiddleware]
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "429":
          $ref: "#/components/responses/TooManyRequests"
    post:
      operationId: "post_api_v1_collections"
      tags: ["Collections"]
      summary: "Create"
      description: "Create (post /api/v1/collections)."
      x-phlix-middleware: [AuthMiddleware]
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "201":
          description: "Created."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "400":
          $ref: "#/components/responses/BadRequest"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/collections/{id}":
    get:
      operationId: "get_api_v1_collections_id"
      tags: ["Collections"]
      summary: "Show"
      description: "Show (get /api/v1/collections/{id})."
      x-phlix-middleware: [AuthMiddleware]
      parameters:
        - name: "id"
          in: path
          required: true
          description: "Resource id."
          schema:
            type: string
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "429":
          $ref: "#/components/responses/TooManyRequests"
    put:
      operationId: "put_api_v1_collections_id"
      tags: ["Collections"]
      summary: "Update"
      description: "Update (put /api/v1/collections/{id})."
      x-phlix-middleware: [AuthMiddleware]
      parameters:
        - name: "id"
          in: path
          required: true
          description: "Resource id."
          schema:
            type: string
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "400":
          $ref: "#/components/responses/BadRequest"
        "429":
          $ref: "#/components/responses/TooManyRequests"
    delete:
      operationId: "delete_api_v1_collections_id"
      tags: ["Collections"]
      summary: "Delete"
      description: "Delete (delete /api/v1/collections/{id})."
      x-phlix-middleware: [AuthMiddleware]
      parameters:
        - name: "id"
          in: path
          required: true
          description: "Resource id."
          schema:
            type: string
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "400":
          $ref: "#/components/responses/BadRequest"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/collections/{id}/bulk-add":
    post:
      operationId: "post_api_v1_collections_id_bulk_add"
      tags: ["Collections"]
      summary: "Bulk add"
      description: "Bulk add (post /api/v1/collections/{id}/bulk-add)."
      x-phlix-middleware: [AuthMiddleware]
      parameters:
        - name: "id"
          in: path
          required: true
          description: "Resource id."
          schema:
            type: string
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "400":
          $ref: "#/components/responses/BadRequest"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/collections/{id}/items/{mediaItemId}":
    post:
      operationId: "post_api_v1_collections_id_items_mediaItemId"
      tags: ["Collections"]
      summary: "Add item"
      description: "Add item (post /api/v1/collections/{id}/items/{mediaItemId})."
      x-phlix-middleware: [AuthMiddleware]
      parameters:
        - name: "id"
          in: path
          required: true
          description: "Resource id."
          schema:
            type: string
        - name: "mediaItemId"
          in: path
          required: true
          description: "Media item id."
          schema:
            type: string
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "400":
          $ref: "#/components/responses/BadRequest"
        "429":
          $ref: "#/components/responses/TooManyRequests"
    delete:
      operationId: "delete_api_v1_collections_id_items_mediaItemId"
      tags: ["Collections"]
      summary: "Remove item"
      description: "Remove item (delete /api/v1/collections/{id}/items/{mediaItemId})."
      x-phlix-middleware: [AuthMiddleware]
      parameters:
        - name: "id"
          in: path
          required: true
          description: "Resource id."
          schema:
            type: string
        - name: "mediaItemId"
          in: path
          required: true
          description: "Media item id."
          schema:
            type: string
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "400":
          $ref: "#/components/responses/BadRequest"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/collections/{id}/refresh":
    post:
      operationId: "post_api_v1_collections_id_refresh"
      tags: ["Collections"]
      summary: "Refresh"
      description: "Refresh (post /api/v1/collections/{id}/refresh)."
      x-phlix-middleware: [AuthMiddleware]
      parameters:
        - name: "id"
          in: path
          required: true
          description: "Resource id."
          schema:
            type: string
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "400":
          $ref: "#/components/responses/BadRequest"
        "409":
          description: "Smart collection references a smart playlist that does not exist (SRV-M19)."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/dlna/renderers":
    get:
      operationId: "get_api_v1_dlna_renderers"
      tags: ["Casting"]
      summary: "List renderers"
      description: "List renderers (get /api/v1/dlna/renderers)."
      x-phlix-middleware: [AuthMiddleware]
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/dlna/renderers/{id}/pause":
    post:
      operationId: "post_api_v1_dlna_renderers_id_pause"
      tags: ["Casting"]
      summary: "Pause"
      description: "Pause (post /api/v1/dlna/renderers/{id}/pause)."
      x-phlix-middleware: [AuthMiddleware]
      parameters:
        - name: "id"
          in: path
          required: true
          description: "Resource id."
          schema:
            type: string
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "400":
          $ref: "#/components/responses/BadRequest"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/dlna/renderers/{id}/play":
    post:
      operationId: "post_api_v1_dlna_renderers_id_play"
      tags: ["Casting"]
      summary: "Play to"
      description: "Play to (post /api/v1/dlna/renderers/{id}/play)."
      x-phlix-middleware: [AuthMiddleware]
      parameters:
        - name: "id"
          in: path
          required: true
          description: "Resource id."
          schema:
            type: string
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "400":
          $ref: "#/components/responses/BadRequest"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/dlna/renderers/{id}/seek":
    post:
      operationId: "post_api_v1_dlna_renderers_id_seek"
      tags: ["Casting"]
      summary: "Seek"
      description: "Seek (post /api/v1/dlna/renderers/{id}/seek)."
      x-phlix-middleware: [AuthMiddleware]
      parameters:
        - name: "id"
          in: path
          required: true
          description: "Resource id."
          schema:
            type: string
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "400":
          $ref: "#/components/responses/BadRequest"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/dlna/renderers/{id}/status":
    get:
      operationId: "get_api_v1_dlna_renderers_id_status"
      tags: ["Casting"]
      summary: "Get status"
      description: "Get status (get /api/v1/dlna/renderers/{id}/status)."
      x-phlix-middleware: [AuthMiddleware]
      parameters:
        - name: "id"
          in: path
          required: true
          description: "Resource id."
          schema:
            type: string
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/dlna/renderers/{id}/stop":
    post:
      operationId: "post_api_v1_dlna_renderers_id_stop"
      tags: ["Casting"]
      summary: "Stop"
      description: "Stop (post /api/v1/dlna/renderers/{id}/stop)."
      x-phlix-middleware: [AuthMiddleware]
      parameters:
        - name: "id"
          in: path
          required: true
          description: "Resource id."
          schema:
            type: string
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "400":
          $ref: "#/components/responses/BadRequest"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/health/network":
    get:
      operationId: "get_api_v1_health_network"
      tags: ["System"]
      summary: "Network"
      description: "Network (get /api/v1/health/network)."
      x-phlix-middleware: [AuthMiddleware]
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/health/relay":
    get:
      operationId: "get_api_v1_health_relay"
      tags: ["System"]
      summary: "Relay"
      description: "Relay (get /api/v1/health/relay)."
      x-phlix-middleware: [AuthMiddleware]
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/libraries":
    get:
      operationId: "get_api_v1_libraries"
      tags: ["Libraries"]
      summary: "Index"
      description: "Index (get /api/v1/libraries)."
      x-phlix-middleware: []
      security: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "429":
          $ref: "#/components/responses/TooManyRequests"
    post:
      operationId: "post_api_v1_libraries"
      tags: ["Libraries"]
      summary: "Create"
      description: "Create (post /api/v1/libraries)."
      x-phlix-middleware: []
      security: []
      responses:
        "201":
          description: "Created."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "400":
          $ref: "#/components/responses/BadRequest"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/libraries/{id}":
    get:
      operationId: "get_api_v1_libraries_id"
      tags: ["Libraries"]
      summary: "Show"
      description: "Show (get /api/v1/libraries/{id})."
      x-phlix-middleware: []
      parameters:
        - name: "id"
          in: path
          required: true
          description: "Resource id."
          schema:
            type: string
      security: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "404":
          $ref: "#/components/responses/NotFound"
        "429":
          $ref: "#/components/responses/TooManyRequests"
    put:
      operationId: "put_api_v1_libraries_id"
      tags: ["Libraries"]
      summary: "Update"
      description: "Update (put /api/v1/libraries/{id})."
      x-phlix-middleware: []
      parameters:
        - name: "id"
          in: path
          required: true
          description: "Resource id."
          schema:
            type: string
      security: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "404":
          $ref: "#/components/responses/NotFound"
        "400":
          $ref: "#/components/responses/BadRequest"
        "429":
          $ref: "#/components/responses/TooManyRequests"
    delete:
      operationId: "delete_api_v1_libraries_id"
      tags: ["Libraries"]
      summary: "Delete"
      description: "Delete (delete /api/v1/libraries/{id})."
      x-phlix-middleware: []
      parameters:
        - name: "id"
          in: path
          required: true
          description: "Resource id."
          schema:
            type: string
      security: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "404":
          $ref: "#/components/responses/NotFound"
        "400":
          $ref: "#/components/responses/BadRequest"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/libraries/{id}/clear-artwork":
    post:
      operationId: "post_api_v1_libraries_id_clear_artwork"
      tags: ["Libraries"]
      summary: "Clear artwork"
      description: "Clear artwork (post /api/v1/libraries/{id}/clear-artwork)."
      x-phlix-middleware: []
      parameters:
        - name: "id"
          in: path
          required: true
          description: "Resource id."
          schema:
            type: string
      security: []
      responses:
        "202":
          description: "Accepted - asynchronous job queued (body: job_id, status)."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "404":
          $ref: "#/components/responses/NotFound"
        "400":
          $ref: "#/components/responses/BadRequest"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/libraries/{id}/clear-metadata":
    post:
      operationId: "post_api_v1_libraries_id_clear_metadata"
      tags: ["Libraries"]
      summary: "Clear metadata"
      description: "Clear metadata (post /api/v1/libraries/{id}/clear-metadata)."
      x-phlix-middleware: []
      parameters:
        - name: "id"
          in: path
          required: true
          description: "Resource id."
          schema:
            type: string
      security: []
      responses:
        "202":
          description: "Accepted - asynchronous job queued (body: job_id, status)."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "404":
          $ref: "#/components/responses/NotFound"
        "400":
          $ref: "#/components/responses/BadRequest"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/libraries/{id}/delete-all":
    post:
      operationId: "post_api_v1_libraries_id_delete_all"
      tags: ["Libraries"]
      summary: "Delete all"
      description: "Delete all (post /api/v1/libraries/{id}/delete-all)."
      x-phlix-middleware: []
      parameters:
        - name: "id"
          in: path
          required: true
          description: "Resource id."
          schema:
            type: string
      security: []
      responses:
        "202":
          description: "Accepted - asynchronous job queued (body: job_id, status)."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "404":
          $ref: "#/components/responses/NotFound"
        "400":
          $ref: "#/components/responses/BadRequest"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/libraries/{id}/items":
    get:
      operationId: "get_api_v1_libraries_id_items"
      tags: ["Libraries"]
      summary: "Get library items"
      description: "Get library items (get /api/v1/libraries/{id}/items)."
      x-phlix-middleware: [AuthMiddleware]
      parameters:
        - name: "id"
          in: path
          required: true
          description: "Resource id."
          schema:
            type: string
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/libraries/{id}/match-metadata":
    post:
      operationId: "post_api_v1_libraries_id_match_metadata"
      tags: ["Libraries"]
      summary: "Match metadata"
      description: "Match metadata (post /api/v1/libraries/{id}/match-metadata)."
      x-phlix-middleware: []
      parameters:
        - name: "id"
          in: path
          required: true
          description: "Resource id."
          schema:
            type: string
      security: []
      responses:
        "202":
          description: "Accepted - asynchronous job queued (body: job_id, status)."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "404":
          $ref: "#/components/responses/NotFound"
        "400":
          $ref: "#/components/responses/BadRequest"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/libraries/{id}/prune":
    post:
      operationId: "post_api_v1_libraries_id_prune"
      tags: ["Libraries"]
      summary: "Prune"
      description: "Prune (post /api/v1/libraries/{id}/prune)."
      x-phlix-middleware: []
      parameters:
        - name: "id"
          in: path
          required: true
          description: "Resource id."
          schema:
            type: string
      security: []
      responses:
        "202":
          description: "Accepted - asynchronous job queued (body: job_id, status)."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "404":
          $ref: "#/components/responses/NotFound"
        "400":
          $ref: "#/components/responses/BadRequest"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/libraries/{id}/refresh-metadata":
    post:
      operationId: "post_api_v1_libraries_id_refresh_metadata"
      tags: ["Libraries"]
      summary: "Refresh metadata"
      description: "Refresh metadata (post /api/v1/libraries/{id}/refresh-metadata)."
      x-phlix-middleware: []
      parameters:
        - name: "id"
          in: path
          required: true
          description: "Resource id."
          schema:
            type: string
      security: []
      responses:
        "202":
          description: "Accepted - asynchronous job queued (body: job_id, status)."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "404":
          $ref: "#/components/responses/NotFound"
        "400":
          $ref: "#/components/responses/BadRequest"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/libraries/{id}/regenerate-assets":
    post:
      operationId: "post_api_v1_libraries_id_regenerate_assets"
      tags: ["Libraries"]
      summary: "Regenerate assets"
      description: "Regenerate assets (post /api/v1/libraries/{id}/regenerate-assets)."
      x-phlix-middleware: []
      parameters:
        - name: "id"
          in: path
          required: true
          description: "Resource id."
          schema:
            type: string
      security: []
      responses:
        "202":
          description: "Accepted - asynchronous job queued (body: job_id, status)."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "404":
          $ref: "#/components/responses/NotFound"
        "400":
          $ref: "#/components/responses/BadRequest"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/libraries/{id}/rescan":
    post:
      operationId: "post_api_v1_libraries_id_rescan"
      tags: ["Libraries"]
      summary: "Rescan"
      description: "Rescan (post /api/v1/libraries/{id}/rescan)."
      x-phlix-middleware: []
      parameters:
        - name: "id"
          in: path
          required: true
          description: "Resource id."
          schema:
            type: string
      security: []
      responses:
        "202":
          description: "Accepted - asynchronous job queued (body: job_id, status)."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "404":
          $ref: "#/components/responses/NotFound"
        "400":
          $ref: "#/components/responses/BadRequest"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/libraries/{id}/scan":
    post:
      operationId: "post_api_v1_libraries_id_scan"
      tags: ["Libraries"]
      summary: "Scan"
      description: "Scan (post /api/v1/libraries/{id}/scan)."
      x-phlix-middleware: []
      parameters:
        - name: "id"
          in: path
          required: true
          description: "Resource id."
          schema:
            type: string
      security: []
      responses:
        "202":
          description: "Accepted - asynchronous job queued (body: job_id, status)."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "404":
          $ref: "#/components/responses/NotFound"
        "400":
          $ref: "#/components/responses/BadRequest"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/libraries/{id}/scan-history":
    get:
      operationId: "get_api_v1_libraries_id_scan_history"
      tags: ["Libraries"]
      summary: "Scan history"
      description: "Scan history (get /api/v1/libraries/{id}/scan-history)."
      x-phlix-middleware: []
      parameters:
        - name: "id"
          in: path
          required: true
          description: "Resource id."
          schema:
            type: string
      security: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "404":
          $ref: "#/components/responses/NotFound"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/libraries/{id}/scan-status":
    get:
      operationId: "get_api_v1_libraries_id_scan_status"
      tags: ["Libraries"]
      summary: "Scan status"
      description: "Scan status (get /api/v1/libraries/{id}/scan-status)."
      x-phlix-middleware: []
      parameters:
        - name: "id"
          in: path
          required: true
          description: "Resource id."
          schema:
            type: string
      security: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "404":
          $ref: "#/components/responses/NotFound"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/libraries/{id}/theme-media":
    get:
      operationId: "get_api_v1_libraries_id_theme_media"
      tags: ["Libraries"]
      summary: "Get theme media"
      description: "Get theme media (get /api/v1/libraries/{id}/theme-media)."
      x-phlix-middleware: []
      parameters:
        - name: "id"
          in: path
          required: true
          description: "Resource id."
          schema:
            type: string
      security: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "404":
          $ref: "#/components/responses/NotFound"
        "429":
          $ref: "#/components/responses/TooManyRequests"
    delete:
      operationId: "delete_api_v1_libraries_id_theme_media"
      tags: ["Libraries"]
      summary: "Delete theme media"
      description: "Delete theme media (delete /api/v1/libraries/{id}/theme-media)."
      x-phlix-middleware: []
      parameters:
        - name: "id"
          in: path
          required: true
          description: "Resource id."
          schema:
            type: string
      security: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "404":
          $ref: "#/components/responses/NotFound"
        "400":
          $ref: "#/components/responses/BadRequest"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/libraries/{id}/theme-media/scan":
    post:
      operationId: "post_api_v1_libraries_id_theme_media_scan"
      tags: ["Libraries"]
      summary: "Scan theme media"
      description: "Scan theme media (post /api/v1/libraries/{id}/theme-media/scan)."
      x-phlix-middleware: []
      parameters:
        - name: "id"
          in: path
          required: true
          description: "Resource id."
          schema:
            type: string
      security: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "404":
          $ref: "#/components/responses/NotFound"
        "400":
          $ref: "#/components/responses/BadRequest"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/libraries/{libraryId}/collections":
    get:
      operationId: "get_api_v1_libraries_libraryId_collections"
      tags: ["Libraries"]
      summary: "For library"
      description: "For library (get /api/v1/libraries/{libraryId}/collections)."
      x-phlix-middleware: [AuthMiddleware]
      parameters:
        - name: "libraryId"
          in: path
          required: true
          description: "Library id."
          schema:
            type: string
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/me/continue-watching":
    get:
      operationId: "get_api_v1_me_continue_watching"
      tags: ["Sessions"]
      summary: "Get continue watching"
      description: "Get continue watching (get /api/v1/me/continue-watching)."
      x-phlix-middleware: []
      security: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/me/playback/preferences":
    get:
      operationId: "get_api_v1_me_playback_preferences"
      tags: ["Sessions"]
      summary: "Get playback preferences"
      description: "Get playback preferences (get /api/v1/me/playback/preferences)."
      x-phlix-middleware: [AuthMiddleware]
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "429":
          $ref: "#/components/responses/TooManyRequests"
    put:
      operationId: "put_api_v1_me_playback_preferences"
      tags: ["Sessions"]
      summary: "Update playback preferences"
      description: "Update playback preferences (put /api/v1/me/playback/preferences)."
      x-phlix-middleware: [AuthMiddleware]
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "400":
          $ref: "#/components/responses/BadRequest"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/me/history":
    get:
      operationId: "get_api_v1_me_history"
      tags: ["Users"]
      summary: "Get watch history"
      description: "Get watch history (get /api/v1/me/history)."
      x-phlix-middleware: [AuthMiddleware]
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/me/recommendations":
    get:
      operationId: "get_api_v1_me_recommendations"
      tags: ["Sessions"]
      summary: "Get recommendations"
      description: "Get recommendations (get /api/v1/me/recommendations)."
      x-phlix-middleware: [AuthMiddleware]
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/me/recommendations/{mediaItemId}":
    delete:
      operationId: "delete_api_v1_me_recommendations_mediaItemId"
      tags: ["Sessions"]
      summary: "Dismiss recommendation"
      description: "Dismiss recommendation (delete /api/v1/me/recommendations/{mediaItemId})."
      x-phlix-middleware: [AuthMiddleware]
      parameters:
        - name: "mediaItemId"
          in: path
          required: true
          description: "Media item id."
          schema:
            type: string
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "400":
          $ref: "#/components/responses/BadRequest"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/me/sessions":
    get:
      operationId: "get_api_v1_me_sessions"
      tags: ["Sessions"]
      summary: "List sessions"
      description: "List sessions (get /api/v1/me/sessions)."
      x-phlix-middleware: []
      security: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/me/webauthn/credentials":
    get:
      operationId: "get_api_v1_me_webauthn_credentials"
      tags: ["Sessions"]
      summary: "List credentials"
      description: "List credentials (get /api/v1/me/webauthn/credentials)."
      x-phlix-middleware: []
      security: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/me/webauthn/credentials/{id}":
    delete:
      operationId: "delete_api_v1_me_webauthn_credentials_id"
      tags: ["Sessions"]
      summary: "Delete credential"
      description: "Delete credential (delete /api/v1/me/webauthn/credentials/{id})."
      x-phlix-middleware: []
      parameters:
        - name: "id"
          in: path
          required: true
          description: "Resource id."
          schema:
            type: string
      security: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "404":
          $ref: "#/components/responses/NotFound"
        "400":
          $ref: "#/components/responses/BadRequest"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/media":
    get:
      operationId: "get_api_v1_media"
      tags: ["Media"]
      summary: "Get media"
      description: "Get media (get /api/v1/media)."
      x-phlix-middleware: [AuthMiddleware]
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/media/facets":
    get:
      operationId: "get_api_v1_media_facets"
      tags: ["Media"]
      summary: "Get media facets"
      description: "Get media facets (get /api/v1/media/facets)."
      x-phlix-middleware: [AuthMiddleware]
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/media/index":
    get:
      operationId: "get_api_v1_media_index"
      tags: ["Media"]
      summary: "Index"
      description: "Index (get /api/v1/media/index)."
      x-phlix-middleware: [AuthMiddleware]
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/media/letter-index":
    get:
      operationId: "get_api_v1_media_letter_index"
      tags: ["Media"]
      summary: "Get letter index"
      description: "Get letter index (get /api/v1/media/letter-index)."
      x-phlix-middleware: [AuthMiddleware]
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/media/most-watched":
    get:
      operationId: "get_api_v1_media_most_watched"
      tags: ["Media"]
      summary: "Most watched"
      description: "Most watched (get /api/v1/media/most-watched)."
      x-phlix-middleware: [AuthMiddleware]
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/media/search":
    get:
      operationId: "get_api_v1_media_search"
      tags: ["Media"]
      summary: "Search media"
      description: "Search media (get /api/v1/media/search)."
      x-phlix-middleware: [AuthMiddleware]
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/media/search/by-marker":
    get:
      operationId: "get_api_v1_media_search_by_marker"
      tags: ["Media"]
      summary: "Search by marker"
      description: "Search by marker (get /api/v1/media/search/by-marker)."
      x-phlix-middleware: [AuthMiddleware]
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/media/{id}":
    get:
      operationId: "get_api_v1_media_id"
      tags: ["Media"]
      summary: "Get media item"
      description: "Get media item (get /api/v1/media/{id})."
      x-phlix-middleware: [AuthMiddleware]
      parameters:
        - name: "id"
          in: path
          required: true
          description: "Resource id."
          schema:
            type: string
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "429":
          $ref: "#/components/responses/TooManyRequests"
    delete:
      operationId: "delete_api_v1_media_id"
      tags: ["Media"]
      summary: "Delete"
      description: "Delete (delete /api/v1/media/{id})."
      x-phlix-middleware: [AdminMiddleware]
      parameters:
        - name: "id"
          in: path
          required: true
          description: "Resource id."
          schema:
            type: string
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "400":
          $ref: "#/components/responses/BadRequest"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/media/{id}/chapters":
    get:
      operationId: "get_api_v1_media_id_chapters"
      tags: ["Media"]
      summary: "Get media chapters"
      description: "Get media chapters (get /api/v1/media/{id}/chapters)."
      x-phlix-middleware: [AuthMiddleware]
      parameters:
        - name: "id"
          in: path
          required: true
          description: "Resource id."
          schema:
            type: string
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/media/{id}/chapters/{index}/thumbnail":
    get:
      operationId: "get_api_v1_media_id_chapters_index_thumbnail"
      tags: ["Media"]
      summary: "Get chapter thumbnail"
      description: "Get chapter thumbnail (get /api/v1/media/{id}/chapters/{index}/thumbnail)."
      x-phlix-middleware: []
      parameters:
        - name: "id"
          in: path
          required: true
          description: "Resource id."
          schema:
            type: string
        - name: "index"
          in: path
          required: true
          description: "Zero-based index."
          schema:
            type: string
      security: []
      responses:
        "200":
          description: "Success. Streams the media/binary resource."
          content:
            '*/*':
              schema: {}
        "404":
          $ref: "#/components/responses/NotFound"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/media/{id}/collection":
    get:
      operationId: "get_api_v1_media_id_collection"
      tags: ["Media"]
      summary: "Get media item collection"
      description: "Get media item collection (get /api/v1/media/{id}/collection)."
      x-phlix-middleware: [AuthMiddleware]
      parameters:
        - name: "id"
          in: path
          required: true
          description: "Resource id."
          schema:
            type: string
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/media/{id}/download":
    get:
      operationId: "get_api_v1_media_id_download"
      tags: ["Media"]
      summary: "Get download"
      description: "Get download (get /api/v1/media/{id}/download)."
      x-phlix-middleware: [AuthMiddleware]
      parameters:
        - name: "id"
          in: path
          required: true
          description: "Resource id."
          schema:
            type: string
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success. Streams the media/binary resource."
          content:
            '*/*':
              schema: {}
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/media/{id}/extras":
    get:
      operationId: "get_api_v1_media_id_extras"
      tags: ["Media"]
      summary: "Get extras"
      description: "Get extras (get /api/v1/media/{id}/extras)."
      x-phlix-middleware: [AuthMiddleware]
      parameters:
        - name: "id"
          in: path
          required: true
          description: "Resource id."
          schema:
            type: string
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/media/{id}/extras/other":
    get:
      operationId: "get_api_v1_media_id_extras_other"
      tags: ["Media"]
      summary: "Get other extras"
      description: "Get other extras (get /api/v1/media/{id}/extras/other)."
      x-phlix-middleware: [AuthMiddleware]
      parameters:
        - name: "id"
          in: path
          required: true
          description: "Resource id."
          schema:
            type: string
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/media/{id}/favorite":
    post:
      operationId: "post_api_v1_media_id_favorite"
      tags: ["Media"]
      summary: "Add favorite"
      description: "Add favorite (post /api/v1/media/{id}/favorite)."
      x-phlix-middleware: [AuthMiddleware]
      parameters:
        - name: "id"
          in: path
          required: true
          description: "Resource id."
          schema:
            type: string
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "400":
          $ref: "#/components/responses/BadRequest"
        "429":
          $ref: "#/components/responses/TooManyRequests"
    delete:
      operationId: "delete_api_v1_media_id_favorite"
      tags: ["Media"]
      summary: "Remove favorite"
      description: "Remove favorite (delete /api/v1/media/{id}/favorite)."
      x-phlix-middleware: [AuthMiddleware]
      parameters:
        - name: "id"
          in: path
          required: true
          description: "Resource id."
          schema:
            type: string
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "400":
          $ref: "#/components/responses/BadRequest"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/media/{id}/like":
    put:
      operationId: "put_api_v1_media_id_like"
      tags: ["Media"]
      summary: "Set like level"
      description: "Set like level (put /api/v1/media/{id}/like)."
      x-phlix-middleware: [AuthMiddleware]
      parameters:
        - name: "id"
          in: path
          required: true
          description: "Resource id."
          schema:
            type: string
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "400":
          $ref: "#/components/responses/BadRequest"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/media/{id}/markers":
    get:
      operationId: "get_api_v1_media_id_markers"
      tags: ["Media"]
      summary: "Get markers"
      description: "Get markers (get /api/v1/media/{id}/markers)."
      x-phlix-middleware: [AuthMiddleware]
      parameters:
        - name: "id"
          in: path
          required: true
          description: "Resource id."
          schema:
            type: string
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "429":
          $ref: "#/components/responses/TooManyRequests"
    post:
      operationId: "post_api_v1_media_id_markers"
      tags: ["Media"]
      summary: "Create marker"
      description: "Create marker (post /api/v1/media/{id}/markers)."
      x-phlix-middleware: [AuthMiddleware]
      parameters:
        - name: "id"
          in: path
          required: true
          description: "Resource id."
          schema:
            type: string
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "400":
          $ref: "#/components/responses/BadRequest"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/media/{id}/markers/intro":
    get:
      operationId: "get_api_v1_media_id_markers_intro"
      tags: ["Media"]
      summary: "Get intro marker"
      description: "Get intro marker (get /api/v1/media/{id}/markers/intro)."
      x-phlix-middleware: [AuthMiddleware]
      parameters:
        - name: "id"
          in: path
          required: true
          description: "Resource id."
          schema:
            type: string
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/media/{id}/markers/outro":
    get:
      operationId: "get_api_v1_media_id_markers_outro"
      tags: ["Media"]
      summary: "Get outro marker"
      description: "Get outro marker (get /api/v1/media/{id}/markers/outro)."
      x-phlix-middleware: [AuthMiddleware]
      parameters:
        - name: "id"
          in: path
          required: true
          description: "Resource id."
          schema:
            type: string
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/media/{id}/markers/search":
    get:
      operationId: "get_api_v1_media_id_markers_search"
      tags: ["Media"]
      summary: "Search media markers"
      description: "Search media markers (get /api/v1/media/{id}/markers/search)."
      x-phlix-middleware: [AuthMiddleware]
      parameters:
        - name: "id"
          in: path
          required: true
          description: "Resource id."
          schema:
            type: string
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/media/{id}/markers/{markerId}":
    delete:
      operationId: "delete_api_v1_media_id_markers_markerId"
      tags: ["Media"]
      summary: "Delete marker"
      description: "Delete marker (delete /api/v1/media/{id}/markers/{markerId})."
      x-phlix-middleware: [AuthMiddleware]
      parameters:
        - name: "id"
          in: path
          required: true
          description: "Resource id."
          schema:
            type: string
        - name: "markerId"
          in: path
          required: true
          description: "Marker id."
          schema:
            type: string
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "400":
          $ref: "#/components/responses/BadRequest"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/media/{id}/match/apply":
    post:
      operationId: "post_api_v1_media_id_match_apply"
      tags: ["Media"]
      summary: "Apply"
      description: "Apply (post /api/v1/media/{id}/match/apply)."
      x-phlix-middleware: []
      parameters:
        - name: "id"
          in: path
          required: true
          description: "Resource id."
          schema:
            type: string
      security: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "404":
          $ref: "#/components/responses/NotFound"
        "400":
          $ref: "#/components/responses/BadRequest"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/media/{id}/match/search":
    get:
      operationId: "get_api_v1_media_id_match_search"
      tags: ["Media"]
      summary: "Search"
      description: "Search (get /api/v1/media/{id}/match/search)."
      x-phlix-middleware: []
      parameters:
        - name: "id"
          in: path
          required: true
          description: "Resource id."
          schema:
            type: string
      security: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "404":
          $ref: "#/components/responses/NotFound"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/media/{id}/metadata":
    patch:
      operationId: "patch_api_v1_media_id_metadata"
      tags: ["Media"]
      summary: "Update metadata"
      description: "Update metadata (patch /api/v1/media/{id}/metadata)."
      x-phlix-middleware: [AuthMiddleware]
      parameters:
        - name: "id"
          in: path
          required: true
          description: "Resource id."
          schema:
            type: string
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "400":
          $ref: "#/components/responses/BadRequest"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/media/{id}/missing-episodes":
    get:
      operationId: "get_api_v1_media_id_missing_episodes"
      tags: ["Media"]
      summary: "Get missing episodes"
      description: "Get missing episodes (get /api/v1/media/{id}/missing-episodes)."
      x-phlix-middleware: [AuthMiddleware]
      parameters:
        - name: "id"
          in: path
          required: true
          description: "Resource id."
          schema:
            type: string
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/media/{id}/playback":
    get:
      operationId: "get_api_v1_media_id_playback"
      tags: ["Media"]
      summary: "Get playback info"
      description: "Get playback info (get /api/v1/media/{id}/playback)."
      x-phlix-middleware: [AuthMiddleware]
      parameters:
        - name: "id"
          in: path
          required: true
          description: "Resource id."
          schema:
            type: string
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/media/{id}/playback-info":
    get:
      operationId: "get_api_v1_media_id_playback_info"
      tags: ["Media"]
      summary: "Get playback info"
      description: "Get playback info (get /api/v1/media/{id}/playback-info)."
      x-phlix-middleware: [AuthMiddleware]
      parameters:
        - name: "id"
          in: path
          required: true
          description: "Resource id."
          schema:
            type: string
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/media/{id}/poster":
    put:
      operationId: "put_api_v1_media_id_poster"
      tags: ["Media"]
      summary: "Set poster"
      description: "Set poster (put /api/v1/media/{id}/poster)."
      x-phlix-middleware: []
      parameters:
        - name: "id"
          in: path
          required: true
          description: "Resource id."
          schema:
            type: string
      security: []
      responses:
        "200":
          description: "Success. Streams the media/binary resource."
          content:
            '*/*':
              schema: {}
        "404":
          $ref: "#/components/responses/NotFound"
        "400":
          $ref: "#/components/responses/BadRequest"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/media/{id}/posters":
    get:
      operationId: "get_api_v1_media_id_posters"
      tags: ["Media"]
      summary: "List posters"
      description: "List posters (get /api/v1/media/{id}/posters)."
      x-phlix-middleware: []
      parameters:
        - name: "id"
          in: path
          required: true
          description: "Resource id."
          schema:
            type: string
      security: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "404":
          $ref: "#/components/responses/NotFound"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/media/{id}/rating":
    put:
      operationId: "put_api_v1_media_id_rating"
      tags: ["Media"]
      summary: "Set rating"
      description: "Set rating (put /api/v1/media/{id}/rating)."
      x-phlix-middleware: [AuthMiddleware]
      parameters:
        - name: "id"
          in: path
          required: true
          description: "Resource id."
          schema:
            type: string
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "400":
          $ref: "#/components/responses/BadRequest"
        "429":
          $ref: "#/components/responses/TooManyRequests"
    delete:
      operationId: "delete_api_v1_media_id_rating"
      tags: ["Media"]
      summary: "Clear rating"
      description: "Clear rating (delete /api/v1/media/{id}/rating)."
      x-phlix-middleware: [AuthMiddleware]
      parameters:
        - name: "id"
          in: path
          required: true
          description: "Resource id."
          schema:
            type: string
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "400":
          $ref: "#/components/responses/BadRequest"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/media/{id}/ratings":
    get:
      operationId: "get_api_v1_media_id_ratings"
      tags: ["Media"]
      summary: "Get ratings"
      description: "Get ratings (get /api/v1/media/{id}/ratings)."
      x-phlix-middleware: []
      parameters:
        - name: "id"
          in: path
          required: true
          description: "Resource id."
          schema:
            type: string
      security: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "404":
          $ref: "#/components/responses/NotFound"
        "429":
          $ref: "#/components/responses/TooManyRequests"
    post:
      operationId: "post_api_v1_media_id_ratings"
      tags: ["Media"]
      summary: "Create rating"
      description: "Create rating (post /api/v1/media/{id}/ratings)."
      x-phlix-middleware: [AuthMiddleware]
      parameters:
        - name: "id"
          in: path
          required: true
          description: "Resource id."
          schema:
            type: string
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "400":
          $ref: "#/components/responses/BadRequest"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/media/{id}/similar":
    get:
      operationId: "get_api_v1_media_id_similar"
      tags: ["Media"]
      summary: "Get similar items"
      description: "Get similar items (get /api/v1/media/{id}/similar)."
      x-phlix-middleware: [AuthMiddleware, AuthMiddleware]
      parameters:
        - name: "id"
          in: path
          required: true
          description: "Resource id."
          schema:
            type: string
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/media/{id}/subtitles":
    get:
      operationId: "get_api_v1_media_id_subtitles"
      tags: ["Media"]
      summary: "List tracks"
      description: "List tracks (get /api/v1/media/{id}/subtitles)."
      x-phlix-middleware: [AuthMiddleware]
      parameters:
        - name: "id"
          in: path
          required: true
          description: "Resource id."
          schema:
            type: string
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/media/{id}/subtitles/download":
    post:
      operationId: "post_api_v1_media_id_subtitles_download"
      tags: ["Media"]
      summary: "Download"
      description: "Download (post /api/v1/media/{id}/subtitles/download)."
      x-phlix-middleware: [AuthMiddleware]
      parameters:
        - name: "id"
          in: path
          required: true
          description: "Resource id."
          schema:
            type: string
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success. Streams the media/binary resource."
          content:
            '*/*':
              schema: {}
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "400":
          $ref: "#/components/responses/BadRequest"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/media/{id}/subtitles/external/{streamId}":
    get:
      operationId: "get_api_v1_media_id_subtitles_external_streamId"
      tags: ["Media"]
      summary: "Serve external"
      description: "Serve external (get /api/v1/media/{id}/subtitles/external/{streamId})."
      x-phlix-middleware: [SignedUrlMiddleware]
      parameters:
        - name: "id"
          in: path
          required: true
          description: "Resource id."
          schema:
            type: string
        - name: "streamId"
          in: path
          required: true
          description: "Audio/subtitle stream index."
          schema:
            type: string
      security: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/media/{id}/subtitles/search":
    get:
      operationId: "get_api_v1_media_id_subtitles_search"
      tags: ["Media"]
      summary: "Search"
      description: "Search (get /api/v1/media/{id}/subtitles/search)."
      x-phlix-middleware: [AuthMiddleware]
      parameters:
        - name: "id"
          in: path
          required: true
          description: "Resource id."
          schema:
            type: string
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/media/{id}/subtitles/{index}":
    get:
      operationId: "get_api_v1_media_id_subtitles_index"
      tags: ["Media"]
      summary: "Get track"
      description: "Get track (get /api/v1/media/{id}/subtitles/{index})."
      x-phlix-middleware: [SignedUrlMiddleware]
      parameters:
        - name: "id"
          in: path
          required: true
          description: "Resource id."
          schema:
            type: string
        - name: "index"
          in: path
          required: true
          description: "Zero-based index."
          schema:
            type: string
      security: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/media/{id}/trailers":
    get:
      operationId: "get_api_v1_media_id_trailers"
      tags: ["Media"]
      summary: "Get trailers"
      description: "Get trailers (get /api/v1/media/{id}/trailers)."
      x-phlix-middleware: [AuthMiddleware]
      parameters:
        - name: "id"
          in: path
          required: true
          description: "Resource id."
          schema:
            type: string
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/media/{id}/transcode":
    post:
      operationId: "post_api_v1_media_id_transcode"
      tags: ["Media"]
      summary: "Start"
      description: "Start (post /api/v1/media/{id}/transcode)."
      x-phlix-middleware: [AuthMiddleware]
      parameters:
        - name: "id"
          in: path
          required: true
          description: "Resource id."
          schema:
            type: string
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "400":
          $ref: "#/components/responses/BadRequest"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/media/{id}/trickplay":
    get:
      operationId: "get_api_v1_media_id_trickplay"
      tags: ["Media"]
      summary: "Get trickplay"
      description: "Get trickplay (get /api/v1/media/{id}/trickplay)."
      x-phlix-middleware: []
      parameters:
        - name: "id"
          in: path
          required: true
          description: "Resource id."
          schema:
            type: string
      security: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "404":
          $ref: "#/components/responses/NotFound"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/media/{id}/unwatched":
    post:
      operationId: "post_api_v1_media_id_unwatched"
      tags: ["Media"]
      summary: "Mark unwatched"
      description: "Mark unwatched (post /api/v1/media/{id}/unwatched)."
      x-phlix-middleware: [AuthMiddleware]
      parameters:
        - name: "id"
          in: path
          required: true
          description: "Resource id."
          schema:
            type: string
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "400":
          $ref: "#/components/responses/BadRequest"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/media/{id}/watched":
    post:
      operationId: "post_api_v1_media_id_watched"
      tags: ["Media"]
      summary: "Mark watched"
      description: "Mark watched (post /api/v1/media/{id}/watched)."
      x-phlix-middleware: [AuthMiddleware]
      parameters:
        - name: "id"
          in: path
          required: true
          description: "Resource id."
          schema:
            type: string
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "400":
          $ref: "#/components/responses/BadRequest"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/music/album":
    get:
      operationId: "get_api_v1_music_album"
      tags: ["Music & Books"]
      summary: "Get album by name query param"
      description: "Get album (get /api/v1/music/album). The album TITLE rides the required `name` query parameter, percent-encoded on the wire and decoded once by the request layer; the only spelling whose name can contain `/`, since the relay path guard rejects encoded slashes in the path segment. `artist` optionally disambiguates shared titles."
      x-phlix-middleware: [AuthMiddleware]
      parameters:
        - name: "name"
          in: query
          required: true
          description: "Album title."
          schema:
            type: string
        - name: "artist"
          in: query
          required: false
          description: "Artist name."
          schema:
            type: string
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/music/albums":
    get:
      operationId: "get_api_v1_music_albums"
      tags: ["Music & Books"]
      summary: "List albums"
      description: "List albums (get /api/v1/music/albums)."
      x-phlix-middleware: [AuthMiddleware]
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/music/albums/{mbid}":
    get:
      operationId: "get_api_v1_music_albums_mbid"
      tags: ["Music & Books"]
      summary: "Get album"
      description: "Get album (get /api/v1/music/albums/{mbid})."
      x-phlix-middleware: [AuthMiddleware]
      parameters:
        - name: "mbid"
          in: path
          required: true
          description: "MusicBrainz id."
          schema:
            type: string
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/music/artist":
    get:
      operationId: "get_api_v1_music_artist"
      tags: ["Music & Books"]
      summary: "Get artist by name query param"
      description: "Get artist (get /api/v1/music/artist). The artist NAME rides the required `name` query parameter, percent-encoded on the wire and decoded once by the request layer; the only spelling whose name can contain `/`, since the relay path guard rejects encoded slashes in the path segment."
      x-phlix-middleware: [AuthMiddleware]
      parameters:
        - name: "name"
          in: query
          required: true
          description: "Artist name."
          schema:
            type: string
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/music/artists":
    get:
      operationId: "get_api_v1_music_artists"
      tags: ["Music & Books"]
      summary: "List artists"
      description: "List artists (get /api/v1/music/artists)."
      x-phlix-middleware: [AuthMiddleware]
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/music/artists/{mbid}":
    get:
      operationId: "get_api_v1_music_artists_mbid"
      tags: ["Music & Books"]
      summary: "Get artist"
      description: "Get artist (get /api/v1/music/artists/{mbid})."
      x-phlix-middleware: [AuthMiddleware]
      parameters:
        - name: "mbid"
          in: path
          required: true
          description: "MusicBrainz id."
          schema:
            type: string
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/music/now-playing":
    get:
      operationId: "get_api_v1_music_now_playing"
      tags: ["Music & Books"]
      summary: "Now playing"
      description: "Now playing (get /api/v1/music/now-playing)."
      x-phlix-middleware: [AuthMiddleware]
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/music/scan":
    post:
      operationId: "post_api_v1_music_scan"
      tags: ["Music & Books"]
      summary: "Scan music directory"
      description: "Scan music directory (post /api/v1/music/scan)."
      x-phlix-middleware: [AdminMiddleware]
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "400":
          $ref: "#/components/responses/BadRequest"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/music/tracks":
    get:
      operationId: "get_api_v1_music_tracks"
      tags: ["Music & Books"]
      summary: "List tracks"
      description: "List tracks (get /api/v1/music/tracks)."
      x-phlix-middleware: [AuthMiddleware]
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/music/tracks/{id}":
    get:
      operationId: "get_api_v1_music_tracks_id"
      tags: ["Music & Books"]
      summary: "Get track"
      description: "Get track (get /api/v1/music/tracks/{id})."
      x-phlix-middleware: [AuthMiddleware]
      parameters:
        - name: "id"
          in: path
          required: true
          description: "Resource id."
          schema:
            type: string
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/oauth/lastfm":
    get:
      operationId: "get_api_v1_oauth_lastfm"
      tags: ["Integrations"]
      summary: "Api authorize"
      description: "Api authorize (get /api/v1/oauth/lastfm)."
      x-phlix-middleware: [AdminMiddleware]
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "302":
          description: "Found - browser redirect to the provider authorization URL. No JSON body."
          headers:
            Location:
              description: "Provider authorization URL."
              schema:
                type: string
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/oauth/lastfm/callback":
    get:
      operationId: "get_api_v1_oauth_lastfm_callback"
      tags: ["Integrations"]
      summary: "Api callback"
      description: "Api callback (get /api/v1/oauth/lastfm/callback)."
      x-phlix-middleware: [AdminMiddleware]
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "302":
          description: "Found - browser redirect to the application continuation route. No JSON body."
          headers:
            Location:
              description: "Application route carrying the handshake outcome."
              schema:
                type: string
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/oauth/trakt":
    get:
      operationId: "get_api_v1_oauth_trakt"
      tags: ["Integrations"]
      summary: "Authorize"
      description: "Authorize (get /api/v1/oauth/trakt)."
      x-phlix-middleware: []
      security: []
      responses:
        "302":
          description: "Found - browser redirect to the provider authorization URL. No JSON body."
          headers:
            Location:
              description: "Provider authorization URL."
              schema:
                type: string
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/oauth/trakt/callback":
    get:
      operationId: "get_api_v1_oauth_trakt_callback"
      tags: ["Integrations"]
      summary: "Callback"
      description: "Callback (get /api/v1/oauth/trakt/callback)."
      x-phlix-middleware: []
      security: []
      responses:
        "302":
          description: "Found - browser redirect to the application continuation route. No JSON body."
          headers:
            Location:
              description: "Application route carrying the handshake outcome."
              schema:
                type: string
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/photo/albums":
    get:
      operationId: "get_api_v1_photo_albums"
      tags: ["Photos"]
      summary: "List albums"
      description: "List albums (get /api/v1/photo/albums)."
      x-phlix-middleware: [AuthMiddleware]
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/photo/albums/{id}":
    get:
      operationId: "get_api_v1_photo_albums_id"
      tags: ["Photos"]
      summary: "Get album"
      description: "Get album (get /api/v1/photo/albums/{id})."
      x-phlix-middleware: [AuthMiddleware]
      parameters:
        - name: "id"
          in: path
          required: true
          description: "Resource id."
          schema:
            type: string
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/photo/photos":
    get:
      operationId: "get_api_v1_photo_photos"
      tags: ["Photos"]
      summary: "List photos"
      description: "List photos (get /api/v1/photo/photos)."
      x-phlix-middleware: [AuthMiddleware]
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/photo/photos/{id}":
    get:
      operationId: "get_api_v1_photo_photos_id"
      tags: ["Photos"]
      summary: "Get photo"
      description: "Get photo (get /api/v1/photo/photos/{id})."
      x-phlix-middleware: [AuthMiddleware]
      parameters:
        - name: "id"
          in: path
          required: true
          description: "Resource id."
          schema:
            type: string
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  # S73: person-photo bytes from S72's flat `people-{tmdbPersonId}` artwork cache.
  # Registered OUTSIDE the auth group (route-level middleware []), but gated
  # handler-side by ArtworkByteResponder::rejectUnlessSigned (session user OR a
  # valid signed-URL) — so `[]` is not proof of ungated (S272): a missing/invalid
  # `w` width yields 400 BEFORE auth, an unauthenticated request yields 401, a
  # variant miss yields 404, a conditional-GET hit yields 304, and success is the
  # image/jpeg (or image/png for the logo width) byte stream. Mirrors
  # tests/Unit/Server/WebPortal/WebPortalRouterWirePathGuardTest MANIFEST.
  "/api/v1/people/{personId}/photo":
    get:
      operationId: "get_api_v1_people_person_photo"
      tags: ["Media"]
      summary: "Get person photo"
      description: "Get person photo (get /api/v1/people/{personId}/photo)."
      x-phlix-middleware: []
      parameters:
        - name: "personId"
          in: path
          required: true
          description: "TMDB person id — the flat artwork cache key suffix S72 writes."
          schema:
            type: string
      security: []
      responses:
        "200":
          description: "Success. Streams the person-photo image (image/jpeg, or image/png for the logo width)."
          content:
            '*/*':
              schema: {}
        "304":
          description: "Not Modified — conditional GET matching the resource validators."
        "400":
          $ref: "#/components/responses/BadRequest"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "404":
          $ref: "#/components/responses/NotFound"
  "/api/v1/photo/photos/{id}/full":
    get:
      operationId: "get_api_v1_photo_photos_id_full"
      tags: ["Photos"]
      summary: "Get full"
      description: "Get full (get /api/v1/photo/photos/{id}/full)."
      x-phlix-middleware: [SignedUrlMiddleware]
      parameters:
        - name: "id"
          in: path
          required: true
          description: "Resource id."
          schema:
            type: string
      security: []
      responses:
        "200":
          description: "Success. Streams the media/binary resource."
          content:
            '*/*':
              schema: {}
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/photo/photos/{id}/thumbnail":
    get:
      operationId: "get_api_v1_photo_photos_id_thumbnail"
      tags: ["Photos"]
      summary: "Get thumbnail"
      description: "Get thumbnail (get /api/v1/photo/photos/{id}/thumbnail)."
      x-phlix-middleware: [SignedUrlMiddleware]
      parameters:
        - name: "id"
          in: path
          required: true
          description: "Resource id."
          schema:
            type: string
      security: []
      responses:
        "200":
          description: "Success. Streams the media/binary resource."
          content:
            '*/*':
              schema: {}
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/photo/slideshow":
    get:
      operationId: "get_api_v1_photo_slideshow"
      tags: ["Photos"]
      summary: "Slideshow"
      description: "Slideshow (get /api/v1/photo/slideshow)."
      x-phlix-middleware: [AuthMiddleware]
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/playlists":
    post:
      operationId: "post_api_v1_playlists"
      tags: ["Collections"]
      summary: "Create"
      description: "Create (post /api/v1/playlists)."
      x-phlix-middleware: [AuthMiddleware]
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "201":
          description: "Created."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "400":
          $ref: "#/components/responses/BadRequest"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/profiles":
    get:
      operationId: "get_api_v1_profiles"
      tags: ["Profiles"]
      summary: "List"
      description: "List (get /api/v1/profiles)."
      x-phlix-middleware: [AuthMiddleware]
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "429":
          $ref: "#/components/responses/TooManyRequests"
    post:
      operationId: "post_api_v1_profiles"
      tags: ["Profiles"]
      summary: "Create"
      description: "Create (post /api/v1/profiles)."
      x-phlix-middleware: [AuthMiddleware]
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "201":
          description: "Created."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "400":
          $ref: "#/components/responses/BadRequest"
        "429":
          $ref: "#/components/responses/TooManyRequests"
  "/api/v1/profiles/{profileId}":
    get:
      operationId: "get_api_v1_profiles_profileId"
      tags: ["Profiles"]
      summary: "Get"
      description: "Get (get /api/v1/profiles/{profileId})."
      x-phlix-middleware: [AuthMiddleware]
      parameters:
        - name: "profileId"
          in: path
          required: true
          description: "User profile id."
          schema:
            type: string
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "429":
          $ref: "#/components/responses/TooManyRequests"
    put:
      operationId: "put_api_v1_profiles_profileId"
      tags: ["Profiles"]
      summary: "Update"
      description: "Update (put /api/v1/profiles/{profileId})."
      x-phlix-middleware: [AuthMiddleware]
      parameters:
        - name: "profileId"
          in: path
          required: true
          description: "User profile id."
          schema:
            type: string
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "400":
          $ref: "#/components/responses/BadRequest"
        "429":
          $ref: "#/components/responses/TooManyRequests"
    delete:
      operationId: "delete_api_v1_profiles_profileId"
      tags: ["Profiles"]
      summary: "Delete"
      description: "Delete (delete /api/v1/profiles/{profileId})."
      x-phlix-middleware: [AuthMiddleware]
      parameters:
        - name: "profileId"
          in: path
          required: true
          description: "User profile id."
          schema:
            type: string
      security:
        - bearerAuth: []
        - sessionCookie: []
      responses:
        "200":
          description: "Success."
          content:
            application/json:
              schema:
                type: object