diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..fe1152b --- /dev/null +++ b/.dockerignore @@ -0,0 +1,30 @@ +**/.classpath +**/.dockerignore +**/.env +**/.git +**/.gitignore +**/.project +**/.settings +**/.toolstarget +**/.vs +**/.vscode +**/*.*proj.user +**/*.dbmdl +**/*.jfm +**/azds.yaml +**/bin +**/charts +**/docker-compose* +**/Dockerfile* +**/node_modules +**/npm-debug.log +**/obj +**/secrets.dev.yaml +**/values.dev.yaml +LICENSE +README.md +!**/.gitignore +!.git/HEAD +!.git/config +!.git/packed-refs +!.git/refs/heads/** \ No newline at end of file diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..1ff0c42 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,63 @@ +############################################################################### +# Set default behavior to automatically normalize line endings. +############################################################################### +* text=auto + +############################################################################### +# Set default behavior for command prompt diff. +# +# This is need for earlier builds of msysgit that does not have it on by +# default for csharp files. +# Note: This is only used by command line +############################################################################### +#*.cs diff=csharp + +############################################################################### +# Set the merge driver for project and solution files +# +# Merging from the command prompt will add diff markers to the files if there +# are conflicts (Merging from VS is not affected by the settings below, in VS +# the diff markers are never inserted). Diff markers may cause the following +# file extensions to fail to load in VS. An alternative would be to treat +# these files as binary and thus will always conflict and require user +# intervention with every merge. To do so, just uncomment the entries below +############################################################################### +#*.sln merge=binary +#*.csproj merge=binary +#*.vbproj merge=binary +#*.vcxproj merge=binary +#*.vcproj merge=binary +#*.dbproj merge=binary +#*.fsproj merge=binary +#*.lsproj merge=binary +#*.wixproj merge=binary +#*.modelproj merge=binary +#*.sqlproj merge=binary +#*.wwaproj merge=binary + +############################################################################### +# behavior for image files +# +# image files are treated as binary by default. +############################################################################### +#*.jpg binary +#*.png binary +#*.gif binary + +############################################################################### +# diff behavior for common document formats +# +# Convert binary document formats to text before diffing them. This feature +# is only available from the command line. Turn it on by uncommenting the +# entries below. +############################################################################### +#*.doc diff=astextplain +#*.DOC diff=astextplain +#*.docx diff=astextplain +#*.DOCX diff=astextplain +#*.dot diff=astextplain +#*.DOT diff=astextplain +#*.pdf diff=astextplain +#*.PDF diff=astextplain +#*.rtf diff=astextplain +#*.RTF diff=astextplain diff --git a/.github/ISSUE_TEMPLATE/bug-report.yml b/.github/ISSUE_TEMPLATE/bug-report.yml new file mode 100644 index 0000000..b892d74 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug-report.yml @@ -0,0 +1,53 @@ +name: Bug Report +description: File a bug report. +title: "[Bug]: " +labels: ["bug", "triage"] +assignees: + - Fazzani +body: + - type: markdown + attributes: + value: | + Thanks for taking the time to fill out this bug report! + - type: input + id: contact + attributes: + label: Contact Details + description: How can we get in touch with you if we need more info? + placeholder: ex. email@example.com + validations: + required: false + - type: textarea + id: what-happened + attributes: + label: What happened? + description: Also tell us, what did you expect to happen? + placeholder: Tell us what you see! + value: "A bug happened!" + validations: + required: true + - type: dropdown + id: version + attributes: + label: Version + description: What version of our software are you running? + options: + - 1.0.2 (Default) + - 1.0.3 (Edge) + default: 0 + validations: + required: true + - type: textarea + id: logs + attributes: + label: Relevant log output + description: Please copy and paste any relevant log output. This will be automatically formatted into code, so no need for backticks. + render: shell + - type: checkboxes + id: terms + attributes: + label: Code of Conduct + description: By submitting this issue, you agree to follow our [Code of Conduct](https://example.com). + options: + - label: I agree to follow this project's Code of Conduct + required: true diff --git a/.github/ISSUE_TEMPLATE/feature-request.yml b/.github/ISSUE_TEMPLATE/feature-request.yml new file mode 100644 index 0000000..c593a63 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature-request.yml @@ -0,0 +1,35 @@ +name: Feature Report +description: File a new Feature Proposal Template +title: "[Feature]: " +labels: ["feature", "enhancement"] +assignees: + - Fazzani +body: + - type: markdown + attributes: + value: | + New Feature Proposal + - type: input + id: contact + attributes: + label: Contact Details + description: How can we get in touch with you if we need more info? + placeholder: ex. email@example.com + validations: + required: false + - type: textarea + id: short-description + attributes: + label: Short description + description: Provide a short single paragraph description for the feature. + placeholder: short description. + validations: + required: true + - type: textarea + id: constraints + attributes: + label: Constraints and Assumptions? + description: Also tell us, what did you expect to happen? + placeholder: Provide a high level description of what did you expect to happen + validations: + required: false diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md new file mode 100644 index 0000000..c7e22b5 --- /dev/null +++ b/.github/pull_request_template.md @@ -0,0 +1,17 @@ +## Proposed changes + +Describe the big picture of your changes here to communicate to the maintainers why we should accept this pull request. If it fixes a bug or resolves a feature request, be sure to link to that issue. + +## Types of changes + +What types of changes does your code introduce to Appium? +_Put an `x` in the boxes that apply_ + +- [ ] Bugfix (non-breaking change which fixes an issue) +- [ ] New feature (non-breaking change which adds functionality) +- [ ] Breaking change (fix or feature that would cause existing functionality to not work as expected) +- [ ] Documentation Update (if none of the other choices apply) + +## Further comments + +If this is a relatively large or complex change, kick off the discussion by explaining why you chose the solution you did and what alternatives you considered, etc... diff --git a/.github/release.yml b/.github/release.yml new file mode 100644 index 0000000..1771f0c --- /dev/null +++ b/.github/release.yml @@ -0,0 +1,26 @@ +# .github/release.yml + +changelog: + exclude: + labels: + - ignore-for-release + authors: + - dependabot + categories: + - title: Breaking Changes 🛠 + labels: + - Semver-Major + - breaking-change + - title: Exciting New Features 🎉 + labels: + - Semver-Minor + - enhancement + - title: Other Changes + labels: + - "*" + exclude: + labels: + - dependencies + - title: 👒 Dependencies + labels: + - dependencies diff --git a/.github/workflows/docker-image.yml b/.github/workflows/docker-image.yml new file mode 100644 index 0000000..b007253 --- /dev/null +++ b/.github/workflows/docker-image.yml @@ -0,0 +1,42 @@ +name: Docker Image CI + +on: + push: + tags: + - "v*.*.*" + +jobs: + + build: + + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v4 + - name: Docker meta + id: meta + uses: docker/metadata-action@v5 + with: + images: | + synker/proxarr + tags: | + type=semver,pattern={{version}} + type=semver,pattern={{major}}.{{minor}} + type=semver,pattern={{major}} + type=sha + - name: Login to Docker Hub + uses: docker/login-action@v3 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + + - name: Set up QEMU + uses: docker/setup-qemu-action@v3 + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Build and push + uses: docker/build-push-action@v6 + with: + push: true + tags: ${{ steps.meta.outputs.tags }} diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml new file mode 100644 index 0000000..1149871 --- /dev/null +++ b/.github/workflows/pr.yml @@ -0,0 +1,28 @@ +name: .NET + +on: + push: + branches: [ "master" ] + pull_request: + branches: [ "master" ] + +jobs: + build: + + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v4 + - name: Setup .NET + uses: actions/setup-dotnet@v4 + with: + dotnet-version: 9.0.x + - name: Restore dependencies + run: dotnet restore + working-directory: ./src + - name: Build + run: dotnet build --no-restore + working-directory: ./src + - name: Test + run: dotnet test --no-build --verbosity normal + working-directory: ./src diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..36b0c1c --- /dev/null +++ b/.gitignore @@ -0,0 +1,365 @@ +## Ignore Visual Studio temporary files, build results, and +## files generated by popular Visual Studio add-ons. +## +## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore + +# User-specific files +*.rsuser +*.suo +*.user +*.userosscache +*.sln.docstates + +# User-specific files (MonoDevelop/Xamarin Studio) +*.userprefs + +# Mono auto generated files +mono_crash.* + +# Build results +[Dd]ebug/ +[Dd]ebugPublic/ +[Rr]elease/ +[Rr]eleases/ +x64/ +x86/ +[Ww][Ii][Nn]32/ +[Aa][Rr][Mm]/ +[Aa][Rr][Mm]64/ +bld/ +[Bb]in/ +[Oo]bj/ +[Oo]ut/ +[Ll]og/ +[Ll]ogs/ + +# Visual Studio 2015/2017 cache/options directory +.vs/ +# Uncomment if you have tasks that create the project's static files in wwwroot +#wwwroot/ + +# Visual Studio 2017 auto generated files +Generated\ Files/ + +# MSTest test Results +[Tt]est[Rr]esult*/ +[Bb]uild[Ll]og.* + +# NUnit +*.VisualState.xml +TestResult.xml +nunit-*.xml + +# Build Results of an ATL Project +[Dd]ebugPS/ +[Rr]eleasePS/ +dlldata.c + +# Benchmark Results +BenchmarkDotNet.Artifacts/ + +# .NET Core +project.lock.json +project.fragment.lock.json +artifacts/ + +# ASP.NET Scaffolding +ScaffoldingReadMe.txt + +# StyleCop +StyleCopReport.xml + +# Files built by Visual Studio +*_i.c +*_p.c +*_h.h +*.ilk +*.meta +*.obj +*.iobj +*.pch +*.pdb +*.ipdb +*.pgc +*.pgd +*.rsp +*.sbr +*.tlb +*.tli +*.tlh +*.tmp +*.tmp_proj +*_wpftmp.csproj +*.log +*.vspscc +*.vssscc +.builds +*.pidb +*.svclog +*.scc + +# Chutzpah Test files +_Chutzpah* + +# Visual C++ cache files +ipch/ +*.aps +*.ncb +*.opendb +*.opensdf +*.sdf +*.cachefile +*.VC.db +*.VC.VC.opendb + +# Visual Studio profiler +*.psess +*.vsp +*.vspx +*.sap + +# Visual Studio Trace Files +*.e2e + +# TFS 2012 Local Workspace +$tf/ + +# Guidance Automation Toolkit +*.gpState + +# ReSharper is a .NET coding add-in +_ReSharper*/ +*.[Rr]e[Ss]harper +*.DotSettings.user + +# TeamCity is a build add-in +_TeamCity* + +# DotCover is a Code Coverage Tool +*.dotCover + +# AxoCover is a Code Coverage Tool +.axoCover/* +!.axoCover/settings.json + +# Coverlet is a free, cross platform Code Coverage Tool +coverage*.json +coverage*.xml +coverage*.info + +# Visual Studio code coverage results +*.coverage +*.coveragexml + +# NCrunch +_NCrunch_* +.*crunch*.local.xml +nCrunchTemp_* + +# MightyMoose +*.mm.* +AutoTest.Net/ + +# Web workbench (sass) +.sass-cache/ + +# Installshield output folder +[Ee]xpress/ + +# DocProject is a documentation generator add-in +DocProject/buildhelp/ +DocProject/Help/*.HxT +DocProject/Help/*.HxC +DocProject/Help/*.hhc +DocProject/Help/*.hhk +DocProject/Help/*.hhp +DocProject/Help/Html2 +DocProject/Help/html + +# Click-Once directory +publish/ + +# Publish Web Output +*.[Pp]ublish.xml +*.azurePubxml +# Note: Comment the next line if you want to checkin your web deploy settings, +# but database connection strings (with potential passwords) will be unencrypted +*.pubxml +*.publishproj + +# Microsoft Azure Web App publish settings. Comment the next line if you want to +# checkin your Azure Web App publish settings, but sensitive information contained +# in these scripts will be unencrypted +PublishScripts/ + +# NuGet Packages +*.nupkg +# NuGet Symbol Packages +*.snupkg +# The packages folder can be ignored because of Package Restore +**/[Pp]ackages/* +# except build/, which is used as an MSBuild target. +!**/[Pp]ackages/build/ +# Uncomment if necessary however generally it will be regenerated when needed +#!**/[Pp]ackages/repositories.config +# NuGet v3's project.json files produces more ignorable files +*.nuget.props +*.nuget.targets + +# Microsoft Azure Build Output +csx/ +*.build.csdef + +# Microsoft Azure Emulator +ecf/ +rcf/ + +# Windows Store app package directories and files +AppPackages/ +BundleArtifacts/ +Package.StoreAssociation.xml +_pkginfo.txt +*.appx +*.appxbundle +*.appxupload + +# Visual Studio cache files +# files ending in .cache can be ignored +*.[Cc]ache +# but keep track of directories ending in .cache +!?*.[Cc]ache/ + +# Others +ClientBin/ +~$* +*~ +*.dbmdl +*.dbproj.schemaview +*.jfm +*.pfx +*.publishsettings +orleans.codegen.cs + +# Including strong name files can present a security risk +# (https://github.com/github/gitignore/pull/2483#issue-259490424) +#*.snk + +# Since there are multiple workflows, uncomment next line to ignore bower_components +# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) +#bower_components/ + +# RIA/Silverlight projects +Generated_Code/ + +# Backup & report files from converting an old project file +# to a newer Visual Studio version. Backup files are not needed, +# because we have git ;-) +_UpgradeReport_Files/ +Backup*/ +UpgradeLog*.XML +UpgradeLog*.htm +ServiceFabricBackup/ +*.rptproj.bak + +# SQL Server files +*.mdf +*.ldf +*.ndf + +# Business Intelligence projects +*.rdl.data +*.bim.layout +*.bim_*.settings +*.rptproj.rsuser +*- [Bb]ackup.rdl +*- [Bb]ackup ([0-9]).rdl +*- [Bb]ackup ([0-9][0-9]).rdl + +# Microsoft Fakes +FakesAssemblies/ + +# GhostDoc plugin setting file +*.GhostDoc.xml + +# Node.js Tools for Visual Studio +.ntvs_analysis.dat +node_modules/ + +# Visual Studio 6 build log +*.plg + +# Visual Studio 6 workspace options file +*.opt + +# Visual Studio 6 auto-generated workspace file (contains which files were open etc.) +*.vbw + +# Visual Studio LightSwitch build output +**/*.HTMLClient/GeneratedArtifacts +**/*.DesktopClient/GeneratedArtifacts +**/*.DesktopClient/ModelManifest.xml +**/*.Server/GeneratedArtifacts +**/*.Server/ModelManifest.xml +_Pvt_Extensions + +# Paket dependency manager +.paket/paket.exe +paket-files/ + +# FAKE - F# Make +.fake/ + +# CodeRush personal settings +.cr/personal + +# Python Tools for Visual Studio (PTVS) +__pycache__/ +*.pyc + +# Cake - Uncomment if you are using it +# tools/** +# !tools/packages.config + +# Tabs Studio +*.tss + +# Telerik's JustMock configuration file +*.jmconfig + +# BizTalk build output +*.btp.cs +*.btm.cs +*.odx.cs +*.xsd.cs + +# OpenCover UI analysis results +OpenCover/ + +# Azure Stream Analytics local run output +ASALocalRun/ + +# MSBuild Binary and Structured Log +*.binlog + +# NVidia Nsight GPU debugger configuration file +*.nvuser + +# MFractors (Xamarin productivity tool) working folder +.mfractor/ + +# Local History for Visual Studio +.localhistory/ + +# BeatPulse healthcheck temp database +healthchecksdb + +# Backup folder for Package Reference Convert tool in Visual Studio 2017 +MigrationBackup/ + +# Ionide (cross platform F# VS Code tools) working folder +.ionide/ + +# Fody - auto-generated XML schema +FodyWeavers.xsd + +**/config.local.yml \ No newline at end of file diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..789d9dd --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,2 @@ +# How to contribute + diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..cc6994b --- /dev/null +++ b/Dockerfile @@ -0,0 +1,47 @@ +FROM mcr.microsoft.com/dotnet/aspnet:9.0 AS base +USER $APP_UID +WORKDIR /app + +ENV ASPNETCORE_HTTP_PORTS=8880 + +EXPOSE $ASPNETCORE_HTTP_PORTS + +ENV LOG_FOLDER=/logs +ENV LOG_LEVEL=Information +ENV CONFIG_PATH=/app/config +ENV Serilog__MinimumLevel=$LOG_LEVEL + +# This stage is used to build the service project +FROM mcr.microsoft.com/dotnet/sdk:9.0 AS build +ARG BUILD_CONFIGURATION=Release +WORKDIR /src +COPY ["src/Proxarr.Api/Proxarr.Api.csproj", "Proxarr.Api/"] +RUN dotnet restore "./Proxarr.Api/Proxarr.Api.csproj" +COPY ./src . +WORKDIR "/src/Proxarr.Api" +RUN dotnet build "./Proxarr.Api.csproj" -c $BUILD_CONFIGURATION -o /app/build + +# This stage is used to publish the service project to be copied to the final stage +FROM build AS publish +ARG BUILD_CONFIGURATION=Release +RUN dotnet publish "./Proxarr.Api.csproj" -c $BUILD_CONFIGURATION -o /app/publish /p:UseAppHost=false + +# This stage is used in production or when running from VS in regular mode (Default when not using the Debug configuration) +FROM base AS final + +WORKDIR /app +VOLUME ${LOG_FOLDER}/ +VOLUME ${CONFIG_PATH}/ +COPY --from=publish /app/publish . + +USER root + +RUN apt-get update && apt-get install -y --no-install-recommends \ + curl \ + && rm -rf /var/lib/apt/lists/* + +USER $APP_UID + +HEALTHCHECK --interval=30s --timeout=10s --start-period=5s --retries=3 CMD curl -f http://localhost:$ASPNETCORE_HTTP_PORTS/health || exit 1 + +ENTRYPOINT ["dotnet", "Proxarr.Api.dll"] \ No newline at end of file diff --git a/LICENSE.txt b/LICENSE.txt new file mode 100644 index 0000000..8aa2645 --- /dev/null +++ b/LICENSE.txt @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) [year] [fullname] + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/README.md b/README.md new file mode 100644 index 0000000..445e2ce --- /dev/null +++ b/README.md @@ -0,0 +1,181 @@ + +[![Contributors][contributors-shield]][contributors-url] +[![Forks][forks-shield]][forks-url] +[![Stargazers][stars-shield]][stars-url] +[![Issues][issues-shield]][issues-url] +[![project_license][license-shield]][license-url] +[![LinkedIn][linkedin-shield]][linkedin-url] + +[![Docker Image CI](https://github.com/Fazzani/Proxarr/actions/workflows/docker-image.yml/badge.svg)](https://github.com/Fazzani/Proxarr/actions/workflows/docker-image.yml) + +[![.NET](https://github.com/Fazzani/Proxarr/actions/workflows/pr.yml/badge.svg)](https://github.com/Fazzani/Proxarr/actions/workflows/pr.yml) + + +
+
+ + Logo + + +

+ Automatically categorize your requested movies and TV shows from your watching providers. +
+ Report Bug + · + Request Feature +

+
+ + +
+ Table of Contents +
    +
  1. + About The Project +
  2. +
  3. + Getting Started + +
  4. +
  5. Usage
  6. +
  7. Roadmap
  8. +
  9. Contributing
  10. +
  11. License
  12. +
  13. Contact
  14. +
+
+ + +## About The Project + +Proxarr is a lightweight proxy server for automatically qualify requested media items based in countries served by watching providers. +It uses TMDB to find out which streaming services are available in the selected region. + + + +

(back to top)

+ + +## Getting Started + +### Prerequisites + +* Acquire TMDB API KEY + [How](https://dev.to/codexive_zech/streamlining-your-contribution-how-to-get-your-tmdb-api-key-for-ldbflix-contribution-52gf#:~:text=How%20to%20Obtain%20a%20TMDB%20API%20Key) +* Obtain SONARR/RADARR API KEY
+ + +### Installation + +1. Clone the repo + ```sh + git clone https://github.com/Fazzani/Proxarr.git + ``` + +2. Update your [config.yml](./src/Proxarr.Api/config.yml) with your API keys according to your setup + ```yaml + AppConfiguration: + TMDB_API_KEY: "{{ TMDB API KEY}}" + TAG_NAME: "q" + WATCH_PROVIDERS: "YOUR PROVIDERS HERE seperated by comma (ex: FR:Netflix,US:Amazon Prime Video)" + Clients: # Add as many clients as you want + - ApiKey: "{{ SONAR OR RADARR API KEY }}" + BaseUrl: "{{ SONARR OR RADARR BASE URL }}" + ``` + +3. Run the application + ```sh + dotnet run ./src/Proxarr.Api/Proxarr.Api.csproj + ``` +

(back to top)

+ + +## Usage + +### Standalone docker container example + +```shell +docker run -itd --rm -e LOG_LEVEL=Debug -p 8880:8880 -v ${PWD}/config:/app/config --name proxarr synker/proxarr:latest +``` +### Full example with docker compose + +```shell +docker compose -f docker-compose.yml up -d +``` +

(back to top)

+ +### Watching providers configuration + +- [TMDB API to get available regions](https://developer.themoviedb.org/reference/watch-providers-available-regions) +- [TMDB API to get available movie providers by region](https://developer.themoviedb.org/reference/watch-providers-movie-list) +- [TMDB API to get available tv providers by region](https://developer.themoviedb.org/reference/watch-providers-tv-list) + + +## Roadmap + +- [ ] Add more documentation +- [ ] Add more providers (JustWatch, Reelgood, etc) +- [ ] Add more tests +- [ ] Improve logging and error handling +- [ ] Add Full scan library feature +- [ ] Add Api versioning + +See the [open issues](https://github.com/Fazzani/Proxarr/issues) for a full list of proposed features (and known issues). + +

(back to top)

+ + +## Contributing + +Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are **greatly appreciated**. + +If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement". +Don't forget to give the project a star! Thanks again! + +1. Fork the Project +2. Create your Feature Branch (`git checkout -b feature/AmazingFeature`) +3. Commit your Changes (`git commit -m 'Add some AmazingFeature'`) +4. Push to the Branch (`git push origin feature/AmazingFeature`) +5. Open a Pull Request + +

(back to top)

+ +### Top contributors: + + + contrib.rocks image + + + +## License + +Distributed under the project_license. See `LICENSE.txt` for more information. + +

(back to top)

+ + +## Contact + +Fazzani - heni.fazzani@gmail.com + +Project Link: [https://github.com/Fazzani/Proxarr](https://github.com/Fazzani/Proxarr) + +

(back to top)

