mirror of
https://github.com/jakejarvis/sofa.git
synced 2026-07-14 18:15:56 -04:00
refactor(docs): split grouped API reference pages into per-procedure MDX files
Replace the single MDX file per API tag (e.g. `admin.mdx`, `titles.mdx`) with individual files for each procedure (e.g. `admin/admin.backups.create.mdx`). Each file renders a single `<APIPage>` with one operation, includes an inline description, and carries its own `_openapi` frontmatter. Update `generate-api-docs.ts` to emit this per-procedure structure and adjust `source.ts` and `next.config.mjs` to resolve the new paths correctly.
This commit is contained in:
@@ -1,37 +0,0 @@
|
||||
---
|
||||
title: Account
|
||||
description: User account management
|
||||
full: true
|
||||
_openapi:
|
||||
toc:
|
||||
- depth: 2
|
||||
title: Update display name
|
||||
url: '#update-display-name'
|
||||
- depth: 2
|
||||
title: Upload avatar
|
||||
url: '#upload-avatar'
|
||||
- depth: 2
|
||||
title: Remove avatar
|
||||
url: '#remove-avatar'
|
||||
structuredData:
|
||||
headings:
|
||||
- content: Update display name
|
||||
id: update-display-name
|
||||
- content: Upload avatar
|
||||
id: upload-avatar
|
||||
- content: Remove avatar
|
||||
id: remove-avatar
|
||||
contents:
|
||||
- content: Change the current user's display name.
|
||||
heading: update-display-name
|
||||
- content: >-
|
||||
Upload a new profile avatar image. Accepts JPEG, PNG, WebP, or GIF up
|
||||
to 2 MB.
|
||||
heading: upload-avatar
|
||||
- content: Delete the current user's profile avatar, reverting to the default.
|
||||
heading: remove-avatar
|
||||
---
|
||||
|
||||
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
|
||||
|
||||
<APIPage document={"./openapi.json"} webhooks={[]} operations={[{"path":"/account/name","method":"put"},{"path":"/account/avatar","method":"post"},{"path":"/account/avatar","method":"delete"}]} showTitle={true} />
|
||||
@@ -0,0 +1,17 @@
|
||||
---
|
||||
title: Remove avatar
|
||||
full: true
|
||||
_openapi:
|
||||
method: DELETE
|
||||
toc: []
|
||||
structuredData:
|
||||
headings: []
|
||||
contents:
|
||||
- content: Delete the current user's profile avatar, reverting to the default.
|
||||
---
|
||||
|
||||
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
|
||||
|
||||
Delete the current user's profile avatar, reverting to the default.
|
||||
|
||||
<APIPage document={"./openapi.json"} operations={[{"path":"/account/avatar","method":"delete"}]} />
|
||||
@@ -0,0 +1,17 @@
|
||||
---
|
||||
title: Update display name
|
||||
full: true
|
||||
_openapi:
|
||||
method: PUT
|
||||
toc: []
|
||||
structuredData:
|
||||
headings: []
|
||||
contents:
|
||||
- content: Change the current user's display name.
|
||||
---
|
||||
|
||||
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
|
||||
|
||||
Change the current user's display name.
|
||||
|
||||
<APIPage document={"./openapi.json"} operations={[{"path":"/account/name","method":"put"}]} />
|
||||
@@ -0,0 +1,19 @@
|
||||
---
|
||||
title: Upload avatar
|
||||
full: true
|
||||
_openapi:
|
||||
method: POST
|
||||
toc: []
|
||||
structuredData:
|
||||
headings: []
|
||||
contents:
|
||||
- content: >-
|
||||
Upload a new profile avatar image. Accepts JPEG, PNG, WebP, or GIF up
|
||||
to 2 MB.
|
||||
---
|
||||
|
||||
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
|
||||
|
||||
Upload a new profile avatar image. Accepts JPEG, PNG, WebP, or GIF up to 2 MB.
|
||||
|
||||
<APIPage document={"./openapi.json"} operations={[{"path":"/account/avatar","method":"post"}]} />
|
||||
@@ -1,135 +0,0 @@
|
||||
---
|
||||
title: Admin
|
||||
description: Server administration
|
||||
full: true
|
||||
_openapi:
|
||||
toc:
|
||||
- depth: 2
|
||||
title: List backups
|
||||
url: '#list-backups'
|
||||
- depth: 2
|
||||
title: Create backup
|
||||
url: '#create-backup'
|
||||
- depth: 2
|
||||
title: Delete backup
|
||||
url: '#delete-backup'
|
||||
- depth: 2
|
||||
title: Restore from backup
|
||||
url: '#restore-from-backup'
|
||||
- depth: 2
|
||||
title: Get backup schedule
|
||||
url: '#get-backup-schedule'
|
||||
- depth: 2
|
||||
title: Update backup schedule
|
||||
url: '#update-backup-schedule'
|
||||
- depth: 2
|
||||
title: Get registration status
|
||||
url: '#get-registration-status'
|
||||
- depth: 2
|
||||
title: Toggle registration
|
||||
url: '#toggle-registration'
|
||||
- depth: 2
|
||||
title: Get update check status
|
||||
url: '#get-update-check-status'
|
||||
- depth: 2
|
||||
title: Toggle update checks
|
||||
url: '#toggle-update-checks'
|
||||
- depth: 2
|
||||
title: Get telemetry status
|
||||
url: '#get-telemetry-status'
|
||||
- depth: 2
|
||||
title: Toggle telemetry
|
||||
url: '#toggle-telemetry'
|
||||
- depth: 2
|
||||
title: Trigger cron job
|
||||
url: '#trigger-cron-job'
|
||||
- depth: 2
|
||||
title: Purge metadata cache
|
||||
url: '#purge-metadata-cache'
|
||||
- depth: 2
|
||||
title: Purge image cache
|
||||
url: '#purge-image-cache'
|
||||
structuredData:
|
||||
headings:
|
||||
- content: List backups
|
||||
id: list-backups
|
||||
- content: Create backup
|
||||
id: create-backup
|
||||
- content: Delete backup
|
||||
id: delete-backup
|
||||
- content: Restore from backup
|
||||
id: restore-from-backup
|
||||
- content: Get backup schedule
|
||||
id: get-backup-schedule
|
||||
- content: Update backup schedule
|
||||
id: update-backup-schedule
|
||||
- content: Get registration status
|
||||
id: get-registration-status
|
||||
- content: Toggle registration
|
||||
id: toggle-registration
|
||||
- content: Get update check status
|
||||
id: get-update-check-status
|
||||
- content: Toggle update checks
|
||||
id: toggle-update-checks
|
||||
- content: Get telemetry status
|
||||
id: get-telemetry-status
|
||||
- content: Toggle telemetry
|
||||
id: toggle-telemetry
|
||||
- content: Trigger cron job
|
||||
id: trigger-cron-job
|
||||
- content: Purge metadata cache
|
||||
id: purge-metadata-cache
|
||||
- content: Purge image cache
|
||||
id: purge-image-cache
|
||||
contents:
|
||||
- content: Fetch all database backups with their sizes and creation times.
|
||||
heading: list-backups
|
||||
- content: >-
|
||||
Create a new manual database backup. The backup is tagged as a manual
|
||||
backup.
|
||||
heading: create-backup
|
||||
- content: Permanently delete a database backup file by filename.
|
||||
heading: delete-backup
|
||||
- content: >-
|
||||
Upload a database backup file and restore it. A pre-restore backup is
|
||||
automatically created before overwriting the current database.
|
||||
heading: restore-from-backup
|
||||
- content: Fetch the current automated backup schedule configuration.
|
||||
heading: get-backup-schedule
|
||||
- content: >-
|
||||
Update the automated backup schedule. Only provided fields are
|
||||
changed; omitted fields keep their current values.
|
||||
heading: update-backup-schedule
|
||||
- content: Check whether new user registration is currently open or closed.
|
||||
heading: get-registration-status
|
||||
- content: Open or close new user registration.
|
||||
heading: toggle-registration
|
||||
- content: >-
|
||||
Fetch whether automatic update checks are enabled, and the latest
|
||||
cached check result if available.
|
||||
heading: get-update-check-status
|
||||
- content: Enable or disable automatic update checks against the public API.
|
||||
heading: toggle-update-checks
|
||||
- content: >-
|
||||
Fetch whether anonymous telemetry is enabled and when the last report
|
||||
was sent.
|
||||
heading: get-telemetry-status
|
||||
- content: Enable or disable anonymous telemetry reporting.
|
||||
heading: toggle-telemetry
|
||||
- content: >-
|
||||
Manually trigger a background cron job by name. The job runs
|
||||
asynchronously.
|
||||
heading: trigger-cron-job
|
||||
- content: >-
|
||||
Delete un-enriched stub titles not in any user's library and clean up
|
||||
orphaned person records.
|
||||
heading: purge-metadata-cache
|
||||
- content: >-
|
||||
Delete all cached TMDB images from disk. Images will be re-downloaded
|
||||
on demand.
|
||||
heading: purge-image-cache
|
||||
---
|
||||
|
||||
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
|
||||
|
||||
<APIPage document={"./openapi.json"} webhooks={[]} operations={[{"path":"/admin/backups","method":"get"},{"path":"/admin/backups","method":"post"},{"path":"/admin/backups/{filename}","method":"delete"},{"path":"/admin/backups/restore","method":"post"},{"path":"/admin/backups/schedule","method":"get"},{"path":"/admin/backups/schedule","method":"put"},{"path":"/admin/registration","method":"get"},{"path":"/admin/registration","method":"put"},{"path":"/admin/update-check","method":"get"},{"path":"/admin/update-check","method":"put"},{"path":"/admin/telemetry","method":"get"},{"path":"/admin/telemetry","method":"put"},{"path":"/admin/jobs/trigger","method":"post"},{"path":"/admin/cache/purge-metadata","method":"post"},{"path":"/admin/cache/purge-images","method":"post"}]} showTitle={true} />
|
||||
@@ -0,0 +1,19 @@
|
||||
---
|
||||
title: Create backup
|
||||
full: true
|
||||
_openapi:
|
||||
method: POST
|
||||
toc: []
|
||||
structuredData:
|
||||
headings: []
|
||||
contents:
|
||||
- content: >-
|
||||
Create a new manual database backup. The backup is tagged as a manual
|
||||
backup.
|
||||
---
|
||||
|
||||
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
|
||||
|
||||
Create a new manual database backup. The backup is tagged as a manual backup.
|
||||
|
||||
<APIPage document={"./openapi.json"} operations={[{"path":"/admin/backups","method":"post"}]} />
|
||||
@@ -0,0 +1,17 @@
|
||||
---
|
||||
title: Delete backup
|
||||
full: true
|
||||
_openapi:
|
||||
method: DELETE
|
||||
toc: []
|
||||
structuredData:
|
||||
headings: []
|
||||
contents:
|
||||
- content: Permanently delete a database backup file by filename.
|
||||
---
|
||||
|
||||
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
|
||||
|
||||
Permanently delete a database backup file by filename.
|
||||
|
||||
<APIPage document={"./openapi.json"} operations={[{"path":"/admin/backups/{filename}","method":"delete"}]} />
|
||||
@@ -0,0 +1,17 @@
|
||||
---
|
||||
title: List backups
|
||||
full: true
|
||||
_openapi:
|
||||
method: GET
|
||||
toc: []
|
||||
structuredData:
|
||||
headings: []
|
||||
contents:
|
||||
- content: Fetch all database backups with their sizes and creation times.
|
||||
---
|
||||
|
||||
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
|
||||
|
||||
Fetch all database backups with their sizes and creation times.
|
||||
|
||||
<APIPage document={"./openapi.json"} operations={[{"path":"/admin/backups","method":"get"}]} />
|
||||
@@ -0,0 +1,19 @@
|
||||
---
|
||||
title: Restore from backup
|
||||
full: true
|
||||
_openapi:
|
||||
method: POST
|
||||
toc: []
|
||||
structuredData:
|
||||
headings: []
|
||||
contents:
|
||||
- content: >-
|
||||
Upload a database backup file and restore it. A pre-restore backup is
|
||||
automatically created before overwriting the current database.
|
||||
---
|
||||
|
||||
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
|
||||
|
||||
Upload a database backup file and restore it. A pre-restore backup is automatically created before overwriting the current database.
|
||||
|
||||
<APIPage document={"./openapi.json"} operations={[{"path":"/admin/backups/restore","method":"post"}]} />
|
||||
@@ -0,0 +1,17 @@
|
||||
---
|
||||
title: Get backup schedule
|
||||
full: true
|
||||
_openapi:
|
||||
method: GET
|
||||
toc: []
|
||||
structuredData:
|
||||
headings: []
|
||||
contents:
|
||||
- content: Fetch the current automated backup schedule configuration.
|
||||
---
|
||||
|
||||
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
|
||||
|
||||
Fetch the current automated backup schedule configuration.
|
||||
|
||||
<APIPage document={"./openapi.json"} operations={[{"path":"/admin/backups/schedule","method":"get"}]} />
|
||||
@@ -0,0 +1,19 @@
|
||||
---
|
||||
title: Update backup schedule
|
||||
full: true
|
||||
_openapi:
|
||||
method: PUT
|
||||
toc: []
|
||||
structuredData:
|
||||
headings: []
|
||||
contents:
|
||||
- content: >-
|
||||
Update the automated backup schedule. Only provided fields are
|
||||
changed; omitted fields keep their current values.
|
||||
---
|
||||
|
||||
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
|
||||
|
||||
Update the automated backup schedule. Only provided fields are changed; omitted fields keep their current values.
|
||||
|
||||
<APIPage document={"./openapi.json"} operations={[{"path":"/admin/backups/schedule","method":"put"}]} />
|
||||
@@ -0,0 +1,19 @@
|
||||
---
|
||||
title: Purge image cache
|
||||
full: true
|
||||
_openapi:
|
||||
method: POST
|
||||
toc: []
|
||||
structuredData:
|
||||
headings: []
|
||||
contents:
|
||||
- content: >-
|
||||
Delete all cached TMDB images from disk. Images will be re-downloaded
|
||||
on demand.
|
||||
---
|
||||
|
||||
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
|
||||
|
||||
Delete all cached TMDB images from disk. Images will be re-downloaded on demand.
|
||||
|
||||
<APIPage document={"./openapi.json"} operations={[{"path":"/admin/cache/purge-images","method":"post"}]} />
|
||||
@@ -0,0 +1,19 @@
|
||||
---
|
||||
title: Purge metadata cache
|
||||
full: true
|
||||
_openapi:
|
||||
method: POST
|
||||
toc: []
|
||||
structuredData:
|
||||
headings: []
|
||||
contents:
|
||||
- content: >-
|
||||
Delete un-enriched stub titles not in any user's library and clean up
|
||||
orphaned person records.
|
||||
---
|
||||
|
||||
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
|
||||
|
||||
Delete un-enriched stub titles not in any user's library and clean up orphaned person records.
|
||||
|
||||
<APIPage document={"./openapi.json"} operations={[{"path":"/admin/cache/purge-metadata","method":"post"}]} />
|
||||
@@ -0,0 +1,17 @@
|
||||
---
|
||||
title: Get registration status
|
||||
full: true
|
||||
_openapi:
|
||||
method: GET
|
||||
toc: []
|
||||
structuredData:
|
||||
headings: []
|
||||
contents:
|
||||
- content: Check whether new user registration is currently open or closed.
|
||||
---
|
||||
|
||||
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
|
||||
|
||||
Check whether new user registration is currently open or closed.
|
||||
|
||||
<APIPage document={"./openapi.json"} operations={[{"path":"/admin/registration","method":"get"}]} />
|
||||
@@ -0,0 +1,19 @@
|
||||
---
|
||||
title: Get telemetry status
|
||||
full: true
|
||||
_openapi:
|
||||
method: GET
|
||||
toc: []
|
||||
structuredData:
|
||||
headings: []
|
||||
contents:
|
||||
- content: >-
|
||||
Fetch whether anonymous telemetry is enabled and when the last report
|
||||
was sent.
|
||||
---
|
||||
|
||||
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
|
||||
|
||||
Fetch whether anonymous telemetry is enabled and when the last report was sent.
|
||||
|
||||
<APIPage document={"./openapi.json"} operations={[{"path":"/admin/telemetry","method":"get"}]} />
|
||||
@@ -0,0 +1,17 @@
|
||||
---
|
||||
title: Toggle registration
|
||||
full: true
|
||||
_openapi:
|
||||
method: PUT
|
||||
toc: []
|
||||
structuredData:
|
||||
headings: []
|
||||
contents:
|
||||
- content: Open or close new user registration.
|
||||
---
|
||||
|
||||
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
|
||||
|
||||
Open or close new user registration.
|
||||
|
||||
<APIPage document={"./openapi.json"} operations={[{"path":"/admin/registration","method":"put"}]} />
|
||||
@@ -0,0 +1,17 @@
|
||||
---
|
||||
title: Toggle telemetry
|
||||
full: true
|
||||
_openapi:
|
||||
method: PUT
|
||||
toc: []
|
||||
structuredData:
|
||||
headings: []
|
||||
contents:
|
||||
- content: Enable or disable anonymous telemetry reporting.
|
||||
---
|
||||
|
||||
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
|
||||
|
||||
Enable or disable anonymous telemetry reporting.
|
||||
|
||||
<APIPage document={"./openapi.json"} operations={[{"path":"/admin/telemetry","method":"put"}]} />
|
||||
@@ -0,0 +1,17 @@
|
||||
---
|
||||
title: Toggle update checks
|
||||
full: true
|
||||
_openapi:
|
||||
method: PUT
|
||||
toc: []
|
||||
structuredData:
|
||||
headings: []
|
||||
contents:
|
||||
- content: Enable or disable automatic update checks against the public API.
|
||||
---
|
||||
|
||||
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
|
||||
|
||||
Enable or disable automatic update checks against the public API.
|
||||
|
||||
<APIPage document={"./openapi.json"} operations={[{"path":"/admin/update-check","method":"put"}]} />
|
||||
@@ -0,0 +1,19 @@
|
||||
---
|
||||
title: Trigger cron job
|
||||
full: true
|
||||
_openapi:
|
||||
method: POST
|
||||
toc: []
|
||||
structuredData:
|
||||
headings: []
|
||||
contents:
|
||||
- content: >-
|
||||
Manually trigger a background cron job by name. The job runs
|
||||
asynchronously.
|
||||
---
|
||||
|
||||
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
|
||||
|
||||
Manually trigger a background cron job by name. The job runs asynchronously.
|
||||
|
||||
<APIPage document={"./openapi.json"} operations={[{"path":"/admin/jobs/trigger","method":"post"}]} />
|
||||
@@ -0,0 +1,19 @@
|
||||
---
|
||||
title: Get update check status
|
||||
full: true
|
||||
_openapi:
|
||||
method: GET
|
||||
toc: []
|
||||
structuredData:
|
||||
headings: []
|
||||
contents:
|
||||
- content: >-
|
||||
Fetch whether automatic update checks are enabled, and the latest
|
||||
cached check result if available.
|
||||
---
|
||||
|
||||
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
|
||||
|
||||
Fetch whether automatic update checks are enabled, and the latest cached check result if available.
|
||||
|
||||
<APIPage document={"./openapi.json"} operations={[{"path":"/admin/update-check","method":"get"}]} />
|
||||
@@ -1,57 +0,0 @@
|
||||
---
|
||||
title: Dashboard
|
||||
description: User dashboard data
|
||||
full: true
|
||||
_openapi:
|
||||
toc:
|
||||
- depth: 2
|
||||
title: Get dashboard statistics
|
||||
url: '#get-dashboard-statistics'
|
||||
- depth: 2
|
||||
title: Get continue watching list
|
||||
url: '#get-continue-watching-list'
|
||||
- depth: 2
|
||||
title: Get user library
|
||||
url: '#get-user-library'
|
||||
- depth: 2
|
||||
title: Get personalized recommendations
|
||||
url: '#get-personalized-recommendations'
|
||||
- depth: 2
|
||||
title: Get watch history
|
||||
url: '#get-watch-history'
|
||||
structuredData:
|
||||
headings:
|
||||
- content: Get dashboard statistics
|
||||
id: get-dashboard-statistics
|
||||
- content: Get continue watching list
|
||||
id: get-continue-watching-list
|
||||
- content: Get user library
|
||||
id: get-user-library
|
||||
- content: Get personalized recommendations
|
||||
id: get-personalized-recommendations
|
||||
- content: Get watch history
|
||||
id: get-watch-history
|
||||
contents:
|
||||
- content: >-
|
||||
Fetch summary counts for the current user: movies watched this month,
|
||||
episodes this week, library size, and completed titles.
|
||||
heading: get-dashboard-statistics
|
||||
- content: >-
|
||||
Fetch TV shows the user is currently watching, with the next unwatched
|
||||
episode and progress for each.
|
||||
heading: get-continue-watching-list
|
||||
- content: Fetch all titles in the user's library with their tracking statuses.
|
||||
heading: get-user-library
|
||||
- content: >-
|
||||
Fetch personalized title recommendations based on the user's library
|
||||
and watch history.
|
||||
heading: get-personalized-recommendations
|
||||
- content: >-
|
||||
Fetch the user's watch counts grouped by time period. Useful for
|
||||
rendering activity charts.
|
||||
heading: get-watch-history
|
||||
---
|
||||
|
||||
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
|
||||
|
||||
<APIPage document={"./openapi.json"} webhooks={[]} operations={[{"path":"/dashboard/stats","method":"get"},{"path":"/dashboard/continue-watching","method":"get"},{"path":"/dashboard/library","method":"get"},{"path":"/dashboard/recommendations","method":"get"},{"path":"/dashboard/watch-history","method":"get"}]} showTitle={true} />
|
||||
@@ -0,0 +1,19 @@
|
||||
---
|
||||
title: Get continue watching list
|
||||
full: true
|
||||
_openapi:
|
||||
method: GET
|
||||
toc: []
|
||||
structuredData:
|
||||
headings: []
|
||||
contents:
|
||||
- content: >-
|
||||
Fetch TV shows the user is currently watching, with the next unwatched
|
||||
episode and progress for each.
|
||||
---
|
||||
|
||||
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
|
||||
|
||||
Fetch TV shows the user is currently watching, with the next unwatched episode and progress for each.
|
||||
|
||||
<APIPage document={"./openapi.json"} operations={[{"path":"/dashboard/continue-watching","method":"get"}]} />
|
||||
@@ -0,0 +1,17 @@
|
||||
---
|
||||
title: Get user library
|
||||
full: true
|
||||
_openapi:
|
||||
method: GET
|
||||
toc: []
|
||||
structuredData:
|
||||
headings: []
|
||||
contents:
|
||||
- content: Fetch all titles in the user's library with their tracking statuses.
|
||||
---
|
||||
|
||||
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
|
||||
|
||||
Fetch all titles in the user's library with their tracking statuses.
|
||||
|
||||
<APIPage document={"./openapi.json"} operations={[{"path":"/dashboard/library","method":"get"}]} />
|
||||
@@ -0,0 +1,19 @@
|
||||
---
|
||||
title: Get personalized recommendations
|
||||
full: true
|
||||
_openapi:
|
||||
method: GET
|
||||
toc: []
|
||||
structuredData:
|
||||
headings: []
|
||||
contents:
|
||||
- content: >-
|
||||
Fetch personalized title recommendations based on the user's library
|
||||
and watch history.
|
||||
---
|
||||
|
||||
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
|
||||
|
||||
Fetch personalized title recommendations based on the user's library and watch history.
|
||||
|
||||
<APIPage document={"./openapi.json"} operations={[{"path":"/dashboard/recommendations","method":"get"}]} />
|
||||
@@ -0,0 +1,19 @@
|
||||
---
|
||||
title: Get dashboard statistics
|
||||
full: true
|
||||
_openapi:
|
||||
method: GET
|
||||
toc: []
|
||||
structuredData:
|
||||
headings: []
|
||||
contents:
|
||||
- content: >-
|
||||
Fetch summary counts for the current user: movies watched this month,
|
||||
episodes this week, library size, and completed titles.
|
||||
---
|
||||
|
||||
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
|
||||
|
||||
Fetch summary counts for the current user: movies watched this month, episodes this week, library size, and completed titles.
|
||||
|
||||
<APIPage document={"./openapi.json"} operations={[{"path":"/dashboard/stats","method":"get"}]} />
|
||||
@@ -0,0 +1,19 @@
|
||||
---
|
||||
title: Get watch history
|
||||
full: true
|
||||
_openapi:
|
||||
method: GET
|
||||
toc: []
|
||||
structuredData:
|
||||
headings: []
|
||||
contents:
|
||||
- content: >-
|
||||
Fetch the user's watch counts grouped by time period. Useful for
|
||||
rendering activity charts.
|
||||
---
|
||||
|
||||
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
|
||||
|
||||
Fetch the user's watch counts grouped by time period. Useful for rendering activity charts.
|
||||
|
||||
<APIPage document={"./openapi.json"} operations={[{"path":"/dashboard/watch-history","method":"get"}]} />
|
||||
@@ -1,24 +0,0 @@
|
||||
---
|
||||
title: Discover
|
||||
description: Advanced content discovery with filters
|
||||
full: true
|
||||
_openapi:
|
||||
method: GET
|
||||
toc:
|
||||
- depth: 2
|
||||
title: Discover titles by genre
|
||||
url: '#discover-titles-by-genre'
|
||||
structuredData:
|
||||
headings:
|
||||
- content: Discover titles by genre
|
||||
id: discover-titles-by-genre
|
||||
contents:
|
||||
- content: >-
|
||||
Browse movies or TV shows filtered by genre, sorted by popularity.
|
||||
Returns user statuses and episode progress.
|
||||
heading: discover-titles-by-genre
|
||||
---
|
||||
|
||||
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
|
||||
|
||||
<APIPage document={"./openapi.json"} webhooks={[]} operations={[{"path":"/discover","method":"get"}]} showTitle={true} />
|
||||
@@ -0,0 +1,19 @@
|
||||
---
|
||||
title: Discover titles by genre
|
||||
full: true
|
||||
_openapi:
|
||||
method: GET
|
||||
toc: []
|
||||
structuredData:
|
||||
headings: []
|
||||
contents:
|
||||
- content: >-
|
||||
Browse movies or TV shows filtered by genre, sorted by popularity.
|
||||
Returns user statuses and episode progress.
|
||||
---
|
||||
|
||||
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
|
||||
|
||||
Browse movies or TV shows filtered by genre, sorted by popularity. Returns user statuses and episode progress.
|
||||
|
||||
<APIPage document={"./openapi.json"} operations={[{"path":"/discover","method":"get"}]} />
|
||||
@@ -1,37 +0,0 @@
|
||||
---
|
||||
title: Episodes
|
||||
description: Episode watch tracking
|
||||
full: true
|
||||
_openapi:
|
||||
toc:
|
||||
- depth: 2
|
||||
title: Mark episode watched
|
||||
url: '#mark-episode-watched'
|
||||
- depth: 2
|
||||
title: Mark episode unwatched
|
||||
url: '#mark-episode-unwatched'
|
||||
- depth: 2
|
||||
title: Batch mark episodes watched
|
||||
url: '#batch-mark-episodes-watched'
|
||||
structuredData:
|
||||
headings:
|
||||
- content: Mark episode watched
|
||||
id: mark-episode-watched
|
||||
- content: Mark episode unwatched
|
||||
id: mark-episode-unwatched
|
||||
- content: Batch mark episodes watched
|
||||
id: batch-mark-episodes-watched
|
||||
contents:
|
||||
- content: Record a watch event for a single TV episode.
|
||||
heading: mark-episode-watched
|
||||
- content: Remove the watch record for a single TV episode.
|
||||
heading: mark-episode-unwatched
|
||||
- content: >-
|
||||
Record watch events for multiple episodes at once. Useful for marking
|
||||
a range of episodes as watched.
|
||||
heading: batch-mark-episodes-watched
|
||||
---
|
||||
|
||||
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
|
||||
|
||||
<APIPage document={"./openapi.json"} webhooks={[]} operations={[{"path":"/episodes/{id}/watch","method":"post"},{"path":"/episodes/{id}/unwatch","method":"post"},{"path":"/episodes/batch-watch","method":"post"}]} showTitle={true} />
|
||||
@@ -0,0 +1,19 @@
|
||||
---
|
||||
title: Batch mark episodes watched
|
||||
full: true
|
||||
_openapi:
|
||||
method: POST
|
||||
toc: []
|
||||
structuredData:
|
||||
headings: []
|
||||
contents:
|
||||
- content: >-
|
||||
Record watch events for multiple episodes at once. Useful for marking
|
||||
a range of episodes as watched.
|
||||
---
|
||||
|
||||
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
|
||||
|
||||
Record watch events for multiple episodes at once. Useful for marking a range of episodes as watched.
|
||||
|
||||
<APIPage document={"./openapi.json"} operations={[{"path":"/episodes/batch-watch","method":"post"}]} />
|
||||
@@ -0,0 +1,17 @@
|
||||
---
|
||||
title: Mark episode unwatched
|
||||
full: true
|
||||
_openapi:
|
||||
method: POST
|
||||
toc: []
|
||||
structuredData:
|
||||
headings: []
|
||||
contents:
|
||||
- content: Remove the watch record for a single TV episode.
|
||||
---
|
||||
|
||||
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
|
||||
|
||||
Remove the watch record for a single TV episode.
|
||||
|
||||
<APIPage document={"./openapi.json"} operations={[{"path":"/episodes/{id}/unwatch","method":"post"}]} />
|
||||
@@ -0,0 +1,17 @@
|
||||
---
|
||||
title: Mark episode watched
|
||||
full: true
|
||||
_openapi:
|
||||
method: POST
|
||||
toc: []
|
||||
structuredData:
|
||||
headings: []
|
||||
contents:
|
||||
- content: Record a watch event for a single TV episode.
|
||||
---
|
||||
|
||||
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
|
||||
|
||||
Record a watch event for a single TV episode.
|
||||
|
||||
<APIPage document={"./openapi.json"} operations={[{"path":"/episodes/{id}/watch","method":"post"}]} />
|
||||
@@ -1,41 +0,0 @@
|
||||
---
|
||||
title: Explore
|
||||
description: Discover trending and popular content
|
||||
full: true
|
||||
_openapi:
|
||||
toc:
|
||||
- depth: 2
|
||||
title: Get trending titles
|
||||
url: '#get-trending-titles'
|
||||
- depth: 2
|
||||
title: Get popular titles
|
||||
url: '#get-popular-titles'
|
||||
- depth: 2
|
||||
title: List genres
|
||||
url: '#list-genres'
|
||||
structuredData:
|
||||
headings:
|
||||
- content: Get trending titles
|
||||
id: get-trending-titles
|
||||
- content: Get popular titles
|
||||
id: get-popular-titles
|
||||
- content: List genres
|
||||
id: list-genres
|
||||
contents:
|
||||
- content: >-
|
||||
Fetch today's trending movies and/or TV shows from TMDB, including a
|
||||
featured hero title and the user's statuses.
|
||||
heading: get-trending-titles
|
||||
- content: >-
|
||||
Fetch currently popular movies or TV shows from TMDB with the user's
|
||||
tracking statuses.
|
||||
heading: get-popular-titles
|
||||
- content: >-
|
||||
Fetch the list of TMDB genres for movies or TV shows. Used to populate
|
||||
genre filters for discovery.
|
||||
heading: list-genres
|
||||
---
|
||||
|
||||
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
|
||||
|
||||
<APIPage document={"./openapi.json"} webhooks={[]} operations={[{"path":"/explore/trending","method":"get"},{"path":"/explore/popular","method":"get"},{"path":"/explore/genres","method":"get"}]} showTitle={true} />
|
||||
@@ -0,0 +1,19 @@
|
||||
---
|
||||
title: List genres
|
||||
full: true
|
||||
_openapi:
|
||||
method: GET
|
||||
toc: []
|
||||
structuredData:
|
||||
headings: []
|
||||
contents:
|
||||
- content: >-
|
||||
Fetch the list of TMDB genres for movies or TV shows. Used to populate
|
||||
genre filters for discovery.
|
||||
---
|
||||
|
||||
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
|
||||
|
||||
Fetch the list of TMDB genres for movies or TV shows. Used to populate genre filters for discovery.
|
||||
|
||||
<APIPage document={"./openapi.json"} operations={[{"path":"/explore/genres","method":"get"}]} />
|
||||
@@ -0,0 +1,19 @@
|
||||
---
|
||||
title: Get popular titles
|
||||
full: true
|
||||
_openapi:
|
||||
method: GET
|
||||
toc: []
|
||||
structuredData:
|
||||
headings: []
|
||||
contents:
|
||||
- content: >-
|
||||
Fetch currently popular movies or TV shows from TMDB with the user's
|
||||
tracking statuses.
|
||||
---
|
||||
|
||||
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
|
||||
|
||||
Fetch currently popular movies or TV shows from TMDB with the user's tracking statuses.
|
||||
|
||||
<APIPage document={"./openapi.json"} operations={[{"path":"/explore/popular","method":"get"}]} />
|
||||
@@ -0,0 +1,19 @@
|
||||
---
|
||||
title: Get trending titles
|
||||
full: true
|
||||
_openapi:
|
||||
method: GET
|
||||
toc: []
|
||||
structuredData:
|
||||
headings: []
|
||||
contents:
|
||||
- content: >-
|
||||
Fetch today's trending movies and/or TV shows from TMDB, including a
|
||||
featured hero title and the user's statuses.
|
||||
---
|
||||
|
||||
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
|
||||
|
||||
Fetch today's trending movies and/or TV shows from TMDB, including a featured hero title and the user's statuses.
|
||||
|
||||
<APIPage document={"./openapi.json"} operations={[{"path":"/explore/trending","method":"get"}]} />
|
||||
@@ -1,48 +0,0 @@
|
||||
---
|
||||
title: Integrations
|
||||
description: Media server integrations
|
||||
full: true
|
||||
_openapi:
|
||||
toc:
|
||||
- depth: 2
|
||||
title: List integrations
|
||||
url: '#list-integrations'
|
||||
- depth: 2
|
||||
title: Create or update integration
|
||||
url: '#create-or-update-integration'
|
||||
- depth: 2
|
||||
title: Delete integration
|
||||
url: '#delete-integration'
|
||||
- depth: 2
|
||||
title: Regenerate webhook token
|
||||
url: '#regenerate-webhook-token'
|
||||
structuredData:
|
||||
headings:
|
||||
- content: List integrations
|
||||
id: list-integrations
|
||||
- content: Create or update integration
|
||||
id: create-or-update-integration
|
||||
- content: Delete integration
|
||||
id: delete-integration
|
||||
- content: Regenerate webhook token
|
||||
id: regenerate-webhook-token
|
||||
contents:
|
||||
- content: >-
|
||||
Fetch all configured media server integrations for the current user,
|
||||
including recent webhook/sync events for each.
|
||||
heading: list-integrations
|
||||
- content: >-
|
||||
Create a new media server integration or update an existing one.
|
||||
Generates a unique webhook token for the provider.
|
||||
heading: create-or-update-integration
|
||||
- content: Remove a media server integration and all its event history.
|
||||
heading: delete-integration
|
||||
- content: >-
|
||||
Generate a new webhook token for an integration. The old token is
|
||||
immediately invalidated.
|
||||
heading: regenerate-webhook-token
|
||||
---
|
||||
|
||||
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
|
||||
|
||||
<APIPage document={"./openapi.json"} webhooks={[]} operations={[{"path":"/integrations","method":"get"},{"path":"/integrations","method":"post"},{"path":"/integrations/{provider}","method":"delete"},{"path":"/integrations/{provider}/regenerate-token","method":"post"}]} showTitle={true} />
|
||||
@@ -0,0 +1,19 @@
|
||||
---
|
||||
title: Create or update integration
|
||||
full: true
|
||||
_openapi:
|
||||
method: POST
|
||||
toc: []
|
||||
structuredData:
|
||||
headings: []
|
||||
contents:
|
||||
- content: >-
|
||||
Create a new media server integration or update an existing one.
|
||||
Generates a unique webhook token for the provider.
|
||||
---
|
||||
|
||||
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
|
||||
|
||||
Create a new media server integration or update an existing one. Generates a unique webhook token for the provider.
|
||||
|
||||
<APIPage document={"./openapi.json"} operations={[{"path":"/integrations","method":"post"}]} />
|
||||
@@ -0,0 +1,17 @@
|
||||
---
|
||||
title: Delete integration
|
||||
full: true
|
||||
_openapi:
|
||||
method: DELETE
|
||||
toc: []
|
||||
structuredData:
|
||||
headings: []
|
||||
contents:
|
||||
- content: Remove a media server integration and all its event history.
|
||||
---
|
||||
|
||||
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
|
||||
|
||||
Remove a media server integration and all its event history.
|
||||
|
||||
<APIPage document={"./openapi.json"} operations={[{"path":"/integrations/{provider}","method":"delete"}]} />
|
||||
@@ -0,0 +1,19 @@
|
||||
---
|
||||
title: List integrations
|
||||
full: true
|
||||
_openapi:
|
||||
method: GET
|
||||
toc: []
|
||||
structuredData:
|
||||
headings: []
|
||||
contents:
|
||||
- content: >-
|
||||
Fetch all configured media server integrations for the current user,
|
||||
including recent webhook/sync events for each.
|
||||
---
|
||||
|
||||
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
|
||||
|
||||
Fetch all configured media server integrations for the current user, including recent webhook/sync events for each.
|
||||
|
||||
<APIPage document={"./openapi.json"} operations={[{"path":"/integrations","method":"get"}]} />
|
||||
@@ -0,0 +1,19 @@
|
||||
---
|
||||
title: Regenerate webhook token
|
||||
full: true
|
||||
_openapi:
|
||||
method: POST
|
||||
toc: []
|
||||
structuredData:
|
||||
headings: []
|
||||
contents:
|
||||
- content: >-
|
||||
Generate a new webhook token for an integration. The old token is
|
||||
immediately invalidated.
|
||||
---
|
||||
|
||||
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
|
||||
|
||||
Generate a new webhook token for an integration. The old token is immediately invalidated.
|
||||
|
||||
<APIPage document={"./openapi.json"} operations={[{"path":"/integrations/{provider}/regenerate-token","method":"post"}]} />
|
||||
@@ -1,4 +0,0 @@
|
||||
{
|
||||
"title": "API Reference",
|
||||
"icon": "Code"
|
||||
}
|
||||
@@ -1,32 +0,0 @@
|
||||
---
|
||||
title: People
|
||||
description: Cast and crew information
|
||||
full: true
|
||||
_openapi:
|
||||
toc:
|
||||
- depth: 2
|
||||
title: Get person details
|
||||
url: '#get-person-details'
|
||||
- depth: 2
|
||||
title: Resolve TMDB ID to local person
|
||||
url: '#resolve-tmdb-id-to-local-person'
|
||||
structuredData:
|
||||
headings:
|
||||
- content: Get person details
|
||||
id: get-person-details
|
||||
- content: Resolve TMDB ID to local person
|
||||
id: resolve-tmdb-id-to-local-person
|
||||
contents:
|
||||
- content: >-
|
||||
Fetch a person's profile and filmography. Imports from TMDB on first
|
||||
access if not yet cached locally.
|
||||
heading: get-person-details
|
||||
- content: >-
|
||||
Look up or import a person by their TMDB ID. Returns the internal ID
|
||||
for use with other endpoints.
|
||||
heading: resolve-tmdb-id-to-local-person
|
||||
---
|
||||
|
||||
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
|
||||
|
||||
<APIPage document={"./openapi.json"} webhooks={[]} operations={[{"path":"/people/{id}","method":"get"},{"path":"/people/resolve","method":"post"}]} showTitle={true} />
|
||||
@@ -0,0 +1,19 @@
|
||||
---
|
||||
title: Get person details
|
||||
full: true
|
||||
_openapi:
|
||||
method: GET
|
||||
toc: []
|
||||
structuredData:
|
||||
headings: []
|
||||
contents:
|
||||
- content: >-
|
||||
Fetch a person's profile and filmography. Imports from TMDB on first
|
||||
access if not yet cached locally.
|
||||
---
|
||||
|
||||
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
|
||||
|
||||
Fetch a person's profile and filmography. Imports from TMDB on first access if not yet cached locally.
|
||||
|
||||
<APIPage document={"./openapi.json"} operations={[{"path":"/people/{id}","method":"get"}]} />
|
||||
@@ -0,0 +1,19 @@
|
||||
---
|
||||
title: Resolve TMDB ID to local person
|
||||
full: true
|
||||
_openapi:
|
||||
method: POST
|
||||
toc: []
|
||||
structuredData:
|
||||
headings: []
|
||||
contents:
|
||||
- content: >-
|
||||
Look up or import a person by their TMDB ID. Returns the internal ID
|
||||
for use with other endpoints.
|
||||
---
|
||||
|
||||
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
|
||||
|
||||
Look up or import a person by their TMDB ID. Returns the internal ID for use with other endpoints.
|
||||
|
||||
<APIPage document={"./openapi.json"} operations={[{"path":"/people/resolve","method":"post"}]} />
|
||||
@@ -1,24 +0,0 @@
|
||||
---
|
||||
title: Search
|
||||
description: Search for movies and TV shows
|
||||
full: true
|
||||
_openapi:
|
||||
method: GET
|
||||
toc:
|
||||
- depth: 2
|
||||
title: Search movies, TV shows, and people
|
||||
url: '#search-movies-tv-shows-and-people'
|
||||
structuredData:
|
||||
headings:
|
||||
- content: Search movies, TV shows, and people
|
||||
id: search-movies-tv-shows-and-people
|
||||
contents:
|
||||
- content: >-
|
||||
Full-text search across movies, TV shows, and people via TMDB.
|
||||
Optionally filter by media type.
|
||||
heading: search-movies-tv-shows-and-people
|
||||
---
|
||||
|
||||
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
|
||||
|
||||
<APIPage document={"./openapi.json"} webhooks={[]} operations={[{"path":"/search","method":"get"}]} showTitle={true} />
|
||||
@@ -0,0 +1,19 @@
|
||||
---
|
||||
title: Search movies, TV shows, and people
|
||||
full: true
|
||||
_openapi:
|
||||
method: GET
|
||||
toc: []
|
||||
structuredData:
|
||||
headings: []
|
||||
contents:
|
||||
- content: >-
|
||||
Full-text search across movies, TV shows, and people via TMDB.
|
||||
Optionally filter by media type.
|
||||
---
|
||||
|
||||
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
|
||||
|
||||
Full-text search across movies, TV shows, and people via TMDB. Optionally filter by media type.
|
||||
|
||||
<APIPage document={"./openapi.json"} operations={[{"path":"/search","method":"get"}]} />
|
||||
@@ -1,30 +0,0 @@
|
||||
---
|
||||
title: Seasons
|
||||
description: Season watch tracking
|
||||
full: true
|
||||
_openapi:
|
||||
toc:
|
||||
- depth: 2
|
||||
title: Mark season watched
|
||||
url: '#mark-season-watched'
|
||||
- depth: 2
|
||||
title: Mark season unwatched
|
||||
url: '#mark-season-unwatched'
|
||||
structuredData:
|
||||
headings:
|
||||
- content: Mark season watched
|
||||
id: mark-season-watched
|
||||
- content: Mark season unwatched
|
||||
id: mark-season-unwatched
|
||||
contents:
|
||||
- content: Mark all episodes in a season as watched in a single operation.
|
||||
heading: mark-season-watched
|
||||
- content: >-
|
||||
Remove all watch records for episodes in a season in a single
|
||||
operation.
|
||||
heading: mark-season-unwatched
|
||||
---
|
||||
|
||||
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
|
||||
|
||||
<APIPage document={"./openapi.json"} webhooks={[]} operations={[{"path":"/seasons/{id}/watch","method":"post"},{"path":"/seasons/{id}/unwatch","method":"post"}]} showTitle={true} />
|
||||
@@ -0,0 +1,19 @@
|
||||
---
|
||||
title: Mark season unwatched
|
||||
full: true
|
||||
_openapi:
|
||||
method: POST
|
||||
toc: []
|
||||
structuredData:
|
||||
headings: []
|
||||
contents:
|
||||
- content: >-
|
||||
Remove all watch records for episodes in a season in a single
|
||||
operation.
|
||||
---
|
||||
|
||||
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
|
||||
|
||||
Remove all watch records for episodes in a season in a single operation.
|
||||
|
||||
<APIPage document={"./openapi.json"} operations={[{"path":"/seasons/{id}/unwatch","method":"post"}]} />
|
||||
@@ -0,0 +1,17 @@
|
||||
---
|
||||
title: Mark season watched
|
||||
full: true
|
||||
_openapi:
|
||||
method: POST
|
||||
toc: []
|
||||
structuredData:
|
||||
headings: []
|
||||
contents:
|
||||
- content: Mark all episodes in a season as watched in a single operation.
|
||||
---
|
||||
|
||||
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
|
||||
|
||||
Mark all episodes in a season as watched in a single operation.
|
||||
|
||||
<APIPage document={"./openapi.json"} operations={[{"path":"/seasons/{id}/watch","method":"post"}]} />
|
||||
@@ -1,52 +0,0 @@
|
||||
---
|
||||
title: System
|
||||
description: Server status and configuration
|
||||
full: true
|
||||
_openapi:
|
||||
toc:
|
||||
- depth: 2
|
||||
title: Get public instance info
|
||||
url: '#get-public-instance-info'
|
||||
- depth: 2
|
||||
title: Get authentication config
|
||||
url: '#get-authentication-config'
|
||||
- depth: 2
|
||||
title: Get system status
|
||||
url: '#get-system-status'
|
||||
- depth: 2
|
||||
title: Get system health report
|
||||
url: '#get-system-health-report'
|
||||
structuredData:
|
||||
headings:
|
||||
- content: Get public instance info
|
||||
id: get-public-instance-info
|
||||
- content: Get authentication config
|
||||
id: get-authentication-config
|
||||
- content: Get system status
|
||||
id: get-system-status
|
||||
- content: Get system health report
|
||||
id: get-system-health-report
|
||||
contents:
|
||||
- content: >-
|
||||
Fetch public information about this Sofa instance. Does not require
|
||||
authentication. Used by the login screen to display instance details.
|
||||
heading: get-public-instance-info
|
||||
- content: >-
|
||||
Fetch the authentication configuration including OIDC availability,
|
||||
password login status, and registration state. Does not require
|
||||
authentication.
|
||||
heading: get-authentication-config
|
||||
- content: >-
|
||||
Quick check of whether TMDB is configured. Does not require
|
||||
authentication.
|
||||
heading: get-system-status
|
||||
- content: >-
|
||||
Comprehensive health check covering database, TMDB connectivity, cron
|
||||
jobs, image cache, backups, and environment. Does not require
|
||||
authentication.
|
||||
heading: get-system-health-report
|
||||
---
|
||||
|
||||
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
|
||||
|
||||
<APIPage document={"./openapi.json"} webhooks={[]} operations={[{"path":"/system/public-info","method":"get"},{"path":"/system/auth-config","method":"get"},{"path":"/system/status","method":"get"},{"path":"/system/health","method":"get"}]} showTitle={true} />
|
||||
@@ -0,0 +1,20 @@
|
||||
---
|
||||
title: Get authentication config
|
||||
full: true
|
||||
_openapi:
|
||||
method: GET
|
||||
toc: []
|
||||
structuredData:
|
||||
headings: []
|
||||
contents:
|
||||
- content: >-
|
||||
Fetch the authentication configuration including OIDC availability,
|
||||
password login status, and registration state. Does not require
|
||||
authentication.
|
||||
---
|
||||
|
||||
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
|
||||
|
||||
Fetch the authentication configuration including OIDC availability, password login status, and registration state. Does not require authentication.
|
||||
|
||||
<APIPage document={"./openapi.json"} operations={[{"path":"/system/auth-config","method":"get"}]} />
|
||||
@@ -0,0 +1,20 @@
|
||||
---
|
||||
title: Get system health report
|
||||
full: true
|
||||
_openapi:
|
||||
method: GET
|
||||
toc: []
|
||||
structuredData:
|
||||
headings: []
|
||||
contents:
|
||||
- content: >-
|
||||
Comprehensive health check covering database, TMDB connectivity, cron
|
||||
jobs, image cache, backups, and environment. Does not require
|
||||
authentication.
|
||||
---
|
||||
|
||||
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
|
||||
|
||||
Comprehensive health check covering database, TMDB connectivity, cron jobs, image cache, backups, and environment. Does not require authentication.
|
||||
|
||||
<APIPage document={"./openapi.json"} operations={[{"path":"/system/health","method":"get"}]} />
|
||||
@@ -0,0 +1,19 @@
|
||||
---
|
||||
title: Get public instance info
|
||||
full: true
|
||||
_openapi:
|
||||
method: GET
|
||||
toc: []
|
||||
structuredData:
|
||||
headings: []
|
||||
contents:
|
||||
- content: >-
|
||||
Fetch public information about this Sofa instance. Does not require
|
||||
authentication. Used by the login screen to display instance details.
|
||||
---
|
||||
|
||||
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
|
||||
|
||||
Fetch public information about this Sofa instance. Does not require authentication. Used by the login screen to display instance details.
|
||||
|
||||
<APIPage document={"./openapi.json"} operations={[{"path":"/system/public-info","method":"get"}]} />
|
||||
@@ -0,0 +1,19 @@
|
||||
---
|
||||
title: Get system status
|
||||
full: true
|
||||
_openapi:
|
||||
method: GET
|
||||
toc: []
|
||||
structuredData:
|
||||
headings: []
|
||||
contents:
|
||||
- content: >-
|
||||
Quick check of whether TMDB is configured. Does not require
|
||||
authentication.
|
||||
---
|
||||
|
||||
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
|
||||
|
||||
Quick check of whether TMDB is configured. Does not require authentication.
|
||||
|
||||
<APIPage document={"./openapi.json"} operations={[{"path":"/system/status","method":"get"}]} />
|
||||
@@ -1,102 +0,0 @@
|
||||
---
|
||||
title: Titles
|
||||
description: Movie and TV show management
|
||||
full: true
|
||||
_openapi:
|
||||
toc:
|
||||
- depth: 2
|
||||
title: Get title details
|
||||
url: '#get-title-details'
|
||||
- depth: 2
|
||||
title: Resolve TMDB ID to local title
|
||||
url: '#resolve-tmdb-id-to-local-title'
|
||||
- depth: 2
|
||||
title: Update tracking status
|
||||
url: '#update-tracking-status'
|
||||
- depth: 2
|
||||
title: Rate a title
|
||||
url: '#rate-a-title'
|
||||
- depth: 2
|
||||
title: Mark movie as watched
|
||||
url: '#mark-movie-as-watched'
|
||||
- depth: 2
|
||||
title: Mark all episodes watched
|
||||
url: '#mark-all-episodes-watched'
|
||||
- depth: 2
|
||||
title: Get user's title info
|
||||
url: '#get-users-title-info'
|
||||
- depth: 2
|
||||
title: Get title recommendations
|
||||
url: '#get-title-recommendations'
|
||||
- depth: 2
|
||||
title: Hydrate TV seasons
|
||||
url: '#hydrate-tv-seasons'
|
||||
- depth: 2
|
||||
title: Quick add title to library
|
||||
url: '#quick-add-title-to-library'
|
||||
structuredData:
|
||||
headings:
|
||||
- content: Get title details
|
||||
id: get-title-details
|
||||
- content: Resolve TMDB ID to local title
|
||||
id: resolve-tmdb-id-to-local-title
|
||||
- content: Update tracking status
|
||||
id: update-tracking-status
|
||||
- content: Rate a title
|
||||
id: rate-a-title
|
||||
- content: Mark movie as watched
|
||||
id: mark-movie-as-watched
|
||||
- content: Mark all episodes watched
|
||||
id: mark-all-episodes-watched
|
||||
- content: Get user's title info
|
||||
id: get-users-title-info
|
||||
- content: Get title recommendations
|
||||
id: get-title-recommendations
|
||||
- content: Hydrate TV seasons
|
||||
id: hydrate-tv-seasons
|
||||
- content: Quick add title to library
|
||||
id: quick-add-title-to-library
|
||||
contents:
|
||||
- content: >-
|
||||
Fetch full title metadata including seasons, cast, and streaming
|
||||
availability. Imports from TMDB on first access if not yet cached
|
||||
locally.
|
||||
heading: get-title-details
|
||||
- content: >-
|
||||
Look up or import a title by its TMDB ID and media type. Returns the
|
||||
internal ID for use with other endpoints.
|
||||
heading: resolve-tmdb-id-to-local-title
|
||||
- content: >-
|
||||
Set the user's tracking status for a title. Use null to remove the
|
||||
title from the library entirely.
|
||||
heading: update-tracking-status
|
||||
- content: Set a 0-5 star rating for a title. Use 0 to clear the rating.
|
||||
heading: rate-a-title
|
||||
- content: Log a watch event for a movie. Automatically sets status to completed.
|
||||
heading: mark-movie-as-watched
|
||||
- content: >-
|
||||
Mark every episode of a TV show as watched. Requires seasons to be
|
||||
hydrated first.
|
||||
heading: mark-all-episodes-watched
|
||||
- content: >-
|
||||
Fetch the current user's tracking status, rating, and watched episode
|
||||
IDs for a title.
|
||||
heading: get-users-title-info
|
||||
- content: >-
|
||||
Fetch similar titles based on locally cached recommendation data,
|
||||
along with the user's statuses for each.
|
||||
heading: get-title-recommendations
|
||||
- content: >-
|
||||
Fetch full season and episode data from TMDB for a TV show. Required
|
||||
before tracking individual episodes.
|
||||
heading: hydrate-tv-seasons
|
||||
- content: >-
|
||||
Import a title by TMDB ID and add it to the user's watchlist in one
|
||||
step. If the title already exists in the user's library, returns
|
||||
alreadyAdded: true.
|
||||
heading: quick-add-title-to-library
|
||||
---
|
||||
|
||||
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
|
||||
|
||||
<APIPage document={"./openapi.json"} webhooks={[]} operations={[{"path":"/titles/{id}","method":"get"},{"path":"/titles/resolve","method":"post"},{"path":"/titles/{id}/status","method":"put"},{"path":"/titles/{id}/rating","method":"put"},{"path":"/titles/{id}/watch","method":"post"},{"path":"/titles/{id}/watch-all","method":"post"},{"path":"/titles/{id}/user-info","method":"get"},{"path":"/titles/{id}/recommendations","method":"get"},{"path":"/titles/{id}/hydrate-seasons","method":"post"},{"path":"/titles/quick-add","method":"post"}]} showTitle={true} />
|
||||
@@ -0,0 +1,20 @@
|
||||
---
|
||||
title: Get title details
|
||||
full: true
|
||||
_openapi:
|
||||
method: GET
|
||||
toc: []
|
||||
structuredData:
|
||||
headings: []
|
||||
contents:
|
||||
- content: >-
|
||||
Fetch full title metadata including seasons, cast, and streaming
|
||||
availability. Imports from TMDB on first access if not yet cached
|
||||
locally.
|
||||
---
|
||||
|
||||
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
|
||||
|
||||
Fetch full title metadata including seasons, cast, and streaming availability. Imports from TMDB on first access if not yet cached locally.
|
||||
|
||||
<APIPage document={"./openapi.json"} operations={[{"path":"/titles/{id}","method":"get"}]} />
|
||||
@@ -0,0 +1,19 @@
|
||||
---
|
||||
title: Hydrate TV seasons
|
||||
full: true
|
||||
_openapi:
|
||||
method: POST
|
||||
toc: []
|
||||
structuredData:
|
||||
headings: []
|
||||
contents:
|
||||
- content: >-
|
||||
Fetch full season and episode data from TMDB for a TV show. Required
|
||||
before tracking individual episodes.
|
||||
---
|
||||
|
||||
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
|
||||
|
||||
Fetch full season and episode data from TMDB for a TV show. Required before tracking individual episodes.
|
||||
|
||||
<APIPage document={"./openapi.json"} operations={[{"path":"/titles/{id}/hydrate-seasons","method":"post"}]} />
|
||||
@@ -0,0 +1,20 @@
|
||||
---
|
||||
title: Quick add title to library
|
||||
full: true
|
||||
_openapi:
|
||||
method: POST
|
||||
toc: []
|
||||
structuredData:
|
||||
headings: []
|
||||
contents:
|
||||
- content: >-
|
||||
Import a title by TMDB ID and add it to the user's watchlist in one
|
||||
step. If the title already exists in the user's library, returns
|
||||
alreadyAdded: true.
|
||||
---
|
||||
|
||||
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
|
||||
|
||||
Import a title by TMDB ID and add it to the user's watchlist in one step. If the title already exists in the user's library, returns alreadyAdded: true.
|
||||
|
||||
<APIPage document={"./openapi.json"} operations={[{"path":"/titles/quick-add","method":"post"}]} />
|
||||
@@ -0,0 +1,19 @@
|
||||
---
|
||||
title: Get title recommendations
|
||||
full: true
|
||||
_openapi:
|
||||
method: GET
|
||||
toc: []
|
||||
structuredData:
|
||||
headings: []
|
||||
contents:
|
||||
- content: >-
|
||||
Fetch similar titles based on locally cached recommendation data,
|
||||
along with the user's statuses for each.
|
||||
---
|
||||
|
||||
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
|
||||
|
||||
Fetch similar titles based on locally cached recommendation data, along with the user's statuses for each.
|
||||
|
||||
<APIPage document={"./openapi.json"} operations={[{"path":"/titles/{id}/recommendations","method":"get"}]} />
|
||||
@@ -0,0 +1,19 @@
|
||||
---
|
||||
title: Resolve TMDB ID to local title
|
||||
full: true
|
||||
_openapi:
|
||||
method: POST
|
||||
toc: []
|
||||
structuredData:
|
||||
headings: []
|
||||
contents:
|
||||
- content: >-
|
||||
Look up or import a title by its TMDB ID and media type. Returns the
|
||||
internal ID for use with other endpoints.
|
||||
---
|
||||
|
||||
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
|
||||
|
||||
Look up or import a title by its TMDB ID and media type. Returns the internal ID for use with other endpoints.
|
||||
|
||||
<APIPage document={"./openapi.json"} operations={[{"path":"/titles/resolve","method":"post"}]} />
|
||||
@@ -0,0 +1,17 @@
|
||||
---
|
||||
title: Rate a title
|
||||
full: true
|
||||
_openapi:
|
||||
method: PUT
|
||||
toc: []
|
||||
structuredData:
|
||||
headings: []
|
||||
contents:
|
||||
- content: Set a 0-5 star rating for a title. Use 0 to clear the rating.
|
||||
---
|
||||
|
||||
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
|
||||
|
||||
Set a 0-5 star rating for a title. Use 0 to clear the rating.
|
||||
|
||||
<APIPage document={"./openapi.json"} operations={[{"path":"/titles/{id}/rating","method":"put"}]} />
|
||||
@@ -0,0 +1,19 @@
|
||||
---
|
||||
title: Update tracking status
|
||||
full: true
|
||||
_openapi:
|
||||
method: PUT
|
||||
toc: []
|
||||
structuredData:
|
||||
headings: []
|
||||
contents:
|
||||
- content: >-
|
||||
Set the user's tracking status for a title. Use null to remove the
|
||||
title from the library entirely.
|
||||
---
|
||||
|
||||
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
|
||||
|
||||
Set the user's tracking status for a title. Use null to remove the title from the library entirely.
|
||||
|
||||
<APIPage document={"./openapi.json"} operations={[{"path":"/titles/{id}/status","method":"put"}]} />
|
||||
@@ -0,0 +1,19 @@
|
||||
---
|
||||
title: Get user's title info
|
||||
full: true
|
||||
_openapi:
|
||||
method: GET
|
||||
toc: []
|
||||
structuredData:
|
||||
headings: []
|
||||
contents:
|
||||
- content: >-
|
||||
Fetch the current user's tracking status, rating, and watched episode
|
||||
IDs for a title.
|
||||
---
|
||||
|
||||
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
|
||||
|
||||
Fetch the current user's tracking status, rating, and watched episode IDs for a title.
|
||||
|
||||
<APIPage document={"./openapi.json"} operations={[{"path":"/titles/{id}/user-info","method":"get"}]} />
|
||||
@@ -0,0 +1,19 @@
|
||||
---
|
||||
title: Mark all episodes watched
|
||||
full: true
|
||||
_openapi:
|
||||
method: POST
|
||||
toc: []
|
||||
structuredData:
|
||||
headings: []
|
||||
contents:
|
||||
- content: >-
|
||||
Mark every episode of a TV show as watched. Requires seasons to be
|
||||
hydrated first.
|
||||
---
|
||||
|
||||
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
|
||||
|
||||
Mark every episode of a TV show as watched. Requires seasons to be hydrated first.
|
||||
|
||||
<APIPage document={"./openapi.json"} operations={[{"path":"/titles/{id}/watch-all","method":"post"}]} />
|
||||
@@ -0,0 +1,17 @@
|
||||
---
|
||||
title: Mark movie as watched
|
||||
full: true
|
||||
_openapi:
|
||||
method: POST
|
||||
toc: []
|
||||
structuredData:
|
||||
headings: []
|
||||
contents:
|
||||
- content: Log a watch event for a movie. Automatically sets status to completed.
|
||||
---
|
||||
|
||||
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
|
||||
|
||||
Log a watch event for a movie. Automatically sets status to completed.
|
||||
|
||||
<APIPage document={"./openapi.json"} operations={[{"path":"/titles/{id}/watch","method":"post"}]} />
|
||||
@@ -1,13 +1,15 @@
|
||||
{
|
||||
"pages": [
|
||||
"---Documentation---",
|
||||
"index",
|
||||
"using-sofa",
|
||||
"admin",
|
||||
"configuration",
|
||||
"integrations",
|
||||
"troubleshooting",
|
||||
"api",
|
||||
"mobile-app",
|
||||
"telemetry"
|
||||
"telemetry",
|
||||
"---API Reference---",
|
||||
"...api"
|
||||
]
|
||||
}
|
||||
|
||||
@@ -14,7 +14,7 @@ const config = {
|
||||
return [
|
||||
{
|
||||
source: "/docs/api",
|
||||
destination: "/docs/api/account",
|
||||
destination: "/docs/api/account/account.removeAvatar",
|
||||
permanent: false,
|
||||
},
|
||||
];
|
||||
|
||||
@@ -4,6 +4,7 @@ import { openapi } from "../src/lib/openapi";
|
||||
void generateFiles({
|
||||
input: openapi,
|
||||
output: "./content/docs/api",
|
||||
per: "tag",
|
||||
groupBy: "tag",
|
||||
addGeneratedComment: true,
|
||||
includeDescription: true,
|
||||
});
|
||||
|
||||
@@ -1,12 +1,13 @@
|
||||
import { docs } from "collections/server";
|
||||
import { type InferPageType, loader } from "fumadocs-core/source";
|
||||
import { lucideIconsPlugin } from "fumadocs-core/source/lucide-icons";
|
||||
import { openapiPlugin } from "fumadocs-openapi/server";
|
||||
|
||||
// See https://fumadocs.dev/docs/headless/source-api for more info
|
||||
export const source = loader({
|
||||
baseUrl: "/docs",
|
||||
source: docs.toFumadocsSource(),
|
||||
plugins: [lucideIconsPlugin()],
|
||||
plugins: [lucideIconsPlugin(), openapiPlugin()],
|
||||
});
|
||||
|
||||
export function getPageImage(page: InferPageType<typeof source>) {
|
||||
|
||||
Reference in New Issue
Block a user