Speicher
19 Adressen. Ohne Zusage — sie gehören zum Innenteil der Anwendung und können sich mit jeder Fassung ändern. Wer sich auf etwas verlassen muss, nimmt die zugesagten dreizehn.
POST
/api/storage/abgleich
may change
Measure storage now
Run the storage measurement immediately instead of waiting for the hourly pass. Built for one moment in particular: the first start after an update. The cleanup suggestion needs the file date from Radarr/Sonarr, and until the first pass has run there is nothing to suggest from.
Felder und Aufbau
Antwort
neuZahl PflichtaktualisiertZahl PflichtentferntZahl Pflichtmit_datumZahl Pflichtposten_gesamtZahl PflichtAufbau der Antwort
{
"neu": "number",
"aktualisiert": "number",
"entfernt": "number",
"mit_datum": "number",
"posten_gesamt": "number"
}
POST
/api/storage/entries/{posten_id}/abgeben
may change
Offer an item up
"I do not need this any more" - puts one of your own items up for a decision. Nothing happens to the file, and the item still counts against your quota until somebody decides. Anything else would let people free their quota by offering everything up and never following through.
Felder und Aufbau
Parameter
posten_idZahl path PflichtAnfragekörper
wishText oder nullAntwort
idZahl Pflichtmedia_typeText PflichttierText Pflichttmdb_idZahl oder null Pflichttvdb_idZahl oder null PflichtseasonZahl oder null PflichttitleText Pflichtsize_bytesZahl PflichtstateText Pflichtmeasured_atZeitpunkt (ISO 8601) PflichtpathTextreleased_atZeitpunkt (ISO 8601) oder nullrelease_wishText oder nullwatchedja/nein oder nullmanagedja/neinAufbau der Antwort
{
"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"
}
POST
/api/storage/entries/{posten_id}/behalten
may change
Withdraw an offer
Take back an offer - "actually, no". Stops an accidental click from standing until the next decision. Nothing changes on the quota: the item counted the whole time.
Felder und Aufbau
Parameter
posten_idZahl path PflichtAntwort
idZahl Pflichtmedia_typeText PflichttierText Pflichttmdb_idZahl oder null Pflichttvdb_idZahl oder null PflichtseasonZahl oder null PflichttitleText Pflichtsize_bytesZahl PflichtstateText Pflichtmeasured_atZeitpunkt (ISO 8601) PflichtpathTextreleased_atZeitpunkt (ISO 8601) oder nullrelease_wishText oder nullwatchedja/nein oder nullmanagedja/neinAufbau der Antwort
{
"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/storage/entries/{posten_id}/dateien
may change
Which files would go
The dry run: exactly which files a deletion would remove. Nothing is touched. An administrator confirms later with this list in front of them rather than with a number - a mistake when deleting season by season is expensive, and a count does not show which season it would hit.
Felder und Aufbau
Parameter
posten_idZahl path PflichtAntwort
filesListe von StorageDatei Pflichttotal_bytesZahl Pflichtdeletableja/nein PflichtreasonTextAufbau der Antwort
{
"files": [
{
"path": "string",
"size_bytes": "number"
}
],
"total_bytes": "number",
"deletable": "boolean",
"reason": "string"
}
POST
/api/storage/entries/{posten_id}/entfolgen
may change
Keep it, stop following
Carries out the third possible outcome of an offer: the files stay, the monitoring stops. It is the only outcome where the item stays charged to its owner - the files are still there, and somebody wanted them kept.
Felder und Aufbau
Parameter
posten_idZahl path PflichtAntwort
idZahl Pflichtmedia_typeText PflichttierText Pflichttmdb_idZahl oder null Pflichttvdb_idZahl oder null PflichtseasonZahl oder null PflichttitleText Pflichtsize_bytesZahl PflichtstateText Pflichtmeasured_atZeitpunkt (ISO 8601) PflichtpathTextreleased_atZeitpunkt (ISO 8601) oder nullrelease_wishText oder nullwatchedja/nein oder nullmanagedja/neinAufbau der Antwort
{
"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"
}
POST
/api/storage/entries/{posten_id}/haus
may change
Move an item to the house
Attribute an item to the house instead of a person, freeing that person's quota. No file is touched. The title stays exactly where it is; only who it is charged to changes. That is the point: an administrator can relieve someone without anybody losing anything.
Felder und Aufbau
Parameter
posten_idZahl path PflichtAntwort
idZahl Pflichtmedia_typeText PflichttierText Pflichttmdb_idZahl oder null Pflichttvdb_idZahl oder null PflichtseasonZahl oder null PflichttitleText Pflichtsize_bytesZahl PflichtstateText Pflichtmeasured_atZeitpunkt (ISO 8601) PflichtpathTextreleased_atZeitpunkt (ISO 8601) oder nullrelease_wishText oder nullwatchedja/nein oder nullmanagedja/neinAufbau der Antwort
{
"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"
}
POST
/api/storage/entries/{posten_id}/loeschen
may change
Delete a title and its files
Removes the title including the file. ⚠️ The one operation in Nexview with no way back, apart from whatever recycle bin Radarr or Sonarr provide. If none is configured, the file is gone immediately and for good - so the caller is expected to have shown the file list first.
Felder und Aufbau
Parameter
posten_idZahl path Pflicht
POST
/api/storage/entries/{posten_id}/vormerken
may change
Mark for deletion, with a grace period
Sets a deletion date in the future instead of deleting now. Nothing happens to the file: the item stays where it is, keeps counting, and can be rescued until the last minute. Anyone who watches it in the meantime cancels the deletion without ever learning one was pending.
Felder und Aufbau
Parameter
posten_idZahl path PflichtAnfragekörper
tageZahlAntwort
posten_idZahl Pflichtmedia_typeText Pflichttmdb_idZahl oder null PflichtseasonZahl oder null PflichttitleText Pflichtsize_bytesZahl Pflichtloescht_amZeitpunkt (ISO 8601) Pflichttage_uebrigZahl Pflichtposter_urlText oder nullAufbau der Antwort
{
"posten_id": "number",
"media_type": "string",
"tmdb_id": "number | null",
"season": "number | null",
"title": "string",
"size_bytes": "number",
"loescht_am": "ISO 8601",
"tage_uebrig": "number",
"poster_url": "string | null"
}
POST
/api/storage/entries/{posten_id}/vormerkung-aufheben
may change
Cancel a pending deletion
Takes the deletion mark off again. Everyone who was told about the deletion is told about this too - an announcement only the person who made it can see is not an announcement.
Felder und Aufbau
Parameter
posten_idZahl path Pflicht
GET
/api/storage/house
may change
What the house holds
Everything attributed to the house, largest first, paged and searchable. Administrators only, for a concrete reason: the rows carry the path on the server, and an ordinary account has no business knowing the layout of the machine.
Felder und Aufbau
Parameter
qText querypageZahl queryAntwort
used_bytesZahl PflichtitemsZahl PflichtmatchesZahl Pflichtfree_bytesZahlfree_volumesZahlper_pageZahlentriesListe von StoragePosten PflichtAufbau der Antwort
{
"used_bytes": "number",
"items": "number",
"matches": "number",
"free_bytes": "number",
"free_volumes": "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/storage/me
may change
Your own storage
What is attributed to the calling account, largest first, with the individual items. The order is the point of the list: anyone asked to free up space needs to see where the space actually is. Without paths - where a file sits on the server is none of a requester's business.
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/storage/me/aufraeumen
may change
Your own unwatched titles
What is attributed to this account and has not been watched for a long time. The same service as the statistics view, but narrowed - and without the house collection, because you can only give up what is yours.
Felder und Aufbau
Parameter
monateZahl querygrenzeZahl querysucheText queryartmovie | tv oder null querynur_vorgemerktja/nein queryAntwort
postenListe von AufraeumPosten Pflichtgesamt_anzahlZahl Pflichtgesamt_bytesZahl PflichtmonateZahl PflichtgrundlageAufraeumGrundlage Pflichtohne_datumZahl Pflichtgesehen_ohne_datumZahlAufbau der Antwort
{
"posten": [
{
"posten_id": "number",
"media_type": "string",
"tmdb_id": "number | null",
"tvdb_id": "number | null",
"season": "number | null",
"tier": "string",
"title": "string",
"size_bytes": "number",
"state": "string",
"besitzer": "string | null",
"zuletzt_gesehen": "ISO 8601 | null",
"gesehen_von": [
"string"
],
"bewertung": "number | null",
"bewertungen": "number"
}
],
"gesamt_anzahl": "number",
"gesamt_bytes": "number",
"monate": "number",
"grundlage": {
"konten_gesamt": "number",
"konten_verknuepft": "number",
"ohne_verknuepfung": [
"string"
],
"vollstaendig": "boolean"
},
"ohne_datum": "number",
"gesehen_ohne_datum": "number"
}
GET
/api/storage/overview
may change
Who uses how much
Storage use per account. Deliberately administrators only: how much space somebody takes up is a statement about a person. Approvers do not see it, for the same reason they do not see the ticket centre.
Felder und Aufbau
Antwort
total_bytesZahl Pflichthouse_bytesZahl Pflichthouse_itemsZahl PflichtsharesListe von StorageAnteil PflichtAufbau der Antwort
{
"total_bytes": "number",
"house_bytes": "number",
"house_items": "number",
"shares": [
{
"user_id": "number | null",
"username": "string | null",
"display_name": "string | null",
"used_bytes": "number",
"items": "number",
"limit_bytes": "number | null"
}
]
}
GET
/api/storage/recyclebin
may change
What sits in the recycle bins
What Radarr and Sonarr are holding in their recycle bins - and therefore still occupying disk. A recycle bin is not free space. What sits there has not left the disk; it is only waiting for its retention period to run out.
Felder und Aufbau
Antwort
total_bytesZahl Pflichtincompleteja/nein PflichtinstancesListe von Objekt PflichtAufbau der Antwort
{
"total_bytes": "number",
"incomplete": "boolean",
"instances": [
"object"
]
}
GET
/api/storage/releases
may change
Items awaiting a decision
Offers waiting to be decided, oldest first. Administrators only, and that is a safety rule: approvers have a quota of their own and standing auto-approval. Letting them decide offers would let them shift their own storage onto the house.
Felder und Aufbau
Antwort
entryStoragePosten Pflichtuser_idZahl oder null PflichtusernameText oder null Pflichtdisplay_nameText oder null Pflichtreleased_atZeitpunkt (ISO 8601) oder null PflichtAufbau der Antwort
[
{
"entry": {
"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"
},
"user_id": "number | null",
"username": "string | null",
"display_name": "string | null",
"released_at": "ISO 8601 | null"
}
]
GET
/api/storage/umbuchung
may change
Preview: move everything to the house
The numbers behind "move all holdings to the house". The dialogue in front of it has to be able to say "X titles totalling Y GB will become house holdings" - a general warning gets clicked away, a number gets read.
Felder und Aufbau
Antwort
countZahl PflichtbytesZahl PflichtAufbau der Antwort
{
"count": "number",
"bytes": "number"
}
POST
/api/storage/umbuchung
may change
Move everything to the house
Attributes every item to the house, so every account starts at zero. Until 0.19 this happened as a side effect of switching the accounting mode. The mode is gone; the operation remains, as the deliberate way to reset a household that has grown lopsided.
Felder und Aufbau
Antwort
countZahl PflichtbytesZahl PflichtAufbau der Antwort
{
"count": "number",
"bytes": "number"
}
GET
/api/storage/user/{user_id}
may change
Storage of one account
What this one account occupies, largest first. Administrators only, for the same reason as the overview: how much space somebody takes up is a statement about a person.
Felder und Aufbau
Parameter
user_idZahl path PflichtqText querypageZahl queryAntwort
user_idZahl PflichtusernameText Pflichtdisplay_nameText oder null Pflichtused_bytesZahl PflichtitemsZahl Pflichtlimit_bytesZahl oder nullpending_bytesZahl PflichtmatchesZahl Pflichtper_pageZahlentriesListe von StoragePosten PflichtAufbau der Antwort
{
"user_id": "number",
"username": "string",
"display_name": "string | null",
"used_bytes": "number",
"items": "number",
"limit_bytes": "number | null",
"pending_bytes": "number",
"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/storage/vorgemerkt
may change
What is about to disappear
Everything marked for deletion, visible to everyone. Deliberately not restricted to administrators: the whole purpose of a grace period is that the household notices it. An announcement only its author reads is not an announcement.
Felder und Aufbau
Antwort
posten_idZahl Pflichtmedia_typeText Pflichttmdb_idZahl oder null PflichtseasonZahl oder null PflichttitleText Pflichtsize_bytesZahl Pflichtloescht_amZeitpunkt (ISO 8601) Pflichttage_uebrigZahl Pflichtposter_urlText oder nullAufbau der Antwort
[
{
"posten_id": "number",
"media_type": "string",
"tmdb_id": "number | null",
"season": "number | null",
"title": "string",
"size_bytes": "number",
"loescht_am": "ISO 8601",
"tage_uebrig": "number",
"poster_url": "string | null"
}
]