+ + +[contributors-shield]: https://img.shields.io/github/contributors/Fazzani/Proxarr.svg?style=for-the-badge +[contributors-url]: https://github.com/Fazzani/Proxarr/graphs/contributors +[forks-shield]: https://img.shields.io/github/forks/Fazzani/Proxarr.svg?style=for-the-badge +[forks-url]: https://github.com/Fazzani/Proxarr/network/members +[stars-shield]: https://img.shields.io/github/stars/Fazzani/Proxarr.svg?style=for-the-badge +[stars-url]: https://github.com/Fazzani/Proxarr/stargazers +[issues-shield]: https://img.shields.io/github/issues/Fazzani/Proxarr.svg?style=for-the-badge +[issues-url]: https://github.com/Fazzani/Proxarr/issues +[license-shield]: https://img.shields.io/github/license/Fazzani/Proxarr.svg?style=for-the-badge +[license-url]: https://github.com/Fazzani/Proxarr/blob/master/LICENSE.txt +[linkedin-shield]: https://img.shields.io/badge/-LinkedIn-black.svg?style=for-the-badge&logo=linkedin&colorB=555 +[linkedin-url]: https://www.linkedin.com/in/heni-fazzani +[arr-api-key]: images/arr_api_key.png diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..9805046 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,58 @@ +--- + +services: + + sonarr: + image: lscr.io/linuxserver/sonarr:latest + restart: unless-stopped + container_name: "sonarr" + depends_on: + prowlarr: + condition: service_started + ports: + - "8989:8989" + healthcheck: + test: curl --fail http://localhost:8989 || exit 1 + interval: 20s + retries: 5 + start_period: 7s + timeout: 10s + + radarr: + image: lscr.io/linuxserver/radarr:latest + restart: unless-stopped + container_name: "radarr" + depends_on: + prowlarr: + condition: service_started + ports: + - "7878:7878" + healthcheck: + test: curl --fail http://localhost:7878 || exit 1 + interval: 20s + retries: 5 + start_period: 7s + timeout: 10s + + proxarr: + image: synker/proxarr:latest + container_name: proxarr + restart: unless-stopped + depends_on: + sonarr: + condition: service_healthy + radarr: + condition: service_healthy + healthcheck: + test: curl --fail http://localhost:8880/health || exit 1 + interval: 10s + retries: 3 + start_period: 5s + timeout: 3s + ports: + - "8880:8880" + environment: + - LOG_LEVEL=Information + volumes: + - ./src/Proxarr.Api:/app/config + - "./:/logs" diff --git a/images/application_url.png b/images/application_url.png new file mode 100644 index 0000000..e166bfa Binary files /dev/null and b/images/application_url.png differ diff --git a/images/arr_api_key.png b/images/arr_api_key.png new file mode 100644 index 0000000..b654a96 Binary files /dev/null and b/images/arr_api_key.png differ diff --git a/images/logo.png b/images/logo.png new file mode 100644 index 0000000..206c19a Binary files /dev/null and b/images/logo.png differ diff --git a/images/logo.svg b/images/logo.svg new file mode 100644 index 0000000..0adb1fa --- /dev/null +++ b/images/logo.svg @@ -0,0 +1 @@ + Proxarr \ No newline at end of file diff --git a/images/tagging-indexers.png b/images/tagging-indexers.png new file mode 100644 index 0000000..1e58c10 Binary files /dev/null and b/images/tagging-indexers.png differ diff --git a/images/webhook_config.png b/images/webhook_config.png new file mode 100644 index 0000000..7bedbb3 Binary files /dev/null and b/images/webhook_config.png differ diff --git a/images/workflow.gif b/images/workflow.gif new file mode 100644 index 0000000..32f59af Binary files /dev/null and b/images/workflow.gif differ diff --git a/src/Proxarr.Api/AppConfiguration.cs b/src/Proxarr.Api/AppConfiguration.cs new file mode 100644 index 0000000..148837d --- /dev/null +++ b/src/Proxarr.Api/AppConfiguration.cs @@ -0,0 +1,55 @@ +namespace Proxarr.Api +{ + public sealed class AppConfiguration + { + public const string SECTION_NAME = nameof(AppConfiguration); + + public string LOG_FOLDER { get; set; } + + public string TAG_NAME { get; set; } + + public string TMDB_API_KEY { get; set; } + + Dictionary _watchProviders; + + /// + /// Watch providers (ex: US:Netflix,US:Amazon Prime Video) + /// + public Dictionary WatchProviders + { + get + { + _watchProviders ??= InitProviders(); + return _watchProviders; + } + } + + public string WATCH_PROVIDERS { get; set; } + + private Dictionary InitProviders() + { + ArgumentNullException.ThrowIfNull(WATCH_PROVIDERS); + + var dict = new Dictionary(); + + foreach (var region in WATCH_PROVIDERS!.Split(',')) + { + var parts = region.Split(':'); + if (parts.Length != 2) + { + throw new FormatException("WATCH_PROVIDERS must "); + } + if (!dict.TryGetValue(parts[0], out string[]? value)) + { + dict.Add(parts[0], [parts[1]]); + } + else + { + dict[parts[0]] = [.. value, parts[1]]; + } + } + + return dict; + } + } +} diff --git a/src/Proxarr.Api/Configuration/ClientConfiguration.cs b/src/Proxarr.Api/Configuration/ClientConfiguration.cs new file mode 100644 index 0000000..cfc475a --- /dev/null +++ b/src/Proxarr.Api/Configuration/ClientConfiguration.cs @@ -0,0 +1,9 @@ +namespace Proxarr.Api.Configuration +{ + public sealed class ClientConfiguration + { + public const string SECTION_NAME = $"{AppConfiguration.SECTION_NAME}:Clients"; + public required string ApiKey { get; set; } + public required string BaseUrl { get; set; } + } +} diff --git a/src/Proxarr.Api/Controllers/QualifierController.cs b/src/Proxarr.Api/Controllers/QualifierController.cs new file mode 100644 index 0000000..f50751b --- /dev/null +++ b/src/Proxarr.Api/Controllers/QualifierController.cs @@ -0,0 +1,65 @@ +using Microsoft.AspNetCore.Mvc; +using Proxarr.Api.Models; +using Proxarr.Api.Services; +using TMDbLib.Objects.Movies; + +namespace Proxarr.Api.Controllers +{ + [ApiController] + [Route("api/[controller]")] + public class QualifierController : ControllerBase + { + private readonly ILogger _logger; + private readonly IRadarrService _radarrService; + private readonly ISonarrService _sonarrService; + + public QualifierController(ILogger logger, + IRadarrService radarrService, + ISonarrService sonarrService) + { + _logger = logger; + _radarrService = radarrService; + _sonarrService = sonarrService; + } + + [HttpPost("movie")] + [ProducesResponseType(StatusCodes.Status200OK)] + [ProducesResponseType(StatusCodes.Status404NotFound)] + public async Task QualifiedMovie(MovieAdded movie, CancellationToken cancellationToken) + { + if (movie.EventType.Equals("test", StringComparison.OrdinalIgnoreCase)) + { + return Ok(); + } + + var result = await _radarrService.Qualify(movie, cancellationToken).ConfigureAwait(false); + + if (result == nameof(NotFound)) + { + _logger.LogError("Movie not found in Radarr {Title}", movie.Movie.Title); + return NotFound(); + } + return Ok(); + } + + [HttpPost("tv")] + [ProducesResponseType(StatusCodes.Status200OK)] + [ProducesResponseType(StatusCodes.Status404NotFound)] + public async Task QualifiedTv(TvAdded tvAdded, CancellationToken cancellationToken) + { + if (tvAdded.EventType.Equals("test", StringComparison.OrdinalIgnoreCase)) + { + return Ok(); + } + + var result = await _sonarrService.Qualify(tvAdded, cancellationToken).ConfigureAwait(false); + + if (result == nameof(NotFound)) + { + _logger.LogError("Tv not found in Sonarr {Title}", tvAdded.Series.Title); + return NotFound(); + } + return Ok(); + } + } +} diff --git a/src/Proxarr.Api/Core/ApiKeyDelegatingHandler.cs b/src/Proxarr.Api/Core/ApiKeyDelegatingHandler.cs new file mode 100644 index 0000000..8c6d48a --- /dev/null +++ b/src/Proxarr.Api/Core/ApiKeyDelegatingHandler.cs @@ -0,0 +1,33 @@ +using Proxarr.Api.Configuration; + +namespace Proxarr.Api.Core +{ + public class ApiKeyDelegatingHandler : DelegatingHandler + { + private const string API_KEY_HEADER_NAME = "X-API-KEY"; + + private readonly IConfiguration _configuration; + + public ApiKeyDelegatingHandler(IConfiguration configuration) + { + _configuration = configuration; + } + + protected override async Task SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) + { + if (!request.Headers.Contains(API_KEY_HEADER_NAME) && request.RequestUri != null) + { + var key = $"{request.RequestUri.Scheme}://{request.RequestUri.Host}"; + var clients = _configuration.GetSection(ClientConfiguration.SECTION_NAME).Get>(); + var clientConfig = clients?.FirstOrDefault(x => x.BaseUrl.Equals(key, StringComparison.OrdinalIgnoreCase)); + + if (clientConfig != null) + { + request.Headers.Add(API_KEY_HEADER_NAME, clientConfig.ApiKey); + } + } + + return await base.SendAsync(request, cancellationToken); + } + } +} diff --git a/src/Proxarr.Api/Models/MovieAdded.cs b/src/Proxarr.Api/Models/MovieAdded.cs new file mode 100644 index 0000000..da4abf0 --- /dev/null +++ b/src/Proxarr.Api/Models/MovieAdded.cs @@ -0,0 +1,82 @@ +using System.Text.Json.Serialization; + +namespace Proxarr.Api.Models +{ + public class MovieAdded + { + [JsonPropertyName("movie")] + public required Movie Movie { get; set; } + + [JsonPropertyName("addMethod")] + public string? AddMethod { get; set; } + + [JsonPropertyName("eventType")] + public required string EventType { get; set; } + + [JsonPropertyName("instanceName")] + public required string InstanceName { get; set; } + + [JsonPropertyName("applicationUrl")] + public required string ApplicationUrl { get; set; } + } + + public class Movie + { + [JsonPropertyName("id")] + public required int Id { get; set; } + + [JsonPropertyName("title")] + public required string Title { get; set; } + + [JsonPropertyName("year")] + public int Year { get; set; } + + [JsonPropertyName("releaseDate")] + public string? ReleaseDate { get; set; } + + [JsonPropertyName("folderPath")] + public required string FolderPath { get; set; } + + [JsonPropertyName("tmdbId")] + public int TmdbId { get; set; } + + [JsonPropertyName("imdbId")] + public string? ImdbId { get; set; } + + [JsonPropertyName("overview")] + public string? Overview { get; set; } + + [JsonPropertyName("genres")] + public string[]? Genres { get; set; } + + [JsonPropertyName("images")] + public Image[]? Images { get; set; } + + [JsonPropertyName("tags")] + public string[]? Tags { get; set; } + + [JsonPropertyName("originalLanguage")] + public Originallanguage? OriginalLanguage { get; set; } + } + + public class Originallanguage + { + [JsonPropertyName("id")] + public int? Id { get; set; } + + [JsonPropertyName("name")] + public string? Name { get; set; } + } + + public class Image + { + [JsonPropertyName("coverType")] + public string? CoverType { get; set; } + + [JsonPropertyName("url")] + public string? Url { get; set; } + + [JsonPropertyName("remoteUrl")] + public string? RemoteUrl { get; set; } + } +} diff --git a/src/Proxarr.Api/Models/TvAdded.cs b/src/Proxarr.Api/Models/TvAdded.cs new file mode 100644 index 0000000..a44d4dc --- /dev/null +++ b/src/Proxarr.Api/Models/TvAdded.cs @@ -0,0 +1,61 @@ +using System.Text.Json.Serialization; + +namespace Proxarr.Api.Models +{ + public class TvAdded + { + [JsonPropertyName("series")] + public required Series Series { get; set; } + + [JsonPropertyName("eventType")] + public required string EventType { get; set; } + + [JsonPropertyName("instanceName")] + public required string InstanceName { get; set; } + + [JsonPropertyName("applicationUrl")] + public required string ApplicationUrl { get; set; } + } + + public class Series + { + [JsonPropertyName("id")] + public required int Id { get; set; } + + [JsonPropertyName("title")] + public required string Title { get; set; } + + [JsonPropertyName("titleSlug")] + public string? TitleSlug { get; set; } + + [JsonPropertyName("path")] + public string? Path { get; set; } + + [JsonPropertyName("tvdbId")] + public int TvdbId { get; set; } + + [JsonPropertyName("tvMazeId")] + public int TvMazeId { get; set; } + + [JsonPropertyName("tmdbId")] + public int TmdbId { get; set; } + + [JsonPropertyName("imdbId")] + public string? ImdbId { get; set; } + + [JsonPropertyName("type")] + public string? Type { get; set; } + + [JsonPropertyName("year")] + public int? Year { get; set; } + + [JsonPropertyName("genres")] + public string[]? Genres { get; set; } + + [JsonPropertyName("images")] + public Image[]? Images { get; set; } + + [JsonPropertyName("tags")] + public string[]? Tags { get; set; } + } +} diff --git a/src/Proxarr.Api/Program.cs b/src/Proxarr.Api/Program.cs new file mode 100644 index 0000000..e70f406 --- /dev/null +++ b/src/Proxarr.Api/Program.cs @@ -0,0 +1,73 @@ +using Proxarr.Api; +using Proxarr.Api.Core; +using Proxarr.Api.Services; +using Radarr.Http.Client; +using Scalar.AspNetCore; +using Serilog; +using Sonarr.Http.Client; +using TMDbLib.Client; + + +var builder = WebApplication.CreateBuilder(args); + +var configFileName = "config.yml"; + +#if DEBUG +configFileName = "config.local.yml"; +#endif + +// Load configuration + +var configDirPath = Environment.GetEnvironmentVariable("CONFIG_PATH") ?? Directory.GetCurrentDirectory(); +builder.Configuration + .AddEnvironmentVariables() + .AddYamlFile(Path.Combine(configDirPath, configFileName), optional: false, reloadOnChange: true); + +// Add log configuration + +var logger = new LoggerConfiguration() + .ReadFrom.Configuration(builder.Configuration) + .Enrich.FromLogContext() + .CreateLogger(); + +builder.Logging.ClearProviders(); +builder.Logging.AddSerilog(logger); + +// Add services to the container. + +builder.Services.AddControllers(); + +builder.Services.AddHealthChecks(); +// Learn more about configuring OpenAPI at https://aka.ms/aspnet/openapi +builder.Services.AddOpenApi(); + +builder.Services.AddSingleton(x => new TMDbClient(builder.Configuration.GetValue("AppConfiguration:TMDB_API_KEY"))); +builder.Services.Configure(builder.Configuration.GetSection(AppConfiguration.SECTION_NAME)); +builder.Services.AddTransient(); +builder.Services.AddScoped(); +builder.Services.AddScoped(); + +builder.Services + .AddHttpClient() + .AddHttpMessageHandler(); + +builder.Services + .AddHttpClient() + .AddHttpMessageHandler(); + +var app = builder.Build(); + +// Configure the HTTP request pipeline. +if (app.Environment.IsDevelopment()) +{ + app.MapOpenApi(); + app.MapScalarApiReference(); +} + +app.UseAuthorization(); + +app.MapControllers(); + +app.MapHealthChecks("/health"); + +await app.RunAsync(); \ No newline at end of file diff --git a/src/Proxarr.Api/Properties/launchSettings.json b/src/Proxarr.Api/Properties/launchSettings.json new file mode 100644 index 0000000..ecab1e3 --- /dev/null +++ b/src/Proxarr.Api/Properties/launchSettings.json @@ -0,0 +1,35 @@ +{ + "profiles": { + "http": { + "commandName": "Project", + "launchUrl": "http://localhost:5056/scalar/v1", + "launchBrowser": true, + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development", + "LOG_FOLDER": "../../logs", + "LOG_LEVEL": "Debug" + }, + "dotnetRunMessages": true, + "applicationUrl": "http://localhost:5056" + }, + "https": { + "commandName": "Project", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + }, + "dotnetRunMessages": true, + "applicationUrl": "https://localhost:7064;http://localhost:5056" + }, + "Container (Dockerfile)": { + "commandName": "Docker", + "launchUrl": "{Scheme}://{ServiceHost}:{ServicePort}", + "environmentVariables": { + "ASPNETCORE_HTTPS_PORTS": "8881", + "ASPNETCORE_HTTP_PORTS": "8880" + }, + "publishAllPorts": true, + "useSSL": true + } + }, + "$schema": "https://json.schemastore.org/launchsettings.json" +} \ No newline at end of file diff --git a/src/Proxarr.Api/Proxarr.Api.csproj b/src/Proxarr.Api/Proxarr.Api.csproj new file mode 100644 index 0000000..8f6db4e --- /dev/null +++ b/src/Proxarr.Api/Proxarr.Api.csproj @@ -0,0 +1,43 @@ + + + + net9.0 + enable + enable + 4b8be289-6bae-402e-9d46-60720983d770 + Linux + + + + + PreserveNewest + + + + + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + + + + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + + + + + + + + + + + + + diff --git a/src/Proxarr.Api/Proxarr.Api.http b/src/Proxarr.Api/Proxarr.Api.http new file mode 100644 index 0000000..3fc4da3 --- /dev/null +++ b/src/Proxarr.Api/Proxarr.Api.http @@ -0,0 +1,176 @@ +@Proxarr.Api_HostAddress = http://localhost:5056 +@Radarr.ApplicationUrl = https://radarr +@Sonarr.ApplicationUrl = https://sonarr + +### Movie qualify endpoint + +POST {{Proxarr.Api_HostAddress}}/api/qualifier/movie +Content-Type: application/json +Accept: application/json +{ + "movie": { + "id": 75, + "title": "Carry-On", + "year": 2024, + "releaseDate": "9999-12-31", + "folderPath": "/Videos/Videos/movies/Carry-On (2024)", + "tmdbId": 1005331, + "imdbId": "tt21382296", + "overview": "An airport security officer races to outsmart a mysterious traveler forcing him to let a dangerous item slip onto a Christmas Eve flight.", + "genres": [ + "Action", + "Thriller" + ], + "images": [ + { + "coverType": "poster", + "url": "/MediaCover/75/poster.jpg", + "remoteUrl": "https://image.tmdb.org/t/p/original/sjMN7DRi4sGiledsmllEw5HJjPy.jpg" + }, + { + "coverType": "fanart", + "url": "/MediaCover/75/fanart.jpg", + "remoteUrl": "https://image.tmdb.org/t/p/original/rhc8Mtuo3Kh8CndnlmTNMF8o9pU.jpg" + } + ], + "tags": [ + "1 - heni" + ], + "originalLanguage": { + "id": 1, + "name": "English" + } + }, + "addMethod": "manual", + "eventType": "MovieAdded", + "instanceName": "Radarr", + "applicationUrl": "https://radarr.synker.ovh" +} + +### Movie qualify endpoint TEST + +POST {{Proxarr.Api_HostAddress}}/api/qualifier/movie +Content-Type: application/json +Accept: application/json +{ + "movie": { + "id": 1, + "title": "Test Title", + "year": 1970, + "releaseDate": "1970-01-01", + "folderPath": "C:\\testpath", + "tmdbId": 0, + "tags": [ + "test-tag" + ] + }, + "remoteMovie": { + "tmdbId": 1234, + "imdbId": "5678", + "title": "Test title", + "year": 1970 + }, + "release": { + "quality": "Test Quality", + "qualityVersion": 1, + "releaseGroup": "Test Group", + "releaseTitle": "Test Title", + "indexer": "Test Indexer", + "size": 9999999, + "customFormatScore": 0 + }, + "eventType": "Test", + "instanceName": "Radarr", + "applicationUrl": "https://radarr.synker.ovh" +} + +### TV qualify endpoint + +POST {{Proxarr.Api_HostAddress}}/api/qualifier/tv +Content-Type: application/json +Accept: application/json +{ + "series": { + "id": 25, + "title": "Lost", + "titleSlug": "lost", + "path": "/Videos/Videos/shows/Lost", + "tvdbId": 73739, + "tvMazeId": 123, + "tmdbId": 4607, + "imdbId": "tt0411008", + "type": "standard", + "year": 2004, + "genres": [ + "Action", + "Adventure", + "Drama", + "Fantasy", + "Mystery", + "Science Fiction", + "Thriller" + ], + "images": [ + { + "coverType": "banner", + "url": "/MediaCover/25/banner.jpg?lastWrite=638707559740506834", + "remoteUrl": "https://artworks.thetvdb.com/banners/graphical/73739-g4.jpg" + }, + { + "coverType": "poster", + "url": "/MediaCover/25/poster.jpg?lastWrite=638707559740745300", + "remoteUrl": "https://artworks.thetvdb.com/banners/posters/73739-11.jpg" + }, + { + "coverType": "fanart", + "url": "/MediaCover/25/fanart.jpg?lastWrite=638707559742200054", + "remoteUrl": "https://artworks.thetvdb.com/banners/fanart/original/73739-34.jpg" + }, + { + "coverType": "clearlogo", + "url": "/MediaCover/25/clearlogo.png?lastWrite=638707559742579613", + "remoteUrl": "https://artworks.thetvdb.com/banners/v4/series/73739/clearlogo/622b30b555156.png" + } + ], + "tags": [ + "1 - heni" + ] + }, + "eventType": "SeriesAdd", + "instanceName": "Sonarr", + "applicationUrl": "{{Sonarr.ApplicationUrl}}" +} + +### TV qualify endpoint TEST + +POST {{Proxarr.Api_HostAddress}}/api/qualifier/tv +Content-Type: application/json +Accept: application/json +{ + "series": { + "id": 1, + "title": "Test Title", + "path": "C:\\testpath", + "tvdbId": 1234, + "tvMazeId": 0, + "tmdbId": 0, + "type": "standard", + "year": 0, + "tags": [ + "test-tag" + ] + }, + "episodes": [ + { + "id": 123, + "episodeNumber": 1, + "seasonNumber": 1, + "title": "Test title", + "seriesId": 0, + "tvdbId": 0 + } + ], + "eventType": "Test", + "instanceName": "Sonarr", + "applicationUrl": "http://sonarr" +} \ No newline at end of file diff --git a/src/Proxarr.Api/Services/IRadarrService.cs b/src/Proxarr.Api/Services/IRadarrService.cs new file mode 100644 index 0000000..18fb760 --- /dev/null +++ b/src/Proxarr.Api/Services/IRadarrService.cs @@ -0,0 +1,9 @@ +using Proxarr.Api.Models; + +namespace Proxarr.Api.Services +{ + public interface IRadarrService + { + Task Qualify(MovieAdded movieAdded, CancellationToken cancellationToken); + } +} \ No newline at end of file diff --git a/src/Proxarr.Api/Services/ISonarrService.cs b/src/Proxarr.Api/Services/ISonarrService.cs new file mode 100644 index 0000000..eb752b3 --- /dev/null +++ b/src/Proxarr.Api/Services/ISonarrService.cs @@ -0,0 +1,9 @@ +using Proxarr.Api.Models; + +namespace Proxarr.Api.Services +{ + public interface ISonarrService + { + Task Qualify(TvAdded tvAdded, CancellationToken cancellationToken); + } +} \ No newline at end of file diff --git a/src/Proxarr.Api/Services/RadarrService.cs b/src/Proxarr.Api/Services/RadarrService.cs new file mode 100644 index 0000000..e36964a --- /dev/null +++ b/src/Proxarr.Api/Services/RadarrService.cs @@ -0,0 +1,122 @@ +using Microsoft.Extensions.Options; +using Proxarr.Api.Models; +using Radarr.Http.Client; +using TMDbLib.Client; + +namespace Proxarr.Api.Services +{ + public class RadarrService : IRadarrService + { + private readonly ILogger _logger; + private readonly TMDbClient _tMDbClient; + private readonly AppConfiguration _appConfiguration; + private readonly RadarrClient _radarrClient; + + public RadarrService(ILogger logger, + TMDbClient tMDbClient, + IOptions appConfiguration, + RadarrClient radarrClient) + { + _logger = logger; + _tMDbClient = tMDbClient; + _appConfiguration = appConfiguration?.Value ?? throw new ArgumentNullException(nameof(appConfiguration)); + _radarrClient = radarrClient; + } + + // + public async Task Qualify(MovieAdded movieAdded, CancellationToken cancellationToken) + { + ArgumentNullException.ThrowIfNull(movieAdded); + + _logger.LogInformation("Qualifying movie {Title}", movieAdded.Movie.Title); + + var tmdbItem = await _tMDbClient + .GetMovieAsync(movieAdded.Movie.TmdbId, TMDbLib.Objects.Movies.MovieMethods.WatchProviders, cancellationToken) + .ConfigureAwait(false); + + if (tmdbItem != null && tmdbItem.WatchProviders.Results?.Count > 0) + { + _radarrClient.BaseUrl = movieAdded.ApplicationUrl; + var movieRadarr = await _radarrClient.MovieGET2Async(movieAdded.Movie.Id, cancellationToken).ConfigureAwait(false); + + if (movieRadarr == null) + { + _logger.LogError("Movie not found in Radarr {Title}", movieAdded.Movie.Title); + return "NotFound"; + } + + await UpdateTags(tmdbItem, movieRadarr, cancellationToken).ConfigureAwait(false); + await _radarrClient + .MoviePUTAsync(false, movieRadarr.Id.ToString(), movieRadarr, cancellationToken) + .ConfigureAwait(false); + } + + return string.Empty; + } + + private async Task UpdateTags(TMDbLib.Objects.Movies.Movie tmdbItem, + MovieResource movieRadarr, + CancellationToken cancellationToken) + { + var matched = false; + var existingTags = await _radarrClient.TagAllAsync(cancellationToken).ConfigureAwait(false); + + foreach (var provider in _appConfiguration.WatchProviders) + { + if (tmdbItem.WatchProviders.Results.TryGetValue(provider.Key, out var matchedProvider)) + { + foreach (var pr in provider.Value) + { + var providerTag = pr.Replace(" ", "_"); + + if (matchedProvider.Free?.Any(x => x.ProviderName.Equals(pr, StringComparison.OrdinalIgnoreCase)) == true || + matchedProvider.FlatRate?.Any(x => x.ProviderName.Equals(pr, StringComparison.OrdinalIgnoreCase)) == true) + { + _logger.LogInformation("Matched Free/FlatRate provider {WatchProvider} for {Title}", pr, movieRadarr.Title); + matched |= await AddTag(movieRadarr, matched, existingTags, providerTag, cancellationToken).ConfigureAwait(false); + } + if (matchedProvider.Buy?.Any(x => x.ProviderName.Equals(pr, StringComparison.OrdinalIgnoreCase)) == true) + { + _logger.LogInformation("Found buy provider {WatchProvider} for {Title}", pr, movieRadarr.Title); + } + if (matchedProvider.Rent?.Any(x => x.ProviderName.Equals(pr, StringComparison.OrdinalIgnoreCase)) == true) + { + _logger.LogInformation("Found rent provider {WatchProvider} for {Title}", pr, movieRadarr.Title); + } + } + } + } + + if (!matched) + { + await AddTag(movieRadarr, matched, existingTags, _appConfiguration.TAG_NAME, cancellationToken).ConfigureAwait(false); + } + } + + private async Task AddTag(MovieResource movieRadarr, + bool updated, + ICollection existingTags, + string providerTag, + CancellationToken cancellationToken) + { + providerTag = providerTag.Replace(" ", "_"); + + var tag = existingTags.FirstOrDefault(x => x.Label.Equals(providerTag, StringComparison.OrdinalIgnoreCase)); + + if (tag is null) + { + tag = new TagResource { Label = providerTag }; + tag = await _radarrClient.TagPOSTAsync(tag, cancellationToken).ConfigureAwait(false); + } + + if (!movieRadarr.Tags.Contains(tag.Id)) + { + _logger.LogInformation("Adding tag {Tag} for {Title}", tag.Label, movieRadarr.Title); + movieRadarr.Tags.Add(tag.Id); + updated = true; + } + + return updated; + } + } +} diff --git a/src/Proxarr.Api/Services/SonarrService.cs b/src/Proxarr.Api/Services/SonarrService.cs new file mode 100644 index 0000000..a6fca4a --- /dev/null +++ b/src/Proxarr.Api/Services/SonarrService.cs @@ -0,0 +1,123 @@ +using Microsoft.Extensions.Options; +using Proxarr.Api.Models; +using Sonarr.Http.Client; +using TMDbLib.Client; + +namespace Proxarr.Api.Services +{ + public class SonarrService : ISonarrService + { + private readonly ILogger _logger; + private readonly TMDbClient _tMDbClient; + private readonly AppConfiguration _appConfiguration; + private readonly SonarrClient _sonarrClient; + + public SonarrService(ILogger logger, + TMDbClient tMDbClient, + IOptions appConfiguration, + SonarrClient sonarrClient) + { + _logger = logger; + _tMDbClient = tMDbClient; + _appConfiguration = appConfiguration?.Value ?? throw new ArgumentNullException(nameof(appConfiguration)); + _sonarrClient = sonarrClient; + } + + // + public async Task Qualify(TvAdded tvAdded, CancellationToken cancellationToken) + { + ArgumentNullException.ThrowIfNull(tvAdded); + + _logger.LogInformation("Qualifying tv {Title}", tvAdded.Series.Title); + // TODO: validation + + var tmdbItem = await _tMDbClient + .GetTvShowAsync(tvAdded.Series.TmdbId, TMDbLib.Objects.TvShows.TvShowMethods.WatchProviders, cancellationToken: cancellationToken) + .ConfigureAwait(false); + + if (tmdbItem != null && tmdbItem.WatchProviders.Results?.Count > 0) + { + _sonarrClient.BaseUrl = tvAdded.ApplicationUrl; + var seriesSonarr = await _sonarrClient.SeriesGETAsync(tvAdded.Series.Id, false, cancellationToken).ConfigureAwait(false); + + if (seriesSonarr == null) + { + _logger.LogError("Tv not found in Sonarr {Title}", tvAdded.Series.Title); + return "NotFound"; + } + + await UpdateTags(tmdbItem, seriesSonarr, cancellationToken).ConfigureAwait(false); + await _sonarrClient + .SeriesPUTAsync(false, seriesSonarr.Id.ToString(), seriesSonarr, cancellationToken) + .ConfigureAwait(false); + } + + return string.Empty; + } + + private async Task UpdateTags(TMDbLib.Objects.TvShows.TvShow tmdbItem, + SeriesResource seriesSonarr, + CancellationToken cancellationToken) + { + var matched = false; + var existingTags = await _sonarrClient.TagAllAsync(cancellationToken).ConfigureAwait(false); + + foreach (var provider in _appConfiguration.WatchProviders) + { + if (tmdbItem.WatchProviders.Results.TryGetValue(provider.Key, out var matchedProvider)) + { + foreach (var pr in provider.Value) + { + var providerTag = pr.Replace(" ", "_"); + + if (matchedProvider.Free?.Any(x => x.ProviderName.Equals(pr, StringComparison.OrdinalIgnoreCase)) == true || + matchedProvider.FlatRate?.Any(x => x.ProviderName.Equals(pr, StringComparison.OrdinalIgnoreCase)) == true) + { + _logger.LogInformation("Matched Free/FlatRate provider {WatchProvider} for {Title}", pr, seriesSonarr.Title); + matched |= await AddTag(seriesSonarr, matched, existingTags, providerTag, cancellationToken).ConfigureAwait(false); + } + if (matchedProvider.Buy?.Any(x => x.ProviderName.Equals(pr, StringComparison.OrdinalIgnoreCase)) == true) + { + _logger.LogInformation("Found buy provider {WatchProvider} for {Title}", pr, seriesSonarr.Title); + } + if (matchedProvider.Rent?.Any(x => x.ProviderName.Equals(pr, StringComparison.OrdinalIgnoreCase)) == true) + { + _logger.LogInformation("Found rent provider {WatchProvider} for {Title}", pr, seriesSonarr.Title); + } + } + } + } + + if (!matched) + { + await AddTag(seriesSonarr, matched, existingTags, _appConfiguration.TAG_NAME, cancellationToken).ConfigureAwait(false); + } + } + + private async Task AddTag(SeriesResource seriesSonarr, + bool updated, + ICollection existingTags, + string providerTag, + CancellationToken cancellationToken) + { + providerTag = providerTag.Replace(" ", "_"); + + var tag = existingTags.FirstOrDefault(x => x.Label.Equals(providerTag, StringComparison.OrdinalIgnoreCase)); + + if (tag is null) + { + tag = new TagResource { Label = providerTag }; + tag = await _sonarrClient.TagPOSTAsync(tag, cancellationToken).ConfigureAwait(false); + } + + if (!seriesSonarr.Tags.Contains(tag.Id)) + { + _logger.LogInformation("Adding tag {Tag} for {Title}", tag.Label, seriesSonarr.Title); + seriesSonarr.Tags.Add(tag.Id); + updated = true; + } + + return updated; + } + } +} diff --git a/src/Proxarr.Api/config.yml b/src/Proxarr.Api/config.yml new file mode 100644 index 0000000..018041b --- /dev/null +++ b/src/Proxarr.Api/config.yml @@ -0,0 +1,32 @@ +--- +Serilog: + Using: + - Serilog.Sinks.Console + - Serilog.Sinks.File + MinimumLevel: + Default: "Information" + Override: + Microsoft: Information + System: Information + Enrich: + - FromLogContext + - WithMachineName + - WithProcessId + - WithThreadId + WriteTo: + - Name: Console + - Name: File + Args: + path: "%LOG_FOLDER%/Serilog.log" + rollingInterval: Day + outputTemplate: "[{Timestamp:yyyy-MM-dd HH:mm:ss.fff zzz} {CorrelationId} {Level:u3}] {Username} {Message:lj}{NewLine}{Exception}" +AllowedHosts: "*" +AppConfiguration: + TMDB_API_KEY: {{ TMDB API KEY}} + TAG_NAME: "q" # must be the same as the tag name in indexers + WATCH_PROVIDERS: "FR:Netflix,US:Amazon Prime Video" # format: REGION:PROVIDER,REGION:PROVIDER + Clients: # one or more clients + - ApiKey: {{ SONARR_OR_RADARR_API_KEY }} + BaseUrl: "https://radarr.com" + - ApiKey: {{ SONARR_OR_RADARR_API_KEY }} + BaseUrl: "https://sonarr.com" \ No newline at end of file diff --git a/src/Proxarr.sln b/src/Proxarr.sln new file mode 100644 index 0000000..cac6f99 --- /dev/null +++ b/src/Proxarr.sln @@ -0,0 +1,57 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.12.35527.113 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Proxarr.Api", "Proxarr.Api\Proxarr.Api.csproj", "{13FF69C0-9C9F-4E5A-8F12-62659F607295}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Radarr.Http.Client", "Radarr.Http.Client\Radarr.Http.Client.csproj", "{54A6F604-8A08-48FF-9599-3A1CC2FFEC8F}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Sonarr.Http.Client", "Sonarr.Http.Client\Sonarr.Http.Client.csproj", "{E899BE83-69DB-4E0B-A54C-07907043A044}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{07C8FD5B-2CFB-44CA-A0C8-FC456188447B}" + ProjectSection(SolutionItems) = preProject + ..\.dockerignore = ..\.dockerignore + ..\.gitignore = ..\.gitignore + ..\docker-compse.yml = ..\docker-compse.yml + ..\.github\workflows\docker-image.yml = ..\.github\workflows\docker-image.yml + ..\Dockerfile = ..\Dockerfile + ..\README.md = ..\README.md + EndProjectSection +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = ".github", ".github", "{9E72FE54-7CE0-447E-B7E6-15EC4A05CDA3}" + ProjectSection(SolutionItems) = preProject + ..\.github\ISSUE_TEMPLATE\bug-report.yml = ..\.github\ISSUE_TEMPLATE\bug-report.yml + ..\.github\workflows\docker-image.yml = ..\.github\workflows\docker-image.yml + ..\.github\ISSUE_TEMPLATE\feature-request.yml = ..\.github\ISSUE_TEMPLATE\feature-request.yml + ..\.github\workflows\pr.yml = ..\.github\workflows\pr.yml + ..\.github\pull_request_template.md = ..\.github\pull_request_template.md + ..\.github\release.yml = ..\.github\release.yml + EndProjectSection +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {13FF69C0-9C9F-4E5A-8F12-62659F607295}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {13FF69C0-9C9F-4E5A-8F12-62659F607295}.Debug|Any CPU.Build.0 = Debug|Any CPU + {13FF69C0-9C9F-4E5A-8F12-62659F607295}.Release|Any CPU.ActiveCfg = Release|Any CPU + {13FF69C0-9C9F-4E5A-8F12-62659F607295}.Release|Any CPU.Build.0 = Release|Any CPU + {54A6F604-8A08-48FF-9599-3A1CC2FFEC8F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {54A6F604-8A08-48FF-9599-3A1CC2FFEC8F}.Debug|Any CPU.Build.0 = Debug|Any CPU + {54A6F604-8A08-48FF-9599-3A1CC2FFEC8F}.Release|Any CPU.ActiveCfg = Release|Any CPU + {54A6F604-8A08-48FF-9599-3A1CC2FFEC8F}.Release|Any CPU.Build.0 = Release|Any CPU + {E899BE83-69DB-4E0B-A54C-07907043A044}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {E899BE83-69DB-4E0B-A54C-07907043A044}.Debug|Any CPU.Build.0 = Debug|Any CPU + {E899BE83-69DB-4E0B-A54C-07907043A044}.Release|Any CPU.ActiveCfg = Release|Any CPU + {E899BE83-69DB-4E0B-A54C-07907043A044}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(NestedProjects) = preSolution + {9E72FE54-7CE0-447E-B7E6-15EC4A05CDA3} = {07C8FD5B-2CFB-44CA-A0C8-FC456188447B} + EndGlobalSection +EndGlobal diff --git a/src/Radarr.Http.Client/OpenAPIs/openapi.json b/src/Radarr.Http.Client/OpenAPIs/openapi.json new file mode 100644 index 0000000..d64d8e6 --- /dev/null +++ b/src/Radarr.Http.Client/OpenAPIs/openapi.json @@ -0,0 +1,12709 @@ +{ + "openapi": "3.0.1", + "info": { + "title": "Radarr", + "description": "Radarr API docs", + "license": { + "name": "GPL-3.0", + "url": "https://github.com/Radarr/Radarr/blob/develop/LICENSE" + }, + "version": "3.0.0" + }, + "servers": [ + { + "url": "{protocol}://{hostpath}", + "variables": { + "protocol": { + "default": "http", + "enum": [ + "http", + "https" + ] + }, + "hostpath": { + "default": "localhost:7878" + } + } + } + ], + "paths": { + "/api/v3/alttitle": { + "get": { + "tags": [ + "AlternativeTitle" + ], + "parameters": [ + { + "name": "movieId", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "movieMetadataId", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "text/plain": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/AlternativeTitleResource" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/AlternativeTitleResource" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/AlternativeTitleResource" + } + } + } + } + } + } + } + }, + "/api/v3/alttitle/{id}": { + "get": { + "tags": [ + "AlternativeTitle" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/AlternativeTitleResource" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/AlternativeTitleResource" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/AlternativeTitleResource" + } + } + } + } + } + } + }, + "/api": { + "get": { + "tags": [ + "ApiInfo" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiInfoResource" + } + } + } + } + } + } + }, + "/login": { + "post": { + "tags": [ + "Authentication" + ], + "parameters": [ + { + "name": "returnUrl", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "multipart/form-data": { + "schema": { + "type": "object", + "properties": { + "username": { + "type": "string" + }, + "password": { + "type": "string" + }, + "rememberMe": { + "type": "string" + } + } + }, + "encoding": { + "username": { + "style": "form" + }, + "password": { + "style": "form" + }, + "rememberMe": { + "style": "form" + } + } + } + } + }, + "responses": { + "200": { + "description": "OK" + } + } + }, + "get": { + "tags": [ + "StaticResource" + ], + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/logout": { + "get": { + "tags": [ + "Authentication" + ], + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/api/v3/autotagging": { + "post": { + "tags": [ + "AutoTagging" + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AutoTaggingResource" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/AutoTaggingResource" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/AutoTaggingResource" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/AutoTaggingResource" + } + } + } + } + } + }, + "get": { + "tags": [ + "AutoTagging" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/AutoTaggingResource" + } + } + } + } + } + } + } + }, + "/api/v3/autotagging/{id}": { + "put": { + "tags": [ + "AutoTagging" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AutoTaggingResource" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/AutoTaggingResource" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/AutoTaggingResource" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/AutoTaggingResource" + } + } + } + } + } + }, + "delete": { + "tags": [ + "AutoTagging" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "OK" + } + } + }, + "get": { + "tags": [ + "AutoTagging" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/AutoTaggingResource" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/AutoTaggingResource" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/AutoTaggingResource" + } + } + } + } + } + } + }, + "/api/v3/autotagging/schema": { + "get": { + "tags": [ + "AutoTagging" + ], + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/api/v3/system/backup": { + "get": { + "tags": [ + "Backup" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "text/plain": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/BackupResource" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/BackupResource" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/BackupResource" + } + } + } + } + } + } + } + }, + "/api/v3/system/backup/{id}": { + "delete": { + "tags": [ + "Backup" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/api/v3/system/backup/restore/{id}": { + "post": { + "tags": [ + "Backup" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/api/v3/system/backup/restore/upload": { + "post": { + "tags": [ + "Backup" + ], + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/api/v3/blocklist": { + "get": { + "tags": [ + "Blocklist" + ], + "parameters": [ + { + "name": "page", + "in": "query", + "schema": { + "type": "integer", + "format": "int32", + "default": 1 + } + }, + { + "name": "pageSize", + "in": "query", + "schema": { + "type": "integer", + "format": "int32", + "default": 10 + } + }, + { + "name": "sortKey", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "sortDirection", + "in": "query", + "schema": { + "$ref": "#/components/schemas/SortDirection" + } + }, + { + "name": "movieIds", + "in": "query", + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + }, + { + "name": "protocols", + "in": "query", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/DownloadProtocol" + } + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BlocklistResourcePagingResource" + } + } + } + } + } + } + }, + "/api/v3/blocklist/movie": { + "get": { + "tags": [ + "Blocklist" + ], + "parameters": [ + { + "name": "movieId", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "text/plain": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/BlocklistResource" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/BlocklistResource" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/BlocklistResource" + } + } + } + } + } + } + } + }, + "/api/v3/blocklist/{id}": { + "delete": { + "tags": [ + "Blocklist" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/api/v3/blocklist/bulk": { + "delete": { + "tags": [ + "Blocklist" + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BlocklistBulkResource" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/BlocklistBulkResource" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/BlocklistBulkResource" + } + } + } + }, + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/api/v3/calendar": { + "get": { + "tags": [ + "Calendar" + ], + "parameters": [ + { + "name": "start", + "in": "query", + "schema": { + "type": "string", + "format": "date-time" + } + }, + { + "name": "end", + "in": "query", + "schema": { + "type": "string", + "format": "date-time" + } + }, + { + "name": "unmonitored", + "in": "query", + "schema": { + "type": "boolean", + "default": false + } + }, + { + "name": "tags", + "in": "query", + "schema": { + "type": "string", + "default": "" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/MovieResource" + } + } + } + } + } + } + } + }, + "/feed/v3/calendar/radarr.ics": { + "get": { + "tags": [ + "CalendarFeed" + ], + "parameters": [ + { + "name": "pastDays", + "in": "query", + "schema": { + "type": "integer", + "format": "int32", + "default": 7 + } + }, + { + "name": "futureDays", + "in": "query", + "schema": { + "type": "integer", + "format": "int32", + "default": 28 + } + }, + { + "name": "tags", + "in": "query", + "schema": { + "type": "string", + "default": "" + } + }, + { + "name": "unmonitored", + "in": "query", + "schema": { + "type": "boolean", + "default": false + } + } + ], + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/api/v3/collection": { + "get": { + "tags": [ + "Collection" + ], + "parameters": [ + { + "name": "tmdbId", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CollectionResource" + } + } + } + } + } + } + }, + "put": { + "tags": [ + "Collection" + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CollectionUpdateResource" + } + } + } + }, + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/api/v3/collection/{id}": { + "put": { + "tags": [ + "Collection" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CollectionResource" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/CollectionResource" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/CollectionResource" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/CollectionResource" + } + } + } + } + } + }, + "get": { + "tags": [ + "Collection" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/CollectionResource" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/CollectionResource" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/CollectionResource" + } + } + } + } + } + } + }, + "/api/v3/command": { + "post": { + "tags": [ + "Command" + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CommandResource" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CommandResource" + } + } + } + } + } + }, + "get": { + "tags": [ + "Command" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "text/plain": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CommandResource" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CommandResource" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CommandResource" + } + } + } + } + } + } + } + }, + "/api/v3/command/{id}": { + "delete": { + "tags": [ + "Command" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "OK" + } + } + }, + "get": { + "tags": [ + "Command" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/CommandResource" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/CommandResource" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/CommandResource" + } + } + } + } + } + } + }, + "/api/v3/credit": { + "get": { + "tags": [ + "Credit" + ], + "parameters": [ + { + "name": "movieId", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "movieMetadataId", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/api/v3/credit/{id}": { + "get": { + "tags": [ + "Credit" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/CreditResource" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreditResource" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/CreditResource" + } + } + } + } + } + } + }, + "/api/v3/customfilter": { + "get": { + "tags": [ + "CustomFilter" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "text/plain": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CustomFilterResource" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CustomFilterResource" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CustomFilterResource" + } + } + } + } + } + } + }, + "post": { + "tags": [ + "CustomFilter" + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CustomFilterResource" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/CustomFilterResource" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/CustomFilterResource" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/CustomFilterResource" + } + } + } + } + } + } + }, + "/api/v3/customfilter/{id}": { + "put": { + "tags": [ + "CustomFilter" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CustomFilterResource" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/CustomFilterResource" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/CustomFilterResource" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/CustomFilterResource" + } + } + } + } + } + }, + "delete": { + "tags": [ + "CustomFilter" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "OK" + } + } + }, + "get": { + "tags": [ + "CustomFilter" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/CustomFilterResource" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/CustomFilterResource" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/CustomFilterResource" + } + } + } + } + } + } + }, + "/api/v3/customformat": { + "get": { + "tags": [ + "CustomFormat" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CustomFormatResource" + } + } + } + } + } + } + }, + "post": { + "tags": [ + "CustomFormat" + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CustomFormatResource" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/CustomFormatResource" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/CustomFormatResource" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/CustomFormatResource" + } + } + } + } + } + } + }, + "/api/v3/customformat/{id}": { + "put": { + "tags": [ + "CustomFormat" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CustomFormatResource" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/CustomFormatResource" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/CustomFormatResource" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/CustomFormatResource" + } + } + } + } + } + }, + "delete": { + "tags": [ + "CustomFormat" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "OK" + } + } + }, + "get": { + "tags": [ + "CustomFormat" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/CustomFormatResource" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/CustomFormatResource" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/CustomFormatResource" + } + } + } + } + } + } + }, + "/api/v3/customformat/bulk": { + "put": { + "tags": [ + "CustomFormat" + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CustomFormatBulkResource" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CustomFormatResource" + } + } + } + } + } + }, + "delete": { + "tags": [ + "CustomFormat" + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CustomFormatBulkResource" + } + } + } + }, + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/api/v3/customformat/schema": { + "get": { + "tags": [ + "CustomFormat" + ], + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/api/v3/wanted/cutoff": { + "get": { + "tags": [ + "Cutoff" + ], + "parameters": [ + { + "name": "page", + "in": "query", + "schema": { + "type": "integer", + "format": "int32", + "default": 1 + } + }, + { + "name": "pageSize", + "in": "query", + "schema": { + "type": "integer", + "format": "int32", + "default": 10 + } + }, + { + "name": "sortKey", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "sortDirection", + "in": "query", + "schema": { + "$ref": "#/components/schemas/SortDirection" + } + }, + { + "name": "monitored", + "in": "query", + "schema": { + "type": "boolean", + "default": true + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MovieResourcePagingResource" + } + } + } + } + } + } + }, + "/api/v3/delayprofile": { + "post": { + "tags": [ + "DelayProfile" + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DelayProfileResource" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/DelayProfileResource" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/DelayProfileResource" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/DelayProfileResource" + } + } + } + } + } + }, + "get": { + "tags": [ + "DelayProfile" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "text/plain": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/DelayProfileResource" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/DelayProfileResource" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/DelayProfileResource" + } + } + } + } + } + } + } + }, + "/api/v3/delayprofile/{id}": { + "delete": { + "tags": [ + "DelayProfile" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "OK" + } + } + }, + "put": { + "tags": [ + "DelayProfile" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DelayProfileResource" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/DelayProfileResource" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/DelayProfileResource" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/DelayProfileResource" + } + } + } + } + } + }, + "get": { + "tags": [ + "DelayProfile" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/DelayProfileResource" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/DelayProfileResource" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/DelayProfileResource" + } + } + } + } + } + } + }, + "/api/v3/delayprofile/reorder/{id}": { + "put": { + "tags": [ + "DelayProfile" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "after", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "text/plain": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/DelayProfileResource" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/DelayProfileResource" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/DelayProfileResource" + } + } + } + } + } + } + } + }, + "/api/v3/diskspace": { + "get": { + "tags": [ + "DiskSpace" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "text/plain": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/DiskSpaceResource" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/DiskSpaceResource" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/DiskSpaceResource" + } + } + } + } + } + } + } + }, + "/api/v3/downloadclient": { + "get": { + "tags": [ + "DownloadClient" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/DownloadClientResource" + } + } + } + } + } + } + }, + "post": { + "tags": [ + "DownloadClient" + ], + "parameters": [ + { + "name": "forceSave", + "in": "query", + "schema": { + "type": "boolean", + "default": false + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DownloadClientResource" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DownloadClientResource" + } + } + } + } + } + } + }, + "/api/v3/downloadclient/{id}": { + "put": { + "tags": [ + "DownloadClient" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "forceSave", + "in": "query", + "schema": { + "type": "boolean", + "default": false + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DownloadClientResource" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DownloadClientResource" + } + } + } + } + } + }, + "delete": { + "tags": [ + "DownloadClient" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "OK" + } + } + }, + "get": { + "tags": [ + "DownloadClient" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/DownloadClientResource" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/DownloadClientResource" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/DownloadClientResource" + } + } + } + } + } + } + }, + "/api/v3/downloadclient/bulk": { + "put": { + "tags": [ + "DownloadClient" + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DownloadClientBulkResource" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DownloadClientResource" + } + } + } + } + } + }, + "delete": { + "tags": [ + "DownloadClient" + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DownloadClientBulkResource" + } + } + } + }, + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/api/v3/downloadclient/schema": { + "get": { + "tags": [ + "DownloadClient" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/DownloadClientResource" + } + } + } + } + } + } + } + }, + "/api/v3/downloadclient/test": { + "post": { + "tags": [ + "DownloadClient" + ], + "parameters": [ + { + "name": "forceTest", + "in": "query", + "schema": { + "type": "boolean", + "default": false + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DownloadClientResource" + } + } + } + }, + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/api/v3/downloadclient/testall": { + "post": { + "tags": [ + "DownloadClient" + ], + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/api/v3/downloadclient/action/{name}": { + "post": { + "tags": [ + "DownloadClient" + ], + "parameters": [ + { + "name": "name", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DownloadClientResource" + } + } + } + }, + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/api/v3/config/downloadclient": { + "get": { + "tags": [ + "DownloadClientConfig" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DownloadClientConfigResource" + } + } + } + } + } + } + }, + "/api/v3/config/downloadclient/{id}": { + "put": { + "tags": [ + "DownloadClientConfig" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DownloadClientConfigResource" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/DownloadClientConfigResource" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/DownloadClientConfigResource" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/DownloadClientConfigResource" + } + } + } + } + } + }, + "get": { + "tags": [ + "DownloadClientConfig" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/DownloadClientConfigResource" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/DownloadClientConfigResource" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/DownloadClientConfigResource" + } + } + } + } + } + } + }, + "/api/v3/extrafile": { + "get": { + "tags": [ + "ExtraFile" + ], + "parameters": [ + { + "name": "movieId", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "text/plain": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ExtraFileResource" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ExtraFileResource" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ExtraFileResource" + } + } + } + } + } + } + } + }, + "/api/v3/filesystem": { + "get": { + "tags": [ + "FileSystem" + ], + "parameters": [ + { + "name": "path", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "includeFiles", + "in": "query", + "schema": { + "type": "boolean", + "default": false + } + }, + { + "name": "allowFoldersWithoutTrailingSlashes", + "in": "query", + "schema": { + "type": "boolean", + "default": false + } + } + ], + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/api/v3/filesystem/type": { + "get": { + "tags": [ + "FileSystem" + ], + "parameters": [ + { + "name": "path", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/api/v3/filesystem/mediafiles": { + "get": { + "tags": [ + "FileSystem" + ], + "parameters": [ + { + "name": "path", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/api/v3/health": { + "get": { + "tags": [ + "Health" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "text/plain": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/HealthResource" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/HealthResource" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/HealthResource" + } + } + } + } + } + } + } + }, + "/api/v3/history": { + "get": { + "tags": [ + "History" + ], + "parameters": [ + { + "name": "page", + "in": "query", + "schema": { + "type": "integer", + "format": "int32", + "default": 1 + } + }, + { + "name": "pageSize", + "in": "query", + "schema": { + "type": "integer", + "format": "int32", + "default": 10 + } + }, + { + "name": "sortKey", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "sortDirection", + "in": "query", + "schema": { + "$ref": "#/components/schemas/SortDirection" + } + }, + { + "name": "includeMovie", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "eventType", + "in": "query", + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + }, + { + "name": "downloadId", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "movieIds", + "in": "query", + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + }, + { + "name": "languages", + "in": "query", + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + }, + { + "name": "quality", + "in": "query", + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HistoryResourcePagingResource" + } + } + } + } + } + } + }, + "/api/v3/history/since": { + "get": { + "tags": [ + "History" + ], + "parameters": [ + { + "name": "date", + "in": "query", + "schema": { + "type": "string", + "format": "date-time" + } + }, + { + "name": "eventType", + "in": "query", + "schema": { + "$ref": "#/components/schemas/MovieHistoryEventType" + } + }, + { + "name": "includeMovie", + "in": "query", + "schema": { + "type": "boolean", + "default": false + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/HistoryResource" + } + } + } + } + } + } + } + }, + "/api/v3/history/movie": { + "get": { + "tags": [ + "History" + ], + "parameters": [ + { + "name": "movieId", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "eventType", + "in": "query", + "schema": { + "$ref": "#/components/schemas/MovieHistoryEventType" + } + }, + { + "name": "includeMovie", + "in": "query", + "schema": { + "type": "boolean", + "default": false + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/HistoryResource" + } + } + } + } + } + } + } + }, + "/api/v3/history/failed/{id}": { + "post": { + "tags": [ + "History" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/api/v3/config/host": { + "get": { + "tags": [ + "HostConfig" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/HostConfigResource" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/HostConfigResource" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/HostConfigResource" + } + } + } + } + } + } + }, + "/api/v3/config/host/{id}": { + "put": { + "tags": [ + "HostConfig" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HostConfigResource" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/HostConfigResource" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/HostConfigResource" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/HostConfigResource" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/HostConfigResource" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/HostConfigResource" + } + } + } + } + } + }, + "get": { + "tags": [ + "HostConfig" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/HostConfigResource" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/HostConfigResource" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/HostConfigResource" + } + } + } + } + } + } + }, + "/api/v3/importlist": { + "get": { + "tags": [ + "ImportList" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ImportListResource" + } + } + } + } + } + } + }, + "post": { + "tags": [ + "ImportList" + ], + "parameters": [ + { + "name": "forceSave", + "in": "query", + "schema": { + "type": "boolean", + "default": false + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ImportListResource" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ImportListResource" + } + } + } + } + } + } + }, + "/api/v3/importlist/{id}": { + "put": { + "tags": [ + "ImportList" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "forceSave", + "in": "query", + "schema": { + "type": "boolean", + "default": false + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ImportListResource" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ImportListResource" + } + } + } + } + } + }, + "delete": { + "tags": [ + "ImportList" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "OK" + } + } + }, + "get": { + "tags": [ + "ImportList" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/ImportListResource" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/ImportListResource" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/ImportListResource" + } + } + } + } + } + } + }, + "/api/v3/importlist/bulk": { + "put": { + "tags": [ + "ImportList" + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ImportListBulkResource" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ImportListResource" + } + } + } + } + } + }, + "delete": { + "tags": [ + "ImportList" + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ImportListBulkResource" + } + } + } + }, + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/api/v3/importlist/schema": { + "get": { + "tags": [ + "ImportList" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ImportListResource" + } + } + } + } + } + } + } + }, + "/api/v3/importlist/test": { + "post": { + "tags": [ + "ImportList" + ], + "parameters": [ + { + "name": "forceTest", + "in": "query", + "schema": { + "type": "boolean", + "default": false + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ImportListResource" + } + } + } + }, + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/api/v3/importlist/testall": { + "post": { + "tags": [ + "ImportList" + ], + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/api/v3/importlist/action/{name}": { + "post": { + "tags": [ + "ImportList" + ], + "parameters": [ + { + "name": "name", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ImportListResource" + } + } + } + }, + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/api/v3/config/importlist": { + "get": { + "tags": [ + "ImportListConfig" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ImportListConfigResource" + } + } + } + } + } + } + }, + "/api/v3/config/importlist/{id}": { + "put": { + "tags": [ + "ImportListConfig" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ImportListConfigResource" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/ImportListConfigResource" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/ImportListConfigResource" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/ImportListConfigResource" + } + } + } + } + } + }, + "get": { + "tags": [ + "ImportListConfig" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/ImportListConfigResource" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/ImportListConfigResource" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/ImportListConfigResource" + } + } + } + } + } + } + }, + "/api/v3/exclusions": { + "get": { + "tags": [ + "ImportListExclusion" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ImportListExclusionResource" + } + } + } + } + } + }, + "deprecated": true + }, + "post": { + "tags": [ + "ImportListExclusion" + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ImportListExclusionResource" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/ImportListExclusionResource" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/ImportListExclusionResource" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/ImportListExclusionResource" + } + } + } + } + } + } + }, + "/api/v3/exclusions/paged": { + "get": { + "tags": [ + "ImportListExclusion" + ], + "parameters": [ + { + "name": "page", + "in": "query", + "schema": { + "type": "integer", + "format": "int32", + "default": 1 + } + }, + { + "name": "pageSize", + "in": "query", + "schema": { + "type": "integer", + "format": "int32", + "default": 10 + } + }, + { + "name": "sortKey", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "sortDirection", + "in": "query", + "schema": { + "$ref": "#/components/schemas/SortDirection" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ImportListExclusionResourcePagingResource" + } + } + } + } + } + } + }, + "/api/v3/exclusions/{id}": { + "put": { + "tags": [ + "ImportListExclusion" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ImportListExclusionResource" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/ImportListExclusionResource" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/ImportListExclusionResource" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/ImportListExclusionResource" + } + } + } + } + } + }, + "delete": { + "tags": [ + "ImportListExclusion" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "OK" + } + } + }, + "get": { + "tags": [ + "ImportListExclusion" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/ImportListExclusionResource" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/ImportListExclusionResource" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/ImportListExclusionResource" + } + } + } + } + } + } + }, + "/api/v3/exclusions/bulk": { + "post": { + "tags": [ + "ImportListExclusion" + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ImportListExclusionResource" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ImportListExclusionResource" + } + } + }, + "application/*+json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ImportListExclusionResource" + } + } + } + } + }, + "responses": { + "200": { + "description": "OK" + } + } + }, + "delete": { + "tags": [ + "ImportListExclusion" + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ImportListExclusionBulkResource" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/ImportListExclusionBulkResource" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/ImportListExclusionBulkResource" + } + } + } + }, + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/api/v3/importlist/movie": { + "get": { + "tags": [ + "ImportListMovies" + ], + "parameters": [ + { + "name": "includeRecommendations", + "in": "query", + "schema": { + "type": "boolean", + "default": false + } + }, + { + "name": "includeTrending", + "in": "query", + "schema": { + "type": "boolean", + "default": false + } + }, + { + "name": "includePopular", + "in": "query", + "schema": { + "type": "boolean", + "default": false + } + } + ], + "responses": { + "200": { + "description": "OK" + } + } + }, + "post": { + "tags": [ + "ImportListMovies" + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/MovieResource" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/MovieResource" + } + } + }, + "application/*+json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/MovieResource" + } + } + } + } + }, + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/api/v3/indexer": { + "get": { + "tags": [ + "Indexer" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/IndexerResource" + } + } + } + } + } + } + }, + "post": { + "tags": [ + "Indexer" + ], + "parameters": [ + { + "name": "forceSave", + "in": "query", + "schema": { + "type": "boolean", + "default": false + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/IndexerResource" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/IndexerResource" + } + } + } + } + } + } + }, + "/api/v3/indexer/{id}": { + "put": { + "tags": [ + "Indexer" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "forceSave", + "in": "query", + "schema": { + "type": "boolean", + "default": false + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/IndexerResource" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/IndexerResource" + } + } + } + } + } + }, + "delete": { + "tags": [ + "Indexer" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "OK" + } + } + }, + "get": { + "tags": [ + "Indexer" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/IndexerResource" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/IndexerResource" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/IndexerResource" + } + } + } + } + } + } + }, + "/api/v3/indexer/bulk": { + "put": { + "tags": [ + "Indexer" + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/IndexerBulkResource" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/IndexerResource" + } + } + } + } + } + }, + "delete": { + "tags": [ + "Indexer" + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/IndexerBulkResource" + } + } + } + }, + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/api/v3/indexer/schema": { + "get": { + "tags": [ + "Indexer" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/IndexerResource" + } + } + } + } + } + } + } + }, + "/api/v3/indexer/test": { + "post": { + "tags": [ + "Indexer" + ], + "parameters": [ + { + "name": "forceTest", + "in": "query", + "schema": { + "type": "boolean", + "default": false + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/IndexerResource" + } + } + } + }, + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/api/v3/indexer/testall": { + "post": { + "tags": [ + "Indexer" + ], + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/api/v3/indexer/action/{name}": { + "post": { + "tags": [ + "Indexer" + ], + "parameters": [ + { + "name": "name", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/IndexerResource" + } + } + } + }, + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/api/v3/config/indexer": { + "get": { + "tags": [ + "IndexerConfig" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/IndexerConfigResource" + } + } + } + } + } + } + }, + "/api/v3/config/indexer/{id}": { + "put": { + "tags": [ + "IndexerConfig" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/IndexerConfigResource" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/IndexerConfigResource" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/IndexerConfigResource" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/IndexerConfigResource" + } + } + } + } + } + }, + "get": { + "tags": [ + "IndexerConfig" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/IndexerConfigResource" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/IndexerConfigResource" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/IndexerConfigResource" + } + } + } + } + } + } + }, + "/api/v3/indexerflag": { + "get": { + "tags": [ + "IndexerFlag" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "text/plain": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/IndexerFlagResource" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/IndexerFlagResource" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/IndexerFlagResource" + } + } + } + } + } + } + } + }, + "/api/v3/language": { + "get": { + "tags": [ + "Language" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "text/plain": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/LanguageResource" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/LanguageResource" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/LanguageResource" + } + } + } + } + } + } + } + }, + "/api/v3/language/{id}": { + "get": { + "tags": [ + "Language" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/LanguageResource" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/LanguageResource" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/LanguageResource" + } + } + } + } + } + } + }, + "/api/v3/localization": { + "get": { + "tags": [ + "Localization" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "text/plain": { + "schema": { + "type": "string" + } + }, + "application/json": { + "schema": { + "type": "string" + } + }, + "text/json": { + "schema": { + "type": "string" + } + } + } + } + } + } + }, + "/api/v3/localization/language": { + "get": { + "tags": [ + "Localization" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/LocalizationLanguageResource" + } + } + } + } + } + } + }, + "/api/v3/log": { + "get": { + "tags": [ + "Log" + ], + "parameters": [ + { + "name": "page", + "in": "query", + "schema": { + "type": "integer", + "format": "int32", + "default": 1 + } + }, + { + "name": "pageSize", + "in": "query", + "schema": { + "type": "integer", + "format": "int32", + "default": 10 + } + }, + { + "name": "sortKey", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "sortDirection", + "in": "query", + "schema": { + "$ref": "#/components/schemas/SortDirection" + } + }, + { + "name": "level", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/LogResourcePagingResource" + } + } + } + } + } + } + }, + "/api/v3/log/file": { + "get": { + "tags": [ + "LogFile" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "text/plain": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/LogFileResource" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/LogFileResource" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/LogFileResource" + } + } + } + } + } + } + } + }, + "/api/v3/log/file/{filename}": { + "get": { + "tags": [ + "LogFile" + ], + "parameters": [ + { + "name": "filename", + "in": "path", + "required": true, + "schema": { + "pattern": "[-.a-zA-Z0-9]+?\\.txt", + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/api/v3/manualimport": { + "get": { + "tags": [ + "ManualImport" + ], + "parameters": [ + { + "name": "folder", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "downloadId", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "movieId", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "filterExistingFiles", + "in": "query", + "schema": { + "type": "boolean", + "default": true + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ManualImportResource" + } + } + } + } + } + } + }, + "post": { + "tags": [ + "ManualImport" + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ManualImportReprocessResource" + } + } + } + } + }, + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/api/v3/mediacover/{movieId}/{filename}": { + "get": { + "tags": [ + "MediaCover" + ], + "parameters": [ + { + "name": "movieId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "filename", + "in": "path", + "required": true, + "schema": { + "pattern": "(.+)\\.(jpg|png|gif)", + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/api/v3/config/mediamanagement": { + "get": { + "tags": [ + "MediaManagementConfig" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MediaManagementConfigResource" + } + } + } + } + } + } + }, + "/api/v3/config/mediamanagement/{id}": { + "put": { + "tags": [ + "MediaManagementConfig" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MediaManagementConfigResource" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/MediaManagementConfigResource" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/MediaManagementConfigResource" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/MediaManagementConfigResource" + } + } + } + } + } + }, + "get": { + "tags": [ + "MediaManagementConfig" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/MediaManagementConfigResource" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/MediaManagementConfigResource" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/MediaManagementConfigResource" + } + } + } + } + } + } + }, + "/api/v3/metadata": { + "get": { + "tags": [ + "Metadata" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/MetadataResource" + } + } + } + } + } + } + }, + "post": { + "tags": [ + "Metadata" + ], + "parameters": [ + { + "name": "forceSave", + "in": "query", + "schema": { + "type": "boolean", + "default": false + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MetadataResource" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MetadataResource" + } + } + } + } + } + } + }, + "/api/v3/metadata/{id}": { + "put": { + "tags": [ + "Metadata" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "forceSave", + "in": "query", + "schema": { + "type": "boolean", + "default": false + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MetadataResource" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MetadataResource" + } + } + } + } + } + }, + "delete": { + "tags": [ + "Metadata" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "OK" + } + } + }, + "get": { + "tags": [ + "Metadata" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/MetadataResource" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/MetadataResource" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/MetadataResource" + } + } + } + } + } + } + }, + "/api/v3/metadata/schema": { + "get": { + "tags": [ + "Metadata" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/MetadataResource" + } + } + } + } + } + } + } + }, + "/api/v3/metadata/test": { + "post": { + "tags": [ + "Metadata" + ], + "parameters": [ + { + "name": "forceTest", + "in": "query", + "schema": { + "type": "boolean", + "default": false + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MetadataResource" + } + } + } + }, + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/api/v3/metadata/testall": { + "post": { + "tags": [ + "Metadata" + ], + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/api/v3/metadata/action/{name}": { + "post": { + "tags": [ + "Metadata" + ], + "parameters": [ + { + "name": "name", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MetadataResource" + } + } + } + }, + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/api/v3/config/metadata": { + "get": { + "tags": [ + "MetadataConfig" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MetadataConfigResource" + } + } + } + } + } + } + }, + "/api/v3/config/metadata/{id}": { + "put": { + "tags": [ + "MetadataConfig" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MetadataConfigResource" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/MetadataConfigResource" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/MetadataConfigResource" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/MetadataConfigResource" + } + } + } + } + } + }, + "get": { + "tags": [ + "MetadataConfig" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/MetadataConfigResource" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/MetadataConfigResource" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/MetadataConfigResource" + } + } + } + } + } + } + }, + "/api/v3/wanted/missing": { + "get": { + "tags": [ + "Missing" + ], + "parameters": [ + { + "name": "page", + "in": "query", + "schema": { + "type": "integer", + "format": "int32", + "default": 1 + } + }, + { + "name": "pageSize", + "in": "query", + "schema": { + "type": "integer", + "format": "int32", + "default": 10 + } + }, + { + "name": "sortKey", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "sortDirection", + "in": "query", + "schema": { + "$ref": "#/components/schemas/SortDirection" + } + }, + { + "name": "monitored", + "in": "query", + "schema": { + "type": "boolean", + "default": true + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MovieResourcePagingResource" + } + } + } + } + } + } + }, + "/api/v3/movie": { + "get": { + "tags": [ + "Movie" + ], + "parameters": [ + { + "name": "tmdbId", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "excludeLocalCovers", + "in": "query", + "schema": { + "type": "boolean", + "default": false + } + }, + { + "name": "languageId", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/MovieResource" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/MovieResource" + } + } + } + } + } + } + }, + "post": { + "tags": [ + "Movie" + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MovieResource" + } + } + } + }, + "responses": { + "201": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MovieResource" + } + } + } + } + } + } + }, + "/api/v3/movie/{id}": { + "put": { + "tags": [ + "Movie" + ], + "parameters": [ + { + "name": "moveFiles", + "in": "query", + "schema": { + "type": "boolean", + "default": false + } + }, + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MovieResource" + } + } + } + }, + "responses": { + "202": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MovieResource" + } + } + } + } + } + }, + "delete": { + "tags": [ + "Movie" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "deleteFiles", + "in": "query", + "schema": { + "type": "boolean", + "default": false + } + }, + { + "name": "addImportExclusion", + "in": "query", + "schema": { + "type": "boolean", + "default": false + } + } + ], + "responses": { + "200": { + "description": "OK" + } + } + }, + "get": { + "tags": [ + "Movie" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MovieResource" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/MovieResource" + } + } + } + } + } + } + }, + "/api/v3/movie/editor": { + "put": { + "tags": [ + "MovieEditor" + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MovieEditorResource" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/MovieEditorResource" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/MovieEditorResource" + } + } + } + }, + "responses": { + "200": { + "description": "OK" + } + } + }, + "delete": { + "tags": [ + "MovieEditor" + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MovieEditorResource" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/MovieEditorResource" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/MovieEditorResource" + } + } + } + }, + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/api/v3/moviefile": { + "get": { + "tags": [ + "MovieFile" + ], + "parameters": [ + { + "name": "movieId", + "in": "query", + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + }, + { + "name": "movieFileIds", + "in": "query", + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/MovieFileResource" + } + } + } + } + } + } + } + }, + "/api/v3/moviefile/{id}": { + "put": { + "tags": [ + "MovieFile" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MovieFileResource" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/MovieFileResource" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/MovieFileResource" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/MovieFileResource" + } + } + } + } + } + }, + "delete": { + "tags": [ + "MovieFile" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "OK" + } + } + }, + "get": { + "tags": [ + "MovieFile" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/MovieFileResource" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/MovieFileResource" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/MovieFileResource" + } + } + } + } + } + } + }, + "/api/v3/moviefile/editor": { + "put": { + "tags": [ + "MovieFile" + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MovieFileListResource" + } + } + } + }, + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/api/v3/moviefile/bulk": { + "delete": { + "tags": [ + "MovieFile" + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MovieFileListResource" + } + } + } + }, + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/api/v3/movie/import": { + "post": { + "tags": [ + "MovieImport" + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/MovieResource" + } + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/MovieResource" + } + } + } + } + } + } + } + }, + "/api/v3/movie/lookup/tmdb": { + "get": { + "tags": [ + "MovieLookup" + ], + "parameters": [ + { + "name": "tmdbId", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MovieResource" + } + } + } + } + } + } + }, + "/api/v3/movie/lookup/imdb": { + "get": { + "tags": [ + "MovieLookup" + ], + "parameters": [ + { + "name": "imdbId", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MovieResource" + } + } + } + } + } + } + }, + "/api/v3/movie/lookup": { + "get": { + "tags": [ + "MovieLookup" + ], + "parameters": [ + { + "name": "term", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/MovieResource" + } + } + } + } + } + } + } + }, + "/api/v3/config/naming": { + "get": { + "tags": [ + "NamingConfig" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/NamingConfigResource" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/NamingConfigResource" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/NamingConfigResource" + } + } + } + } + } + } + }, + "/api/v3/config/naming/{id}": { + "put": { + "tags": [ + "NamingConfig" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NamingConfigResource" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/NamingConfigResource" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/NamingConfigResource" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/NamingConfigResource" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/NamingConfigResource" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/NamingConfigResource" + } + } + } + } + } + }, + "get": { + "tags": [ + "NamingConfig" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/NamingConfigResource" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/NamingConfigResource" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/NamingConfigResource" + } + } + } + } + } + } + }, + "/api/v3/config/naming/examples": { + "get": { + "tags": [ + "NamingConfig" + ], + "parameters": [ + { + "name": "renameMovies", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "replaceIllegalCharacters", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "colonReplacementFormat", + "in": "query", + "schema": { + "$ref": "#/components/schemas/ColonReplacementFormat" + } + }, + { + "name": "standardMovieFormat", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "movieFolderFormat", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "id", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "resourceName", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/api/v3/notification": { + "get": { + "tags": [ + "Notification" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/NotificationResource" + } + } + } + } + } + } + }, + "post": { + "tags": [ + "Notification" + ], + "parameters": [ + { + "name": "forceSave", + "in": "query", + "schema": { + "type": "boolean", + "default": false + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotificationResource" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotificationResource" + } + } + } + } + } + } + }, + "/api/v3/notification/{id}": { + "put": { + "tags": [ + "Notification" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "forceSave", + "in": "query", + "schema": { + "type": "boolean", + "default": false + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotificationResource" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotificationResource" + } + } + } + } + } + }, + "delete": { + "tags": [ + "Notification" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "OK" + } + } + }, + "get": { + "tags": [ + "Notification" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/NotificationResource" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotificationResource" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/NotificationResource" + } + } + } + } + } + } + }, + "/api/v3/notification/schema": { + "get": { + "tags": [ + "Notification" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/NotificationResource" + } + } + } + } + } + } + } + }, + "/api/v3/notification/test": { + "post": { + "tags": [ + "Notification" + ], + "parameters": [ + { + "name": "forceTest", + "in": "query", + "schema": { + "type": "boolean", + "default": false + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotificationResource" + } + } + } + }, + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/api/v3/notification/testall": { + "post": { + "tags": [ + "Notification" + ], + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/api/v3/notification/action/{name}": { + "post": { + "tags": [ + "Notification" + ], + "parameters": [ + { + "name": "name", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotificationResource" + } + } + } + }, + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/api/v3/parse": { + "get": { + "tags": [ + "Parse" + ], + "parameters": [ + { + "name": "title", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/ParseResource" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/ParseResource" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/ParseResource" + } + } + } + } + } + } + }, + "/ping": { + "get": { + "tags": [ + "Ping" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PingResource" + } + } + } + } + } + }, + "head": { + "tags": [ + "Ping" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PingResource" + } + } + } + } + } + } + }, + "/api/v3/qualitydefinition/{id}": { + "put": { + "tags": [ + "QualityDefinition" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/QualityDefinitionResource" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/QualityDefinitionResource" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/QualityDefinitionResource" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/QualityDefinitionResource" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/QualityDefinitionResource" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/QualityDefinitionResource" + } + } + } + } + } + }, + "get": { + "tags": [ + "QualityDefinition" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/QualityDefinitionResource" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/QualityDefinitionResource" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/QualityDefinitionResource" + } + } + } + } + } + } + }, + "/api/v3/qualitydefinition": { + "get": { + "tags": [ + "QualityDefinition" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "text/plain": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/QualityDefinitionResource" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/QualityDefinitionResource" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/QualityDefinitionResource" + } + } + } + } + } + } + } + }, + "/api/v3/qualitydefinition/update": { + "put": { + "tags": [ + "QualityDefinition" + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/QualityDefinitionResource" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/QualityDefinitionResource" + } + } + }, + "application/*+json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/QualityDefinitionResource" + } + } + } + } + }, + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/api/v3/qualityprofile": { + "post": { + "tags": [ + "QualityProfile" + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/QualityProfileResource" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/QualityProfileResource" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/QualityProfileResource" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/QualityProfileResource" + } + } + } + } + } + }, + "get": { + "tags": [ + "QualityProfile" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "text/plain": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/QualityProfileResource" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/QualityProfileResource" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/QualityProfileResource" + } + } + } + } + } + } + } + }, + "/api/v3/qualityprofile/{id}": { + "delete": { + "tags": [ + "QualityProfile" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "OK" + } + } + }, + "put": { + "tags": [ + "QualityProfile" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/QualityProfileResource" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/QualityProfileResource" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/QualityProfileResource" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/QualityProfileResource" + } + } + } + } + } + }, + "get": { + "tags": [ + "QualityProfile" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/QualityProfileResource" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/QualityProfileResource" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/QualityProfileResource" + } + } + } + } + } + } + }, + "/api/v3/qualityprofile/schema": { + "get": { + "tags": [ + "QualityProfileSchema" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/QualityProfileResource" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/QualityProfileResource" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/QualityProfileResource" + } + } + } + } + } + } + }, + "/api/v3/queue/{id}": { + "delete": { + "tags": [ + "Queue" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "removeFromClient", + "in": "query", + "schema": { + "type": "boolean", + "default": true + } + }, + { + "name": "blocklist", + "in": "query", + "schema": { + "type": "boolean", + "default": false + } + }, + { + "name": "skipRedownload", + "in": "query", + "schema": { + "type": "boolean", + "default": false + } + }, + { + "name": "changeCategory", + "in": "query", + "schema": { + "type": "boolean", + "default": false + } + } + ], + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/api/v3/queue/bulk": { + "delete": { + "tags": [ + "Queue" + ], + "parameters": [ + { + "name": "removeFromClient", + "in": "query", + "schema": { + "type": "boolean", + "default": true + } + }, + { + "name": "blocklist", + "in": "query", + "schema": { + "type": "boolean", + "default": false + } + }, + { + "name": "skipRedownload", + "in": "query", + "schema": { + "type": "boolean", + "default": false + } + }, + { + "name": "changeCategory", + "in": "query", + "schema": { + "type": "boolean", + "default": false + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/QueueBulkResource" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/QueueBulkResource" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/QueueBulkResource" + } + } + } + }, + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/api/v3/queue": { + "get": { + "tags": [ + "Queue" + ], + "parameters": [ + { + "name": "page", + "in": "query", + "schema": { + "type": "integer", + "format": "int32", + "default": 1 + } + }, + { + "name": "pageSize", + "in": "query", + "schema": { + "type": "integer", + "format": "int32", + "default": 10 + } + }, + { + "name": "sortKey", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "sortDirection", + "in": "query", + "schema": { + "$ref": "#/components/schemas/SortDirection" + } + }, + { + "name": "includeUnknownMovieItems", + "in": "query", + "schema": { + "type": "boolean", + "default": false + } + }, + { + "name": "includeMovie", + "in": "query", + "schema": { + "type": "boolean", + "default": false + } + }, + { + "name": "movieIds", + "in": "query", + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + }, + { + "name": "protocol", + "in": "query", + "schema": { + "$ref": "#/components/schemas/DownloadProtocol" + } + }, + { + "name": "languages", + "in": "query", + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + }, + { + "name": "quality", + "in": "query", + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + }, + { + "name": "status", + "in": "query", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/QueueStatus" + } + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/QueueResourcePagingResource" + } + } + } + } + } + } + }, + "/api/v3/queue/grab/{id}": { + "post": { + "tags": [ + "QueueAction" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/api/v3/queue/grab/bulk": { + "post": { + "tags": [ + "QueueAction" + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/QueueBulkResource" + } + } + } + }, + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/api/v3/queue/details": { + "get": { + "tags": [ + "QueueDetails" + ], + "parameters": [ + { + "name": "movieId", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "includeMovie", + "in": "query", + "schema": { + "type": "boolean", + "default": false + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "text/plain": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/QueueResource" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/QueueResource" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/QueueResource" + } + } + } + } + } + } + } + }, + "/api/v3/queue/status": { + "get": { + "tags": [ + "QueueStatus" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/QueueStatusResource" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/QueueStatusResource" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/QueueStatusResource" + } + } + } + } + } + } + }, + "/api/v3/release": { + "post": { + "tags": [ + "Release" + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ReleaseResource" + } + } + } + }, + "responses": { + "200": { + "description": "OK" + } + } + }, + "get": { + "tags": [ + "Release" + ], + "parameters": [ + { + "name": "movieId", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ReleaseResource" + } + } + } + } + } + } + } + }, + "/api/v3/releaseprofile": { + "post": { + "tags": [ + "ReleaseProfile" + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ReleaseProfileResource" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/ReleaseProfileResource" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/ReleaseProfileResource" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/ReleaseProfileResource" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/ReleaseProfileResource" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/ReleaseProfileResource" + } + } + } + } + } + }, + "get": { + "tags": [ + "ReleaseProfile" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "text/plain": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ReleaseProfileResource" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ReleaseProfileResource" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ReleaseProfileResource" + } + } + } + } + } + } + } + }, + "/api/v3/releaseprofile/{id}": { + "delete": { + "tags": [ + "ReleaseProfile" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "OK" + } + } + }, + "put": { + "tags": [ + "ReleaseProfile" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ReleaseProfileResource" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/ReleaseProfileResource" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/ReleaseProfileResource" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/ReleaseProfileResource" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/ReleaseProfileResource" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/ReleaseProfileResource" + } + } + } + } + } + }, + "get": { + "tags": [ + "ReleaseProfile" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/ReleaseProfileResource" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/ReleaseProfileResource" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/ReleaseProfileResource" + } + } + } + } + } + } + }, + "/api/v3/release/push": { + "post": { + "tags": [ + "ReleasePush" + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ReleaseResource" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "text/plain": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ReleaseResource" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ReleaseResource" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ReleaseResource" + } + } + } + } + } + } + } + }, + "/api/v3/remotepathmapping": { + "post": { + "tags": [ + "RemotePathMapping" + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RemotePathMappingResource" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/RemotePathMappingResource" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/RemotePathMappingResource" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/RemotePathMappingResource" + } + } + } + } + } + }, + "get": { + "tags": [ + "RemotePathMapping" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "text/plain": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/RemotePathMappingResource" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/RemotePathMappingResource" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/RemotePathMappingResource" + } + } + } + } + } + } + } + }, + "/api/v3/remotepathmapping/{id}": { + "delete": { + "tags": [ + "RemotePathMapping" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "OK" + } + } + }, + "put": { + "tags": [ + "RemotePathMapping" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RemotePathMappingResource" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/RemotePathMappingResource" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/RemotePathMappingResource" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/RemotePathMappingResource" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/RemotePathMappingResource" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/RemotePathMappingResource" + } + } + } + } + } + }, + "get": { + "tags": [ + "RemotePathMapping" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/RemotePathMappingResource" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/RemotePathMappingResource" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/RemotePathMappingResource" + } + } + } + } + } + } + }, + "/api/v3/rename": { + "get": { + "tags": [ + "RenameMovie" + ], + "parameters": [ + { + "name": "movieId", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "text/plain": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/RenameMovieResource" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/RenameMovieResource" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/RenameMovieResource" + } + } + } + } + } + } + } + }, + "/api/v3/rootfolder": { + "post": { + "tags": [ + "RootFolder" + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RootFolderResource" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/RootFolderResource" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/RootFolderResource" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/RootFolderResource" + } + } + } + } + } + }, + "get": { + "tags": [ + "RootFolder" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "text/plain": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/RootFolderResource" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/RootFolderResource" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/RootFolderResource" + } + } + } + } + } + } + } + }, + "/api/v3/rootfolder/{id}": { + "delete": { + "tags": [ + "RootFolder" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "OK" + } + } + }, + "get": { + "tags": [ + "RootFolder" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/RootFolderResource" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/RootFolderResource" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/RootFolderResource" + } + } + } + } + } + } + }, + "/content/{path}": { + "get": { + "tags": [ + "StaticResource" + ], + "parameters": [ + { + "name": "path", + "in": "path", + "required": true, + "schema": { + "pattern": "^(?!api/).*", + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/": { + "get": { + "tags": [ + "StaticResource" + ], + "parameters": [ + { + "name": "path", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/{path}": { + "get": { + "tags": [ + "StaticResource" + ], + "parameters": [ + { + "name": "path", + "in": "path", + "required": true, + "schema": { + "pattern": "^(?!(api|feed)/).*", + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/api/v3/system/status": { + "get": { + "tags": [ + "System" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/SystemResource" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/SystemResource" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/SystemResource" + } + } + } + } + } + } + }, + "/api/v3/system/routes": { + "get": { + "tags": [ + "System" + ], + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/api/v3/system/routes/duplicate": { + "get": { + "tags": [ + "System" + ], + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/api/v3/system/shutdown": { + "post": { + "tags": [ + "System" + ], + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/api/v3/system/restart": { + "post": { + "tags": [ + "System" + ], + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/api/v3/tag": { + "get": { + "tags": [ + "Tag" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/TagResource" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/TagResource" + } + } + } + } + } + } + }, + "post": { + "tags": [ + "Tag" + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TagResource" + } + } + } + }, + "responses": { + "201": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TagResource" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/TagResource" + } + } + } + } + } + } + }, + "/api/v3/tag/{id}": { + "put": { + "tags": [ + "Tag" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TagResource" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TagResource" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/TagResource" + } + } + } + } + } + }, + "delete": { + "tags": [ + "Tag" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "OK" + } + } + }, + "get": { + "tags": [ + "Tag" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TagResource" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/TagResource" + } + } + } + } + } + } + }, + "/api/v3/tag/detail": { + "get": { + "tags": [ + "TagDetails" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/TagDetailsResource" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/TagDetailsResource" + } + } + } + } + } + } + } + }, + "/api/v3/tag/detail/{id}": { + "get": { + "tags": [ + "TagDetails" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TagDetailsResource" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/TagDetailsResource" + } + } + } + } + } + } + }, + "/api/v3/system/task": { + "get": { + "tags": [ + "Task" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "text/plain": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/TaskResource" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/TaskResource" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/TaskResource" + } + } + } + } + } + } + } + }, + "/api/v3/system/task/{id}": { + "get": { + "tags": [ + "Task" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/TaskResource" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/TaskResource" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/TaskResource" + } + } + } + } + } + } + }, + "/api/v3/config/ui/{id}": { + "put": { + "tags": [ + "UiConfig" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UiConfigResource" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/UiConfigResource" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/UiConfigResource" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/UiConfigResource" + } + } + } + } + } + }, + "get": { + "tags": [ + "UiConfig" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/UiConfigResource" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/UiConfigResource" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/UiConfigResource" + } + } + } + } + } + } + }, + "/api/v3/config/ui": { + "get": { + "tags": [ + "UiConfig" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UiConfigResource" + } + } + } + } + } + } + }, + "/api/v3/update": { + "get": { + "tags": [ + "Update" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "text/plain": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/UpdateResource" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/UpdateResource" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/UpdateResource" + } + } + } + } + } + } + } + }, + "/api/v3/log/file/update": { + "get": { + "tags": [ + "UpdateLogFile" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "text/plain": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/LogFileResource" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/LogFileResource" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/LogFileResource" + } + } + } + } + } + } + } + }, + "/api/v3/log/file/update/{filename}": { + "get": { + "tags": [ + "UpdateLogFile" + ], + "parameters": [ + { + "name": "filename", + "in": "path", + "required": true, + "schema": { + "pattern": "[-.a-zA-Z0-9]+?\\.txt", + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK" + } + } + } + } + }, + "components": { + "schemas": { + "AddMovieMethod": { + "enum": [ + "manual", + "list", + "collection" + ], + "type": "string" + }, + "AddMovieOptions": { + "type": "object", + "properties": { + "ignoreEpisodesWithFiles": { + "type": "boolean" + }, + "ignoreEpisodesWithoutFiles": { + "type": "boolean" + }, + "monitor": { + "$ref": "#/components/schemas/MonitorTypes" + }, + "searchForMovie": { + "type": "boolean" + }, + "addMethod": { + "$ref": "#/components/schemas/AddMovieMethod" + } + }, + "additionalProperties": false + }, + "AlternativeTitleResource": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "sourceType": { + "$ref": "#/components/schemas/SourceType" + }, + "movieMetadataId": { + "type": "integer", + "format": "int32" + }, + "title": { + "type": "string", + "nullable": true + }, + "cleanTitle": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "ApiInfoResource": { + "type": "object", + "properties": { + "current": { + "type": "string", + "nullable": true + }, + "deprecated": { + "type": "array", + "items": { + "type": "string" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "ApplyTags": { + "enum": [ + "add", + "remove", + "replace" + ], + "type": "string" + }, + "AuthenticationRequiredType": { + "enum": [ + "enabled", + "disabledForLocalAddresses" + ], + "type": "string" + }, + "AuthenticationType": { + "enum": [ + "none", + "basic", + "forms", + "external" + ], + "type": "string" + }, + "AutoTaggingResource": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "name": { + "type": "string", + "nullable": true + }, + "removeTagsAutomatically": { + "type": "boolean" + }, + "tags": { + "uniqueItems": true, + "type": "array", + "items": { + "type": "integer", + "format": "int32" + }, + "nullable": true + }, + "specifications": { + "type": "array", + "items": { + "$ref": "#/components/schemas/AutoTaggingSpecificationSchema" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "AutoTaggingSpecificationSchema": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "name": { + "type": "string", + "nullable": true + }, + "implementation": { + "type": "string", + "nullable": true + }, + "implementationName": { + "type": "string", + "nullable": true + }, + "negate": { + "type": "boolean" + }, + "required": { + "type": "boolean" + }, + "fields": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Field" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "BackupResource": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "name": { + "type": "string", + "nullable": true + }, + "path": { + "type": "string", + "nullable": true + }, + "type": { + "$ref": "#/components/schemas/BackupType" + }, + "size": { + "type": "integer", + "format": "int64" + }, + "time": { + "type": "string", + "format": "date-time" + } + }, + "additionalProperties": false + }, + "BackupType": { + "enum": [ + "scheduled", + "manual", + "update" + ], + "type": "string" + }, + "BlocklistBulkResource": { + "type": "object", + "properties": { + "ids": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "BlocklistResource": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "movieId": { + "type": "integer", + "format": "int32" + }, + "sourceTitle": { + "type": "string", + "nullable": true + }, + "languages": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Language" + }, + "nullable": true + }, + "quality": { + "$ref": "#/components/schemas/QualityModel" + }, + "customFormats": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CustomFormatResource" + }, + "nullable": true + }, + "date": { + "type": "string", + "format": "date-time" + }, + "protocol": { + "$ref": "#/components/schemas/DownloadProtocol" + }, + "indexer": { + "type": "string", + "nullable": true + }, + "message": { + "type": "string", + "nullable": true + }, + "movie": { + "$ref": "#/components/schemas/MovieResource" + } + }, + "additionalProperties": false + }, + "BlocklistResourcePagingResource": { + "type": "object", + "properties": { + "page": { + "type": "integer", + "format": "int32" + }, + "pageSize": { + "type": "integer", + "format": "int32" + }, + "sortKey": { + "type": "string", + "nullable": true + }, + "sortDirection": { + "$ref": "#/components/schemas/SortDirection" + }, + "totalRecords": { + "type": "integer", + "format": "int32" + }, + "records": { + "type": "array", + "items": { + "$ref": "#/components/schemas/BlocklistResource" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "CertificateValidationType": { + "enum": [ + "enabled", + "disabledForLocalAddresses", + "disabled" + ], + "type": "string" + }, + "CollectionMovieResource": { + "type": "object", + "properties": { + "tmdbId": { + "type": "integer", + "format": "int32" + }, + "imdbId": { + "type": "string", + "nullable": true + }, + "title": { + "type": "string", + "nullable": true + }, + "cleanTitle": { + "type": "string", + "nullable": true + }, + "sortTitle": { + "type": "string", + "nullable": true + }, + "status": { + "$ref": "#/components/schemas/MovieStatusType" + }, + "overview": { + "type": "string", + "nullable": true + }, + "runtime": { + "type": "integer", + "format": "int32" + }, + "images": { + "type": "array", + "items": { + "$ref": "#/components/schemas/MediaCover" + }, + "nullable": true + }, + "year": { + "type": "integer", + "format": "int32" + }, + "ratings": { + "$ref": "#/components/schemas/Ratings" + }, + "genres": { + "type": "array", + "items": { + "type": "string" + }, + "nullable": true + }, + "folder": { + "type": "string", + "nullable": true + }, + "isExisting": { + "type": "boolean" + }, + "isExcluded": { + "type": "boolean" + } + }, + "additionalProperties": false + }, + "CollectionResource": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "title": { + "type": "string", + "nullable": true + }, + "sortTitle": { + "type": "string", + "nullable": true + }, + "tmdbId": { + "type": "integer", + "format": "int32" + }, + "images": { + "type": "array", + "items": { + "$ref": "#/components/schemas/MediaCover" + }, + "nullable": true + }, + "overview": { + "type": "string", + "nullable": true + }, + "monitored": { + "type": "boolean" + }, + "rootFolderPath": { + "type": "string", + "nullable": true + }, + "qualityProfileId": { + "type": "integer", + "format": "int32" + }, + "searchOnAdd": { + "type": "boolean" + }, + "minimumAvailability": { + "$ref": "#/components/schemas/MovieStatusType" + }, + "movies": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CollectionMovieResource" + }, + "nullable": true + }, + "missingMovies": { + "type": "integer", + "format": "int32" + }, + "tags": { + "uniqueItems": true, + "type": "array", + "items": { + "type": "integer", + "format": "int32" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "CollectionUpdateResource": { + "type": "object", + "properties": { + "collectionIds": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + }, + "nullable": true + }, + "monitored": { + "type": "boolean", + "nullable": true + }, + "monitorMovies": { + "type": "boolean", + "nullable": true + }, + "searchOnAdd": { + "type": "boolean", + "nullable": true + }, + "qualityProfileId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "rootFolderPath": { + "type": "string", + "nullable": true + }, + "minimumAvailability": { + "$ref": "#/components/schemas/MovieStatusType" + } + }, + "additionalProperties": false + }, + "ColonReplacementFormat": { + "enum": [ + "delete", + "dash", + "spaceDash", + "spaceDashSpace", + "smart" + ], + "type": "string" + }, + "Command": { + "type": "object", + "properties": { + "sendUpdatesToClient": { + "type": "boolean" + }, + "updateScheduledTask": { + "type": "boolean", + "readOnly": true + }, + "completionMessage": { + "type": "string", + "nullable": true, + "readOnly": true + }, + "requiresDiskAccess": { + "type": "boolean", + "readOnly": true + }, + "isExclusive": { + "type": "boolean", + "readOnly": true + }, + "isTypeExclusive": { + "type": "boolean", + "readOnly": true + }, + "isLongRunning": { + "type": "boolean", + "readOnly": true + }, + "name": { + "type": "string", + "nullable": true, + "readOnly": true + }, + "lastExecutionTime": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "lastStartTime": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "trigger": { + "$ref": "#/components/schemas/CommandTrigger" + }, + "suppressMessages": { + "type": "boolean" + }, + "clientUserAgent": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "CommandPriority": { + "enum": [ + "normal", + "high", + "low" + ], + "type": "string" + }, + "CommandResource": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "name": { + "type": "string", + "nullable": true + }, + "commandName": { + "type": "string", + "nullable": true + }, + "message": { + "type": "string", + "nullable": true + }, + "body": { + "$ref": "#/components/schemas/Command" + }, + "priority": { + "$ref": "#/components/schemas/CommandPriority" + }, + "status": { + "$ref": "#/components/schemas/CommandStatus" + }, + "result": { + "$ref": "#/components/schemas/CommandResult" + }, + "queued": { + "type": "string", + "format": "date-time" + }, + "started": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "ended": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "duration": { + "type": "string", + "format": "date-span", + "nullable": true + }, + "exception": { + "type": "string", + "nullable": true + }, + "trigger": { + "$ref": "#/components/schemas/CommandTrigger" + }, + "clientUserAgent": { + "type": "string", + "nullable": true + }, + "stateChangeTime": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "sendUpdatesToClient": { + "type": "boolean" + }, + "updateScheduledTask": { + "type": "boolean" + }, + "lastExecutionTime": { + "type": "string", + "format": "date-time", + "nullable": true + } + }, + "additionalProperties": false + }, + "CommandResult": { + "enum": [ + "unknown", + "successful", + "unsuccessful" + ], + "type": "string" + }, + "CommandStatus": { + "enum": [ + "queued", + "started", + "completed", + "failed", + "aborted", + "cancelled", + "orphaned" + ], + "type": "string" + }, + "CommandTrigger": { + "enum": [ + "unspecified", + "manual", + "scheduled" + ], + "type": "string" + }, + "CreditResource": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "personName": { + "type": "string", + "nullable": true + }, + "creditTmdbId": { + "type": "string", + "nullable": true + }, + "personTmdbId": { + "type": "integer", + "format": "int32" + }, + "movieMetadataId": { + "type": "integer", + "format": "int32" + }, + "images": { + "type": "array", + "items": { + "$ref": "#/components/schemas/MediaCover" + }, + "nullable": true + }, + "department": { + "type": "string", + "nullable": true + }, + "job": { + "type": "string", + "nullable": true + }, + "character": { + "type": "string", + "nullable": true + }, + "order": { + "type": "integer", + "format": "int32" + }, + "type": { + "$ref": "#/components/schemas/CreditType" + } + }, + "additionalProperties": false + }, + "CreditType": { + "enum": [ + "cast", + "crew" + ], + "type": "string" + }, + "CustomFilterResource": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "type": { + "type": "string", + "nullable": true + }, + "label": { + "type": "string", + "nullable": true + }, + "filters": { + "type": "array", + "items": { + "type": "object", + "additionalProperties": { } + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "CustomFormatBulkResource": { + "type": "object", + "properties": { + "ids": { + "uniqueItems": true, + "type": "array", + "items": { + "type": "integer", + "format": "int32" + }, + "nullable": true + }, + "includeCustomFormatWhenRenaming": { + "type": "boolean", + "nullable": true + } + }, + "additionalProperties": false + }, + "CustomFormatResource": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "name": { + "type": "string", + "nullable": true + }, + "includeCustomFormatWhenRenaming": { + "type": "boolean", + "nullable": true + }, + "specifications": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CustomFormatSpecificationSchema" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "CustomFormatSpecificationSchema": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "name": { + "type": "string", + "nullable": true + }, + "implementation": { + "type": "string", + "nullable": true + }, + "implementationName": { + "type": "string", + "nullable": true + }, + "infoLink": { + "type": "string", + "nullable": true + }, + "negate": { + "type": "boolean" + }, + "required": { + "type": "boolean" + }, + "fields": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Field" + }, + "nullable": true + }, + "presets": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CustomFormatSpecificationSchema" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "DatabaseType": { + "enum": [ + "sqLite", + "postgreSQL" + ], + "type": "string" + }, + "DelayProfileResource": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "enableUsenet": { + "type": "boolean" + }, + "enableTorrent": { + "type": "boolean" + }, + "preferredProtocol": { + "$ref": "#/components/schemas/DownloadProtocol" + }, + "usenetDelay": { + "type": "integer", + "format": "int32" + }, + "torrentDelay": { + "type": "integer", + "format": "int32" + }, + "bypassIfHighestQuality": { + "type": "boolean" + }, + "bypassIfAboveCustomFormatScore": { + "type": "boolean" + }, + "minimumCustomFormatScore": { + "type": "integer", + "format": "int32" + }, + "order": { + "type": "integer", + "format": "int32" + }, + "tags": { + "uniqueItems": true, + "type": "array", + "items": { + "type": "integer", + "format": "int32" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "DiskSpaceResource": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "path": { + "type": "string", + "nullable": true + }, + "label": { + "type": "string", + "nullable": true + }, + "freeSpace": { + "type": "integer", + "format": "int64" + }, + "totalSpace": { + "type": "integer", + "format": "int64" + } + }, + "additionalProperties": false + }, + "DownloadClientBulkResource": { + "type": "object", + "properties": { + "ids": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + }, + "nullable": true + }, + "tags": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + }, + "nullable": true + }, + "applyTags": { + "$ref": "#/components/schemas/ApplyTags" + }, + "enable": { + "type": "boolean", + "nullable": true + }, + "priority": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "removeCompletedDownloads": { + "type": "boolean", + "nullable": true + }, + "removeFailedDownloads": { + "type": "boolean", + "nullable": true + } + }, + "additionalProperties": false + }, + "DownloadClientConfigResource": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "downloadClientWorkingFolders": { + "type": "string", + "nullable": true + }, + "enableCompletedDownloadHandling": { + "type": "boolean" + }, + "checkForFinishedDownloadInterval": { + "type": "integer", + "format": "int32" + }, + "autoRedownloadFailed": { + "type": "boolean" + }, + "autoRedownloadFailedFromInteractiveSearch": { + "type": "boolean" + } + }, + "additionalProperties": false + }, + "DownloadClientResource": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "name": { + "type": "string", + "nullable": true + }, + "fields": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Field" + }, + "nullable": true + }, + "implementationName": { + "type": "string", + "nullable": true + }, + "implementation": { + "type": "string", + "nullable": true + }, + "configContract": { + "type": "string", + "nullable": true + }, + "infoLink": { + "type": "string", + "nullable": true + }, + "message": { + "$ref": "#/components/schemas/ProviderMessage" + }, + "tags": { + "uniqueItems": true, + "type": "array", + "items": { + "type": "integer", + "format": "int32" + }, + "nullable": true + }, + "presets": { + "type": "array", + "items": { + "$ref": "#/components/schemas/DownloadClientResource" + }, + "nullable": true + }, + "enable": { + "type": "boolean" + }, + "protocol": { + "$ref": "#/components/schemas/DownloadProtocol" + }, + "priority": { + "type": "integer", + "format": "int32" + }, + "removeCompletedDownloads": { + "type": "boolean" + }, + "removeFailedDownloads": { + "type": "boolean" + } + }, + "additionalProperties": false + }, + "DownloadProtocol": { + "enum": [ + "unknown", + "usenet", + "torrent" + ], + "type": "string" + }, + "ExtraFileResource": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "movieId": { + "type": "integer", + "format": "int32" + }, + "movieFileId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "relativePath": { + "type": "string", + "nullable": true + }, + "extension": { + "type": "string", + "nullable": true + }, + "languageTags": { + "type": "array", + "items": { + "type": "string" + }, + "nullable": true + }, + "title": { + "type": "string", + "nullable": true + }, + "type": { + "$ref": "#/components/schemas/ExtraFileType" + } + }, + "additionalProperties": false + }, + "ExtraFileType": { + "enum": [ + "subtitle", + "metadata", + "other" + ], + "type": "string" + }, + "Field": { + "type": "object", + "properties": { + "order": { + "type": "integer", + "format": "int32" + }, + "name": { + "type": "string", + "nullable": true + }, + "label": { + "type": "string", + "nullable": true + }, + "unit": { + "type": "string", + "nullable": true + }, + "helpText": { + "type": "string", + "nullable": true + }, + "helpTextWarning": { + "type": "string", + "nullable": true + }, + "helpLink": { + "type": "string", + "nullable": true + }, + "value": { + "nullable": true + }, + "type": { + "type": "string", + "nullable": true + }, + "advanced": { + "type": "boolean" + }, + "selectOptions": { + "type": "array", + "items": { + "$ref": "#/components/schemas/SelectOption" + }, + "nullable": true + }, + "selectOptionsProviderAction": { + "type": "string", + "nullable": true + }, + "section": { + "type": "string", + "nullable": true + }, + "hidden": { + "type": "string", + "nullable": true + }, + "privacy": { + "$ref": "#/components/schemas/PrivacyLevel" + }, + "placeholder": { + "type": "string", + "nullable": true + }, + "isFloat": { + "type": "boolean" + } + }, + "additionalProperties": false + }, + "FileDateType": { + "enum": [ + "none", + "cinemas", + "release" + ], + "type": "string" + }, + "HealthCheckResult": { + "enum": [ + "ok", + "notice", + "warning", + "error" + ], + "type": "string" + }, + "HealthResource": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "source": { + "type": "string", + "nullable": true + }, + "type": { + "$ref": "#/components/schemas/HealthCheckResult" + }, + "message": { + "type": "string", + "nullable": true + }, + "wikiUrl": { + "$ref": "#/components/schemas/HttpUri" + } + }, + "additionalProperties": false + }, + "HistoryResource": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "movieId": { + "type": "integer", + "format": "int32" + }, + "sourceTitle": { + "type": "string", + "nullable": true + }, + "languages": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Language" + }, + "nullable": true + }, + "quality": { + "$ref": "#/components/schemas/QualityModel" + }, + "customFormats": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CustomFormatResource" + }, + "nullable": true + }, + "customFormatScore": { + "type": "integer", + "format": "int32" + }, + "qualityCutoffNotMet": { + "type": "boolean" + }, + "date": { + "type": "string", + "format": "date-time" + }, + "downloadId": { + "type": "string", + "nullable": true + }, + "eventType": { + "$ref": "#/components/schemas/MovieHistoryEventType" + }, + "data": { + "type": "object", + "additionalProperties": { + "type": "string", + "nullable": true + }, + "nullable": true + }, + "movie": { + "$ref": "#/components/schemas/MovieResource" + } + }, + "additionalProperties": false + }, + "HistoryResourcePagingResource": { + "type": "object", + "properties": { + "page": { + "type": "integer", + "format": "int32" + }, + "pageSize": { + "type": "integer", + "format": "int32" + }, + "sortKey": { + "type": "string", + "nullable": true + }, + "sortDirection": { + "$ref": "#/components/schemas/SortDirection" + }, + "totalRecords": { + "type": "integer", + "format": "int32" + }, + "records": { + "type": "array", + "items": { + "$ref": "#/components/schemas/HistoryResource" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "HostConfigResource": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "bindAddress": { + "type": "string", + "nullable": true + }, + "port": { + "type": "integer", + "format": "int32" + }, + "sslPort": { + "type": "integer", + "format": "int32" + }, + "enableSsl": { + "type": "boolean" + }, + "launchBrowser": { + "type": "boolean" + }, + "authenticationMethod": { + "$ref": "#/components/schemas/AuthenticationType" + }, + "authenticationRequired": { + "$ref": "#/components/schemas/AuthenticationRequiredType" + }, + "analyticsEnabled": { + "type": "boolean" + }, + "username": { + "type": "string", + "nullable": true + }, + "password": { + "type": "string", + "nullable": true + }, + "passwordConfirmation": { + "type": "string", + "nullable": true + }, + "logLevel": { + "type": "string", + "nullable": true + }, + "logSizeLimit": { + "type": "integer", + "format": "int32" + }, + "consoleLogLevel": { + "type": "string", + "nullable": true + }, + "branch": { + "type": "string", + "nullable": true + }, + "apiKey": { + "type": "string", + "nullable": true + }, + "sslCertPath": { + "type": "string", + "nullable": true + }, + "sslCertPassword": { + "type": "string", + "nullable": true + }, + "urlBase": { + "type": "string", + "nullable": true + }, + "instanceName": { + "type": "string", + "nullable": true + }, + "applicationUrl": { + "type": "string", + "nullable": true + }, + "updateAutomatically": { + "type": "boolean" + }, + "updateMechanism": { + "$ref": "#/components/schemas/UpdateMechanism" + }, + "updateScriptPath": { + "type": "string", + "nullable": true + }, + "proxyEnabled": { + "type": "boolean" + }, + "proxyType": { + "$ref": "#/components/schemas/ProxyType" + }, + "proxyHostname": { + "type": "string", + "nullable": true + }, + "proxyPort": { + "type": "integer", + "format": "int32" + }, + "proxyUsername": { + "type": "string", + "nullable": true + }, + "proxyPassword": { + "type": "string", + "nullable": true + }, + "proxyBypassFilter": { + "type": "string", + "nullable": true + }, + "proxyBypassLocalAddresses": { + "type": "boolean" + }, + "certificateValidation": { + "$ref": "#/components/schemas/CertificateValidationType" + }, + "backupFolder": { + "type": "string", + "nullable": true + }, + "backupInterval": { + "type": "integer", + "format": "int32" + }, + "backupRetention": { + "type": "integer", + "format": "int32" + }, + "trustCgnatIpAddresses": { + "type": "boolean" + } + }, + "additionalProperties": false + }, + "HttpUri": { + "type": "object", + "properties": { + "fullUri": { + "type": "string", + "nullable": true, + "readOnly": true + }, + "scheme": { + "type": "string", + "nullable": true, + "readOnly": true + }, + "host": { + "type": "string", + "nullable": true, + "readOnly": true + }, + "port": { + "type": "integer", + "format": "int32", + "nullable": true, + "readOnly": true + }, + "path": { + "type": "string", + "nullable": true, + "readOnly": true + }, + "query": { + "type": "string", + "nullable": true, + "readOnly": true + }, + "fragment": { + "type": "string", + "nullable": true, + "readOnly": true + } + }, + "additionalProperties": false + }, + "ImportListBulkResource": { + "type": "object", + "properties": { + "ids": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + }, + "nullable": true + }, + "tags": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + }, + "nullable": true + }, + "applyTags": { + "$ref": "#/components/schemas/ApplyTags" + }, + "enabled": { + "type": "boolean", + "nullable": true + }, + "enableAuto": { + "type": "boolean", + "nullable": true + }, + "rootFolderPath": { + "type": "string", + "nullable": true + }, + "qualityProfileId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "minimumAvailability": { + "$ref": "#/components/schemas/MovieStatusType" + } + }, + "additionalProperties": false + }, + "ImportListConfigResource": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "listSyncLevel": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "ImportListExclusionBulkResource": { + "type": "object", + "properties": { + "ids": { + "uniqueItems": true, + "type": "array", + "items": { + "type": "integer", + "format": "int32" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "ImportListExclusionResource": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "name": { + "type": "string", + "nullable": true + }, + "fields": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Field" + }, + "nullable": true + }, + "implementationName": { + "type": "string", + "nullable": true + }, + "implementation": { + "type": "string", + "nullable": true + }, + "configContract": { + "type": "string", + "nullable": true + }, + "infoLink": { + "type": "string", + "nullable": true + }, + "message": { + "$ref": "#/components/schemas/ProviderMessage" + }, + "tags": { + "uniqueItems": true, + "type": "array", + "items": { + "type": "integer", + "format": "int32" + }, + "nullable": true + }, + "presets": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ImportListExclusionResource" + }, + "nullable": true + }, + "tmdbId": { + "type": "integer", + "format": "int32" + }, + "movieTitle": { + "type": "string", + "nullable": true + }, + "movieYear": { + "type": "integer", + "format": "int32" + } + }, + "additionalProperties": false + }, + "ImportListExclusionResourcePagingResource": { + "type": "object", + "properties": { + "page": { + "type": "integer", + "format": "int32" + }, + "pageSize": { + "type": "integer", + "format": "int32" + }, + "sortKey": { + "type": "string", + "nullable": true + }, + "sortDirection": { + "$ref": "#/components/schemas/SortDirection" + }, + "totalRecords": { + "type": "integer", + "format": "int32" + }, + "records": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ImportListExclusionResource" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "ImportListResource": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "name": { + "type": "string", + "nullable": true + }, + "fields": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Field" + }, + "nullable": true + }, + "implementationName": { + "type": "string", + "nullable": true + }, + "implementation": { + "type": "string", + "nullable": true + }, + "configContract": { + "type": "string", + "nullable": true + }, + "infoLink": { + "type": "string", + "nullable": true + }, + "message": { + "$ref": "#/components/schemas/ProviderMessage" + }, + "tags": { + "uniqueItems": true, + "type": "array", + "items": { + "type": "integer", + "format": "int32" + }, + "nullable": true + }, + "presets": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ImportListResource" + }, + "nullable": true + }, + "enabled": { + "type": "boolean" + }, + "enableAuto": { + "type": "boolean" + }, + "monitor": { + "$ref": "#/components/schemas/MonitorTypes" + }, + "rootFolderPath": { + "type": "string", + "nullable": true + }, + "qualityProfileId": { + "type": "integer", + "format": "int32" + }, + "searchOnAdd": { + "type": "boolean" + }, + "minimumAvailability": { + "$ref": "#/components/schemas/MovieStatusType" + }, + "listType": { + "$ref": "#/components/schemas/ImportListType" + }, + "listOrder": { + "type": "integer", + "format": "int32" + }, + "minRefreshInterval": { + "type": "string", + "format": "date-span" + } + }, + "additionalProperties": false + }, + "ImportListType": { + "enum": [ + "program", + "tmdb", + "trakt", + "plex", + "simkl", + "other", + "advanced" + ], + "type": "string" + }, + "IndexerBulkResource": { + "type": "object", + "properties": { + "ids": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + }, + "nullable": true + }, + "tags": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + }, + "nullable": true + }, + "applyTags": { + "$ref": "#/components/schemas/ApplyTags" + }, + "enableRss": { + "type": "boolean", + "nullable": true + }, + "enableAutomaticSearch": { + "type": "boolean", + "nullable": true + }, + "enableInteractiveSearch": { + "type": "boolean", + "nullable": true + }, + "priority": { + "type": "integer", + "format": "int32", + "nullable": true + } + }, + "additionalProperties": false + }, + "IndexerConfigResource": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "minimumAge": { + "type": "integer", + "format": "int32" + }, + "maximumSize": { + "type": "integer", + "format": "int32" + }, + "retention": { + "type": "integer", + "format": "int32" + }, + "rssSyncInterval": { + "type": "integer", + "format": "int32" + }, + "preferIndexerFlags": { + "type": "boolean" + }, + "availabilityDelay": { + "type": "integer", + "format": "int32" + }, + "allowHardcodedSubs": { + "type": "boolean" + }, + "whitelistedHardcodedSubs": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "IndexerFlagResource": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "name": { + "type": "string", + "nullable": true + }, + "nameLower": { + "type": "string", + "nullable": true, + "readOnly": true + } + }, + "additionalProperties": false + }, + "IndexerResource": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "name": { + "type": "string", + "nullable": true + }, + "fields": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Field" + }, + "nullable": true + }, + "implementationName": { + "type": "string", + "nullable": true + }, + "implementation": { + "type": "string", + "nullable": true + }, + "configContract": { + "type": "string", + "nullable": true + }, + "infoLink": { + "type": "string", + "nullable": true + }, + "message": { + "$ref": "#/components/schemas/ProviderMessage" + }, + "tags": { + "uniqueItems": true, + "type": "array", + "items": { + "type": "integer", + "format": "int32" + }, + "nullable": true + }, + "presets": { + "type": "array", + "items": { + "$ref": "#/components/schemas/IndexerResource" + }, + "nullable": true + }, + "enableRss": { + "type": "boolean" + }, + "enableAutomaticSearch": { + "type": "boolean" + }, + "enableInteractiveSearch": { + "type": "boolean" + }, + "supportsRss": { + "type": "boolean" + }, + "supportsSearch": { + "type": "boolean" + }, + "protocol": { + "$ref": "#/components/schemas/DownloadProtocol" + }, + "priority": { + "type": "integer", + "format": "int32" + }, + "downloadClientId": { + "type": "integer", + "format": "int32" + } + }, + "additionalProperties": false + }, + "Language": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "name": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "LanguageResource": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "name": { + "type": "string", + "nullable": true + }, + "nameLower": { + "type": "string", + "nullable": true, + "readOnly": true + } + }, + "additionalProperties": false + }, + "LocalizationLanguageResource": { + "type": "object", + "properties": { + "identifier": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "LogFileResource": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "filename": { + "type": "string", + "nullable": true + }, + "lastWriteTime": { + "type": "string", + "format": "date-time" + }, + "contentsUrl": { + "type": "string", + "nullable": true + }, + "downloadUrl": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "LogResource": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "time": { + "type": "string", + "format": "date-time" + }, + "exception": { + "type": "string", + "nullable": true + }, + "exceptionType": { + "type": "string", + "nullable": true + }, + "level": { + "type": "string", + "nullable": true + }, + "logger": { + "type": "string", + "nullable": true + }, + "message": { + "type": "string", + "nullable": true + }, + "method": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "LogResourcePagingResource": { + "type": "object", + "properties": { + "page": { + "type": "integer", + "format": "int32" + }, + "pageSize": { + "type": "integer", + "format": "int32" + }, + "sortKey": { + "type": "string", + "nullable": true + }, + "sortDirection": { + "$ref": "#/components/schemas/SortDirection" + }, + "totalRecords": { + "type": "integer", + "format": "int32" + }, + "records": { + "type": "array", + "items": { + "$ref": "#/components/schemas/LogResource" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "ManualImportReprocessResource": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "path": { + "type": "string", + "nullable": true + }, + "movieId": { + "type": "integer", + "format": "int32" + }, + "movie": { + "$ref": "#/components/schemas/MovieResource" + }, + "quality": { + "$ref": "#/components/schemas/QualityModel" + }, + "languages": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Language" + }, + "nullable": true + }, + "releaseGroup": { + "type": "string", + "nullable": true + }, + "downloadId": { + "type": "string", + "nullable": true + }, + "customFormats": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CustomFormatResource" + }, + "nullable": true + }, + "customFormatScore": { + "type": "integer", + "format": "int32" + }, + "indexerFlags": { + "type": "integer", + "format": "int32" + }, + "rejections": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Rejection" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "ManualImportResource": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "path": { + "type": "string", + "nullable": true + }, + "relativePath": { + "type": "string", + "nullable": true + }, + "folderName": { + "type": "string", + "nullable": true + }, + "name": { + "type": "string", + "nullable": true + }, + "size": { + "type": "integer", + "format": "int64" + }, + "movie": { + "$ref": "#/components/schemas/MovieResource" + }, + "quality": { + "$ref": "#/components/schemas/QualityModel" + }, + "languages": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Language" + }, + "nullable": true + }, + "releaseGroup": { + "type": "string", + "nullable": true + }, + "qualityWeight": { + "type": "integer", + "format": "int32" + }, + "downloadId": { + "type": "string", + "nullable": true + }, + "customFormats": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CustomFormatResource" + }, + "nullable": true + }, + "customFormatScore": { + "type": "integer", + "format": "int32" + }, + "indexerFlags": { + "type": "integer", + "format": "int32" + }, + "rejections": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Rejection" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "MediaCover": { + "type": "object", + "properties": { + "coverType": { + "$ref": "#/components/schemas/MediaCoverTypes" + }, + "url": { + "type": "string", + "nullable": true + }, + "remoteUrl": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "MediaCoverTypes": { + "enum": [ + "unknown", + "poster", + "banner", + "fanart", + "screenshot", + "headshot", + "clearlogo" + ], + "type": "string" + }, + "MediaInfoResource": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "audioBitrate": { + "type": "integer", + "format": "int64" + }, + "audioChannels": { + "type": "number", + "format": "double" + }, + "audioCodec": { + "type": "string", + "nullable": true + }, + "audioLanguages": { + "type": "string", + "nullable": true + }, + "audioStreamCount": { + "type": "integer", + "format": "int32" + }, + "videoBitDepth": { + "type": "integer", + "format": "int32" + }, + "videoBitrate": { + "type": "integer", + "format": "int64" + }, + "videoCodec": { + "type": "string", + "nullable": true + }, + "videoFps": { + "type": "number", + "format": "double" + }, + "videoDynamicRange": { + "type": "string", + "nullable": true + }, + "videoDynamicRangeType": { + "type": "string", + "nullable": true + }, + "resolution": { + "type": "string", + "nullable": true + }, + "runTime": { + "type": "string", + "nullable": true + }, + "scanType": { + "type": "string", + "nullable": true + }, + "subtitles": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "MediaManagementConfigResource": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "autoUnmonitorPreviouslyDownloadedMovies": { + "type": "boolean" + }, + "recycleBin": { + "type": "string", + "nullable": true + }, + "recycleBinCleanupDays": { + "type": "integer", + "format": "int32" + }, + "downloadPropersAndRepacks": { + "$ref": "#/components/schemas/ProperDownloadTypes" + }, + "createEmptyMovieFolders": { + "type": "boolean" + }, + "deleteEmptyFolders": { + "type": "boolean" + }, + "fileDate": { + "$ref": "#/components/schemas/FileDateType" + }, + "rescanAfterRefresh": { + "$ref": "#/components/schemas/RescanAfterRefreshType" + }, + "autoRenameFolders": { + "type": "boolean" + }, + "pathsDefaultStatic": { + "type": "boolean" + }, + "setPermissionsLinux": { + "type": "boolean" + }, + "chmodFolder": { + "type": "string", + "nullable": true + }, + "chownGroup": { + "type": "string", + "nullable": true + }, + "skipFreeSpaceCheckWhenImporting": { + "type": "boolean" + }, + "minimumFreeSpaceWhenImporting": { + "type": "integer", + "format": "int32" + }, + "copyUsingHardlinks": { + "type": "boolean" + }, + "useScriptImport": { + "type": "boolean" + }, + "scriptImportPath": { + "type": "string", + "nullable": true + }, + "importExtraFiles": { + "type": "boolean" + }, + "extraFileExtensions": { + "type": "string", + "nullable": true + }, + "enableMediaInfo": { + "type": "boolean" + } + }, + "additionalProperties": false + }, + "MetadataConfigResource": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "certificationCountry": { + "$ref": "#/components/schemas/TMDbCountryCode" + } + }, + "additionalProperties": false + }, + "MetadataResource": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "name": { + "type": "string", + "nullable": true + }, + "fields": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Field" + }, + "nullable": true + }, + "implementationName": { + "type": "string", + "nullable": true + }, + "implementation": { + "type": "string", + "nullable": true + }, + "configContract": { + "type": "string", + "nullable": true + }, + "infoLink": { + "type": "string", + "nullable": true + }, + "message": { + "$ref": "#/components/schemas/ProviderMessage" + }, + "tags": { + "uniqueItems": true, + "type": "array", + "items": { + "type": "integer", + "format": "int32" + }, + "nullable": true + }, + "presets": { + "type": "array", + "items": { + "$ref": "#/components/schemas/MetadataResource" + }, + "nullable": true + }, + "enable": { + "type": "boolean" + } + }, + "additionalProperties": false + }, + "Modifier": { + "enum": [ + "none", + "regional", + "screener", + "rawhd", + "brdisk", + "remux" + ], + "type": "string" + }, + "MonitorTypes": { + "enum": [ + "movieOnly", + "movieAndCollection", + "none" + ], + "type": "string" + }, + "MovieCollectionResource": { + "type": "object", + "properties": { + "title": { + "type": "string", + "nullable": true + }, + "tmdbId": { + "type": "integer", + "format": "int32" + } + }, + "additionalProperties": false + }, + "MovieEditorResource": { + "type": "object", + "properties": { + "movieIds": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + }, + "nullable": true + }, + "monitored": { + "type": "boolean", + "nullable": true + }, + "qualityProfileId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "minimumAvailability": { + "$ref": "#/components/schemas/MovieStatusType" + }, + "rootFolderPath": { + "type": "string", + "nullable": true + }, + "tags": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + }, + "nullable": true + }, + "applyTags": { + "$ref": "#/components/schemas/ApplyTags" + }, + "moveFiles": { + "type": "boolean" + }, + "deleteFiles": { + "type": "boolean" + }, + "addImportExclusion": { + "type": "boolean" + } + }, + "additionalProperties": false + }, + "MovieFileListResource": { + "type": "object", + "properties": { + "movieFileIds": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + }, + "nullable": true + }, + "languages": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Language" + }, + "nullable": true + }, + "quality": { + "$ref": "#/components/schemas/QualityModel" + }, + "edition": { + "type": "string", + "nullable": true + }, + "releaseGroup": { + "type": "string", + "nullable": true + }, + "sceneName": { + "type": "string", + "nullable": true + }, + "indexerFlags": { + "type": "integer", + "format": "int32", + "nullable": true + } + }, + "additionalProperties": false + }, + "MovieFileResource": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "movieId": { + "type": "integer", + "format": "int32" + }, + "relativePath": { + "type": "string", + "nullable": true + }, + "path": { + "type": "string", + "nullable": true + }, + "size": { + "type": "integer", + "format": "int64" + }, + "dateAdded": { + "type": "string", + "format": "date-time" + }, + "sceneName": { + "type": "string", + "nullable": true + }, + "releaseGroup": { + "type": "string", + "nullable": true + }, + "edition": { + "type": "string", + "nullable": true + }, + "languages": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Language" + }, + "nullable": true + }, + "quality": { + "$ref": "#/components/schemas/QualityModel" + }, + "customFormats": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CustomFormatResource" + }, + "nullable": true + }, + "customFormatScore": { + "type": "integer", + "format": "int32" + }, + "indexerFlags": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "mediaInfo": { + "$ref": "#/components/schemas/MediaInfoResource" + }, + "originalFilePath": { + "type": "string", + "nullable": true + }, + "qualityCutoffNotMet": { + "type": "boolean" + } + }, + "additionalProperties": false + }, + "MovieHistoryEventType": { + "enum": [ + "unknown", + "grabbed", + "downloadFolderImported", + "downloadFailed", + "movieFileDeleted", + "movieFolderImported", + "movieFileRenamed", + "downloadIgnored" + ], + "type": "string" + }, + "MovieResource": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "title": { + "type": "string", + "nullable": true + }, + "originalTitle": { + "type": "string", + "nullable": true + }, + "originalLanguage": { + "$ref": "#/components/schemas/Language" + }, + "alternateTitles": { + "type": "array", + "items": { + "$ref": "#/components/schemas/AlternativeTitleResource" + }, + "nullable": true + }, + "secondaryYear": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "secondaryYearSourceId": { + "type": "integer", + "format": "int32" + }, + "sortTitle": { + "type": "string", + "nullable": true + }, + "sizeOnDisk": { + "type": "integer", + "format": "int64", + "nullable": true + }, + "status": { + "$ref": "#/components/schemas/MovieStatusType" + }, + "overview": { + "type": "string", + "nullable": true + }, + "inCinemas": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "physicalRelease": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "digitalRelease": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "releaseDate": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "physicalReleaseNote": { + "type": "string", + "nullable": true + }, + "images": { + "type": "array", + "items": { + "$ref": "#/components/schemas/MediaCover" + }, + "nullable": true + }, + "website": { + "type": "string", + "nullable": true + }, + "remotePoster": { + "type": "string", + "nullable": true + }, + "year": { + "type": "integer", + "format": "int32" + }, + "youTubeTrailerId": { + "type": "string", + "nullable": true + }, + "studio": { + "type": "string", + "nullable": true + }, + "path": { + "type": "string", + "nullable": true + }, + "qualityProfileId": { + "type": "integer", + "format": "int32" + }, + "hasFile": { + "type": "boolean", + "nullable": true + }, + "movieFileId": { + "type": "integer", + "format": "int32" + }, + "monitored": { + "type": "boolean" + }, + "minimumAvailability": { + "$ref": "#/components/schemas/MovieStatusType" + }, + "isAvailable": { + "type": "boolean" + }, + "folderName": { + "type": "string", + "nullable": true + }, + "runtime": { + "type": "integer", + "format": "int32" + }, + "cleanTitle": { + "type": "string", + "nullable": true + }, + "imdbId": { + "type": "string", + "nullable": true + }, + "tmdbId": { + "type": "integer", + "format": "int32" + }, + "titleSlug": { + "type": "string", + "nullable": true + }, + "rootFolderPath": { + "type": "string", + "nullable": true + }, + "folder": { + "type": "string", + "nullable": true + }, + "certification": { + "type": "string", + "nullable": true + }, + "genres": { + "type": "array", + "items": { + "type": "string" + }, + "nullable": true + }, + "tags": { + "uniqueItems": true, + "type": "array", + "items": { + "type": "integer", + "format": "int32" + }, + "nullable": true + }, + "added": { + "type": "string", + "format": "date-time" + }, + "addOptions": { + "$ref": "#/components/schemas/AddMovieOptions" + }, + "ratings": { + "$ref": "#/components/schemas/Ratings" + }, + "movieFile": { + "$ref": "#/components/schemas/MovieFileResource" + }, + "collection": { + "$ref": "#/components/schemas/MovieCollectionResource" + }, + "popularity": { + "type": "number", + "format": "float" + }, + "lastSearchTime": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "statistics": { + "$ref": "#/components/schemas/MovieStatisticsResource" + } + }, + "additionalProperties": false + }, + "MovieResourcePagingResource": { + "type": "object", + "properties": { + "page": { + "type": "integer", + "format": "int32" + }, + "pageSize": { + "type": "integer", + "format": "int32" + }, + "sortKey": { + "type": "string", + "nullable": true + }, + "sortDirection": { + "$ref": "#/components/schemas/SortDirection" + }, + "totalRecords": { + "type": "integer", + "format": "int32" + }, + "records": { + "type": "array", + "items": { + "$ref": "#/components/schemas/MovieResource" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "MovieRuntimeFormatType": { + "enum": [ + "hoursMinutes", + "minutes" + ], + "type": "string" + }, + "MovieStatisticsResource": { + "type": "object", + "properties": { + "movieFileCount": { + "type": "integer", + "format": "int32" + }, + "sizeOnDisk": { + "type": "integer", + "format": "int64" + }, + "releaseGroups": { + "type": "array", + "items": { + "type": "string" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "MovieStatusType": { + "enum": [ + "tba", + "announced", + "inCinemas", + "released", + "deleted" + ], + "type": "string" + }, + "NamingConfigResource": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "renameMovies": { + "type": "boolean" + }, + "replaceIllegalCharacters": { + "type": "boolean" + }, + "colonReplacementFormat": { + "$ref": "#/components/schemas/ColonReplacementFormat" + }, + "standardMovieFormat": { + "type": "string", + "nullable": true + }, + "movieFolderFormat": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "NotificationResource": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "name": { + "type": "string", + "nullable": true + }, + "fields": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Field" + }, + "nullable": true + }, + "implementationName": { + "type": "string", + "nullable": true + }, + "implementation": { + "type": "string", + "nullable": true + }, + "configContract": { + "type": "string", + "nullable": true + }, + "infoLink": { + "type": "string", + "nullable": true + }, + "message": { + "$ref": "#/components/schemas/ProviderMessage" + }, + "tags": { + "uniqueItems": true, + "type": "array", + "items": { + "type": "integer", + "format": "int32" + }, + "nullable": true + }, + "presets": { + "type": "array", + "items": { + "$ref": "#/components/schemas/NotificationResource" + }, + "nullable": true + }, + "link": { + "type": "string", + "nullable": true + }, + "onGrab": { + "type": "boolean" + }, + "onDownload": { + "type": "boolean" + }, + "onUpgrade": { + "type": "boolean" + }, + "onRename": { + "type": "boolean" + }, + "onMovieAdded": { + "type": "boolean" + }, + "onMovieDelete": { + "type": "boolean" + }, + "onMovieFileDelete": { + "type": "boolean" + }, + "onMovieFileDeleteForUpgrade": { + "type": "boolean" + }, + "onHealthIssue": { + "type": "boolean" + }, + "includeHealthWarnings": { + "type": "boolean" + }, + "onHealthRestored": { + "type": "boolean" + }, + "onApplicationUpdate": { + "type": "boolean" + }, + "onManualInteractionRequired": { + "type": "boolean" + }, + "supportsOnGrab": { + "type": "boolean" + }, + "supportsOnDownload": { + "type": "boolean" + }, + "supportsOnUpgrade": { + "type": "boolean" + }, + "supportsOnRename": { + "type": "boolean" + }, + "supportsOnMovieAdded": { + "type": "boolean" + }, + "supportsOnMovieDelete": { + "type": "boolean" + }, + "supportsOnMovieFileDelete": { + "type": "boolean" + }, + "supportsOnMovieFileDeleteForUpgrade": { + "type": "boolean" + }, + "supportsOnHealthIssue": { + "type": "boolean" + }, + "supportsOnHealthRestored": { + "type": "boolean" + }, + "supportsOnApplicationUpdate": { + "type": "boolean" + }, + "supportsOnManualInteractionRequired": { + "type": "boolean" + }, + "testCommand": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "ParseResource": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "title": { + "type": "string", + "nullable": true + }, + "parsedMovieInfo": { + "$ref": "#/components/schemas/ParsedMovieInfo" + }, + "movie": { + "$ref": "#/components/schemas/MovieResource" + }, + "languages": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Language" + }, + "nullable": true + }, + "customFormats": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CustomFormatResource" + }, + "nullable": true + }, + "customFormatScore": { + "type": "integer", + "format": "int32" + } + }, + "additionalProperties": false + }, + "ParsedMovieInfo": { + "type": "object", + "properties": { + "movieTitles": { + "type": "array", + "items": { + "type": "string" + }, + "nullable": true + }, + "originalTitle": { + "type": "string", + "nullable": true + }, + "releaseTitle": { + "type": "string", + "nullable": true + }, + "simpleReleaseTitle": { + "type": "string", + "nullable": true + }, + "quality": { + "$ref": "#/components/schemas/QualityModel" + }, + "languages": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Language" + }, + "nullable": true + }, + "releaseGroup": { + "type": "string", + "nullable": true + }, + "releaseHash": { + "type": "string", + "nullable": true + }, + "edition": { + "type": "string", + "nullable": true + }, + "year": { + "type": "integer", + "format": "int32" + }, + "imdbId": { + "type": "string", + "nullable": true + }, + "tmdbId": { + "type": "integer", + "format": "int32" + }, + "hardcodedSubs": { + "type": "string", + "nullable": true + }, + "movieTitle": { + "type": "string", + "nullable": true, + "readOnly": true + }, + "primaryMovieTitle": { + "type": "string", + "nullable": true, + "readOnly": true + } + }, + "additionalProperties": false + }, + "PingResource": { + "type": "object", + "properties": { + "status": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "PrivacyLevel": { + "enum": [ + "normal", + "password", + "apiKey", + "userName" + ], + "type": "string" + }, + "ProfileFormatItemResource": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "format": { + "type": "integer", + "format": "int32" + }, + "name": { + "type": "string", + "nullable": true + }, + "score": { + "type": "integer", + "format": "int32" + } + }, + "additionalProperties": false + }, + "ProperDownloadTypes": { + "enum": [ + "preferAndUpgrade", + "doNotUpgrade", + "doNotPrefer" + ], + "type": "string" + }, + "ProviderMessage": { + "type": "object", + "properties": { + "message": { + "type": "string", + "nullable": true + }, + "type": { + "$ref": "#/components/schemas/ProviderMessageType" + } + }, + "additionalProperties": false + }, + "ProviderMessageType": { + "enum": [ + "info", + "warning", + "error" + ], + "type": "string" + }, + "ProxyType": { + "enum": [ + "http", + "socks4", + "socks5" + ], + "type": "string" + }, + "Quality": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "name": { + "type": "string", + "nullable": true + }, + "source": { + "$ref": "#/components/schemas/QualitySource" + }, + "resolution": { + "type": "integer", + "format": "int32" + }, + "modifier": { + "$ref": "#/components/schemas/Modifier" + } + }, + "additionalProperties": false + }, + "QualityDefinitionResource": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "quality": { + "$ref": "#/components/schemas/Quality" + }, + "title": { + "type": "string", + "nullable": true + }, + "weight": { + "type": "integer", + "format": "int32" + }, + "minSize": { + "type": "number", + "format": "double", + "nullable": true + }, + "maxSize": { + "type": "number", + "format": "double", + "nullable": true + }, + "preferredSize": { + "type": "number", + "format": "double", + "nullable": true + } + }, + "additionalProperties": false + }, + "QualityModel": { + "type": "object", + "properties": { + "quality": { + "$ref": "#/components/schemas/Quality" + }, + "revision": { + "$ref": "#/components/schemas/Revision" + } + }, + "additionalProperties": false + }, + "QualityProfileQualityItemResource": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "name": { + "type": "string", + "nullable": true + }, + "quality": { + "$ref": "#/components/schemas/Quality" + }, + "items": { + "type": "array", + "items": { + "$ref": "#/components/schemas/QualityProfileQualityItemResource" + }, + "nullable": true + }, + "allowed": { + "type": "boolean" + } + }, + "additionalProperties": false + }, + "QualityProfileResource": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "name": { + "type": "string", + "nullable": true + }, + "upgradeAllowed": { + "type": "boolean" + }, + "cutoff": { + "type": "integer", + "format": "int32" + }, + "items": { + "type": "array", + "items": { + "$ref": "#/components/schemas/QualityProfileQualityItemResource" + }, + "nullable": true + }, + "minFormatScore": { + "type": "integer", + "format": "int32" + }, + "cutoffFormatScore": { + "type": "integer", + "format": "int32" + }, + "minUpgradeFormatScore": { + "type": "integer", + "format": "int32" + }, + "formatItems": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ProfileFormatItemResource" + }, + "nullable": true + }, + "language": { + "$ref": "#/components/schemas/Language" + } + }, + "additionalProperties": false + }, + "QualitySource": { + "enum": [ + "unknown", + "cam", + "telesync", + "telecine", + "workprint", + "dvd", + "tv", + "webdl", + "webrip", + "bluray" + ], + "type": "string" + }, + "QueueBulkResource": { + "type": "object", + "properties": { + "ids": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "QueueResource": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "movieId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "movie": { + "$ref": "#/components/schemas/MovieResource" + }, + "languages": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Language" + }, + "nullable": true + }, + "quality": { + "$ref": "#/components/schemas/QualityModel" + }, + "customFormats": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CustomFormatResource" + }, + "nullable": true + }, + "customFormatScore": { + "type": "integer", + "format": "int32" + }, + "size": { + "type": "number", + "format": "double" + }, + "title": { + "type": "string", + "nullable": true + }, + "estimatedCompletionTime": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "added": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "status": { + "$ref": "#/components/schemas/QueueStatus" + }, + "trackedDownloadStatus": { + "$ref": "#/components/schemas/TrackedDownloadStatus" + }, + "trackedDownloadState": { + "$ref": "#/components/schemas/TrackedDownloadState" + }, + "statusMessages": { + "type": "array", + "items": { + "$ref": "#/components/schemas/TrackedDownloadStatusMessage" + }, + "nullable": true + }, + "errorMessage": { + "type": "string", + "nullable": true + }, + "downloadId": { + "type": "string", + "nullable": true + }, + "protocol": { + "$ref": "#/components/schemas/DownloadProtocol" + }, + "downloadClient": { + "type": "string", + "nullable": true + }, + "downloadClientHasPostImportCategory": { + "type": "boolean" + }, + "indexer": { + "type": "string", + "nullable": true + }, + "outputPath": { + "type": "string", + "nullable": true + }, + "sizeleft": { + "type": "number", + "format": "double", + "deprecated": true + }, + "timeleft": { + "type": "string", + "format": "date-span", + "nullable": true, + "deprecated": true + } + }, + "additionalProperties": false + }, + "QueueResourcePagingResource": { + "type": "object", + "properties": { + "page": { + "type": "integer", + "format": "int32" + }, + "pageSize": { + "type": "integer", + "format": "int32" + }, + "sortKey": { + "type": "string", + "nullable": true + }, + "sortDirection": { + "$ref": "#/components/schemas/SortDirection" + }, + "totalRecords": { + "type": "integer", + "format": "int32" + }, + "records": { + "type": "array", + "items": { + "$ref": "#/components/schemas/QueueResource" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "QueueStatus": { + "enum": [ + "unknown", + "queued", + "paused", + "downloading", + "completed", + "failed", + "warning", + "delay", + "downloadClientUnavailable", + "fallback" + ], + "type": "string" + }, + "QueueStatusResource": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "totalCount": { + "type": "integer", + "format": "int32" + }, + "count": { + "type": "integer", + "format": "int32" + }, + "unknownCount": { + "type": "integer", + "format": "int32" + }, + "errors": { + "type": "boolean" + }, + "warnings": { + "type": "boolean" + }, + "unknownErrors": { + "type": "boolean" + }, + "unknownWarnings": { + "type": "boolean" + } + }, + "additionalProperties": false + }, + "RatingChild": { + "type": "object", + "properties": { + "votes": { + "type": "integer", + "format": "int32" + }, + "value": { + "type": "number", + "format": "double" + }, + "type": { + "$ref": "#/components/schemas/RatingType" + } + }, + "additionalProperties": false + }, + "RatingType": { + "enum": [ + "user", + "critic" + ], + "type": "string" + }, + "Ratings": { + "type": "object", + "properties": { + "imdb": { + "$ref": "#/components/schemas/RatingChild" + }, + "tmdb": { + "$ref": "#/components/schemas/RatingChild" + }, + "metacritic": { + "$ref": "#/components/schemas/RatingChild" + }, + "rottenTomatoes": { + "$ref": "#/components/schemas/RatingChild" + }, + "trakt": { + "$ref": "#/components/schemas/RatingChild" + } + }, + "additionalProperties": false + }, + "Rejection": { + "type": "object", + "properties": { + "reason": { + "type": "string", + "nullable": true + }, + "type": { + "$ref": "#/components/schemas/RejectionType" + } + }, + "additionalProperties": false + }, + "RejectionType": { + "enum": [ + "permanent", + "temporary" + ], + "type": "string" + }, + "ReleaseProfileResource": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "name": { + "type": "string", + "nullable": true + }, + "enabled": { + "type": "boolean" + }, + "required": { + "nullable": true + }, + "ignored": { + "nullable": true + }, + "indexerId": { + "type": "integer", + "format": "int32" + }, + "tags": { + "uniqueItems": true, + "type": "array", + "items": { + "type": "integer", + "format": "int32" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "ReleaseResource": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "guid": { + "type": "string", + "nullable": true + }, + "quality": { + "$ref": "#/components/schemas/QualityModel" + }, + "customFormats": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CustomFormatResource" + }, + "nullable": true + }, + "customFormatScore": { + "type": "integer", + "format": "int32" + }, + "qualityWeight": { + "type": "integer", + "format": "int32" + }, + "age": { + "type": "integer", + "format": "int32" + }, + "ageHours": { + "type": "number", + "format": "double" + }, + "ageMinutes": { + "type": "number", + "format": "double" + }, + "size": { + "type": "integer", + "format": "int64" + }, + "indexerId": { + "type": "integer", + "format": "int32" + }, + "indexer": { + "type": "string", + "nullable": true + }, + "releaseGroup": { + "type": "string", + "nullable": true + }, + "subGroup": { + "type": "string", + "nullable": true + }, + "releaseHash": { + "type": "string", + "nullable": true + }, + "title": { + "type": "string", + "nullable": true + }, + "sceneSource": { + "type": "boolean" + }, + "movieTitles": { + "type": "array", + "items": { + "type": "string" + }, + "nullable": true + }, + "languages": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Language" + }, + "nullable": true + }, + "mappedMovieId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "approved": { + "type": "boolean" + }, + "temporarilyRejected": { + "type": "boolean" + }, + "rejected": { + "type": "boolean" + }, + "tmdbId": { + "type": "integer", + "format": "int32" + }, + "imdbId": { + "type": "integer", + "format": "int32" + }, + "rejections": { + "type": "array", + "items": { + "type": "string" + }, + "nullable": true + }, + "publishDate": { + "type": "string", + "format": "date-time" + }, + "commentUrl": { + "type": "string", + "nullable": true + }, + "downloadUrl": { + "type": "string", + "nullable": true + }, + "infoUrl": { + "type": "string", + "nullable": true + }, + "downloadAllowed": { + "type": "boolean" + }, + "releaseWeight": { + "type": "integer", + "format": "int32" + }, + "edition": { + "type": "string", + "nullable": true + }, + "magnetUrl": { + "type": "string", + "nullable": true + }, + "infoHash": { + "type": "string", + "nullable": true + }, + "seeders": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "leechers": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "protocol": { + "$ref": "#/components/schemas/DownloadProtocol" + }, + "indexerFlags": { + "nullable": true + }, + "movieId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "downloadClientId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "downloadClient": { + "type": "string", + "nullable": true + }, + "shouldOverride": { + "type": "boolean", + "nullable": true + } + }, + "additionalProperties": false + }, + "RemotePathMappingResource": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "host": { + "type": "string", + "nullable": true + }, + "remotePath": { + "type": "string", + "nullable": true + }, + "localPath": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "RenameMovieResource": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "movieId": { + "type": "integer", + "format": "int32" + }, + "movieFileId": { + "type": "integer", + "format": "int32" + }, + "existingPath": { + "type": "string", + "nullable": true + }, + "newPath": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "RescanAfterRefreshType": { + "enum": [ + "always", + "afterManual", + "never" + ], + "type": "string" + }, + "Revision": { + "type": "object", + "properties": { + "version": { + "type": "integer", + "format": "int32" + }, + "real": { + "type": "integer", + "format": "int32" + }, + "isRepack": { + "type": "boolean" + } + }, + "additionalProperties": false + }, + "RootFolderResource": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "path": { + "type": "string", + "nullable": true + }, + "accessible": { + "type": "boolean" + }, + "freeSpace": { + "type": "integer", + "format": "int64", + "nullable": true + }, + "unmappedFolders": { + "type": "array", + "items": { + "$ref": "#/components/schemas/UnmappedFolder" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "RuntimeMode": { + "enum": [ + "console", + "service", + "tray" + ], + "type": "string" + }, + "SelectOption": { + "type": "object", + "properties": { + "value": { + "type": "integer", + "format": "int32" + }, + "name": { + "type": "string", + "nullable": true + }, + "order": { + "type": "integer", + "format": "int32" + }, + "hint": { + "type": "string", + "nullable": true + }, + "dividerAfter": { + "type": "boolean" + } + }, + "additionalProperties": false + }, + "SortDirection": { + "enum": [ + "default", + "ascending", + "descending" + ], + "type": "string" + }, + "SourceType": { + "enum": [ + "tmdb", + "mappings", + "user", + "indexer" + ], + "type": "string" + }, + "SystemResource": { + "type": "object", + "properties": { + "appName": { + "type": "string", + "nullable": true + }, + "instanceName": { + "type": "string", + "nullable": true + }, + "version": { + "type": "string", + "nullable": true + }, + "buildTime": { + "type": "string", + "format": "date-time" + }, + "isDebug": { + "type": "boolean" + }, + "isProduction": { + "type": "boolean" + }, + "isAdmin": { + "type": "boolean" + }, + "isUserInteractive": { + "type": "boolean" + }, + "startupPath": { + "type": "string", + "nullable": true + }, + "appData": { + "type": "string", + "nullable": true + }, + "osName": { + "type": "string", + "nullable": true + }, + "osVersion": { + "type": "string", + "nullable": true + }, + "isNetCore": { + "type": "boolean" + }, + "isLinux": { + "type": "boolean" + }, + "isOsx": { + "type": "boolean" + }, + "isWindows": { + "type": "boolean" + }, + "isDocker": { + "type": "boolean" + }, + "mode": { + "$ref": "#/components/schemas/RuntimeMode" + }, + "branch": { + "type": "string", + "nullable": true + }, + "databaseType": { + "$ref": "#/components/schemas/DatabaseType" + }, + "databaseVersion": { + "type": "string", + "nullable": true + }, + "authentication": { + "$ref": "#/components/schemas/AuthenticationType" + }, + "migrationVersion": { + "type": "integer", + "format": "int32" + }, + "urlBase": { + "type": "string", + "nullable": true + }, + "runtimeVersion": { + "type": "string", + "nullable": true + }, + "runtimeName": { + "type": "string", + "nullable": true + }, + "startTime": { + "type": "string", + "format": "date-time" + }, + "packageVersion": { + "type": "string", + "nullable": true + }, + "packageAuthor": { + "type": "string", + "nullable": true + }, + "packageUpdateMechanism": { + "$ref": "#/components/schemas/UpdateMechanism" + }, + "packageUpdateMechanismMessage": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "TMDbCountryCode": { + "enum": [ + "au", + "br", + "ca", + "fr", + "de", + "gb", + "in", + "ie", + "it", + "nz", + "ro", + "es", + "us" + ], + "type": "string" + }, + "TagDetailsResource": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "label": { + "type": "string", + "nullable": true + }, + "delayProfileIds": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + }, + "nullable": true + }, + "importListIds": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + }, + "nullable": true + }, + "notificationIds": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + }, + "nullable": true + }, + "releaseProfileIds": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + }, + "nullable": true + }, + "indexerIds": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + }, + "nullable": true + }, + "downloadClientIds": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + }, + "nullable": true + }, + "autoTagIds": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + }, + "nullable": true + }, + "movieIds": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "TagResource": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "label": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "TaskResource": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "name": { + "type": "string", + "nullable": true + }, + "taskName": { + "type": "string", + "nullable": true + }, + "interval": { + "type": "integer", + "format": "int32" + }, + "lastExecution": { + "type": "string", + "format": "date-time" + }, + "lastStartTime": { + "type": "string", + "format": "date-time" + }, + "nextExecution": { + "type": "string", + "format": "date-time" + }, + "lastDuration": { + "type": "string", + "format": "date-span", + "readOnly": true + } + }, + "additionalProperties": false + }, + "TrackedDownloadState": { + "enum": [ + "downloading", + "importBlocked", + "importPending", + "importing", + "imported", + "failedPending", + "failed", + "ignored" + ], + "type": "string" + }, + "TrackedDownloadStatus": { + "enum": [ + "ok", + "warning", + "error" + ], + "type": "string" + }, + "TrackedDownloadStatusMessage": { + "type": "object", + "properties": { + "title": { + "type": "string", + "nullable": true + }, + "messages": { + "type": "array", + "items": { + "type": "string" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "UiConfigResource": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "firstDayOfWeek": { + "type": "integer", + "format": "int32" + }, + "calendarWeekColumnHeader": { + "type": "string", + "nullable": true + }, + "movieRuntimeFormat": { + "$ref": "#/components/schemas/MovieRuntimeFormatType" + }, + "shortDateFormat": { + "type": "string", + "nullable": true + }, + "longDateFormat": { + "type": "string", + "nullable": true + }, + "timeFormat": { + "type": "string", + "nullable": true + }, + "showRelativeDates": { + "type": "boolean" + }, + "enableColorImpairedMode": { + "type": "boolean" + }, + "movieInfoLanguage": { + "type": "integer", + "format": "int32" + }, + "uiLanguage": { + "type": "integer", + "format": "int32" + }, + "theme": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "UnmappedFolder": { + "type": "object", + "properties": { + "name": { + "type": "string", + "nullable": true + }, + "path": { + "type": "string", + "nullable": true + }, + "relativePath": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "UpdateChanges": { + "type": "object", + "properties": { + "new": { + "type": "array", + "items": { + "type": "string" + }, + "nullable": true + }, + "fixed": { + "type": "array", + "items": { + "type": "string" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "UpdateMechanism": { + "enum": [ + "builtIn", + "script", + "external", + "apt", + "docker" + ], + "type": "string" + }, + "UpdateResource": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "version": { + "type": "string", + "nullable": true + }, + "branch": { + "type": "string", + "nullable": true + }, + "releaseDate": { + "type": "string", + "format": "date-time" + }, + "fileName": { + "type": "string", + "nullable": true + }, + "url": { + "type": "string", + "nullable": true + }, + "installed": { + "type": "boolean" + }, + "installedOn": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "installable": { + "type": "boolean" + }, + "latest": { + "type": "boolean" + }, + "changes": { + "$ref": "#/components/schemas/UpdateChanges" + }, + "hash": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + } + }, + "securitySchemes": { + "X-Api-Key": { + "type": "apiKey", + "description": "Apikey passed as header", + "name": "X-Api-Key", + "in": "header" + }, + "apikey": { + "type": "apiKey", + "description": "Apikey passed as query parameter", + "name": "apikey", + "in": "query" + } + } + }, + "security": [ + { + "X-Api-Key": [ ] + }, + { + "apikey": [ ] + } + ] +} \ No newline at end of file diff --git a/src/Radarr.Http.Client/Radarr.Http.Client.csproj b/src/Radarr.Http.Client/Radarr.Http.Client.csproj new file mode 100644 index 0000000..3b5377e --- /dev/null +++ b/src/Radarr.Http.Client/Radarr.Http.Client.csproj @@ -0,0 +1,27 @@ + + + + net9.0 + enable + enable + + + + + https://raw.githubusercontent.com/Radarr/Radarr/develop/src/Radarr.Api.V3/openapi.json + /JsonLibrary:SystemTextJson + + + + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + + + diff --git a/src/Sonarr.Http.Client/OpenAPIs/openapi.json b/src/Sonarr.Http.Client/OpenAPIs/openapi.json new file mode 100644 index 0000000..d5d9167 --- /dev/null +++ b/src/Sonarr.Http.Client/OpenAPIs/openapi.json @@ -0,0 +1,12246 @@ +{ + "openapi": "3.0.1", + "info": { + "title": "Sonarr", + "description": "Sonarr API docs - The v3 API docs apply to both v3 and v4 versions of Sonarr. Some functionality may only be available in v4 of the Sonarr application.", + "license": { + "name": "GPL-3.0", + "url": "https://github.com/Sonarr/Sonarr/blob/develop/LICENSE" + }, + "version": "3.0.0" + }, + "servers": [ + { + "url": "{protocol}://{hostpath}", + "variables": { + "protocol": { + "default": "http", + "enum": [ + "http", + "https" + ] + }, + "hostpath": { + "default": "localhost:8989" + } + } + } + ], + "paths": { + "/api": { + "get": { + "tags": [ + "ApiInfo" + ], + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/login": { + "post": { + "tags": [ + "Authentication" + ], + "parameters": [ + { + "name": "returnUrl", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "multipart/form-data": { + "schema": { + "type": "object", + "properties": { + "username": { + "type": "string" + }, + "password": { + "type": "string" + }, + "rememberMe": { + "type": "string" + } + } + }, + "encoding": { + "username": { + "style": "form" + }, + "password": { + "style": "form" + }, + "rememberMe": { + "style": "form" + } + } + } + } + }, + "responses": { + "200": { + "description": "OK" + } + } + }, + "get": { + "tags": [ + "StaticResource" + ], + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/logout": { + "get": { + "tags": [ + "Authentication" + ], + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/api/v3/autotagging": { + "post": { + "tags": [ + "AutoTagging" + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AutoTaggingResource" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AutoTaggingResource" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/AutoTaggingResource" + } + } + } + } + } + }, + "get": { + "tags": [ + "AutoTagging" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/AutoTaggingResource" + } + } + } + } + } + } + } + }, + "/api/v3/autotagging/{id}": { + "put": { + "tags": [ + "AutoTagging" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AutoTaggingResource" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AutoTaggingResource" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/AutoTaggingResource" + } + } + } + } + } + }, + "delete": { + "tags": [ + "AutoTagging" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "OK" + } + } + }, + "get": { + "tags": [ + "AutoTagging" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AutoTaggingResource" + } + } + } + } + } + } + }, + "/api/v3/autotagging/schema": { + "get": { + "tags": [ + "AutoTagging" + ], + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/api/v3/system/backup": { + "get": { + "tags": [ + "Backup" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/BackupResource" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/BackupResource" + } + } + } + } + } + } + } + }, + "/api/v3/system/backup/{id}": { + "delete": { + "tags": [ + "Backup" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/api/v3/system/backup/restore/{id}": { + "post": { + "tags": [ + "Backup" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/api/v3/system/backup/restore/upload": { + "post": { + "tags": [ + "Backup" + ], + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/api/v3/blocklist": { + "get": { + "tags": [ + "Blocklist" + ], + "parameters": [ + { + "name": "page", + "in": "query", + "schema": { + "type": "integer", + "format": "int32", + "default": 1 + } + }, + { + "name": "pageSize", + "in": "query", + "schema": { + "type": "integer", + "format": "int32", + "default": 10 + } + }, + { + "name": "sortKey", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "sortDirection", + "in": "query", + "schema": { + "$ref": "#/components/schemas/SortDirection" + } + }, + { + "name": "seriesIds", + "in": "query", + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + }, + { + "name": "protocols", + "in": "query", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/DownloadProtocol" + } + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BlocklistResourcePagingResource" + } + } + } + } + } + } + }, + "/api/v3/blocklist/{id}": { + "delete": { + "tags": [ + "Blocklist" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/api/v3/blocklist/bulk": { + "delete": { + "tags": [ + "Blocklist" + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BlocklistBulkResource" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/BlocklistBulkResource" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/BlocklistBulkResource" + } + } + } + }, + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/api/v3/calendar": { + "get": { + "tags": [ + "Calendar" + ], + "parameters": [ + { + "name": "start", + "in": "query", + "schema": { + "type": "string", + "format": "date-time" + } + }, + { + "name": "end", + "in": "query", + "schema": { + "type": "string", + "format": "date-time" + } + }, + { + "name": "unmonitored", + "in": "query", + "schema": { + "type": "boolean", + "default": false + } + }, + { + "name": "includeSeries", + "in": "query", + "schema": { + "type": "boolean", + "default": false + } + }, + { + "name": "includeEpisodeFile", + "in": "query", + "schema": { + "type": "boolean", + "default": false + } + }, + { + "name": "includeEpisodeImages", + "in": "query", + "schema": { + "type": "boolean", + "default": false + } + }, + { + "name": "tags", + "in": "query", + "schema": { + "type": "string", + "default": "" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/EpisodeResource" + } + } + } + } + } + } + } + }, + "/api/v3/calendar/{id}": { + "get": { + "tags": [ + "Calendar" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/EpisodeResource" + } + } + } + } + } + } + }, + "/feed/v3/calendar/sonarr.ics": { + "get": { + "tags": [ + "CalendarFeed" + ], + "parameters": [ + { + "name": "pastDays", + "in": "query", + "schema": { + "type": "integer", + "format": "int32", + "default": 7 + } + }, + { + "name": "futureDays", + "in": "query", + "schema": { + "type": "integer", + "format": "int32", + "default": 28 + } + }, + { + "name": "tags", + "in": "query", + "schema": { + "type": "string", + "default": "" + } + }, + { + "name": "unmonitored", + "in": "query", + "schema": { + "type": "boolean", + "default": false + } + }, + { + "name": "premieresOnly", + "in": "query", + "schema": { + "type": "boolean", + "default": false + } + }, + { + "name": "asAllDay", + "in": "query", + "schema": { + "type": "boolean", + "default": false + } + } + ], + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/api/v3/command": { + "post": { + "tags": [ + "Command" + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CommandResource" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CommandResource" + } + } + } + } + } + }, + "get": { + "tags": [ + "Command" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CommandResource" + } + } + } + } + } + } + } + }, + "/api/v3/command/{id}": { + "delete": { + "tags": [ + "Command" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "OK" + } + } + }, + "get": { + "tags": [ + "Command" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CommandResource" + } + } + } + } + } + } + }, + "/api/v3/customfilter": { + "get": { + "tags": [ + "CustomFilter" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CustomFilterResource" + } + } + } + } + } + } + }, + "post": { + "tags": [ + "CustomFilter" + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CustomFilterResource" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CustomFilterResource" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/CustomFilterResource" + } + } + } + } + } + } + }, + "/api/v3/customfilter/{id}": { + "put": { + "tags": [ + "CustomFilter" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CustomFilterResource" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CustomFilterResource" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/CustomFilterResource" + } + } + } + } + } + }, + "delete": { + "tags": [ + "CustomFilter" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "OK" + } + } + }, + "get": { + "tags": [ + "CustomFilter" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CustomFilterResource" + } + } + } + } + } + } + }, + "/api/v3/customformat": { + "get": { + "tags": [ + "CustomFormat" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CustomFormatResource" + } + } + } + } + } + } + }, + "post": { + "tags": [ + "CustomFormat" + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CustomFormatResource" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CustomFormatResource" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/CustomFormatResource" + } + } + } + } + } + } + }, + "/api/v3/customformat/{id}": { + "put": { + "tags": [ + "CustomFormat" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CustomFormatResource" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CustomFormatResource" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/CustomFormatResource" + } + } + } + } + } + }, + "delete": { + "tags": [ + "CustomFormat" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "OK" + } + } + }, + "get": { + "tags": [ + "CustomFormat" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CustomFormatResource" + } + } + } + } + } + } + }, + "/api/v3/customformat/bulk": { + "put": { + "tags": [ + "CustomFormat" + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CustomFormatBulkResource" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CustomFormatResource" + } + } + } + } + } + }, + "delete": { + "tags": [ + "CustomFormat" + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CustomFormatBulkResource" + } + } + } + }, + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/api/v3/customformat/schema": { + "get": { + "tags": [ + "CustomFormat" + ], + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/api/v3/wanted/cutoff": { + "get": { + "tags": [ + "Cutoff" + ], + "parameters": [ + { + "name": "page", + "in": "query", + "schema": { + "type": "integer", + "format": "int32", + "default": 1 + } + }, + { + "name": "pageSize", + "in": "query", + "schema": { + "type": "integer", + "format": "int32", + "default": 10 + } + }, + { + "name": "sortKey", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "sortDirection", + "in": "query", + "schema": { + "$ref": "#/components/schemas/SortDirection" + } + }, + { + "name": "includeSeries", + "in": "query", + "schema": { + "type": "boolean", + "default": false + } + }, + { + "name": "includeEpisodeFile", + "in": "query", + "schema": { + "type": "boolean", + "default": false + } + }, + { + "name": "includeImages", + "in": "query", + "schema": { + "type": "boolean", + "default": false + } + }, + { + "name": "monitored", + "in": "query", + "schema": { + "type": "boolean", + "default": true + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/EpisodeResourcePagingResource" + } + } + } + } + } + } + }, + "/api/v3/wanted/cutoff/{id}": { + "get": { + "tags": [ + "Cutoff" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/EpisodeResource" + } + } + } + } + } + } + }, + "/api/v3/delayprofile": { + "post": { + "tags": [ + "DelayProfile" + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DelayProfileResource" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DelayProfileResource" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/DelayProfileResource" + } + } + } + } + } + }, + "get": { + "tags": [ + "DelayProfile" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/DelayProfileResource" + } + } + } + } + } + } + } + }, + "/api/v3/delayprofile/{id}": { + "delete": { + "tags": [ + "DelayProfile" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "OK" + } + } + }, + "put": { + "tags": [ + "DelayProfile" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DelayProfileResource" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DelayProfileResource" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/DelayProfileResource" + } + } + } + } + } + }, + "get": { + "tags": [ + "DelayProfile" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DelayProfileResource" + } + } + } + } + } + } + }, + "/api/v3/delayprofile/reorder/{id}": { + "put": { + "tags": [ + "DelayProfile" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "after", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/DelayProfileResource" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/DelayProfileResource" + } + } + } + } + } + } + } + }, + "/api/v3/diskspace": { + "get": { + "tags": [ + "DiskSpace" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/DiskSpaceResource" + } + } + } + } + } + } + } + }, + "/api/v3/downloadclient": { + "get": { + "tags": [ + "DownloadClient" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/DownloadClientResource" + } + } + } + } + } + } + }, + "post": { + "tags": [ + "DownloadClient" + ], + "parameters": [ + { + "name": "forceSave", + "in": "query", + "schema": { + "type": "boolean", + "default": false + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DownloadClientResource" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DownloadClientResource" + } + } + } + } + } + } + }, + "/api/v3/downloadclient/{id}": { + "put": { + "tags": [ + "DownloadClient" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "forceSave", + "in": "query", + "schema": { + "type": "boolean", + "default": false + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DownloadClientResource" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DownloadClientResource" + } + } + } + } + } + }, + "delete": { + "tags": [ + "DownloadClient" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "OK" + } + } + }, + "get": { + "tags": [ + "DownloadClient" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DownloadClientResource" + } + } + } + } + } + } + }, + "/api/v3/downloadclient/bulk": { + "put": { + "tags": [ + "DownloadClient" + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DownloadClientBulkResource" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DownloadClientResource" + } + } + } + } + } + }, + "delete": { + "tags": [ + "DownloadClient" + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DownloadClientBulkResource" + } + } + } + }, + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/api/v3/downloadclient/schema": { + "get": { + "tags": [ + "DownloadClient" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/DownloadClientResource" + } + } + } + } + } + } + } + }, + "/api/v3/downloadclient/test": { + "post": { + "tags": [ + "DownloadClient" + ], + "parameters": [ + { + "name": "forceTest", + "in": "query", + "schema": { + "type": "boolean", + "default": false + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DownloadClientResource" + } + } + } + }, + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/api/v3/downloadclient/testall": { + "post": { + "tags": [ + "DownloadClient" + ], + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/api/v3/downloadclient/action/{name}": { + "post": { + "tags": [ + "DownloadClient" + ], + "parameters": [ + { + "name": "name", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DownloadClientResource" + } + } + } + }, + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/api/v3/config/downloadclient": { + "get": { + "tags": [ + "DownloadClientConfig" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DownloadClientConfigResource" + } + } + } + } + } + } + }, + "/api/v3/config/downloadclient/{id}": { + "put": { + "tags": [ + "DownloadClientConfig" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DownloadClientConfigResource" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DownloadClientConfigResource" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/DownloadClientConfigResource" + } + } + } + } + } + }, + "get": { + "tags": [ + "DownloadClientConfig" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DownloadClientConfigResource" + } + } + } + } + } + } + }, + "/api/v3/episode": { + "get": { + "tags": [ + "Episode" + ], + "parameters": [ + { + "name": "seriesId", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "seasonNumber", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "episodeIds", + "in": "query", + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + }, + { + "name": "episodeFileId", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "includeSeries", + "in": "query", + "schema": { + "type": "boolean", + "default": false + } + }, + { + "name": "includeEpisodeFile", + "in": "query", + "schema": { + "type": "boolean", + "default": false + } + }, + { + "name": "includeImages", + "in": "query", + "schema": { + "type": "boolean", + "default": false + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/EpisodeResource" + } + } + } + } + } + } + } + }, + "/api/v3/episode/{id}": { + "put": { + "tags": [ + "Episode" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/EpisodeResource" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/EpisodeResource" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/EpisodeResource" + } + } + } + } + } + }, + "get": { + "tags": [ + "Episode" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/EpisodeResource" + } + } + } + } + } + } + }, + "/api/v3/episode/monitor": { + "put": { + "tags": [ + "Episode" + ], + "parameters": [ + { + "name": "includeImages", + "in": "query", + "schema": { + "type": "boolean", + "default": false + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/EpisodesMonitoredResource" + } + } + } + }, + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/api/v3/episodefile": { + "get": { + "tags": [ + "EpisodeFile" + ], + "parameters": [ + { + "name": "seriesId", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "episodeFileIds", + "in": "query", + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/EpisodeFileResource" + } + } + } + } + } + } + } + }, + "/api/v3/episodefile/{id}": { + "put": { + "tags": [ + "EpisodeFile" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/EpisodeFileResource" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/EpisodeFileResource" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/EpisodeFileResource" + } + } + } + } + } + }, + "delete": { + "tags": [ + "EpisodeFile" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "OK" + } + } + }, + "get": { + "tags": [ + "EpisodeFile" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/EpisodeFileResource" + } + } + } + } + } + } + }, + "/api/v3/episodefile/editor": { + "put": { + "tags": [ + "EpisodeFile" + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/EpisodeFileListResource" + } + } + } + }, + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/api/v3/episodefile/bulk": { + "delete": { + "tags": [ + "EpisodeFile" + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/EpisodeFileListResource" + } + } + } + }, + "responses": { + "200": { + "description": "OK" + } + } + }, + "put": { + "tags": [ + "EpisodeFile" + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/EpisodeFileResource" + } + } + } + } + }, + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/api/v3/filesystem": { + "get": { + "tags": [ + "FileSystem" + ], + "parameters": [ + { + "name": "path", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "includeFiles", + "in": "query", + "schema": { + "type": "boolean", + "default": false + } + }, + { + "name": "allowFoldersWithoutTrailingSlashes", + "in": "query", + "schema": { + "type": "boolean", + "default": false + } + } + ], + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/api/v3/filesystem/type": { + "get": { + "tags": [ + "FileSystem" + ], + "parameters": [ + { + "name": "path", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/api/v3/filesystem/mediafiles": { + "get": { + "tags": [ + "FileSystem" + ], + "parameters": [ + { + "name": "path", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/api/v3/health": { + "get": { + "tags": [ + "Health" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/HealthResource" + } + } + } + } + } + } + } + }, + "/api/v3/history": { + "get": { + "tags": [ + "History" + ], + "parameters": [ + { + "name": "page", + "in": "query", + "schema": { + "type": "integer", + "format": "int32", + "default": 1 + } + }, + { + "name": "pageSize", + "in": "query", + "schema": { + "type": "integer", + "format": "int32", + "default": 10 + } + }, + { + "name": "sortKey", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "sortDirection", + "in": "query", + "schema": { + "$ref": "#/components/schemas/SortDirection" + } + }, + { + "name": "includeSeries", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "includeEpisode", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "eventType", + "in": "query", + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + }, + { + "name": "episodeId", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "downloadId", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "seriesIds", + "in": "query", + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + }, + { + "name": "languages", + "in": "query", + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + }, + { + "name": "quality", + "in": "query", + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HistoryResourcePagingResource" + } + } + } + } + } + } + }, + "/api/v3/history/since": { + "get": { + "tags": [ + "History" + ], + "parameters": [ + { + "name": "date", + "in": "query", + "schema": { + "type": "string", + "format": "date-time" + } + }, + { + "name": "eventType", + "in": "query", + "schema": { + "$ref": "#/components/schemas/EpisodeHistoryEventType" + } + }, + { + "name": "includeSeries", + "in": "query", + "schema": { + "type": "boolean", + "default": false + } + }, + { + "name": "includeEpisode", + "in": "query", + "schema": { + "type": "boolean", + "default": false + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/HistoryResource" + } + } + } + } + } + } + } + }, + "/api/v3/history/series": { + "get": { + "tags": [ + "History" + ], + "parameters": [ + { + "name": "seriesId", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "seasonNumber", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "eventType", + "in": "query", + "schema": { + "$ref": "#/components/schemas/EpisodeHistoryEventType" + } + }, + { + "name": "includeSeries", + "in": "query", + "schema": { + "type": "boolean", + "default": false + } + }, + { + "name": "includeEpisode", + "in": "query", + "schema": { + "type": "boolean", + "default": false + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/HistoryResource" + } + } + } + } + } + } + } + }, + "/api/v3/history/failed/{id}": { + "post": { + "tags": [ + "History" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/api/v3/config/host": { + "get": { + "tags": [ + "HostConfig" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HostConfigResource" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/HostConfigResource" + } + } + } + } + } + } + }, + "/api/v3/config/host/{id}": { + "put": { + "tags": [ + "HostConfig" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HostConfigResource" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/HostConfigResource" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/HostConfigResource" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HostConfigResource" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/HostConfigResource" + } + } + } + } + } + }, + "get": { + "tags": [ + "HostConfig" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HostConfigResource" + } + } + } + } + } + } + }, + "/api/v3/importlist": { + "get": { + "tags": [ + "ImportList" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ImportListResource" + } + } + } + } + } + } + }, + "post": { + "tags": [ + "ImportList" + ], + "parameters": [ + { + "name": "forceSave", + "in": "query", + "schema": { + "type": "boolean", + "default": false + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ImportListResource" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ImportListResource" + } + } + } + } + } + } + }, + "/api/v3/importlist/{id}": { + "put": { + "tags": [ + "ImportList" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "forceSave", + "in": "query", + "schema": { + "type": "boolean", + "default": false + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ImportListResource" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ImportListResource" + } + } + } + } + } + }, + "delete": { + "tags": [ + "ImportList" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "OK" + } + } + }, + "get": { + "tags": [ + "ImportList" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ImportListResource" + } + } + } + } + } + } + }, + "/api/v3/importlist/bulk": { + "put": { + "tags": [ + "ImportList" + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ImportListBulkResource" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ImportListResource" + } + } + } + } + } + }, + "delete": { + "tags": [ + "ImportList" + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ImportListBulkResource" + } + } + } + }, + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/api/v3/importlist/schema": { + "get": { + "tags": [ + "ImportList" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ImportListResource" + } + } + } + } + } + } + } + }, + "/api/v3/importlist/test": { + "post": { + "tags": [ + "ImportList" + ], + "parameters": [ + { + "name": "forceTest", + "in": "query", + "schema": { + "type": "boolean", + "default": false + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ImportListResource" + } + } + } + }, + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/api/v3/importlist/testall": { + "post": { + "tags": [ + "ImportList" + ], + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/api/v3/importlist/action/{name}": { + "post": { + "tags": [ + "ImportList" + ], + "parameters": [ + { + "name": "name", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ImportListResource" + } + } + } + }, + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/api/v3/config/importlist": { + "get": { + "tags": [ + "ImportListConfig" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ImportListConfigResource" + } + } + } + } + } + } + }, + "/api/v3/config/importlist/{id}": { + "put": { + "tags": [ + "ImportListConfig" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ImportListConfigResource" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ImportListConfigResource" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/ImportListConfigResource" + } + } + } + } + } + }, + "get": { + "tags": [ + "ImportListConfig" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ImportListConfigResource" + } + } + } + } + } + } + }, + "/api/v3/importlistexclusion": { + "get": { + "tags": [ + "ImportListExclusion" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ImportListExclusionResource" + } + } + } + } + } + }, + "deprecated": true + }, + "post": { + "tags": [ + "ImportListExclusion" + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ImportListExclusionResource" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ImportListExclusionResource" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/ImportListExclusionResource" + } + } + } + } + } + } + }, + "/api/v3/importlistexclusion/paged": { + "get": { + "tags": [ + "ImportListExclusion" + ], + "parameters": [ + { + "name": "page", + "in": "query", + "schema": { + "type": "integer", + "format": "int32", + "default": 1 + } + }, + { + "name": "pageSize", + "in": "query", + "schema": { + "type": "integer", + "format": "int32", + "default": 10 + } + }, + { + "name": "sortKey", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "sortDirection", + "in": "query", + "schema": { + "$ref": "#/components/schemas/SortDirection" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ImportListExclusionResourcePagingResource" + } + } + } + } + } + } + }, + "/api/v3/importlistexclusion/{id}": { + "put": { + "tags": [ + "ImportListExclusion" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ImportListExclusionResource" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ImportListExclusionResource" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/ImportListExclusionResource" + } + } + } + } + } + }, + "delete": { + "tags": [ + "ImportListExclusion" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "OK" + } + } + }, + "get": { + "tags": [ + "ImportListExclusion" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ImportListExclusionResource" + } + } + } + } + } + } + }, + "/api/v3/importlistexclusion/bulk": { + "delete": { + "tags": [ + "ImportListExclusion" + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ImportListExclusionBulkResource" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/ImportListExclusionBulkResource" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/ImportListExclusionBulkResource" + } + } + } + }, + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/api/v3/indexer": { + "get": { + "tags": [ + "Indexer" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/IndexerResource" + } + } + } + } + } + } + }, + "post": { + "tags": [ + "Indexer" + ], + "parameters": [ + { + "name": "forceSave", + "in": "query", + "schema": { + "type": "boolean", + "default": false + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/IndexerResource" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/IndexerResource" + } + } + } + } + } + } + }, + "/api/v3/indexer/{id}": { + "put": { + "tags": [ + "Indexer" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "forceSave", + "in": "query", + "schema": { + "type": "boolean", + "default": false + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/IndexerResource" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/IndexerResource" + } + } + } + } + } + }, + "delete": { + "tags": [ + "Indexer" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "OK" + } + } + }, + "get": { + "tags": [ + "Indexer" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/IndexerResource" + } + } + } + } + } + } + }, + "/api/v3/indexer/bulk": { + "put": { + "tags": [ + "Indexer" + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/IndexerBulkResource" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/IndexerResource" + } + } + } + } + } + }, + "delete": { + "tags": [ + "Indexer" + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/IndexerBulkResource" + } + } + } + }, + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/api/v3/indexer/schema": { + "get": { + "tags": [ + "Indexer" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/IndexerResource" + } + } + } + } + } + } + } + }, + "/api/v3/indexer/test": { + "post": { + "tags": [ + "Indexer" + ], + "parameters": [ + { + "name": "forceTest", + "in": "query", + "schema": { + "type": "boolean", + "default": false + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/IndexerResource" + } + } + } + }, + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/api/v3/indexer/testall": { + "post": { + "tags": [ + "Indexer" + ], + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/api/v3/indexer/action/{name}": { + "post": { + "tags": [ + "Indexer" + ], + "parameters": [ + { + "name": "name", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/IndexerResource" + } + } + } + }, + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/api/v3/config/indexer": { + "get": { + "tags": [ + "IndexerConfig" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/IndexerConfigResource" + } + } + } + } + } + } + }, + "/api/v3/config/indexer/{id}": { + "put": { + "tags": [ + "IndexerConfig" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/IndexerConfigResource" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/IndexerConfigResource" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/IndexerConfigResource" + } + } + } + } + } + }, + "get": { + "tags": [ + "IndexerConfig" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/IndexerConfigResource" + } + } + } + } + } + } + }, + "/api/v3/indexerflag": { + "get": { + "tags": [ + "IndexerFlag" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/IndexerFlagResource" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/IndexerFlagResource" + } + } + } + } + } + } + } + }, + "/api/v3/language": { + "get": { + "tags": [ + "Language" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/LanguageResource" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/LanguageResource" + } + } + } + } + } + } + } + }, + "/api/v3/language/{id}": { + "get": { + "tags": [ + "Language" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/LanguageResource" + } + } + } + } + } + } + }, + "/api/v3/languageprofile": { + "post": { + "tags": [ + "LanguageProfile" + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/LanguageProfileResource" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/LanguageProfileResource" + } + } + } + } + }, + "deprecated": true + }, + "get": { + "tags": [ + "LanguageProfile" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/LanguageProfileResource" + } + } + } + } + } + }, + "deprecated": true + } + }, + "/api/v3/languageprofile/{id}": { + "delete": { + "tags": [ + "LanguageProfile" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "OK" + } + }, + "deprecated": true + }, + "put": { + "tags": [ + "LanguageProfile" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/LanguageProfileResource" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/LanguageProfileResource" + } + } + } + } + }, + "deprecated": true + }, + "get": { + "tags": [ + "LanguageProfile" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/LanguageProfileResource" + } + } + } + } + } + } + }, + "/api/v3/languageprofile/schema": { + "get": { + "tags": [ + "LanguageProfileSchema" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/LanguageProfileResource" + } + } + } + } + }, + "deprecated": true + } + }, + "/api/v3/localization": { + "get": { + "tags": [ + "Localization" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/LocalizationResource" + } + } + } + } + } + } + }, + "/api/v3/localization/language": { + "get": { + "tags": [ + "Localization" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/LocalizationLanguageResource" + } + } + } + } + } + } + }, + "/api/v3/localization/{id}": { + "get": { + "tags": [ + "Localization" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/LocalizationResource" + } + } + } + } + } + } + }, + "/api/v3/log": { + "get": { + "tags": [ + "Log" + ], + "parameters": [ + { + "name": "page", + "in": "query", + "schema": { + "type": "integer", + "format": "int32", + "default": 1 + } + }, + { + "name": "pageSize", + "in": "query", + "schema": { + "type": "integer", + "format": "int32", + "default": 10 + } + }, + { + "name": "sortKey", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "sortDirection", + "in": "query", + "schema": { + "$ref": "#/components/schemas/SortDirection" + } + }, + { + "name": "level", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/LogResourcePagingResource" + } + } + } + } + } + } + }, + "/api/v3/log/file": { + "get": { + "tags": [ + "LogFile" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/LogFileResource" + } + } + } + } + } + } + } + }, + "/api/v3/log/file/{filename}": { + "get": { + "tags": [ + "LogFile" + ], + "parameters": [ + { + "name": "filename", + "in": "path", + "required": true, + "schema": { + "pattern": "[-.a-zA-Z0-9]+?\\.txt", + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/api/v3/manualimport": { + "get": { + "tags": [ + "ManualImport" + ], + "parameters": [ + { + "name": "folder", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "downloadId", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "seriesId", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "seasonNumber", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "filterExistingFiles", + "in": "query", + "schema": { + "type": "boolean", + "default": true + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ManualImportResource" + } + } + } + } + } + } + }, + "post": { + "tags": [ + "ManualImport" + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ManualImportReprocessResource" + } + } + } + } + }, + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/api/v3/mediacover/{seriesId}/{filename}": { + "get": { + "tags": [ + "MediaCover" + ], + "parameters": [ + { + "name": "seriesId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "filename", + "in": "path", + "required": true, + "schema": { + "pattern": "(.+)\\.(jpg|png|gif)", + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/api/v3/config/mediamanagement": { + "get": { + "tags": [ + "MediaManagementConfig" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MediaManagementConfigResource" + } + } + } + } + } + } + }, + "/api/v3/config/mediamanagement/{id}": { + "put": { + "tags": [ + "MediaManagementConfig" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MediaManagementConfigResource" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MediaManagementConfigResource" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/MediaManagementConfigResource" + } + } + } + } + } + }, + "get": { + "tags": [ + "MediaManagementConfig" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MediaManagementConfigResource" + } + } + } + } + } + } + }, + "/api/v3/metadata": { + "get": { + "tags": [ + "Metadata" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/MetadataResource" + } + } + } + } + } + } + }, + "post": { + "tags": [ + "Metadata" + ], + "parameters": [ + { + "name": "forceSave", + "in": "query", + "schema": { + "type": "boolean", + "default": false + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MetadataResource" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MetadataResource" + } + } + } + } + } + } + }, + "/api/v3/metadata/{id}": { + "put": { + "tags": [ + "Metadata" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "forceSave", + "in": "query", + "schema": { + "type": "boolean", + "default": false + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MetadataResource" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MetadataResource" + } + } + } + } + } + }, + "delete": { + "tags": [ + "Metadata" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "OK" + } + } + }, + "get": { + "tags": [ + "Metadata" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MetadataResource" + } + } + } + } + } + } + }, + "/api/v3/metadata/schema": { + "get": { + "tags": [ + "Metadata" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/MetadataResource" + } + } + } + } + } + } + } + }, + "/api/v3/metadata/test": { + "post": { + "tags": [ + "Metadata" + ], + "parameters": [ + { + "name": "forceTest", + "in": "query", + "schema": { + "type": "boolean", + "default": false + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MetadataResource" + } + } + } + }, + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/api/v3/metadata/testall": { + "post": { + "tags": [ + "Metadata" + ], + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/api/v3/metadata/action/{name}": { + "post": { + "tags": [ + "Metadata" + ], + "parameters": [ + { + "name": "name", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MetadataResource" + } + } + } + }, + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/api/v3/wanted/missing": { + "get": { + "tags": [ + "Missing" + ], + "parameters": [ + { + "name": "page", + "in": "query", + "schema": { + "type": "integer", + "format": "int32", + "default": 1 + } + }, + { + "name": "pageSize", + "in": "query", + "schema": { + "type": "integer", + "format": "int32", + "default": 10 + } + }, + { + "name": "sortKey", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "sortDirection", + "in": "query", + "schema": { + "$ref": "#/components/schemas/SortDirection" + } + }, + { + "name": "includeSeries", + "in": "query", + "schema": { + "type": "boolean", + "default": false + } + }, + { + "name": "includeImages", + "in": "query", + "schema": { + "type": "boolean", + "default": false + } + }, + { + "name": "monitored", + "in": "query", + "schema": { + "type": "boolean", + "default": true + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/EpisodeResourcePagingResource" + } + } + } + } + } + } + }, + "/api/v3/wanted/missing/{id}": { + "get": { + "tags": [ + "Missing" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/EpisodeResource" + } + } + } + } + } + } + }, + "/api/v3/config/naming": { + "get": { + "tags": [ + "NamingConfig" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NamingConfigResource" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/NamingConfigResource" + } + } + } + } + } + } + }, + "/api/v3/config/naming/{id}": { + "put": { + "tags": [ + "NamingConfig" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NamingConfigResource" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/NamingConfigResource" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/NamingConfigResource" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NamingConfigResource" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/NamingConfigResource" + } + } + } + } + } + }, + "get": { + "tags": [ + "NamingConfig" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NamingConfigResource" + } + } + } + } + } + } + }, + "/api/v3/config/naming/examples": { + "get": { + "tags": [ + "NamingConfig" + ], + "parameters": [ + { + "name": "renameEpisodes", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "replaceIllegalCharacters", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "colonReplacementFormat", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "customColonReplacementFormat", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "multiEpisodeStyle", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "standardEpisodeFormat", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "dailyEpisodeFormat", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "animeEpisodeFormat", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "seriesFolderFormat", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "seasonFolderFormat", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "specialsFolderFormat", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "id", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "resourceName", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/api/v3/notification": { + "get": { + "tags": [ + "Notification" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/NotificationResource" + } + } + } + } + } + } + }, + "post": { + "tags": [ + "Notification" + ], + "parameters": [ + { + "name": "forceSave", + "in": "query", + "schema": { + "type": "boolean", + "default": false + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotificationResource" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotificationResource" + } + } + } + } + } + } + }, + "/api/v3/notification/{id}": { + "put": { + "tags": [ + "Notification" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "forceSave", + "in": "query", + "schema": { + "type": "boolean", + "default": false + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotificationResource" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotificationResource" + } + } + } + } + } + }, + "delete": { + "tags": [ + "Notification" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "OK" + } + } + }, + "get": { + "tags": [ + "Notification" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotificationResource" + } + } + } + } + } + } + }, + "/api/v3/notification/schema": { + "get": { + "tags": [ + "Notification" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/NotificationResource" + } + } + } + } + } + } + } + }, + "/api/v3/notification/test": { + "post": { + "tags": [ + "Notification" + ], + "parameters": [ + { + "name": "forceTest", + "in": "query", + "schema": { + "type": "boolean", + "default": false + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotificationResource" + } + } + } + }, + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/api/v3/notification/testall": { + "post": { + "tags": [ + "Notification" + ], + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/api/v3/notification/action/{name}": { + "post": { + "tags": [ + "Notification" + ], + "parameters": [ + { + "name": "name", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotificationResource" + } + } + } + }, + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/api/v3/parse": { + "get": { + "tags": [ + "Parse" + ], + "parameters": [ + { + "name": "title", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "path", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ParseResource" + } + } + } + } + } + } + }, + "/ping": { + "get": { + "tags": [ + "Ping" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PingResource" + } + } + } + } + } + }, + "head": { + "tags": [ + "Ping" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PingResource" + } + } + } + } + } + } + }, + "/api/v3/qualitydefinition/{id}": { + "put": { + "tags": [ + "QualityDefinition" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/QualityDefinitionResource" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/QualityDefinitionResource" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/QualityDefinitionResource" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/QualityDefinitionResource" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/QualityDefinitionResource" + } + } + } + } + } + }, + "get": { + "tags": [ + "QualityDefinition" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/QualityDefinitionResource" + } + } + } + } + } + } + }, + "/api/v3/qualitydefinition": { + "get": { + "tags": [ + "QualityDefinition" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/QualityDefinitionResource" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/QualityDefinitionResource" + } + } + } + } + } + } + } + }, + "/api/v3/qualitydefinition/update": { + "put": { + "tags": [ + "QualityDefinition" + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/QualityDefinitionResource" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/QualityDefinitionResource" + } + } + }, + "application/*+json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/QualityDefinitionResource" + } + } + } + } + }, + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/api/v3/qualitydefinition/limits": { + "get": { + "tags": [ + "QualityDefinition" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/QualityDefinitionLimitsResource" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/QualityDefinitionLimitsResource" + } + } + } + } + } + } + }, + "/api/v3/qualityprofile": { + "post": { + "tags": [ + "QualityProfile" + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/QualityProfileResource" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/QualityProfileResource" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/QualityProfileResource" + } + } + } + } + } + }, + "get": { + "tags": [ + "QualityProfile" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/QualityProfileResource" + } + } + } + } + } + } + } + }, + "/api/v3/qualityprofile/{id}": { + "delete": { + "tags": [ + "QualityProfile" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "OK" + } + } + }, + "put": { + "tags": [ + "QualityProfile" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/QualityProfileResource" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/QualityProfileResource" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/QualityProfileResource" + } + } + } + } + } + }, + "get": { + "tags": [ + "QualityProfile" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/QualityProfileResource" + } + } + } + } + } + } + }, + "/api/v3/qualityprofile/schema": { + "get": { + "tags": [ + "QualityProfileSchema" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/QualityProfileResource" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/QualityProfileResource" + } + } + } + } + } + } + }, + "/api/v3/queue/{id}": { + "delete": { + "tags": [ + "Queue" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "removeFromClient", + "in": "query", + "schema": { + "type": "boolean", + "default": true + } + }, + { + "name": "blocklist", + "in": "query", + "schema": { + "type": "boolean", + "default": false + } + }, + { + "name": "skipRedownload", + "in": "query", + "schema": { + "type": "boolean", + "default": false + } + }, + { + "name": "changeCategory", + "in": "query", + "schema": { + "type": "boolean", + "default": false + } + } + ], + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/api/v3/queue/bulk": { + "delete": { + "tags": [ + "Queue" + ], + "parameters": [ + { + "name": "removeFromClient", + "in": "query", + "schema": { + "type": "boolean", + "default": true + } + }, + { + "name": "blocklist", + "in": "query", + "schema": { + "type": "boolean", + "default": false + } + }, + { + "name": "skipRedownload", + "in": "query", + "schema": { + "type": "boolean", + "default": false + } + }, + { + "name": "changeCategory", + "in": "query", + "schema": { + "type": "boolean", + "default": false + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/QueueBulkResource" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/QueueBulkResource" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/QueueBulkResource" + } + } + } + }, + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/api/v3/queue": { + "get": { + "tags": [ + "Queue" + ], + "parameters": [ + { + "name": "page", + "in": "query", + "schema": { + "type": "integer", + "format": "int32", + "default": 1 + } + }, + { + "name": "pageSize", + "in": "query", + "schema": { + "type": "integer", + "format": "int32", + "default": 10 + } + }, + { + "name": "sortKey", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "sortDirection", + "in": "query", + "schema": { + "$ref": "#/components/schemas/SortDirection" + } + }, + { + "name": "includeUnknownSeriesItems", + "in": "query", + "schema": { + "type": "boolean", + "default": false + } + }, + { + "name": "includeSeries", + "in": "query", + "schema": { + "type": "boolean", + "default": false + } + }, + { + "name": "includeEpisode", + "in": "query", + "schema": { + "type": "boolean", + "default": false + } + }, + { + "name": "seriesIds", + "in": "query", + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + }, + { + "name": "protocol", + "in": "query", + "schema": { + "$ref": "#/components/schemas/DownloadProtocol" + } + }, + { + "name": "languages", + "in": "query", + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + }, + { + "name": "quality", + "in": "query", + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + }, + { + "name": "status", + "in": "query", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/QueueStatus" + } + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/QueueResourcePagingResource" + } + } + } + } + } + } + }, + "/api/v3/queue/grab/{id}": { + "post": { + "tags": [ + "QueueAction" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/api/v3/queue/grab/bulk": { + "post": { + "tags": [ + "QueueAction" + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/QueueBulkResource" + } + } + } + }, + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/api/v3/queue/details": { + "get": { + "tags": [ + "QueueDetails" + ], + "parameters": [ + { + "name": "seriesId", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "episodeIds", + "in": "query", + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + }, + { + "name": "includeSeries", + "in": "query", + "schema": { + "type": "boolean", + "default": false + } + }, + { + "name": "includeEpisode", + "in": "query", + "schema": { + "type": "boolean", + "default": false + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/QueueResource" + } + } + } + } + } + } + } + }, + "/api/v3/queue/status": { + "get": { + "tags": [ + "QueueStatus" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/QueueStatusResource" + } + } + } + } + } + } + }, + "/api/v3/release": { + "post": { + "tags": [ + "Release" + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ReleaseResource" + } + } + } + }, + "responses": { + "200": { + "description": "OK" + } + } + }, + "get": { + "tags": [ + "Release" + ], + "parameters": [ + { + "name": "seriesId", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "episodeId", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "seasonNumber", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ReleaseResource" + } + } + } + } + } + } + } + }, + "/api/v3/releaseprofile": { + "post": { + "tags": [ + "ReleaseProfile" + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ReleaseProfileResource" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/ReleaseProfileResource" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/ReleaseProfileResource" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ReleaseProfileResource" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/ReleaseProfileResource" + } + } + } + } + } + }, + "get": { + "tags": [ + "ReleaseProfile" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ReleaseProfileResource" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ReleaseProfileResource" + } + } + } + } + } + } + } + }, + "/api/v3/releaseprofile/{id}": { + "delete": { + "tags": [ + "ReleaseProfile" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "OK" + } + } + }, + "put": { + "tags": [ + "ReleaseProfile" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ReleaseProfileResource" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/ReleaseProfileResource" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/ReleaseProfileResource" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ReleaseProfileResource" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/ReleaseProfileResource" + } + } + } + } + } + }, + "get": { + "tags": [ + "ReleaseProfile" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ReleaseProfileResource" + } + } + } + } + } + } + }, + "/api/v3/release/push": { + "post": { + "tags": [ + "ReleasePush" + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ReleaseResource" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ReleaseResource" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ReleaseResource" + } + } + } + } + } + } + } + }, + "/api/v3/remotepathmapping": { + "post": { + "tags": [ + "RemotePathMapping" + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RemotePathMappingResource" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RemotePathMappingResource" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/RemotePathMappingResource" + } + } + } + } + } + }, + "get": { + "tags": [ + "RemotePathMapping" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/RemotePathMappingResource" + } + } + } + } + } + } + } + }, + "/api/v3/remotepathmapping/{id}": { + "delete": { + "tags": [ + "RemotePathMapping" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "OK" + } + } + }, + "put": { + "tags": [ + "RemotePathMapping" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RemotePathMappingResource" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/RemotePathMappingResource" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/RemotePathMappingResource" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RemotePathMappingResource" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/RemotePathMappingResource" + } + } + } + } + } + }, + "get": { + "tags": [ + "RemotePathMapping" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RemotePathMappingResource" + } + } + } + } + } + } + }, + "/api/v3/rename": { + "get": { + "tags": [ + "RenameEpisode" + ], + "parameters": [ + { + "name": "seriesId", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "seasonNumber", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/RenameEpisodeResource" + } + } + } + } + } + } + } + }, + "/api/v3/rootfolder": { + "post": { + "tags": [ + "RootFolder" + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RootFolderResource" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RootFolderResource" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/RootFolderResource" + } + } + } + } + } + }, + "get": { + "tags": [ + "RootFolder" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/RootFolderResource" + } + } + } + } + } + } + } + }, + "/api/v3/rootfolder/{id}": { + "delete": { + "tags": [ + "RootFolder" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "OK" + } + } + }, + "get": { + "tags": [ + "RootFolder" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RootFolderResource" + } + } + } + } + } + } + }, + "/api/v3/seasonpass": { + "post": { + "tags": [ + "SeasonPass" + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SeasonPassResource" + } + } + } + }, + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/api/v3/series": { + "get": { + "tags": [ + "Series" + ], + "parameters": [ + { + "name": "tvdbId", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "includeSeasonImages", + "in": "query", + "schema": { + "type": "boolean", + "default": false + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/SeriesResource" + } + } + } + } + } + } + }, + "post": { + "tags": [ + "Series" + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SeriesResource" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SeriesResource" + } + } + } + } + } + } + }, + "/api/v3/series/{id}": { + "get": { + "tags": [ + "Series" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "includeSeasonImages", + "in": "query", + "schema": { + "type": "boolean", + "default": false + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SeriesResource" + } + } + } + } + } + }, + "put": { + "tags": [ + "Series" + ], + "parameters": [ + { + "name": "moveFiles", + "in": "query", + "schema": { + "type": "boolean", + "default": false + } + }, + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SeriesResource" + } + } + } + }, + "responses": { + "202": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SeriesResource" + } + } + } + } + } + }, + "delete": { + "tags": [ + "Series" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "deleteFiles", + "in": "query", + "schema": { + "type": "boolean", + "default": false + } + }, + { + "name": "addImportListExclusion", + "in": "query", + "schema": { + "type": "boolean", + "default": false + } + } + ], + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/api/v3/series/editor": { + "put": { + "tags": [ + "SeriesEditor" + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SeriesEditorResource" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/SeriesEditorResource" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/SeriesEditorResource" + } + } + } + }, + "responses": { + "200": { + "description": "OK" + } + } + }, + "delete": { + "tags": [ + "SeriesEditor" + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SeriesEditorResource" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/SeriesEditorResource" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/SeriesEditorResource" + } + } + } + }, + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/api/v3/series/{id}/folder": { + "get": { + "tags": [ + "SeriesFolder" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/api/v3/series/import": { + "post": { + "tags": [ + "SeriesImport" + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/SeriesResource" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/SeriesResource" + } + } + }, + "application/*+json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/SeriesResource" + } + } + } + } + }, + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/api/v3/series/lookup": { + "get": { + "tags": [ + "SeriesLookup" + ], + "parameters": [ + { + "name": "term", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/SeriesResource" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/SeriesResource" + } + } + } + } + } + } + } + }, + "/content/{path}": { + "get": { + "tags": [ + "StaticResource" + ], + "parameters": [ + { + "name": "path", + "in": "path", + "required": true, + "schema": { + "pattern": "^(?!api/).*", + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/": { + "get": { + "tags": [ + "StaticResource" + ], + "parameters": [ + { + "name": "path", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/{path}": { + "get": { + "tags": [ + "StaticResource" + ], + "parameters": [ + { + "name": "path", + "in": "path", + "required": true, + "schema": { + "pattern": "^(?!(api|feed)/).*", + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/api/v3/system/status": { + "get": { + "tags": [ + "System" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SystemResource" + } + } + } + } + } + } + }, + "/api/v3/system/routes": { + "get": { + "tags": [ + "System" + ], + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/api/v3/system/routes/duplicate": { + "get": { + "tags": [ + "System" + ], + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/api/v3/system/shutdown": { + "post": { + "tags": [ + "System" + ], + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/api/v3/system/restart": { + "post": { + "tags": [ + "System" + ], + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/api/v3/tag": { + "get": { + "tags": [ + "Tag" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/TagResource" + } + } + } + } + } + } + }, + "post": { + "tags": [ + "Tag" + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TagResource" + } + } + } + }, + "responses": { + "201": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TagResource" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/TagResource" + } + } + } + } + } + } + }, + "/api/v3/tag/{id}": { + "put": { + "tags": [ + "Tag" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TagResource" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TagResource" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/TagResource" + } + } + } + } + } + }, + "delete": { + "tags": [ + "Tag" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "OK" + } + } + }, + "get": { + "tags": [ + "Tag" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TagResource" + } + } + } + } + } + } + }, + "/api/v3/tag/detail": { + "get": { + "tags": [ + "TagDetails" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/TagDetailsResource" + } + } + } + } + } + } + } + }, + "/api/v3/tag/detail/{id}": { + "get": { + "tags": [ + "TagDetails" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TagDetailsResource" + } + } + } + } + } + } + }, + "/api/v3/system/task": { + "get": { + "tags": [ + "Task" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/TaskResource" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/TaskResource" + } + } + } + } + } + } + } + }, + "/api/v3/system/task/{id}": { + "get": { + "tags": [ + "Task" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TaskResource" + } + } + } + } + } + } + }, + "/api/v3/config/ui/{id}": { + "put": { + "tags": [ + "UiConfig" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UiConfigResource" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UiConfigResource" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/UiConfigResource" + } + } + } + } + } + }, + "get": { + "tags": [ + "UiConfig" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UiConfigResource" + } + } + } + } + } + } + }, + "/api/v3/config/ui": { + "get": { + "tags": [ + "UiConfig" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UiConfigResource" + } + } + } + } + } + } + }, + "/api/v3/update": { + "get": { + "tags": [ + "Update" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/UpdateResource" + } + } + } + } + } + } + } + }, + "/api/v3/log/file/update": { + "get": { + "tags": [ + "UpdateLogFile" + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/LogFileResource" + } + } + } + } + } + } + } + }, + "/api/v3/log/file/update/{filename}": { + "get": { + "tags": [ + "UpdateLogFile" + ], + "parameters": [ + { + "name": "filename", + "in": "path", + "required": true, + "schema": { + "pattern": "[-.a-zA-Z0-9]+?\\.txt", + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK" + } + } + } + } + }, + "components": { + "schemas": { + "AddSeriesOptions": { + "type": "object", + "properties": { + "ignoreEpisodesWithFiles": { + "type": "boolean" + }, + "ignoreEpisodesWithoutFiles": { + "type": "boolean" + }, + "monitor": { + "$ref": "#/components/schemas/MonitorTypes" + }, + "searchForMissingEpisodes": { + "type": "boolean" + }, + "searchForCutoffUnmetEpisodes": { + "type": "boolean" + } + }, + "additionalProperties": false + }, + "AlternateTitleResource": { + "type": "object", + "properties": { + "title": { + "type": "string", + "nullable": true + }, + "seasonNumber": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "sceneSeasonNumber": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "sceneOrigin": { + "type": "string", + "nullable": true + }, + "comment": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "ApplyTags": { + "enum": [ + "add", + "remove", + "replace" + ], + "type": "string" + }, + "AuthenticationRequiredType": { + "enum": [ + "enabled", + "disabledForLocalAddresses" + ], + "type": "string" + }, + "AuthenticationType": { + "enum": [ + "none", + "basic", + "forms", + "external" + ], + "type": "string" + }, + "AutoTaggingResource": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "name": { + "type": "string", + "nullable": true + }, + "removeTagsAutomatically": { + "type": "boolean" + }, + "tags": { + "uniqueItems": true, + "type": "array", + "items": { + "type": "integer", + "format": "int32" + }, + "nullable": true + }, + "specifications": { + "type": "array", + "items": { + "$ref": "#/components/schemas/AutoTaggingSpecificationSchema" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "AutoTaggingSpecificationSchema": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "name": { + "type": "string", + "nullable": true + }, + "implementation": { + "type": "string", + "nullable": true + }, + "implementationName": { + "type": "string", + "nullable": true + }, + "negate": { + "type": "boolean" + }, + "required": { + "type": "boolean" + }, + "fields": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Field" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "BackupResource": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "name": { + "type": "string", + "nullable": true + }, + "path": { + "type": "string", + "nullable": true + }, + "type": { + "$ref": "#/components/schemas/BackupType" + }, + "size": { + "type": "integer", + "format": "int64" + }, + "time": { + "type": "string", + "format": "date-time" + } + }, + "additionalProperties": false + }, + "BackupType": { + "enum": [ + "scheduled", + "manual", + "update" + ], + "type": "string" + }, + "BlocklistBulkResource": { + "type": "object", + "properties": { + "ids": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "BlocklistResource": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "seriesId": { + "type": "integer", + "format": "int32" + }, + "episodeIds": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + }, + "nullable": true + }, + "sourceTitle": { + "type": "string", + "nullable": true + }, + "languages": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Language" + }, + "nullable": true + }, + "quality": { + "$ref": "#/components/schemas/QualityModel" + }, + "customFormats": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CustomFormatResource" + }, + "nullable": true + }, + "date": { + "type": "string", + "format": "date-time" + }, + "protocol": { + "$ref": "#/components/schemas/DownloadProtocol" + }, + "indexer": { + "type": "string", + "nullable": true + }, + "message": { + "type": "string", + "nullable": true + }, + "series": { + "$ref": "#/components/schemas/SeriesResource" + } + }, + "additionalProperties": false + }, + "BlocklistResourcePagingResource": { + "type": "object", + "properties": { + "page": { + "type": "integer", + "format": "int32" + }, + "pageSize": { + "type": "integer", + "format": "int32" + }, + "sortKey": { + "type": "string", + "nullable": true + }, + "sortDirection": { + "$ref": "#/components/schemas/SortDirection" + }, + "totalRecords": { + "type": "integer", + "format": "int32" + }, + "records": { + "type": "array", + "items": { + "$ref": "#/components/schemas/BlocklistResource" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "CertificateValidationType": { + "enum": [ + "enabled", + "disabledForLocalAddresses", + "disabled" + ], + "type": "string" + }, + "Command": { + "type": "object", + "properties": { + "sendUpdatesToClient": { + "type": "boolean" + }, + "updateScheduledTask": { + "type": "boolean", + "readOnly": true + }, + "completionMessage": { + "type": "string", + "nullable": true, + "readOnly": true + }, + "requiresDiskAccess": { + "type": "boolean", + "readOnly": true + }, + "isExclusive": { + "type": "boolean", + "readOnly": true + }, + "isLongRunning": { + "type": "boolean", + "readOnly": true + }, + "name": { + "type": "string", + "nullable": true, + "readOnly": true + }, + "lastExecutionTime": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "lastStartTime": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "trigger": { + "$ref": "#/components/schemas/CommandTrigger" + }, + "suppressMessages": { + "type": "boolean" + }, + "clientUserAgent": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "CommandPriority": { + "enum": [ + "normal", + "high", + "low" + ], + "type": "string" + }, + "CommandResource": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "name": { + "type": "string", + "nullable": true + }, + "commandName": { + "type": "string", + "nullable": true + }, + "message": { + "type": "string", + "nullable": true + }, + "body": { + "$ref": "#/components/schemas/Command" + }, + "priority": { + "$ref": "#/components/schemas/CommandPriority" + }, + "status": { + "$ref": "#/components/schemas/CommandStatus" + }, + "result": { + "$ref": "#/components/schemas/CommandResult" + }, + "queued": { + "type": "string", + "format": "date-time" + }, + "started": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "ended": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "duration": { + "type": "string", + "format": "date-span", + "nullable": true + }, + "exception": { + "type": "string", + "nullable": true + }, + "trigger": { + "$ref": "#/components/schemas/CommandTrigger" + }, + "clientUserAgent": { + "type": "string", + "nullable": true + }, + "stateChangeTime": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "sendUpdatesToClient": { + "type": "boolean" + }, + "updateScheduledTask": { + "type": "boolean" + }, + "lastExecutionTime": { + "type": "string", + "format": "date-time", + "nullable": true + } + }, + "additionalProperties": false + }, + "CommandResult": { + "enum": [ + "unknown", + "successful", + "unsuccessful" + ], + "type": "string" + }, + "CommandStatus": { + "enum": [ + "queued", + "started", + "completed", + "failed", + "aborted", + "cancelled", + "orphaned" + ], + "type": "string" + }, + "CommandTrigger": { + "enum": [ + "unspecified", + "manual", + "scheduled" + ], + "type": "string" + }, + "CustomFilterResource": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "type": { + "type": "string", + "nullable": true + }, + "label": { + "type": "string", + "nullable": true + }, + "filters": { + "type": "array", + "items": { + "type": "object", + "additionalProperties": { } + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "CustomFormatBulkResource": { + "type": "object", + "properties": { + "ids": { + "uniqueItems": true, + "type": "array", + "items": { + "type": "integer", + "format": "int32" + }, + "nullable": true + }, + "includeCustomFormatWhenRenaming": { + "type": "boolean", + "nullable": true + } + }, + "additionalProperties": false + }, + "CustomFormatResource": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "name": { + "type": "string", + "nullable": true + }, + "includeCustomFormatWhenRenaming": { + "type": "boolean", + "nullable": true + }, + "specifications": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CustomFormatSpecificationSchema" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "CustomFormatSpecificationSchema": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "name": { + "type": "string", + "nullable": true + }, + "implementation": { + "type": "string", + "nullable": true + }, + "implementationName": { + "type": "string", + "nullable": true + }, + "infoLink": { + "type": "string", + "nullable": true + }, + "negate": { + "type": "boolean" + }, + "required": { + "type": "boolean" + }, + "fields": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Field" + }, + "nullable": true + }, + "presets": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CustomFormatSpecificationSchema" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "DatabaseType": { + "enum": [ + "sqLite", + "postgreSQL" + ], + "type": "string" + }, + "DelayProfileResource": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "enableUsenet": { + "type": "boolean" + }, + "enableTorrent": { + "type": "boolean" + }, + "preferredProtocol": { + "$ref": "#/components/schemas/DownloadProtocol" + }, + "usenetDelay": { + "type": "integer", + "format": "int32" + }, + "torrentDelay": { + "type": "integer", + "format": "int32" + }, + "bypassIfHighestQuality": { + "type": "boolean" + }, + "bypassIfAboveCustomFormatScore": { + "type": "boolean" + }, + "minimumCustomFormatScore": { + "type": "integer", + "format": "int32" + }, + "order": { + "type": "integer", + "format": "int32" + }, + "tags": { + "uniqueItems": true, + "type": "array", + "items": { + "type": "integer", + "format": "int32" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "DiskSpaceResource": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "path": { + "type": "string", + "nullable": true + }, + "label": { + "type": "string", + "nullable": true + }, + "freeSpace": { + "type": "integer", + "format": "int64" + }, + "totalSpace": { + "type": "integer", + "format": "int64" + } + }, + "additionalProperties": false + }, + "DownloadClientBulkResource": { + "type": "object", + "properties": { + "ids": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + }, + "nullable": true + }, + "tags": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + }, + "nullable": true + }, + "applyTags": { + "$ref": "#/components/schemas/ApplyTags" + }, + "enable": { + "type": "boolean", + "nullable": true + }, + "priority": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "removeCompletedDownloads": { + "type": "boolean", + "nullable": true + }, + "removeFailedDownloads": { + "type": "boolean", + "nullable": true + } + }, + "additionalProperties": false + }, + "DownloadClientConfigResource": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "downloadClientWorkingFolders": { + "type": "string", + "nullable": true + }, + "enableCompletedDownloadHandling": { + "type": "boolean" + }, + "autoRedownloadFailed": { + "type": "boolean" + }, + "autoRedownloadFailedFromInteractiveSearch": { + "type": "boolean" + } + }, + "additionalProperties": false + }, + "DownloadClientResource": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "name": { + "type": "string", + "nullable": true + }, + "fields": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Field" + }, + "nullable": true + }, + "implementationName": { + "type": "string", + "nullable": true + }, + "implementation": { + "type": "string", + "nullable": true + }, + "configContract": { + "type": "string", + "nullable": true + }, + "infoLink": { + "type": "string", + "nullable": true + }, + "message": { + "$ref": "#/components/schemas/ProviderMessage" + }, + "tags": { + "uniqueItems": true, + "type": "array", + "items": { + "type": "integer", + "format": "int32" + }, + "nullable": true + }, + "presets": { + "type": "array", + "items": { + "$ref": "#/components/schemas/DownloadClientResource" + }, + "nullable": true + }, + "enable": { + "type": "boolean" + }, + "protocol": { + "$ref": "#/components/schemas/DownloadProtocol" + }, + "priority": { + "type": "integer", + "format": "int32" + }, + "removeCompletedDownloads": { + "type": "boolean" + }, + "removeFailedDownloads": { + "type": "boolean" + } + }, + "additionalProperties": false + }, + "DownloadProtocol": { + "enum": [ + "unknown", + "usenet", + "torrent" + ], + "type": "string" + }, + "EpisodeFileListResource": { + "type": "object", + "properties": { + "episodeFileIds": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + }, + "nullable": true + }, + "languages": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Language" + }, + "nullable": true + }, + "quality": { + "$ref": "#/components/schemas/QualityModel" + }, + "sceneName": { + "type": "string", + "nullable": true + }, + "releaseGroup": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "EpisodeFileResource": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "seriesId": { + "type": "integer", + "format": "int32" + }, + "seasonNumber": { + "type": "integer", + "format": "int32" + }, + "relativePath": { + "type": "string", + "nullable": true + }, + "path": { + "type": "string", + "nullable": true + }, + "size": { + "type": "integer", + "format": "int64" + }, + "dateAdded": { + "type": "string", + "format": "date-time" + }, + "sceneName": { + "type": "string", + "nullable": true + }, + "releaseGroup": { + "type": "string", + "nullable": true + }, + "languages": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Language" + }, + "nullable": true + }, + "quality": { + "$ref": "#/components/schemas/QualityModel" + }, + "customFormats": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CustomFormatResource" + }, + "nullable": true + }, + "customFormatScore": { + "type": "integer", + "format": "int32" + }, + "indexerFlags": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "releaseType": { + "$ref": "#/components/schemas/ReleaseType" + }, + "mediaInfo": { + "$ref": "#/components/schemas/MediaInfoResource" + }, + "qualityCutoffNotMet": { + "type": "boolean" + } + }, + "additionalProperties": false + }, + "EpisodeHistoryEventType": { + "enum": [ + "unknown", + "grabbed", + "seriesFolderImported", + "downloadFolderImported", + "downloadFailed", + "episodeFileDeleted", + "episodeFileRenamed", + "downloadIgnored" + ], + "type": "string" + }, + "EpisodeResource": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "seriesId": { + "type": "integer", + "format": "int32" + }, + "tvdbId": { + "type": "integer", + "format": "int32" + }, + "episodeFileId": { + "type": "integer", + "format": "int32" + }, + "seasonNumber": { + "type": "integer", + "format": "int32" + }, + "episodeNumber": { + "type": "integer", + "format": "int32" + }, + "title": { + "type": "string", + "nullable": true + }, + "airDate": { + "type": "string", + "nullable": true + }, + "airDateUtc": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "lastSearchTime": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "runtime": { + "type": "integer", + "format": "int32" + }, + "finaleType": { + "type": "string", + "nullable": true + }, + "overview": { + "type": "string", + "nullable": true + }, + "episodeFile": { + "$ref": "#/components/schemas/EpisodeFileResource" + }, + "hasFile": { + "type": "boolean" + }, + "monitored": { + "type": "boolean" + }, + "absoluteEpisodeNumber": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "sceneAbsoluteEpisodeNumber": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "sceneEpisodeNumber": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "sceneSeasonNumber": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "unverifiedSceneNumbering": { + "type": "boolean" + }, + "endTime": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "grabDate": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "series": { + "$ref": "#/components/schemas/SeriesResource" + }, + "images": { + "type": "array", + "items": { + "$ref": "#/components/schemas/MediaCover" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "EpisodeResourcePagingResource": { + "type": "object", + "properties": { + "page": { + "type": "integer", + "format": "int32" + }, + "pageSize": { + "type": "integer", + "format": "int32" + }, + "sortKey": { + "type": "string", + "nullable": true + }, + "sortDirection": { + "$ref": "#/components/schemas/SortDirection" + }, + "totalRecords": { + "type": "integer", + "format": "int32" + }, + "records": { + "type": "array", + "items": { + "$ref": "#/components/schemas/EpisodeResource" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "EpisodeTitleRequiredType": { + "enum": [ + "always", + "bulkSeasonReleases", + "never" + ], + "type": "string" + }, + "EpisodesMonitoredResource": { + "type": "object", + "properties": { + "episodeIds": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + }, + "nullable": true + }, + "monitored": { + "type": "boolean" + } + }, + "additionalProperties": false + }, + "Field": { + "type": "object", + "properties": { + "order": { + "type": "integer", + "format": "int32" + }, + "name": { + "type": "string", + "nullable": true + }, + "label": { + "type": "string", + "nullable": true + }, + "unit": { + "type": "string", + "nullable": true + }, + "helpText": { + "type": "string", + "nullable": true + }, + "helpTextWarning": { + "type": "string", + "nullable": true + }, + "helpLink": { + "type": "string", + "nullable": true + }, + "value": { + "nullable": true + }, + "type": { + "type": "string", + "nullable": true + }, + "advanced": { + "type": "boolean" + }, + "selectOptions": { + "type": "array", + "items": { + "$ref": "#/components/schemas/SelectOption" + }, + "nullable": true + }, + "selectOptionsProviderAction": { + "type": "string", + "nullable": true + }, + "section": { + "type": "string", + "nullable": true + }, + "hidden": { + "type": "string", + "nullable": true + }, + "privacy": { + "$ref": "#/components/schemas/PrivacyLevel" + }, + "placeholder": { + "type": "string", + "nullable": true + }, + "isFloat": { + "type": "boolean" + } + }, + "additionalProperties": false + }, + "FileDateType": { + "enum": [ + "none", + "localAirDate", + "utcAirDate" + ], + "type": "string" + }, + "HealthCheckResult": { + "enum": [ + "ok", + "notice", + "warning", + "error" + ], + "type": "string" + }, + "HealthResource": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "source": { + "type": "string", + "nullable": true + }, + "type": { + "$ref": "#/components/schemas/HealthCheckResult" + }, + "message": { + "type": "string", + "nullable": true + }, + "wikiUrl": { + "$ref": "#/components/schemas/HttpUri" + } + }, + "additionalProperties": false + }, + "HistoryResource": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "episodeId": { + "type": "integer", + "format": "int32" + }, + "seriesId": { + "type": "integer", + "format": "int32" + }, + "sourceTitle": { + "type": "string", + "nullable": true + }, + "languages": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Language" + }, + "nullable": true + }, + "quality": { + "$ref": "#/components/schemas/QualityModel" + }, + "customFormats": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CustomFormatResource" + }, + "nullable": true + }, + "customFormatScore": { + "type": "integer", + "format": "int32" + }, + "qualityCutoffNotMet": { + "type": "boolean" + }, + "date": { + "type": "string", + "format": "date-time" + }, + "downloadId": { + "type": "string", + "nullable": true + }, + "eventType": { + "$ref": "#/components/schemas/EpisodeHistoryEventType" + }, + "data": { + "type": "object", + "additionalProperties": { + "type": "string", + "nullable": true + }, + "nullable": true + }, + "episode": { + "$ref": "#/components/schemas/EpisodeResource" + }, + "series": { + "$ref": "#/components/schemas/SeriesResource" + } + }, + "additionalProperties": false + }, + "HistoryResourcePagingResource": { + "type": "object", + "properties": { + "page": { + "type": "integer", + "format": "int32" + }, + "pageSize": { + "type": "integer", + "format": "int32" + }, + "sortKey": { + "type": "string", + "nullable": true + }, + "sortDirection": { + "$ref": "#/components/schemas/SortDirection" + }, + "totalRecords": { + "type": "integer", + "format": "int32" + }, + "records": { + "type": "array", + "items": { + "$ref": "#/components/schemas/HistoryResource" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "HostConfigResource": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "bindAddress": { + "type": "string", + "nullable": true + }, + "port": { + "type": "integer", + "format": "int32" + }, + "sslPort": { + "type": "integer", + "format": "int32" + }, + "enableSsl": { + "type": "boolean" + }, + "launchBrowser": { + "type": "boolean" + }, + "authenticationMethod": { + "$ref": "#/components/schemas/AuthenticationType" + }, + "authenticationRequired": { + "$ref": "#/components/schemas/AuthenticationRequiredType" + }, + "analyticsEnabled": { + "type": "boolean" + }, + "username": { + "type": "string", + "nullable": true + }, + "password": { + "type": "string", + "nullable": true + }, + "passwordConfirmation": { + "type": "string", + "nullable": true + }, + "logLevel": { + "type": "string", + "nullable": true + }, + "logSizeLimit": { + "type": "integer", + "format": "int32" + }, + "consoleLogLevel": { + "type": "string", + "nullable": true + }, + "branch": { + "type": "string", + "nullable": true + }, + "apiKey": { + "type": "string", + "nullable": true + }, + "sslCertPath": { + "type": "string", + "nullable": true + }, + "sslCertPassword": { + "type": "string", + "nullable": true + }, + "urlBase": { + "type": "string", + "nullable": true + }, + "instanceName": { + "type": "string", + "nullable": true + }, + "applicationUrl": { + "type": "string", + "nullable": true + }, + "updateAutomatically": { + "type": "boolean" + }, + "updateMechanism": { + "$ref": "#/components/schemas/UpdateMechanism" + }, + "updateScriptPath": { + "type": "string", + "nullable": true + }, + "proxyEnabled": { + "type": "boolean" + }, + "proxyType": { + "$ref": "#/components/schemas/ProxyType" + }, + "proxyHostname": { + "type": "string", + "nullable": true + }, + "proxyPort": { + "type": "integer", + "format": "int32" + }, + "proxyUsername": { + "type": "string", + "nullable": true + }, + "proxyPassword": { + "type": "string", + "nullable": true + }, + "proxyBypassFilter": { + "type": "string", + "nullable": true + }, + "proxyBypassLocalAddresses": { + "type": "boolean" + }, + "certificateValidation": { + "$ref": "#/components/schemas/CertificateValidationType" + }, + "backupFolder": { + "type": "string", + "nullable": true + }, + "backupInterval": { + "type": "integer", + "format": "int32" + }, + "backupRetention": { + "type": "integer", + "format": "int32" + }, + "trustCgnatIpAddresses": { + "type": "boolean" + } + }, + "additionalProperties": false + }, + "HttpUri": { + "type": "object", + "properties": { + "fullUri": { + "type": "string", + "nullable": true, + "readOnly": true + }, + "scheme": { + "type": "string", + "nullable": true, + "readOnly": true + }, + "host": { + "type": "string", + "nullable": true, + "readOnly": true + }, + "port": { + "type": "integer", + "format": "int32", + "nullable": true, + "readOnly": true + }, + "path": { + "type": "string", + "nullable": true, + "readOnly": true + }, + "query": { + "type": "string", + "nullable": true, + "readOnly": true + }, + "fragment": { + "type": "string", + "nullable": true, + "readOnly": true + } + }, + "additionalProperties": false + }, + "ImportListBulkResource": { + "type": "object", + "properties": { + "ids": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + }, + "nullable": true + }, + "tags": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + }, + "nullable": true + }, + "applyTags": { + "$ref": "#/components/schemas/ApplyTags" + }, + "enableAutomaticAdd": { + "type": "boolean", + "nullable": true + }, + "rootFolderPath": { + "type": "string", + "nullable": true + }, + "qualityProfileId": { + "type": "integer", + "format": "int32", + "nullable": true + } + }, + "additionalProperties": false + }, + "ImportListConfigResource": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "listSyncLevel": { + "$ref": "#/components/schemas/ListSyncLevelType" + }, + "listSyncTag": { + "type": "integer", + "format": "int32" + } + }, + "additionalProperties": false + }, + "ImportListExclusionBulkResource": { + "type": "object", + "properties": { + "ids": { + "uniqueItems": true, + "type": "array", + "items": { + "type": "integer", + "format": "int32" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "ImportListExclusionResource": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "tvdbId": { + "type": "integer", + "format": "int32" + }, + "title": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "ImportListExclusionResourcePagingResource": { + "type": "object", + "properties": { + "page": { + "type": "integer", + "format": "int32" + }, + "pageSize": { + "type": "integer", + "format": "int32" + }, + "sortKey": { + "type": "string", + "nullable": true + }, + "sortDirection": { + "$ref": "#/components/schemas/SortDirection" + }, + "totalRecords": { + "type": "integer", + "format": "int32" + }, + "records": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ImportListExclusionResource" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "ImportListResource": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "name": { + "type": "string", + "nullable": true + }, + "fields": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Field" + }, + "nullable": true + }, + "implementationName": { + "type": "string", + "nullable": true + }, + "implementation": { + "type": "string", + "nullable": true + }, + "configContract": { + "type": "string", + "nullable": true + }, + "infoLink": { + "type": "string", + "nullable": true + }, + "message": { + "$ref": "#/components/schemas/ProviderMessage" + }, + "tags": { + "uniqueItems": true, + "type": "array", + "items": { + "type": "integer", + "format": "int32" + }, + "nullable": true + }, + "presets": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ImportListResource" + }, + "nullable": true + }, + "enableAutomaticAdd": { + "type": "boolean" + }, + "searchForMissingEpisodes": { + "type": "boolean" + }, + "shouldMonitor": { + "$ref": "#/components/schemas/MonitorTypes" + }, + "monitorNewItems": { + "$ref": "#/components/schemas/NewItemMonitorTypes" + }, + "rootFolderPath": { + "type": "string", + "nullable": true + }, + "qualityProfileId": { + "type": "integer", + "format": "int32" + }, + "seriesType": { + "$ref": "#/components/schemas/SeriesTypes" + }, + "seasonFolder": { + "type": "boolean" + }, + "listType": { + "$ref": "#/components/schemas/ImportListType" + }, + "listOrder": { + "type": "integer", + "format": "int32" + }, + "minRefreshInterval": { + "type": "string", + "format": "date-span" + } + }, + "additionalProperties": false + }, + "ImportListType": { + "enum": [ + "program", + "plex", + "trakt", + "simkl", + "other", + "advanced" + ], + "type": "string" + }, + "ImportRejectionResource": { + "type": "object", + "properties": { + "reason": { + "type": "string", + "nullable": true + }, + "type": { + "$ref": "#/components/schemas/RejectionType" + } + }, + "additionalProperties": false + }, + "IndexerBulkResource": { + "type": "object", + "properties": { + "ids": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + }, + "nullable": true + }, + "tags": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + }, + "nullable": true + }, + "applyTags": { + "$ref": "#/components/schemas/ApplyTags" + }, + "enableRss": { + "type": "boolean", + "nullable": true + }, + "enableAutomaticSearch": { + "type": "boolean", + "nullable": true + }, + "enableInteractiveSearch": { + "type": "boolean", + "nullable": true + }, + "priority": { + "type": "integer", + "format": "int32", + "nullable": true + } + }, + "additionalProperties": false + }, + "IndexerConfigResource": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "minimumAge": { + "type": "integer", + "format": "int32" + }, + "retention": { + "type": "integer", + "format": "int32" + }, + "maximumSize": { + "type": "integer", + "format": "int32" + }, + "rssSyncInterval": { + "type": "integer", + "format": "int32" + } + }, + "additionalProperties": false + }, + "IndexerFlagResource": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "name": { + "type": "string", + "nullable": true + }, + "nameLower": { + "type": "string", + "nullable": true, + "readOnly": true + } + }, + "additionalProperties": false + }, + "IndexerResource": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "name": { + "type": "string", + "nullable": true + }, + "fields": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Field" + }, + "nullable": true + }, + "implementationName": { + "type": "string", + "nullable": true + }, + "implementation": { + "type": "string", + "nullable": true + }, + "configContract": { + "type": "string", + "nullable": true + }, + "infoLink": { + "type": "string", + "nullable": true + }, + "message": { + "$ref": "#/components/schemas/ProviderMessage" + }, + "tags": { + "uniqueItems": true, + "type": "array", + "items": { + "type": "integer", + "format": "int32" + }, + "nullable": true + }, + "presets": { + "type": "array", + "items": { + "$ref": "#/components/schemas/IndexerResource" + }, + "nullable": true + }, + "enableRss": { + "type": "boolean" + }, + "enableAutomaticSearch": { + "type": "boolean" + }, + "enableInteractiveSearch": { + "type": "boolean" + }, + "supportsRss": { + "type": "boolean" + }, + "supportsSearch": { + "type": "boolean" + }, + "protocol": { + "$ref": "#/components/schemas/DownloadProtocol" + }, + "priority": { + "type": "integer", + "format": "int32" + }, + "seasonSearchMaximumSingleEpisodeAge": { + "type": "integer", + "format": "int32" + }, + "downloadClientId": { + "type": "integer", + "format": "int32" + } + }, + "additionalProperties": false + }, + "Language": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "name": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "LanguageProfileItemResource": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "language": { + "$ref": "#/components/schemas/Language" + }, + "allowed": { + "type": "boolean" + } + }, + "additionalProperties": false + }, + "LanguageProfileResource": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "name": { + "type": "string", + "nullable": true + }, + "upgradeAllowed": { + "type": "boolean" + }, + "cutoff": { + "$ref": "#/components/schemas/Language" + }, + "languages": { + "type": "array", + "items": { + "$ref": "#/components/schemas/LanguageProfileItemResource" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "LanguageResource": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "name": { + "type": "string", + "nullable": true + }, + "nameLower": { + "type": "string", + "nullable": true, + "readOnly": true + } + }, + "additionalProperties": false + }, + "ListSyncLevelType": { + "enum": [ + "disabled", + "logOnly", + "keepAndUnmonitor", + "keepAndTag" + ], + "type": "string" + }, + "LocalizationLanguageResource": { + "type": "object", + "properties": { + "identifier": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "LocalizationResource": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "strings": { + "type": "object", + "additionalProperties": { + "type": "string", + "nullable": true + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "LogFileResource": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "filename": { + "type": "string", + "nullable": true + }, + "lastWriteTime": { + "type": "string", + "format": "date-time" + }, + "contentsUrl": { + "type": "string", + "nullable": true + }, + "downloadUrl": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "LogResource": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "time": { + "type": "string", + "format": "date-time" + }, + "exception": { + "type": "string", + "nullable": true + }, + "exceptionType": { + "type": "string", + "nullable": true + }, + "level": { + "type": "string", + "nullable": true + }, + "logger": { + "type": "string", + "nullable": true + }, + "message": { + "type": "string", + "nullable": true + }, + "method": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "LogResourcePagingResource": { + "type": "object", + "properties": { + "page": { + "type": "integer", + "format": "int32" + }, + "pageSize": { + "type": "integer", + "format": "int32" + }, + "sortKey": { + "type": "string", + "nullable": true + }, + "sortDirection": { + "$ref": "#/components/schemas/SortDirection" + }, + "totalRecords": { + "type": "integer", + "format": "int32" + }, + "records": { + "type": "array", + "items": { + "$ref": "#/components/schemas/LogResource" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "ManualImportReprocessResource": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "path": { + "type": "string", + "nullable": true + }, + "seriesId": { + "type": "integer", + "format": "int32" + }, + "seasonNumber": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "episodes": { + "type": "array", + "items": { + "$ref": "#/components/schemas/EpisodeResource" + }, + "nullable": true + }, + "episodeIds": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + }, + "nullable": true + }, + "quality": { + "$ref": "#/components/schemas/QualityModel" + }, + "languages": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Language" + }, + "nullable": true + }, + "releaseGroup": { + "type": "string", + "nullable": true + }, + "downloadId": { + "type": "string", + "nullable": true + }, + "customFormats": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CustomFormatResource" + }, + "nullable": true + }, + "customFormatScore": { + "type": "integer", + "format": "int32" + }, + "indexerFlags": { + "type": "integer", + "format": "int32" + }, + "releaseType": { + "$ref": "#/components/schemas/ReleaseType" + }, + "rejections": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ImportRejectionResource" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "ManualImportResource": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "path": { + "type": "string", + "nullable": true + }, + "relativePath": { + "type": "string", + "nullable": true + }, + "folderName": { + "type": "string", + "nullable": true + }, + "name": { + "type": "string", + "nullable": true + }, + "size": { + "type": "integer", + "format": "int64" + }, + "series": { + "$ref": "#/components/schemas/SeriesResource" + }, + "seasonNumber": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "episodes": { + "type": "array", + "items": { + "$ref": "#/components/schemas/EpisodeResource" + }, + "nullable": true + }, + "episodeFileId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "releaseGroup": { + "type": "string", + "nullable": true + }, + "quality": { + "$ref": "#/components/schemas/QualityModel" + }, + "languages": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Language" + }, + "nullable": true + }, + "qualityWeight": { + "type": "integer", + "format": "int32" + }, + "downloadId": { + "type": "string", + "nullable": true + }, + "customFormats": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CustomFormatResource" + }, + "nullable": true + }, + "customFormatScore": { + "type": "integer", + "format": "int32" + }, + "indexerFlags": { + "type": "integer", + "format": "int32" + }, + "releaseType": { + "$ref": "#/components/schemas/ReleaseType" + }, + "rejections": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ImportRejectionResource" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "MediaCover": { + "type": "object", + "properties": { + "coverType": { + "$ref": "#/components/schemas/MediaCoverTypes" + }, + "url": { + "type": "string", + "nullable": true + }, + "remoteUrl": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "MediaCoverTypes": { + "enum": [ + "unknown", + "poster", + "banner", + "fanart", + "screenshot", + "headshot", + "clearlogo" + ], + "type": "string" + }, + "MediaInfoResource": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "audioBitrate": { + "type": "integer", + "format": "int64" + }, + "audioChannels": { + "type": "number", + "format": "double" + }, + "audioCodec": { + "type": "string", + "nullable": true + }, + "audioLanguages": { + "type": "string", + "nullable": true + }, + "audioStreamCount": { + "type": "integer", + "format": "int32" + }, + "videoBitDepth": { + "type": "integer", + "format": "int32" + }, + "videoBitrate": { + "type": "integer", + "format": "int64" + }, + "videoCodec": { + "type": "string", + "nullable": true + }, + "videoFps": { + "type": "number", + "format": "double" + }, + "videoDynamicRange": { + "type": "string", + "nullable": true + }, + "videoDynamicRangeType": { + "type": "string", + "nullable": true + }, + "resolution": { + "type": "string", + "nullable": true + }, + "runTime": { + "type": "string", + "nullable": true + }, + "scanType": { + "type": "string", + "nullable": true + }, + "subtitles": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "MediaManagementConfigResource": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "autoUnmonitorPreviouslyDownloadedEpisodes": { + "type": "boolean" + }, + "recycleBin": { + "type": "string", + "nullable": true + }, + "recycleBinCleanupDays": { + "type": "integer", + "format": "int32" + }, + "downloadPropersAndRepacks": { + "$ref": "#/components/schemas/ProperDownloadTypes" + }, + "createEmptySeriesFolders": { + "type": "boolean" + }, + "deleteEmptyFolders": { + "type": "boolean" + }, + "fileDate": { + "$ref": "#/components/schemas/FileDateType" + }, + "rescanAfterRefresh": { + "$ref": "#/components/schemas/RescanAfterRefreshType" + }, + "setPermissionsLinux": { + "type": "boolean" + }, + "chmodFolder": { + "type": "string", + "nullable": true + }, + "chownGroup": { + "type": "string", + "nullable": true + }, + "episodeTitleRequired": { + "$ref": "#/components/schemas/EpisodeTitleRequiredType" + }, + "skipFreeSpaceCheckWhenImporting": { + "type": "boolean" + }, + "minimumFreeSpaceWhenImporting": { + "type": "integer", + "format": "int32" + }, + "copyUsingHardlinks": { + "type": "boolean" + }, + "useScriptImport": { + "type": "boolean" + }, + "scriptImportPath": { + "type": "string", + "nullable": true + }, + "importExtraFiles": { + "type": "boolean" + }, + "extraFileExtensions": { + "type": "string", + "nullable": true + }, + "enableMediaInfo": { + "type": "boolean" + } + }, + "additionalProperties": false + }, + "MetadataResource": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "name": { + "type": "string", + "nullable": true + }, + "fields": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Field" + }, + "nullable": true + }, + "implementationName": { + "type": "string", + "nullable": true + }, + "implementation": { + "type": "string", + "nullable": true + }, + "configContract": { + "type": "string", + "nullable": true + }, + "infoLink": { + "type": "string", + "nullable": true + }, + "message": { + "$ref": "#/components/schemas/ProviderMessage" + }, + "tags": { + "uniqueItems": true, + "type": "array", + "items": { + "type": "integer", + "format": "int32" + }, + "nullable": true + }, + "presets": { + "type": "array", + "items": { + "$ref": "#/components/schemas/MetadataResource" + }, + "nullable": true + }, + "enable": { + "type": "boolean" + } + }, + "additionalProperties": false + }, + "MonitorTypes": { + "enum": [ + "unknown", + "all", + "future", + "missing", + "existing", + "firstSeason", + "lastSeason", + "latestSeason", + "pilot", + "recent", + "monitorSpecials", + "unmonitorSpecials", + "none", + "skip" + ], + "type": "string" + }, + "MonitoringOptions": { + "type": "object", + "properties": { + "ignoreEpisodesWithFiles": { + "type": "boolean" + }, + "ignoreEpisodesWithoutFiles": { + "type": "boolean" + }, + "monitor": { + "$ref": "#/components/schemas/MonitorTypes" + } + }, + "additionalProperties": false + }, + "NamingConfigResource": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "renameEpisodes": { + "type": "boolean" + }, + "replaceIllegalCharacters": { + "type": "boolean" + }, + "colonReplacementFormat": { + "type": "integer", + "format": "int32" + }, + "customColonReplacementFormat": { + "type": "string", + "nullable": true + }, + "multiEpisodeStyle": { + "type": "integer", + "format": "int32" + }, + "standardEpisodeFormat": { + "type": "string", + "nullable": true + }, + "dailyEpisodeFormat": { + "type": "string", + "nullable": true + }, + "animeEpisodeFormat": { + "type": "string", + "nullable": true + }, + "seriesFolderFormat": { + "type": "string", + "nullable": true + }, + "seasonFolderFormat": { + "type": "string", + "nullable": true + }, + "specialsFolderFormat": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "NewItemMonitorTypes": { + "enum": [ + "all", + "none" + ], + "type": "string" + }, + "NotificationResource": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "name": { + "type": "string", + "nullable": true + }, + "fields": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Field" + }, + "nullable": true + }, + "implementationName": { + "type": "string", + "nullable": true + }, + "implementation": { + "type": "string", + "nullable": true + }, + "configContract": { + "type": "string", + "nullable": true + }, + "infoLink": { + "type": "string", + "nullable": true + }, + "message": { + "$ref": "#/components/schemas/ProviderMessage" + }, + "tags": { + "uniqueItems": true, + "type": "array", + "items": { + "type": "integer", + "format": "int32" + }, + "nullable": true + }, + "presets": { + "type": "array", + "items": { + "$ref": "#/components/schemas/NotificationResource" + }, + "nullable": true + }, + "link": { + "type": "string", + "nullable": true + }, + "onGrab": { + "type": "boolean" + }, + "onDownload": { + "type": "boolean" + }, + "onUpgrade": { + "type": "boolean" + }, + "onImportComplete": { + "type": "boolean" + }, + "onRename": { + "type": "boolean" + }, + "onSeriesAdd": { + "type": "boolean" + }, + "onSeriesDelete": { + "type": "boolean" + }, + "onEpisodeFileDelete": { + "type": "boolean" + }, + "onEpisodeFileDeleteForUpgrade": { + "type": "boolean" + }, + "onHealthIssue": { + "type": "boolean" + }, + "includeHealthWarnings": { + "type": "boolean" + }, + "onHealthRestored": { + "type": "boolean" + }, + "onApplicationUpdate": { + "type": "boolean" + }, + "onManualInteractionRequired": { + "type": "boolean" + }, + "supportsOnGrab": { + "type": "boolean" + }, + "supportsOnDownload": { + "type": "boolean" + }, + "supportsOnUpgrade": { + "type": "boolean" + }, + "supportsOnImportComplete": { + "type": "boolean" + }, + "supportsOnRename": { + "type": "boolean" + }, + "supportsOnSeriesAdd": { + "type": "boolean" + }, + "supportsOnSeriesDelete": { + "type": "boolean" + }, + "supportsOnEpisodeFileDelete": { + "type": "boolean" + }, + "supportsOnEpisodeFileDeleteForUpgrade": { + "type": "boolean" + }, + "supportsOnHealthIssue": { + "type": "boolean" + }, + "supportsOnHealthRestored": { + "type": "boolean" + }, + "supportsOnApplicationUpdate": { + "type": "boolean" + }, + "supportsOnManualInteractionRequired": { + "type": "boolean" + }, + "testCommand": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "ParseResource": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "title": { + "type": "string", + "nullable": true + }, + "parsedEpisodeInfo": { + "$ref": "#/components/schemas/ParsedEpisodeInfo" + }, + "series": { + "$ref": "#/components/schemas/SeriesResource" + }, + "episodes": { + "type": "array", + "items": { + "$ref": "#/components/schemas/EpisodeResource" + }, + "nullable": true + }, + "languages": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Language" + }, + "nullable": true + }, + "customFormats": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CustomFormatResource" + }, + "nullable": true + }, + "customFormatScore": { + "type": "integer", + "format": "int32" + } + }, + "additionalProperties": false + }, + "ParsedEpisodeInfo": { + "type": "object", + "properties": { + "releaseTitle": { + "type": "string", + "nullable": true + }, + "seriesTitle": { + "type": "string", + "nullable": true + }, + "seriesTitleInfo": { + "$ref": "#/components/schemas/SeriesTitleInfo" + }, + "quality": { + "$ref": "#/components/schemas/QualityModel" + }, + "seasonNumber": { + "type": "integer", + "format": "int32" + }, + "episodeNumbers": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + }, + "nullable": true + }, + "absoluteEpisodeNumbers": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + }, + "nullable": true + }, + "specialAbsoluteEpisodeNumbers": { + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "nullable": true + }, + "airDate": { + "type": "string", + "nullable": true + }, + "languages": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Language" + }, + "nullable": true + }, + "fullSeason": { + "type": "boolean" + }, + "isPartialSeason": { + "type": "boolean" + }, + "isMultiSeason": { + "type": "boolean" + }, + "isSeasonExtra": { + "type": "boolean" + }, + "isSplitEpisode": { + "type": "boolean" + }, + "isMiniSeries": { + "type": "boolean" + }, + "special": { + "type": "boolean" + }, + "releaseGroup": { + "type": "string", + "nullable": true + }, + "releaseHash": { + "type": "string", + "nullable": true + }, + "seasonPart": { + "type": "integer", + "format": "int32" + }, + "releaseTokens": { + "type": "string", + "nullable": true + }, + "dailyPart": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "isDaily": { + "type": "boolean", + "readOnly": true + }, + "isAbsoluteNumbering": { + "type": "boolean", + "readOnly": true + }, + "isPossibleSpecialEpisode": { + "type": "boolean", + "readOnly": true + }, + "isPossibleSceneSeasonSpecial": { + "type": "boolean", + "readOnly": true + }, + "releaseType": { + "$ref": "#/components/schemas/ReleaseType" + } + }, + "additionalProperties": false + }, + "PingResource": { + "type": "object", + "properties": { + "status": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "PrivacyLevel": { + "enum": [ + "normal", + "password", + "apiKey", + "userName" + ], + "type": "string" + }, + "ProfileFormatItemResource": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "format": { + "type": "integer", + "format": "int32" + }, + "name": { + "type": "string", + "nullable": true + }, + "score": { + "type": "integer", + "format": "int32" + } + }, + "additionalProperties": false + }, + "ProperDownloadTypes": { + "enum": [ + "preferAndUpgrade", + "doNotUpgrade", + "doNotPrefer" + ], + "type": "string" + }, + "ProviderMessage": { + "type": "object", + "properties": { + "message": { + "type": "string", + "nullable": true + }, + "type": { + "$ref": "#/components/schemas/ProviderMessageType" + } + }, + "additionalProperties": false + }, + "ProviderMessageType": { + "enum": [ + "info", + "warning", + "error" + ], + "type": "string" + }, + "ProxyType": { + "enum": [ + "http", + "socks4", + "socks5" + ], + "type": "string" + }, + "Quality": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "name": { + "type": "string", + "nullable": true + }, + "source": { + "$ref": "#/components/schemas/QualitySource" + }, + "resolution": { + "type": "integer", + "format": "int32" + } + }, + "additionalProperties": false + }, + "QualityDefinitionLimitsResource": { + "type": "object", + "properties": { + "min": { + "type": "integer", + "format": "int32" + }, + "max": { + "type": "integer", + "format": "int32" + } + }, + "additionalProperties": false + }, + "QualityDefinitionResource": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "quality": { + "$ref": "#/components/schemas/Quality" + }, + "title": { + "type": "string", + "nullable": true + }, + "weight": { + "type": "integer", + "format": "int32" + }, + "minSize": { + "type": "number", + "format": "double", + "nullable": true + }, + "maxSize": { + "type": "number", + "format": "double", + "nullable": true + }, + "preferredSize": { + "type": "number", + "format": "double", + "nullable": true + } + }, + "additionalProperties": false + }, + "QualityModel": { + "type": "object", + "properties": { + "quality": { + "$ref": "#/components/schemas/Quality" + }, + "revision": { + "$ref": "#/components/schemas/Revision" + } + }, + "additionalProperties": false + }, + "QualityProfileQualityItemResource": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "name": { + "type": "string", + "nullable": true + }, + "quality": { + "$ref": "#/components/schemas/Quality" + }, + "items": { + "type": "array", + "items": { + "$ref": "#/components/schemas/QualityProfileQualityItemResource" + }, + "nullable": true + }, + "allowed": { + "type": "boolean" + } + }, + "additionalProperties": false + }, + "QualityProfileResource": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "name": { + "type": "string", + "nullable": true + }, + "upgradeAllowed": { + "type": "boolean" + }, + "cutoff": { + "type": "integer", + "format": "int32" + }, + "items": { + "type": "array", + "items": { + "$ref": "#/components/schemas/QualityProfileQualityItemResource" + }, + "nullable": true + }, + "minFormatScore": { + "type": "integer", + "format": "int32" + }, + "cutoffFormatScore": { + "type": "integer", + "format": "int32" + }, + "minUpgradeFormatScore": { + "type": "integer", + "format": "int32" + }, + "formatItems": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ProfileFormatItemResource" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "QualitySource": { + "enum": [ + "unknown", + "television", + "televisionRaw", + "web", + "webRip", + "dvd", + "bluray", + "blurayRaw" + ], + "type": "string" + }, + "QueueBulkResource": { + "type": "object", + "properties": { + "ids": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "QueueResource": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "seriesId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "episodeId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "seasonNumber": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "series": { + "$ref": "#/components/schemas/SeriesResource" + }, + "episode": { + "$ref": "#/components/schemas/EpisodeResource" + }, + "languages": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Language" + }, + "nullable": true + }, + "quality": { + "$ref": "#/components/schemas/QualityModel" + }, + "customFormats": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CustomFormatResource" + }, + "nullable": true + }, + "customFormatScore": { + "type": "integer", + "format": "int32" + }, + "size": { + "type": "number", + "format": "double" + }, + "title": { + "type": "string", + "nullable": true + }, + "estimatedCompletionTime": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "added": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "status": { + "$ref": "#/components/schemas/QueueStatus" + }, + "trackedDownloadStatus": { + "$ref": "#/components/schemas/TrackedDownloadStatus" + }, + "trackedDownloadState": { + "$ref": "#/components/schemas/TrackedDownloadState" + }, + "statusMessages": { + "type": "array", + "items": { + "$ref": "#/components/schemas/TrackedDownloadStatusMessage" + }, + "nullable": true + }, + "errorMessage": { + "type": "string", + "nullable": true + }, + "downloadId": { + "type": "string", + "nullable": true + }, + "protocol": { + "$ref": "#/components/schemas/DownloadProtocol" + }, + "downloadClient": { + "type": "string", + "nullable": true + }, + "downloadClientHasPostImportCategory": { + "type": "boolean" + }, + "indexer": { + "type": "string", + "nullable": true + }, + "outputPath": { + "type": "string", + "nullable": true + }, + "episodeHasFile": { + "type": "boolean" + }, + "sizeleft": { + "type": "number", + "format": "double", + "deprecated": true + }, + "timeleft": { + "type": "string", + "format": "date-span", + "nullable": true, + "deprecated": true + } + }, + "additionalProperties": false + }, + "QueueResourcePagingResource": { + "type": "object", + "properties": { + "page": { + "type": "integer", + "format": "int32" + }, + "pageSize": { + "type": "integer", + "format": "int32" + }, + "sortKey": { + "type": "string", + "nullable": true + }, + "sortDirection": { + "$ref": "#/components/schemas/SortDirection" + }, + "totalRecords": { + "type": "integer", + "format": "int32" + }, + "records": { + "type": "array", + "items": { + "$ref": "#/components/schemas/QueueResource" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "QueueStatus": { + "enum": [ + "unknown", + "queued", + "paused", + "downloading", + "completed", + "failed", + "warning", + "delay", + "downloadClientUnavailable", + "fallback" + ], + "type": "string" + }, + "QueueStatusResource": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "totalCount": { + "type": "integer", + "format": "int32" + }, + "count": { + "type": "integer", + "format": "int32" + }, + "unknownCount": { + "type": "integer", + "format": "int32" + }, + "errors": { + "type": "boolean" + }, + "warnings": { + "type": "boolean" + }, + "unknownErrors": { + "type": "boolean" + }, + "unknownWarnings": { + "type": "boolean" + } + }, + "additionalProperties": false + }, + "Ratings": { + "type": "object", + "properties": { + "votes": { + "type": "integer", + "format": "int32" + }, + "value": { + "type": "number", + "format": "double" + } + }, + "additionalProperties": false + }, + "RejectionType": { + "enum": [ + "permanent", + "temporary" + ], + "type": "string" + }, + "ReleaseEpisodeResource": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "seasonNumber": { + "type": "integer", + "format": "int32" + }, + "episodeNumber": { + "type": "integer", + "format": "int32" + }, + "absoluteEpisodeNumber": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "title": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "ReleaseProfileResource": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "name": { + "type": "string", + "nullable": true + }, + "enabled": { + "type": "boolean" + }, + "required": { + "nullable": true + }, + "ignored": { + "nullable": true + }, + "indexerId": { + "type": "integer", + "format": "int32" + }, + "tags": { + "uniqueItems": true, + "type": "array", + "items": { + "type": "integer", + "format": "int32" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "ReleaseResource": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "guid": { + "type": "string", + "nullable": true + }, + "quality": { + "$ref": "#/components/schemas/QualityModel" + }, + "qualityWeight": { + "type": "integer", + "format": "int32" + }, + "age": { + "type": "integer", + "format": "int32" + }, + "ageHours": { + "type": "number", + "format": "double" + }, + "ageMinutes": { + "type": "number", + "format": "double" + }, + "size": { + "type": "integer", + "format": "int64" + }, + "indexerId": { + "type": "integer", + "format": "int32" + }, + "indexer": { + "type": "string", + "nullable": true + }, + "releaseGroup": { + "type": "string", + "nullable": true + }, + "subGroup": { + "type": "string", + "nullable": true + }, + "releaseHash": { + "type": "string", + "nullable": true + }, + "title": { + "type": "string", + "nullable": true + }, + "fullSeason": { + "type": "boolean" + }, + "sceneSource": { + "type": "boolean" + }, + "seasonNumber": { + "type": "integer", + "format": "int32" + }, + "languages": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Language" + }, + "nullable": true + }, + "languageWeight": { + "type": "integer", + "format": "int32" + }, + "airDate": { + "type": "string", + "nullable": true + }, + "seriesTitle": { + "type": "string", + "nullable": true + }, + "episodeNumbers": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + }, + "nullable": true + }, + "absoluteEpisodeNumbers": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + }, + "nullable": true + }, + "mappedSeasonNumber": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "mappedEpisodeNumbers": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + }, + "nullable": true + }, + "mappedAbsoluteEpisodeNumbers": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + }, + "nullable": true + }, + "mappedSeriesId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "mappedEpisodeInfo": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ReleaseEpisodeResource" + }, + "nullable": true + }, + "approved": { + "type": "boolean" + }, + "temporarilyRejected": { + "type": "boolean" + }, + "rejected": { + "type": "boolean" + }, + "tvdbId": { + "type": "integer", + "format": "int32" + }, + "tvRageId": { + "type": "integer", + "format": "int32" + }, + "imdbId": { + "type": "string", + "nullable": true + }, + "rejections": { + "type": "array", + "items": { + "type": "string" + }, + "nullable": true + }, + "publishDate": { + "type": "string", + "format": "date-time" + }, + "commentUrl": { + "type": "string", + "nullable": true + }, + "downloadUrl": { + "type": "string", + "nullable": true + }, + "infoUrl": { + "type": "string", + "nullable": true + }, + "episodeRequested": { + "type": "boolean" + }, + "downloadAllowed": { + "type": "boolean" + }, + "releaseWeight": { + "type": "integer", + "format": "int32" + }, + "customFormats": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CustomFormatResource" + }, + "nullable": true + }, + "customFormatScore": { + "type": "integer", + "format": "int32" + }, + "sceneMapping": { + "$ref": "#/components/schemas/AlternateTitleResource" + }, + "magnetUrl": { + "type": "string", + "nullable": true + }, + "infoHash": { + "type": "string", + "nullable": true + }, + "seeders": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "leechers": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "protocol": { + "$ref": "#/components/schemas/DownloadProtocol" + }, + "indexerFlags": { + "type": "integer", + "format": "int32" + }, + "isDaily": { + "type": "boolean" + }, + "isAbsoluteNumbering": { + "type": "boolean" + }, + "isPossibleSpecialEpisode": { + "type": "boolean" + }, + "special": { + "type": "boolean" + }, + "seriesId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "episodeId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "episodeIds": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + }, + "nullable": true + }, + "downloadClientId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "downloadClient": { + "type": "string", + "nullable": true + }, + "shouldOverride": { + "type": "boolean", + "nullable": true + } + }, + "additionalProperties": false + }, + "ReleaseType": { + "enum": [ + "unknown", + "singleEpisode", + "multiEpisode", + "seasonPack" + ], + "type": "string" + }, + "RemotePathMappingResource": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "host": { + "type": "string", + "nullable": true + }, + "remotePath": { + "type": "string", + "nullable": true + }, + "localPath": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "RenameEpisodeResource": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "seriesId": { + "type": "integer", + "format": "int32" + }, + "seasonNumber": { + "type": "integer", + "format": "int32" + }, + "episodeNumbers": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + }, + "nullable": true + }, + "episodeFileId": { + "type": "integer", + "format": "int32" + }, + "existingPath": { + "type": "string", + "nullable": true + }, + "newPath": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "RescanAfterRefreshType": { + "enum": [ + "always", + "afterManual", + "never" + ], + "type": "string" + }, + "Revision": { + "type": "object", + "properties": { + "version": { + "type": "integer", + "format": "int32" + }, + "real": { + "type": "integer", + "format": "int32" + }, + "isRepack": { + "type": "boolean" + } + }, + "additionalProperties": false + }, + "RootFolderResource": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "path": { + "type": "string", + "nullable": true + }, + "accessible": { + "type": "boolean" + }, + "freeSpace": { + "type": "integer", + "format": "int64", + "nullable": true + }, + "unmappedFolders": { + "type": "array", + "items": { + "$ref": "#/components/schemas/UnmappedFolder" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "RuntimeMode": { + "enum": [ + "console", + "service", + "tray" + ], + "type": "string" + }, + "SeasonPassResource": { + "type": "object", + "properties": { + "series": { + "type": "array", + "items": { + "$ref": "#/components/schemas/SeasonPassSeriesResource" + }, + "nullable": true + }, + "monitoringOptions": { + "$ref": "#/components/schemas/MonitoringOptions" + } + }, + "additionalProperties": false + }, + "SeasonPassSeriesResource": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "monitored": { + "type": "boolean", + "nullable": true + }, + "seasons": { + "type": "array", + "items": { + "$ref": "#/components/schemas/SeasonResource" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "SeasonResource": { + "type": "object", + "properties": { + "seasonNumber": { + "type": "integer", + "format": "int32" + }, + "monitored": { + "type": "boolean" + }, + "statistics": { + "$ref": "#/components/schemas/SeasonStatisticsResource" + }, + "images": { + "type": "array", + "items": { + "$ref": "#/components/schemas/MediaCover" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "SeasonStatisticsResource": { + "type": "object", + "properties": { + "nextAiring": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "previousAiring": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "episodeFileCount": { + "type": "integer", + "format": "int32" + }, + "episodeCount": { + "type": "integer", + "format": "int32" + }, + "totalEpisodeCount": { + "type": "integer", + "format": "int32" + }, + "sizeOnDisk": { + "type": "integer", + "format": "int64" + }, + "releaseGroups": { + "type": "array", + "items": { + "type": "string" + }, + "nullable": true + }, + "percentOfEpisodes": { + "type": "number", + "format": "double", + "readOnly": true + } + }, + "additionalProperties": false + }, + "SelectOption": { + "type": "object", + "properties": { + "value": { + "type": "integer", + "format": "int32" + }, + "name": { + "type": "string", + "nullable": true + }, + "order": { + "type": "integer", + "format": "int32" + }, + "hint": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "SeriesEditorResource": { + "type": "object", + "properties": { + "seriesIds": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + }, + "nullable": true + }, + "monitored": { + "type": "boolean", + "nullable": true + }, + "monitorNewItems": { + "$ref": "#/components/schemas/NewItemMonitorTypes" + }, + "qualityProfileId": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "seriesType": { + "$ref": "#/components/schemas/SeriesTypes" + }, + "seasonFolder": { + "type": "boolean", + "nullable": true + }, + "rootFolderPath": { + "type": "string", + "nullable": true + }, + "tags": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + }, + "nullable": true + }, + "applyTags": { + "$ref": "#/components/schemas/ApplyTags" + }, + "moveFiles": { + "type": "boolean" + }, + "deleteFiles": { + "type": "boolean" + }, + "addImportListExclusion": { + "type": "boolean" + } + }, + "additionalProperties": false + }, + "SeriesResource": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "title": { + "type": "string", + "nullable": true + }, + "alternateTitles": { + "type": "array", + "items": { + "$ref": "#/components/schemas/AlternateTitleResource" + }, + "nullable": true + }, + "sortTitle": { + "type": "string", + "nullable": true + }, + "status": { + "$ref": "#/components/schemas/SeriesStatusType" + }, + "ended": { + "type": "boolean", + "readOnly": true + }, + "profileName": { + "type": "string", + "nullable": true + }, + "overview": { + "type": "string", + "nullable": true + }, + "nextAiring": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "previousAiring": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "network": { + "type": "string", + "nullable": true + }, + "airTime": { + "type": "string", + "nullable": true + }, + "images": { + "type": "array", + "items": { + "$ref": "#/components/schemas/MediaCover" + }, + "nullable": true + }, + "originalLanguage": { + "$ref": "#/components/schemas/Language" + }, + "remotePoster": { + "type": "string", + "nullable": true + }, + "seasons": { + "type": "array", + "items": { + "$ref": "#/components/schemas/SeasonResource" + }, + "nullable": true + }, + "year": { + "type": "integer", + "format": "int32" + }, + "path": { + "type": "string", + "nullable": true + }, + "qualityProfileId": { + "type": "integer", + "format": "int32" + }, + "seasonFolder": { + "type": "boolean" + }, + "monitored": { + "type": "boolean" + }, + "monitorNewItems": { + "$ref": "#/components/schemas/NewItemMonitorTypes" + }, + "useSceneNumbering": { + "type": "boolean" + }, + "runtime": { + "type": "integer", + "format": "int32" + }, + "tvdbId": { + "type": "integer", + "format": "int32" + }, + "tvRageId": { + "type": "integer", + "format": "int32" + }, + "tvMazeId": { + "type": "integer", + "format": "int32" + }, + "tmdbId": { + "type": "integer", + "format": "int32" + }, + "firstAired": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "lastAired": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "seriesType": { + "$ref": "#/components/schemas/SeriesTypes" + }, + "cleanTitle": { + "type": "string", + "nullable": true + }, + "imdbId": { + "type": "string", + "nullable": true + }, + "titleSlug": { + "type": "string", + "nullable": true + }, + "rootFolderPath": { + "type": "string", + "nullable": true + }, + "folder": { + "type": "string", + "nullable": true + }, + "certification": { + "type": "string", + "nullable": true + }, + "genres": { + "type": "array", + "items": { + "type": "string" + }, + "nullable": true + }, + "tags": { + "uniqueItems": true, + "type": "array", + "items": { + "type": "integer", + "format": "int32" + }, + "nullable": true + }, + "added": { + "type": "string", + "format": "date-time" + }, + "addOptions": { + "$ref": "#/components/schemas/AddSeriesOptions" + }, + "ratings": { + "$ref": "#/components/schemas/Ratings" + }, + "statistics": { + "$ref": "#/components/schemas/SeriesStatisticsResource" + }, + "episodesChanged": { + "type": "boolean", + "nullable": true + }, + "languageProfileId": { + "type": "integer", + "format": "int32", + "readOnly": true, + "deprecated": true + } + }, + "additionalProperties": false + }, + "SeriesStatisticsResource": { + "type": "object", + "properties": { + "seasonCount": { + "type": "integer", + "format": "int32" + }, + "episodeFileCount": { + "type": "integer", + "format": "int32" + }, + "episodeCount": { + "type": "integer", + "format": "int32" + }, + "totalEpisodeCount": { + "type": "integer", + "format": "int32" + }, + "sizeOnDisk": { + "type": "integer", + "format": "int64" + }, + "releaseGroups": { + "type": "array", + "items": { + "type": "string" + }, + "nullable": true + }, + "percentOfEpisodes": { + "type": "number", + "format": "double", + "readOnly": true + } + }, + "additionalProperties": false + }, + "SeriesStatusType": { + "enum": [ + "continuing", + "ended", + "upcoming", + "deleted" + ], + "type": "string" + }, + "SeriesTitleInfo": { + "type": "object", + "properties": { + "title": { + "type": "string", + "nullable": true + }, + "titleWithoutYear": { + "type": "string", + "nullable": true + }, + "year": { + "type": "integer", + "format": "int32" + }, + "allTitles": { + "type": "array", + "items": { + "type": "string" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "SeriesTypes": { + "enum": [ + "standard", + "daily", + "anime" + ], + "type": "string" + }, + "SortDirection": { + "enum": [ + "default", + "ascending", + "descending" + ], + "type": "string" + }, + "SystemResource": { + "type": "object", + "properties": { + "appName": { + "type": "string", + "nullable": true + }, + "instanceName": { + "type": "string", + "nullable": true + }, + "version": { + "type": "string", + "nullable": true + }, + "buildTime": { + "type": "string", + "format": "date-time" + }, + "isDebug": { + "type": "boolean" + }, + "isProduction": { + "type": "boolean" + }, + "isAdmin": { + "type": "boolean" + }, + "isUserInteractive": { + "type": "boolean" + }, + "startupPath": { + "type": "string", + "nullable": true + }, + "appData": { + "type": "string", + "nullable": true + }, + "osName": { + "type": "string", + "nullable": true + }, + "osVersion": { + "type": "string", + "nullable": true + }, + "isNetCore": { + "type": "boolean" + }, + "isLinux": { + "type": "boolean" + }, + "isOsx": { + "type": "boolean" + }, + "isWindows": { + "type": "boolean" + }, + "isDocker": { + "type": "boolean" + }, + "mode": { + "$ref": "#/components/schemas/RuntimeMode" + }, + "branch": { + "type": "string", + "nullable": true + }, + "authentication": { + "$ref": "#/components/schemas/AuthenticationType" + }, + "sqliteVersion": { + "type": "string", + "nullable": true + }, + "migrationVersion": { + "type": "integer", + "format": "int32" + }, + "urlBase": { + "type": "string", + "nullable": true + }, + "runtimeVersion": { + "type": "string", + "nullable": true + }, + "runtimeName": { + "type": "string", + "nullable": true + }, + "startTime": { + "type": "string", + "format": "date-time" + }, + "packageVersion": { + "type": "string", + "nullable": true + }, + "packageAuthor": { + "type": "string", + "nullable": true + }, + "packageUpdateMechanism": { + "$ref": "#/components/schemas/UpdateMechanism" + }, + "packageUpdateMechanismMessage": { + "type": "string", + "nullable": true + }, + "databaseVersion": { + "type": "string", + "nullable": true + }, + "databaseType": { + "$ref": "#/components/schemas/DatabaseType" + } + }, + "additionalProperties": false + }, + "TagDetailsResource": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "label": { + "type": "string", + "nullable": true + }, + "delayProfileIds": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + }, + "nullable": true + }, + "importListIds": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + }, + "nullable": true + }, + "notificationIds": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + }, + "nullable": true + }, + "restrictionIds": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + }, + "nullable": true + }, + "indexerIds": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + }, + "nullable": true + }, + "downloadClientIds": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + }, + "nullable": true + }, + "autoTagIds": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + }, + "nullable": true + }, + "seriesIds": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "TagResource": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "label": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "TaskResource": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "name": { + "type": "string", + "nullable": true + }, + "taskName": { + "type": "string", + "nullable": true + }, + "interval": { + "type": "integer", + "format": "int32" + }, + "lastExecution": { + "type": "string", + "format": "date-time" + }, + "lastStartTime": { + "type": "string", + "format": "date-time" + }, + "nextExecution": { + "type": "string", + "format": "date-time" + }, + "lastDuration": { + "type": "string", + "format": "date-span", + "readOnly": true + } + }, + "additionalProperties": false + }, + "TrackedDownloadState": { + "enum": [ + "downloading", + "importBlocked", + "importPending", + "importing", + "imported", + "failedPending", + "failed", + "ignored" + ], + "type": "string" + }, + "TrackedDownloadStatus": { + "enum": [ + "ok", + "warning", + "error" + ], + "type": "string" + }, + "TrackedDownloadStatusMessage": { + "type": "object", + "properties": { + "title": { + "type": "string", + "nullable": true + }, + "messages": { + "type": "array", + "items": { + "type": "string" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "UiConfigResource": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "firstDayOfWeek": { + "type": "integer", + "format": "int32" + }, + "calendarWeekColumnHeader": { + "type": "string", + "nullable": true + }, + "shortDateFormat": { + "type": "string", + "nullable": true + }, + "longDateFormat": { + "type": "string", + "nullable": true + }, + "timeFormat": { + "type": "string", + "nullable": true + }, + "showRelativeDates": { + "type": "boolean" + }, + "enableColorImpairedMode": { + "type": "boolean" + }, + "theme": { + "type": "string", + "nullable": true + }, + "uiLanguage": { + "type": "integer", + "format": "int32" + } + }, + "additionalProperties": false + }, + "UnmappedFolder": { + "type": "object", + "properties": { + "name": { + "type": "string", + "nullable": true + }, + "path": { + "type": "string", + "nullable": true + }, + "relativePath": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "UpdateChanges": { + "type": "object", + "properties": { + "new": { + "type": "array", + "items": { + "type": "string" + }, + "nullable": true + }, + "fixed": { + "type": "array", + "items": { + "type": "string" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "UpdateMechanism": { + "enum": [ + "builtIn", + "script", + "external", + "apt", + "docker" + ], + "type": "string" + }, + "UpdateResource": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "version": { + "type": "string", + "nullable": true + }, + "branch": { + "type": "string", + "nullable": true + }, + "releaseDate": { + "type": "string", + "format": "date-time" + }, + "fileName": { + "type": "string", + "nullable": true + }, + "url": { + "type": "string", + "nullable": true + }, + "installed": { + "type": "boolean" + }, + "installedOn": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "installable": { + "type": "boolean" + }, + "latest": { + "type": "boolean" + }, + "changes": { + "$ref": "#/components/schemas/UpdateChanges" + }, + "hash": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + } + }, + "securitySchemes": { + "X-Api-Key": { + "type": "apiKey", + "description": "Apikey passed as header", + "name": "X-Api-Key", + "in": "header" + }, + "apikey": { + "type": "apiKey", + "description": "Apikey passed as query parameter", + "name": "apikey", + "in": "query" + } + } + }, + "security": [ + { + "X-Api-Key": [ ] + }, + { + "apikey": [ ] + } + ] +} \ No newline at end of file diff --git a/src/Sonarr.Http.Client/Sonarr.Http.Client.csproj b/src/Sonarr.Http.Client/Sonarr.Http.Client.csproj new file mode 100644 index 0000000..1a1b8b7 --- /dev/null +++ b/src/Sonarr.Http.Client/Sonarr.Http.Client.csproj @@ -0,0 +1,28 @@ + + + + net9.0 + enable + enable + + + + + https://raw.githubusercontent.com/Sonarr/Sonarr/develop/src/Sonarr.Api.V3/openapi.json + /JsonLibrary:SystemTextJson + + + + + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + + +