Upload files to "/"

This commit is contained in:
hunternick87 2025-09-30 15:50:14 +00:00
parent 1fd2a147c2
commit 873be173f2
2 changed files with 3086 additions and 140 deletions

2999
openapi.json Normal file

File diff suppressed because it is too large Load diff

View file

@ -7,6 +7,9 @@ info:
All routes are served from the same origin as the web client. Runtime security All routes are served from the same origin as the web client. Runtime security
is handled via bearer tokens (`Authorization: Bearer <token>`) or the is handled via bearer tokens (`Authorization: Bearer <token>`) or the
`auth_token` HTTP-only cookie set by the OpenID Connect login flow. `auth_token` HTTP-only cookie set by the OpenID Connect login flow.
license:
name: MIT
url: https://opensource.org/licenses/MIT
servers: servers:
- url: http://localhost:3000 - url: http://localhost:3000
description: Local development server description: Local development server
@ -1098,34 +1101,6 @@ paths:
application/json: application/json:
schema: schema:
$ref: '#/components/schemas/ErrorResponse' $ref: '#/components/schemas/ErrorResponse'
/api/admin/database/table/{tableName}/data:
get:
tags: [Admin]
summary: Read table data
operationId: adminGetTableData
parameters:
- name: tableName
in: path
required: true
schema:
type: string
responses:
'200':
description: Rows stored in the table
content:
application/json:
schema:
type: array
items:
type: object
additionalProperties: true
'500':
description: Unable to fetch data
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/admin/database/table/{tableName}:
post: post:
tags: [Admin] tags: [Admin]
summary: Insert a new row summary: Insert a new row
@ -1156,6 +1131,33 @@ paths:
application/json: application/json:
schema: schema:
$ref: '#/components/schemas/ErrorResponse' $ref: '#/components/schemas/ErrorResponse'
/api/admin/database/table/{tableName}/data:
get:
tags: [Admin]
summary: Read table data
operationId: adminGetTableData
parameters:
- name: tableName
in: path
required: true
schema:
type: string
responses:
'200':
description: Rows stored in the table
content:
application/json:
schema:
type: array
items:
type: object
additionalProperties: true
'500':
description: Unable to fetch data
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/admin/database/table/{tableName}/{id}: /api/admin/database/table/{tableName}/{id}:
put: put:
tags: [Admin] tags: [Admin]
@ -1248,11 +1250,9 @@ components:
username: username:
type: string type: string
display_name: display_name:
type: string type: [string, 'null']
nullable: true
email: email:
type: string type: [string, 'null']
nullable: true
role: role:
type: string type: string
description: Either `user` or `admin`. description: Either `user` or `admin`.
@ -1266,9 +1266,8 @@ components:
token: token:
type: string type: string
expires_at: expires_at:
type: string type: [string, 'null']
format: date-time format: date-time
nullable: true
MediaItem: MediaItem:
type: object type: object
properties: properties:
@ -1280,18 +1279,15 @@ components:
type: string type: string
enum: [movie, series] enum: [movie, series]
sub_type: sub_type:
type: string type: [string, 'null']
nullable: true
overview: overview:
type: string type: [string, 'null']
nullable: true
genres: genres:
type: array type: array
items: items:
type: string type: string
parental_rating: parental_rating:
type: string type: [string, 'null']
nullable: true
ratings: ratings:
type: object type: object
additionalProperties: true additionalProperties: true
@ -1301,14 +1297,11 @@ components:
tmdb_id: tmdb_id:
type: integer type: integer
tvdb_id: tvdb_id:
type: integer type: [integer, 'null']
nullable: true
imdb_id: imdb_id:
type: string type: [string, 'null']
nullable: true
arr_id: arr_id:
type: integer type: [integer, 'null']
nullable: true
hidden: hidden:
type: boolean type: boolean
required: required:
@ -1331,8 +1324,7 @@ components:
season_number: season_number:
type: integer type: integer
overview: overview:
type: string type: [string, 'null']
nullable: true
metadata: metadata:
type: object type: object
additionalProperties: true additionalProperties: true
@ -1363,8 +1355,7 @@ components:
episode_number: episode_number:
type: integer type: integer
overview: overview:
type: string type: [string, 'null']
nullable: true
metadata: metadata:
type: object type: object
additionalProperties: true additionalProperties: true
@ -1386,22 +1377,18 @@ components:
media_id: media_id:
type: string type: string
season_id: season_id:
type: string type: [string, 'null']
nullable: true
type: type:
type: string type: string
enum: [episode, movie, season] enum: [episode, movie, season]
name: name:
type: string type: string
season_number: season_number:
type: integer type: [integer, 'null']
nullable: true
episode_number: episode_number:
type: integer type: [integer, 'null']
nullable: true
overview: overview:
type: string type: [string, 'null']
nullable: true
metadata: metadata:
type: object type: object
additionalProperties: true additionalProperties: true
@ -1418,10 +1405,9 @@ components:
- type: object - type: object
properties: properties:
episodes: episodes:
type: array type: [array, 'null']
items: items:
$ref: '#/components/schemas/EpisodeItem' $ref: '#/components/schemas/EpisodeItem'
nullable: true
MediaWithLibrary: MediaWithLibrary:
allOf: allOf:
- $ref: '#/components/schemas/MediaItem' - $ref: '#/components/schemas/MediaItem'
@ -1446,13 +1432,12 @@ components:
type: string type: string
enum: [movie, series] enum: [movie, series]
sub_type: sub_type:
type: string type: [string, 'null']
nullable: true
seasons: seasons:
type: array type: array
items: items:
type: integer type: integer
nullable: true default: []
status: status:
type: string type: string
requester_id: requester_id:
@ -1463,17 +1448,13 @@ components:
title: title:
type: string type: string
year: year:
type: integer type: [integer, 'null']
nullable: true
poster_path: poster_path:
type: string type: [string, 'null']
nullable: true
backdrop_path: backdrop_path:
type: string type: [string, 'null']
nullable: true
overview: overview:
type: string type: [string, 'null']
nullable: true
required: required:
- id - id
- tmdb_id - tmdb_id
@ -1491,8 +1472,7 @@ components:
type: string type: string
enum: [movie, series] enum: [movie, series]
sub_type: sub_type:
type: string type: [string, 'null']
nullable: true
seasons: seasons:
type: array type: array
items: items:
@ -1502,16 +1482,13 @@ components:
type: object type: object
properties: properties:
poster_path: poster_path:
type: string type: [string, 'null']
nullable: true
backdrop_path: backdrop_path:
type: string type: [string, 'null']
nullable: true
title: title:
type: string type: string
overview: overview:
type: string type: [string, 'null']
nullable: true
required: required:
- tmdb_id - tmdb_id
- type - type
@ -1521,39 +1498,29 @@ components:
id: id:
type: integer type: integer
title: title:
type: string type: [string, 'null']
nullable: true
name: name:
type: string type: [string, 'null']
nullable: true
media_type: media_type:
type: string type: string
overview: overview:
type: string type: [string, 'null']
nullable: true
poster_path: poster_path:
type: string type: [string, 'null']
nullable: true
backdrop_path: backdrop_path:
type: string type: [string, 'null']
nullable: true
vote_average: vote_average:
type: number type: [number, 'null']
format: float format: float
nullable: true
vote_count: vote_count:
type: integer type: [integer, 'null']
nullable: true
popularity: popularity:
type: number type: [number, 'null']
format: float format: float
nullable: true
release_date: release_date:
type: string type: [string, 'null']
nullable: true
first_air_date: first_air_date:
type: string type: [string, 'null']
nullable: true
genre_ids: genre_ids:
type: array type: array
items: items:
@ -1581,8 +1548,7 @@ components:
type: object type: object
additionalProperties: true additionalProperties: true
credits: credits:
type: object type: [object, 'null']
nullable: true
additionalProperties: true additionalProperties: true
recommendations: recommendations:
type: array type: array
@ -1595,12 +1561,10 @@ components:
type: object type: object
additionalProperties: true additionalProperties: true
score: score:
type: object type: [object, 'null']
nullable: true
additionalProperties: true additionalProperties: true
localdata: localdata:
type: object type: [object, 'null']
nullable: true
additionalProperties: true additionalProperties: true
keywords: keywords:
type: array type: array
@ -1614,8 +1578,7 @@ components:
type: object type: object
additionalProperties: true additionalProperties: true
credits: credits:
type: object type: [object, 'null']
nullable: true
additionalProperties: true additionalProperties: true
recommendations: recommendations:
type: array type: array
@ -1628,12 +1591,10 @@ components:
type: object type: object
additionalProperties: true additionalProperties: true
score: score:
type: object type: [object, 'null']
nullable: true
additionalProperties: true additionalProperties: true
localdata: localdata:
type: object type: [object, 'null']
nullable: true
additionalProperties: true additionalProperties: true
keywords: keywords:
type: array type: array
@ -1675,13 +1636,11 @@ components:
enabled: enabled:
type: boolean type: boolean
lastRun: lastRun:
type: string type: [string, 'null']
format: date-time format: date-time
nullable: true
nextRun: nextRun:
type: string type: [string, 'null']
format: date-time format: date-time
nullable: true
running: running:
type: boolean type: boolean
TaskActionRequest: TaskActionRequest:
@ -1698,11 +1657,9 @@ components:
seriesId: seriesId:
type: integer type: integer
seasonNumber: seasonNumber:
type: integer type: [integer, 'null']
nullable: true
episodeNumber: episodeNumber:
type: integer type: [integer, 'null']
nullable: true
type: type:
type: string type: string
enum: [season, episode, series, all] enum: [season, episode, series, all]
@ -1736,36 +1693,27 @@ components:
type: boolean type: boolean
example: true example: true
message: message:
type: string type: [string, 'null']
nullable: true
result: result:
type: object type: [object, 'null']
nullable: true
additionalProperties: true additionalProperties: true
path: path:
type: string type: [string, 'null']
nullable: true
DatabaseStats: DatabaseStats:
type: object type: object
properties: properties:
userCount: userCount:
type: integer type: [integer, 'null']
nullable: true
mediaCount: mediaCount:
type: integer type: [integer, 'null']
nullable: true
requestCount: requestCount:
type: integer type: [integer, 'null']
nullable: true
activeRequests: activeRequests:
type: integer type: [integer, 'null']
nullable: true
completedRequests: completedRequests:
type: integer type: [integer, 'null']
nullable: true
userTokens: userTokens:
type: integer type: [integer, 'null']
nullable: true
TableColumn: TableColumn:
type: object type: object
properties: properties:
@ -1774,10 +1722,9 @@ components:
allowNull: allowNull:
type: boolean type: boolean
defaultValue: defaultValue:
nullable: true type: [string, number, boolean, object, 'null']
primaryKey: primaryKey:
type: boolean type: boolean
autoIncrement: autoIncrement:
type: boolean type: [boolean, 'null']
nullable: true
additionalProperties: true additionalProperties: true