Zum Inhalt springen
Die Zusage

Zugesagt (v1)

Diese dreizehn Adressen sind ein Versprechen: Solange v1 in der Adresse steht, verschwindet aus ihren Antworten nichts. Muss doch etwas brechen, entsteht /api/v2 daneben, und v1 läuft weiter. Jede Adresse zeigt aufgeklappt ihre Felder und ein Beispiel.

13 Adressen

GET /api/v1/about promised

Version and build

Which version of Nexview this is. Useful for telling deployments apart and for deciding whether a feature you rely on exists yet.

Felder und Aufbau

Antwort

FeldArt
versionText Pflicht
repo_urlText Pflicht
release_urlText Pflicht
licenseText
update_checkedja/nein
latest_versionText oder null
update_availableja/nein
checked_atZeitpunkt (ISO 8601) oder null

Aufbau der Antwort

{
  "version": "string",
  "repo_url": "string",
  "release_url": "string",
  "license": "string",
  "update_checked": "boolean",
  "latest_version": "string | null",
  "update_available": "boolean",
  "checked_at": "ISO 8601 | null"
}

GET /api/v1/admin/requests/pending/count promised

Number of requests awaiting a decision

How many requests are waiting for approval. Restricted to accounts that may decide - a token inherits that from its owner, so an ordinary account gets 403 here.

GET /api/v1/health promised

Is Nexview running

Answers without a token. A monitor that has to sign in before it may ask "are you still alive" is not a monitor. Returns {"status": "ok"} and nothing else - deliberately no version, no database state, nothing that would tell an unauthenticated caller about the installation.

GET /api/v1/home/recent promised

Recently arrived

Titles that finished downloading recently - the list a dashboard tile shows. Note that each entry also names who requested it. That is wanted inside a household and may not be wanted on a wall-mounted screen.

Felder und Aufbau

Antwort

FeldArt
request_idZahl Pflicht
media_typemovie | tv Pflicht
tmdb_idZahl Pflicht
titleText Pflicht
overviewText
poster_urlText oder null
backdrop_urlText oder null
release_dateText oder null
vote_averageZahl
runtime_minutesZahl oder null
genresListe von Text
completed_atZeitpunkt (ISO 8601) oder null
requested_byText Pflicht
requester_avatarText oder null
seasonsListe von Zahl

Aufbau der Antwort

[
  {
    "request_id": "number",
    "media_type": "movie | tv",
    "tmdb_id": "number",
    "title": "string",
    "overview": "string",
    "poster_url": "string | null",
    "backdrop_url": "string | null",
    "release_date": "string | null",
    "vote_average": "number",
    "runtime_minutes": "number | null",
    "genres": [
      "string"
    ],
    "completed_at": "ISO 8601 | null",
    "requested_by": "string",
    "requester_avatar": "string | null"
  }
]

GET /api/v1/media/{media_type}/{tmdb_id} promised

Details for one title

Everything about a single title: overview, cast, ratings, runtime, and whether it is already in the library.

Felder und Aufbau

Parameter

media_typemovie | tv path Pflicht
tmdb_idZahl path Pflicht

Antwort

FeldArt
media_typemovie | tv Pflicht
tmdb_idZahl Pflicht
tvdb_idZahl oder null
titleText Pflicht
original_titleText oder null
overviewText
poster_urlText oder null
backdrop_urlText oder null
release_dateText oder null
vote_averageZahl
vote_countZahl
genresListe von Text
runtime_minutesZahl oder null
certificationText oder null
original_languageText oder null
origin_countryListe von Text
seasonsListe von SeasonInfo
statusText
status_uhdText oder null
watchedja/nein
watched_onListe von Text
watched_not_onListe von Text
pathText oder null
path_uhdText oder null
uhd_in_standardja/nein

Aufbau der Antwort

{
  "media_type": "movie | tv",
  "tmdb_id": "number",
  "tvdb_id": "number | null",
  "title": "string",
  "original_title": "string | null",
  "overview": "string",
  "poster_url": "string | null",
  "backdrop_url": "string | null",
  "release_date": "string | null",
  "vote_average": "number",
  "vote_count": "number",
  "genres": [
    "string"
  ],
  "runtime_minutes": "number | null",
  "certification": "string | null"
}

GET /api/v1/notifications/unread/count promised

Number of unread notifications

Unread notifications for the calling account.

POST /api/v1/requests promised

Request a title

Ask for a title to be added. The request goes through exactly the same checks as one made in the browser: quota, blocklist and approval all apply to the account the token belongs to. A request that needs approval comes back as pending, not as an error.

Felder und Aufbau

Anfragekörper

FeldArt
media_typemovie | tv Pflicht
tierstandard | uhd
tmdb_idZahl Pflicht
quality_profile_idZahl oder null
root_folder_pathText oder null
monitor_futureja/nein
seasonZahl oder null
from_watchlistja/nein

Antwort

