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.
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
versionText Pflichtrepo_urlText Pflichtrelease_urlText PflichtlicenseTextupdate_checkedja/neinlatest_versionText oder nullupdate_availableja/neinchecked_atZeitpunkt (ISO 8601) oder nullAufbau 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
request_idZahl Pflichtmedia_typemovie | tv Pflichttmdb_idZahl PflichttitleText PflichtoverviewTextposter_urlText oder nullbackdrop_urlText oder nullrelease_dateText oder nullvote_averageZahlruntime_minutesZahl oder nullgenresListe von Textcompleted_atZeitpunkt (ISO 8601) oder nullrequested_byText Pflichtrequester_avatarText oder nullseasonsListe von ZahlAufbau 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 Pflichttmdb_idZahl path PflichtAntwort
media_typemovie | tv Pflichttmdb_idZahl Pflichttvdb_idZahl oder nulltitleText Pflichtoriginal_titleText oder nulloverviewTextposter_urlText oder nullbackdrop_urlText oder nullrelease_dateText oder nullvote_averageZahlvote_countZahlgenresListe von Textruntime_minutesZahl oder nullcertificationText oder nulloriginal_languageText oder nullorigin_countryListe von TextseasonsListe von SeasonInfostatusTextstatus_uhdText oder nullwatchedja/neinwatched_onListe von Textwatched_not_onListe von TextpathText oder nullpath_uhdText oder nulluhd_in_standardja/neinAufbau 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
media_typemovie | tv Pflichttierstandard | uhdtmdb_idZahl Pflichtquality_profile_idZahl oder nullroot_folder_pathText oder nullmonitor_futureja/neinseasonZahl oder nullfrom_watchlistja/neinAntwort
idZahl Pflichtmedia_typemovie | tv Pflichttierstandard | uhd Pflichttmdb_idZahl PflichttitleText Pflichtposter_pathText oder null Pflichtrelease_dateText oder null Pflichtstatuspending_approval | approved | searching | downloaded | rejected | failed | cancelled | deleted | deferred Pflichtquality_profile_idZahl oder null Pflichtroot_folder_pathText oder null PflichtseasonZahl oder null Pflichtfrom_watchlistja/nein Pflichtrequested_atZeitpunkt (ISO 8601) Pflichtapproved_atZeitpunkt (ISO 8601) oder null Pflichtcompleted_atZeitpunkt (ISO 8601) oder null Pflichtapproved_by_nameText oder nulllast_checked_atZeitpunkt (ISO 8601) oder nullrejection_reasonText oder null Pflichterror_messageText oder null PflichtratingZahl oder null PflichtfeedbackText oder null Pflichtrated_atZeitpunkt (ISO 8601) oder null Pflichtrating_outdatedja/neinfeedback_replyText oder null Pflichtreplied_atZeitpunkt (ISO 8601) oder null PflichtAufbau 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
idZahl Pflichtmedia_typemovie | tv Pflichttierstandard | uhd Pflichttmdb_idZahl PflichttitleText Pflichtposter_pathText oder null Pflichtrelease_dateText oder null Pflichtstatuspending_approval | approved | searching | downloaded | rejected | failed | cancelled | deleted | deferred Pflichtquality_profile_idZahl oder null Pflichtroot_folder_pathText oder null PflichtseasonZahl oder null Pflichtfrom_watchlistja/nein Pflichtrequested_atZeitpunkt (ISO 8601) Pflichtapproved_atZeitpunkt (ISO 8601) oder null Pflichtcompleted_atZeitpunkt (ISO 8601) oder null Pflichtapproved_by_nameText oder nulllast_checked_atZeitpunkt (ISO 8601) oder nullrejection_reasonText oder null Pflichterror_messageText oder null PflichtratingZahl oder null PflichtfeedbackText oder null Pflichtrated_atZeitpunkt (ISO 8601) oder null Pflichtrating_outdatedja/neinfeedback_replyText oder null Pflichtreplied_atZeitpunkt (ISO 8601) oder null PflichtAufbau 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
movieQuotaInfo PflichttvQuotaInfo Pflichtauto_approveja/nein PflichtAufbau 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 PflichtAntwort
idZahl Pflichtmedia_typemovie | tv Pflichttierstandard | uhd Pflichttmdb_idZahl PflichttitleText Pflichtposter_pathText oder null Pflichtrelease_dateText oder null Pflichtstatuspending_approval | approved | searching | downloaded | rejected | failed | cancelled | deleted | deferred Pflichtquality_profile_idZahl oder null Pflichtroot_folder_pathText oder null PflichtseasonZahl oder null Pflichtfrom_watchlistja/nein Pflichtrequested_atZeitpunkt (ISO 8601) Pflichtapproved_atZeitpunkt (ISO 8601) oder null Pflichtcompleted_atZeitpunkt (ISO 8601) oder null Pflichtapproved_by_nameText oder nulllast_checked_atZeitpunkt (ISO 8601) oder nullrejection_reasonText oder null Pflichterror_messageText oder null PflichtratingZahl oder null PflichtfeedbackText oder null Pflichtrated_atZeitpunkt (ISO 8601) oder null Pflichtrating_outdatedja/neinfeedback_replyText oder null Pflichtreplied_atZeitpunkt (ISO 8601) oder null PflichtAufbau 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 PflichtqText query PflichtpageZahl queryAntwort
pageZahl Pflichttotal_pagesZahl Pflichttotal_resultsZahl PflichtitemsListe von MediaItem Pflichtdemoja/neinarr_warningText oder nullAufbau 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 querypageZahl querygesehenja/nein queryAntwort
used_bytesZahl PflichtitemsZahl Pflichtlimit_bytesZahl oder nullpending_bytesZahl Pflichtwatched_availableja/neinmatchesZahlper_pageZahlentriesListe von StoragePosten PflichtAufbau 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.