FeldArt
idZahl Pflicht
media_typemovie | tv Pflicht
tierstandard | uhd Pflicht
tmdb_idZahl Pflicht
titleText Pflicht
poster_pathText oder null Pflicht
release_dateText oder null Pflicht
statuspending_approval | approved | searching | downloaded | rejected | failed | cancelled | deleted | deferred Pflicht
quality_profile_idZahl oder null Pflicht
root_folder_pathText oder null Pflicht
seasonZahl oder null Pflicht
from_watchlistja/nein Pflicht
requested_atZeitpunkt (ISO 8601) Pflicht
approved_atZeitpunkt (ISO 8601) oder null Pflicht
completed_atZeitpunkt (ISO 8601) oder null Pflicht
approved_by_nameText oder null
last_checked_atZeitpunkt (ISO 8601) oder null
rejection_reasonText oder null Pflicht
error_messageText oder null Pflicht
ratingZahl oder null Pflicht
feedbackText oder null Pflicht
rated_atZeitpunkt (ISO 8601) oder null Pflicht
rating_outdatedja/nein
feedback_replyText oder null Pflicht
replied_atZeitpunkt (ISO 8601) oder null Pflicht

Aufbau der Antwort

{
  "id": "number",
  "media_type": "movie | tv",
  "tier": "standard | uhd",
  "tmdb_id": "number",
  "title": "string",
  "poster_path": "string | null",
  "release_date": "string | null",
  "status": "pending_approval | approved | searching | downloaded | rejected | failed | cancelled | deleted | deferred",
  "quality_profile_id": "number | null",
  "root_folder_path": "string | null",
  "season": "number | null",
  "from_watchlist": "boolean",
  "requested_at": "ISO 8601",
  "approved_at": "ISO 8601 | null"
}

GET /api/v1/requests/mine promised

Your own requests

Every request made by the calling account, newest first, with its current state.

Felder und Aufbau

Antwort

FeldArt
idZahl Pflicht
media_typemovie | tv Pflicht
tierstandard | uhd Pflicht
tmdb_idZahl Pflicht
titleText Pflicht
poster_pathText oder null Pflicht
release_dateText oder null Pflicht
statuspending_approval | approved | searching | downloaded | rejected | failed | cancelled | deleted | deferred Pflicht
quality_profile_idZahl oder null Pflicht
root_folder_pathText oder null Pflicht
seasonZahl oder null Pflicht
from_watchlistja/nein Pflicht
requested_atZeitpunkt (ISO 8601) Pflicht
approved_atZeitpunkt (ISO 8601) oder null Pflicht
completed_atZeitpunkt (ISO 8601) oder null Pflicht
approved_by_nameText oder null
last_checked_atZeitpunkt (ISO 8601) oder null
rejection_reasonText oder null Pflicht
error_messageText oder null Pflicht
ratingZahl oder null Pflicht
feedbackText oder null Pflicht
rated_atZeitpunkt (ISO 8601) oder null Pflicht
rating_outdatedja/nein
feedback_replyText oder null Pflicht
replied_atZeitpunkt (ISO 8601) oder null Pflicht

Aufbau der Antwort

[
  {
    "id": "number",
    "media_type": "movie | tv",
    "tier": "standard | uhd",
    "tmdb_id": "number",
    "title": "string",
    "poster_path": "string | null",
    "release_date": "string | null",
    "status": "pending_approval | approved | searching | downloaded | rejected | failed | cancelled | deleted | deferred",
    "quality_profile_id": "number | null",
    "root_folder_path": "string | null",
    "season": "number | null",
    "from_watchlist": "boolean",
    "requested_at": "ISO 8601",
    "approved_at": "ISO 8601 | null"
  }
]

GET /api/v1/requests/quota promised

How much you may still request

What the calling account has used in the current period and what is left. An account without a limit reports no ceiling rather than a very large one.

Felder und Aufbau

Antwort

FeldArt
movieQuotaInfo Pflicht
tvQuotaInfo Pflicht
auto_approveja/nein Pflicht

Aufbau der Antwort

{
  "movie": {
    "limit": "number | null",
    "used": "number",
    "remaining": "number | null",
    "unlimited": "boolean",
    "exhausted": "boolean",
    "period": "day | week | month",
    "resets_at": "ISO 8601 | null"
  },
  "tv": {
    "limit": "number | null",
    "used": "number",
    "remaining": "number | null",
    "unlimited": "boolean",
    "exhausted": "boolean",
    "period": "day | week | month",
    "resets_at": "ISO 8601 | null"
  },
  "auto_approve": "boolean"
}

POST /api/v1/requests/{request_id}/cancel promised

Cancel your own request

Withdraw a request you made yourself. Only works while it is still open - once something has been downloaded there is nothing left to cancel.

Felder und Aufbau

Parameter

request_idZahl path Pflicht

Antwort

FeldArt
idZahl Pflicht
media_typemovie | tv Pflicht
tierstandard | uhd Pflicht
tmdb_idZahl Pflicht
titleText Pflicht
poster_pathText oder null Pflicht
release_dateText oder null Pflicht
statuspending_approval | approved | searching | downloaded | rejected | failed | cancelled | deleted | deferred Pflicht
quality_profile_idZahl oder null Pflicht
root_folder_pathText oder null Pflicht
seasonZahl oder null Pflicht
from_watchlistja/nein Pflicht
requested_atZeitpunkt (ISO 8601) Pflicht
approved_atZeitpunkt (ISO 8601) oder null Pflicht
completed_atZeitpunkt (ISO 8601) oder null Pflicht
approved_by_nameText oder null
last_checked_atZeitpunkt (ISO 8601) oder null
rejection_reasonText oder null Pflicht
error_messageText oder null Pflicht
ratingZahl oder null Pflicht
feedbackText oder null Pflicht
rated_atZeitpunkt (ISO 8601) oder null Pflicht
rating_outdatedja/nein
feedback_replyText oder null Pflicht
replied_atZeitpunkt (ISO 8601) oder null Pflicht

Aufbau der Antwort

{
  "id": "number",
  "media_type": "movie | tv",
  "tier": "standard | uhd",
  "tmdb_id": "number",
  "title": "string",
  "poster_path": "string | null",
  "release_date": "string | null",
  "status": "pending_approval | approved | searching | downloaded | rejected | failed | cancelled | deleted | deferred",
  "quality_profile_id": "number | null",
  "root_folder_path": "string | null",
  "season": "number | null",
  "from_watchlist": "boolean",
  "requested_at": "ISO 8601",
  "approved_at": "ISO 8601 | null"
}

GET /api/v1/search/{media_type} promised

Search movies or shows

Find titles by name. media_type is movie or tv. Results are paged and come from TMDB in the language of the calling account.

Felder und Aufbau

Parameter

media_typemovie | tv path Pflicht
qText query Pflicht
pageZahl query

Antwort

FeldArt
pageZahl Pflicht
total_pagesZahl Pflicht
total_resultsZahl Pflicht
itemsListe von MediaItem Pflicht
demoja/nein
arr_warningText oder null

Aufbau der Antwort

{
  "page": "number",
  "total_pages": "number",
  "total_results": "number",
  "items": [
    {
      "media_type": "movie | tv",
      "tmdb_id": "number",
      "tvdb_id": "number | null",
      "title": "string",
      "original_title": "string | null",
      "overview": "string",
      "poster_url": "string | null",
      "backdrop_url": "string | null",
      "release_date": "string | null",
      "vote_average": "number",
      "vote_count": "number",
      "genres": [
        "string"
      ],
      "runtime_minutes": "number | null",
      "certification": "string | null"
    }
  ],
  "demo": "boolean",
  "arr_warning": "string | null"
}

GET /api/v1/storage/me promised

Your own storage use

How much space the titles attributed to the calling account take up, and against which allowance.

Felder und Aufbau

Parameter

qText query
pageZahl query
gesehenja/nein query

Antwort

FeldArt
used_bytesZahl Pflicht
itemsZahl Pflicht
limit_bytesZahl oder null
pending_bytesZahl Pflicht
watched_availableja/nein
matchesZahl
per_pageZahl
entriesListe von StoragePosten Pflicht

Aufbau der Antwort

{
  "used_bytes": "number",
  "items": "number",
  "limit_bytes": "number | null",
  "pending_bytes": "number",
  "watched_available": "boolean",
  "matches": "number",
  "per_page": "number",
  "entries": [
    {
      "id": "number",
      "media_type": "string",
      "tier": "string",
      "tmdb_id": "number | null",
      "tvdb_id": "number | null",
      "season": "number | null",
      "title": "string",
      "size_bytes": "number",
      "state": "string",
      "measured_at": "ISO 8601",
      "path": "string",
      "released_at": "ISO 8601 | null",
      "release_wish": "string | null",
      "watched": "boolean | null"
    }
  ]
}

GET /api/v1/tickets/open-count promised

Number of open tickets

How many tickets are still open. A plain number, meant for a dashboard.

Nexview nutzt TMDB als Datenquelle, stammt aber nicht von TMDB und wird von TMDB nicht unterstützt. Die Bildschirmfotos stammen aus einer Testinstallation; die darin gezeigten Konten und Anfragen sind erfunden.

Nexview steht unter der AGPL-3.0-Lizenz. Radarr, Sonarr, Plex, Docker, Synology, IMDb, Rotten Tomatoes, Metacritic und JustWatch sind Marken der jeweiligen Rechteinhaber und werden hier ausschließlich beschreibend genannt. Ein Teil der Symbole auf dieser Seite beruht auf Lucide (ISC-Lizenz) — Rechte teils bei Cole Bemis 2013–2022 als Bestandteil von Feather (MIT-Lizenz), im Übrigen bei den Lucide-Mitwirkenden ab 2022.