diff --git a/.gitignore b/.gitignore
index eacdd16c7..fa33bfd3c 100644
--- a/.gitignore
+++ b/.gitignore
@@ -187,6 +187,10 @@ packages.config.md5sum
**/.idea/**/*.iml
**/.idea/**/contentModel.xml
**/.idea/**/modules.xml
+
# ignore node_modules symlink
node_modules
node_modules.nosync
+
+# API doc generation
+.config/
diff --git a/azure-pipelines.yml b/azure-pipelines.yml
index 627ca7531..431337267 100644
--- a/azure-pipelines.yml
+++ b/azure-pipelines.yml
@@ -31,6 +31,7 @@ pr:
paths:
exclude:
- src/NzbDrone.Core/Localization/Core
+ - src/Radarr.Api.*/openapi.json
stages:
- stage: Setup
@@ -849,6 +850,59 @@ stages:
cliProjectVersion: '$(radarrVersion)'
cliSources: './frontend'
- task: SonarCloudAnalyze@1
+
+ - job: Api_Docs
+ displayName: API Docs
+ dependsOn: Prepare
+ condition: |
+ and
+ (
+ and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/develop')),
+ and(succeeded(), eq(dependencies.Prepare.outputs['setVar.backendNotUpdated'], '0'))
+ )
+
+ pool:
+ vmImage: windows-2019
+
+ steps:
+ - task: UseDotNet@2
+ displayName: 'Install .net core'
+ inputs:
+ version: $(dotnetVersion)
+ - checkout: self
+ submodules: true
+ persistCredentials: true
+ fetchDepth: 1
+ - bash: ./docs.sh Windows
+ displayName: Create openapi.json
+ - bash: |
+ git config --global user.email "development@lidarr.audio"
+ git config --global user.name "Servarr"
+ git checkout -b api-docs
+ git add .
+ if git status | grep -q modified
+ then
+ git commit -am 'Automated API Docs update'
+ git push -f --set-upstream origin api-docs
+ curl -X POST -H "Authorization: token ${GITHUBTOKEN}" -H "Accept: application/vnd.github.v3+json" https://api.github.com/repos/radarr/radarr/pulls -d '{"head":"api-docs","base":"develop","title":"Update API docs"}'
+ else
+ echo "No changes since last run"
+ fi
+ displayName: Commit API Doc Change
+ continueOnError: true
+ env:
+ GITHUBTOKEN: $(githubToken)
+ - task: CopyFiles@2
+ displayName: 'Copy openapi.json to: $(Build.ArtifactStagingDirectory)'
+ inputs:
+ SourceFolder: '$(Build.SourcesDirectory)'
+ Contents: |
+ **/*openapi.json
+ TargetFolder: '$(Build.ArtifactStagingDirectory)/api_docs'
+ - publish: $(Build.ArtifactStagingDirectory)/api_docs
+ artifact: 'APIDocs'
+ displayName: Publish API Docs Bundle
+ condition: and(succeeded(), eq(variables['System.JobAttempt'], '1'))
- job: Analyze_Backend
displayName: Backend
diff --git a/docs.sh b/docs.sh
new file mode 100644
index 000000000..42c17c5c8
--- /dev/null
+++ b/docs.sh
@@ -0,0 +1,38 @@
+PLATFORM=$1
+
+if [ "$PLATFORM" = "Windows" ]; then
+ RUNTIME="win-x64"
+elif [ "$PLATFORM" = "Linux" ]; then
+ WHERE="linux-x64"
+elif [ "$PLATFORM" = "Mac" ]; then
+ WHERE="osx-x64"
+else
+ echo "Platform must be provided as first arguement: Windows, Linux or Mac"
+ exit 1
+fi
+
+outputFolder='_output'
+testPackageFolder='_tests'
+
+rm -rf $outputFolder
+rm -rf $testPackageFolder
+
+slnFile=src/Prowlarr.sln
+
+platform=Posix
+
+dotnet clean $slnFile -c Debug
+dotnet clean $slnFile -c Release
+
+dotnet msbuild -restore $slnFile -p:Configuration=Debug -p:Platform=$platform -p:RuntimeIdentifiers=$RUNTIME -t:PublishAllRids
+
+dotnet new tool-manifest
+dotnet tool install --version 6.2.3 Swashbuckle.AspNetCore.Cli
+
+dotnet tool run swagger tofile --output ./src/Prowlarr.Api.V1/openapi.json "$outputFolder/net6.0/$RUNTIME/radarr.console.dll" v1 &
+
+sleep 10
+
+kill %1
+
+exit 0
\ No newline at end of file
diff --git a/src/NzbDrone.Host/Radarr.Host.csproj b/src/NzbDrone.Host/Radarr.Host.csproj
index cf04160e7..f8153afbd 100644
--- a/src/NzbDrone.Host/Radarr.Host.csproj
+++ b/src/NzbDrone.Host/Radarr.Host.csproj
@@ -6,6 +6,7 @@
+
diff --git a/src/NzbDrone.Host/Startup.cs b/src/NzbDrone.Host/Startup.cs
index 2e7a9d151..4a7e848cf 100644
--- a/src/NzbDrone.Host/Startup.cs
+++ b/src/NzbDrone.Host/Startup.cs
@@ -10,6 +10,7 @@ using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
+using Microsoft.OpenApi.Models;
using NLog.Extensions.Logging;
using NzbDrone.Common.EnvironmentInfo;
using NzbDrone.Common.Instrumentation;
@@ -92,6 +93,73 @@ namespace NzbDrone.Host
})
.AddControllersAsServices();
+ services.AddSwaggerGen(c =>
+ {
+ c.SwaggerDoc("v3", new OpenApiInfo
+ {
+ Version = "3.0.0",
+ Title = "Radarr",
+ Description = "Radarr API docs",
+ License = new OpenApiLicense
+ {
+ Name = "GPL-3.0",
+ Url = new Uri("https://github.com/Radarr/Radarr/blob/develop/LICENSE")
+ }
+ });
+
+ var apiKeyHeader = new OpenApiSecurityScheme
+ {
+ Name = "X-Api-Key",
+ Type = SecuritySchemeType.ApiKey,
+ Scheme = "apiKey",
+ Description = "Apikey passed as header",
+ In = ParameterLocation.Header,
+ Reference = new OpenApiReference
+ {
+ Type = ReferenceType.SecurityScheme,
+ Id = "X-Api-Key"
+ },
+ };
+
+ c.AddSecurityDefinition("X-Api-Key", apiKeyHeader);
+
+ c.AddSecurityRequirement(new OpenApiSecurityRequirement
+ {
+ { apiKeyHeader, new string[] { } }
+ });
+
+ var apikeyQuery = new OpenApiSecurityScheme
+ {
+ Name = "apikey",
+ Type = SecuritySchemeType.ApiKey,
+ Scheme = "apiKey",
+ Description = "Apikey passed as header",
+ In = ParameterLocation.Query,
+ Reference = new OpenApiReference
+ {
+ Type = ReferenceType.SecurityScheme,
+ Id = "apikey"
+ },
+ };
+
+ c.AddServer(new OpenApiServer
+ {
+ Url = "{protocol}://{hostpath}",
+ Variables = new Dictionary
+ {
+ { "protocol", new OpenApiServerVariable { Default = "http", Enum = new List { "http", "https" } } },
+ { "hostpath", new OpenApiServerVariable { Default = "localhost:7878" } }
+ }
+ });
+
+ c.AddSecurityDefinition("apikey", apikeyQuery);
+
+ c.AddSecurityRequirement(new OpenApiSecurityRequirement
+ {
+ { apikeyQuery, new string[] { } }
+ });
+ });
+
services
.AddSignalR()
.AddJsonProtocol(options =>
@@ -198,6 +266,15 @@ namespace NzbDrone.Host
app.UseWebSockets();
+ // Enable middleware to serve generated Swagger as a JSON endpoint.
+ if (BuildInfo.IsDebug)
+ {
+ app.UseSwagger(c =>
+ {
+ c.RouteTemplate = "docs/{documentName}/openapi.json";
+ });
+ }
+
app.UseEndpoints(x =>
{
x.MapHub("/signalr/messages").RequireAuthorization("SignalR");
diff --git a/src/Radarr.Api.V3/swagger.json b/src/Radarr.Api.V3/swagger.json
deleted file mode 100644
index 177a0c921..000000000
--- a/src/Radarr.Api.V3/swagger.json
+++ /dev/null
@@ -1,5012 +0,0 @@
-{
- "openapi": "3.0.0",
- "info": {
- "title": "Radarr",
- "version": "3",
- "description": "The way users should interact with Radarr programatically. To utilize any of these endpoints you will need a few pieces of information:\n\nex: localhost:7878/api/v3/movies?apiKey={key_here}\n\n* url: localhost, 10.1.0.1, 192.168.1.1, etc\n* port: 7878 (unless you modify it)\n* apiKey: Located in Settings > General > Security"
- },
- "servers": [
- {
- "url": "{protocol}://{hostPath}/api/v3",
- "variables": {
- "protocol": {
- "enum": [
- "https",
- "http"
- ],
- "default": "https"
- },
- "hostPath": {
- "default": "localhost:7878",
- "description": "Your Radarr Server URL"
- }
- }
- }
- ],
- "paths": {
- "/movie": {
- "get": {
- "tags": [
- "Movie"
- ],
- "summary": "Get All Movies",
- "description": "Returns all movies stored in the database",
- "operationId": "getMovie",
- "parameters": [
- {
- "in": "query",
- "name": "tmdbId",
- "schema": {
- "type": "integer"
- },
- "required": false,
- "description": "TMDb id of the movie to get"
- }
- ],
- "responses": {
- "200": {
- "description": "Successful request",
- "content": {
- "application/json": {
- "schema": {
- "type": "array",
- "items": {
- "$ref": "#/components/schemas/Movie"
- }
- }
- }
- }
- },
- "400": {
- "description": "Invalid ID supplied"
- },
- "401": {
- "description": "Invalid API Key"
- },
- "404": {
- "description": "Movie not found"
- }
- },
- "security": [
- {
- "X-API-Key": []
- },
- {
- "apikey": []
- }
- ]
- },
- "post": {
- "tags": [
- "Movie"
- ],
- "summary": "Add new movie",
- "requestBody": {
- "description": "Movie object that needs to be added",
- "required": true,
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/Movie"
- }
- }
- }
- },
- "responses": {
- "200": {
- "description": "Successful request",
- "content": {
- "application/json": {
- "schema": {
- "type": "integer"
- }
- }
- }
- },
- "401": {
- "description": "Invalid API Key"
- },
- "405": {
- "description": "Validation exception"
- }
- },
- "security": [
- {
- "X-API-Key": []
- }
- ],
- "description": "Adds a movie to the database"
- },
- "put": {
- "tags": [
- "Movie"
- ],
- "summary": "Edit existing movie",
- "requestBody": {
- "description": "Movie object that needs to be edited",
- "required": true,
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/Movie"
- }
- }
- }
- },
- "parameters": [
- {
- "in": "query",
- "name": "moveFiles",
- "schema": {
- "type": "boolean"
- },
- "required": false,
- "description": "Have radarr move files when updating"
- }
- ],
- "responses": {
- "200": {
- "description": "successful operation",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/Movie"
- }
- }
- }
- },
- "404": {
- "description": "Movie not found"
- },
- "405": {
- "description": "Validation exception"
- }
- },
- "security": [
- {
- "X-API-Key": []
- }
- ],
- "description": "Updates a movie in the database"
- }
- },
- "/movie/{id}": {
- "get": {
- "tags": [
- "Movie"
- ],
- "summary": "Get a Movie",
- "description": "Returns a single movie",
- "operationId": "getMovieById",
- "parameters": [
- {
- "name": "id",
- "in": "path",
- "description": "Database Id of movie to return",
- "required": true,
- "schema": {
- "type": "integer"
- }
- }
- ],
- "responses": {
- "200": {
- "description": "Successful request",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/Movie"
- }
- }
- }
- },
- "400": {
- "description": "Invalid ID supplied"
- },
- "401": {
- "description": "Invalid API Key"
- },
- "404": {
- "description": "Movie not found"
- }
- },
- "security": [
- {
- "X-API-Key": []
- },
- {
- "apikey": []
- }
- ]
- },
- "delete": {
- "tags": [
- "Movie"
- ],
- "summary": "Delete a Movie",
- "description": "Delete a single movie by database id",
- "operationId": "deleteMovie",
- "parameters": [
- {
- "name": "id",
- "in": "path",
- "description": "Database Id of movie to delete",
- "required": true,
- "schema": {
- "type": "integer"
- }
- },
- {
- "name": "addImportExclusion",
- "in": "query",
- "description": "Add deleted movies to List Exclusions",
- "schema": {
- "type": "boolean"
- }
- },
- {
- "name": "deleteFiles",
- "in": "query",
- "description": "Delete movie files when deleting movies",
- "schema": {
- "type": "boolean"
- }
- }
- ],
- "responses": {
- "200": {
- "description": "OK"
- },
- "400": {
- "description": "Invalid ID supplied"
- },
- "401": {
- "description": "Invalid API Key"
- },
- "404": {
- "description": "Movie not found"
- }
- },
- "security": [
- {
- "X-API-Key": []
- }
- ]
- }
- },
- "/tag/detail/{id}": {
- "get": {
- "tags": [
- "Tag"
- ],
- "summary": "Get a Tag Details",
- "description": "Returns the id of all items in the database which use the specified tag",
- "operationId": "",
- "responses": {
- "200": {
- "description": "Successful request",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/TagDetail"
- }
- }
- }
- },
- "401": {
- "description": "Invalid API Key"
- }
- },
- "security": [
- {
- "X-API-Key": []
- },
- {
- "apikey": []
- }
- ]
- },
- "parameters": [
- {
- "name": "id",
- "in": "path",
- "description": "Database id of tag",
- "required": true,
- "schema": {
- "type": "integer"
- }
- }
- ]
- },
- "/tag/detail": {
- "get": {
- "tags": [
- "Tag"
- ],
- "summary": "Get All Tag Details",
- "description": "Returns a list of tag detail objects for all tags in the database.",
- "operationId": "",
- "responses": {
- "200": {
- "description": "Successful request",
- "content": {
- "application/json": {
- "schema": {
- "type": "array",
- "items": {
- "$ref": "#/components/schemas/TagDetail"
- }
- }
- }
- }
- },
- "401": {
- "description": "Invalid API Key"
- }
- },
- "security": [
- {
- "X-API-Key": []
- },
- {
- "apikey": []
- }
- ]
- },
- "parameters": []
- },
- "/tag/{id}": {
- "get": {
- "tags": [
- "Tag"
- ],
- "summary": "Get a Tag",
- "description": "Return a given tag and its label by the database id.",
- "operationId": "",
- "responses": {
- "200": {
- "description": "Successful request",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/Tag"
- }
- }
- }
- },
- "401": {
- "description": "Invalid API Key"
- }
- },
- "security": [
- {
- "X-API-Key": []
- },
- {
- "apikey": []
- }
- ]
- },
- "delete": {
- "tags": [
- "Tag"
- ],
- "summary": "Delete a Tag",
- "description": "Delete a tag",
- "operationId": "",
- "responses": {
- "200": {
- "description": "Successful request"
- },
- "401": {
- "description": "Invalid API Key"
- }
- },
- "security": [
- {
- "X-API-Key": []
- }
- ]
- },
- "parameters": [
- {
- "name": "id",
- "in": "path",
- "description": "ID of tag",
- "required": true,
- "schema": {
- "type": "integer"
- }
- }
- ],
- "put": {
- "summary": "Edit a Tag",
- "operationId": "put-tag-id",
- "responses": {
- "200": {
- "description": "OK"
- },
- "401": {
- "description": "Unauthorized"
- }
- },
- "tags": [
- "Tag"
- ],
- "description": "Edit a Tag by its database id",
- "security": [
- {
- "X-API-Key": []
- },
- {
- "apikey": []
- }
- ],
- "requestBody": {
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/Tag"
- }
- }
- }
- }
- }
- },
- "/tag": {
- "get": {
- "summary": "Get All Tags",
- "description": "Get all tags in the database",
- "operationId": "",
- "responses": {
- "200": {
- "description": "Successful request",
- "content": {
- "application/json": {
- "schema": {
- "type": "array",
- "items": {
- "$ref": "#/components/schemas/Tag"
- }
- }
- }
- }
- },
- "401": {
- "description": "Invalid API Key"
- }
- },
- "security": [
- {
- "X-API-Key": []
- },
- {
- "apikey": []
- }
- ],
- "tags": [
- "Tag"
- ]
- },
- "post": {
- "tags": [
- "Tag"
- ],
- "summary": "Create a Tag",
- "description": "Create a new tag that can be assigned to a movie, list, delay profile, notification, or restriction",
- "operationId": "",
- "requestBody": {
- "description": "Tag object that needs to be added",
- "required": true,
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/Tag"
- }
- }
- }
- },
- "responses": {
- "200": {
- "description": "Successful request"
- },
- "401": {
- "description": "Invalid API Key"
- }
- },
- "security": [
- {
- "X-API-Key": []
- }
- ]
- },
- "parameters": []
- },
- "/diskspace": {
- "get": {
- "summary": "Get System Diskspace Information",
- "responses": {
- "200": {
- "description": "Successful request",
- "content": {
- "application/json": {
- "schema": {
- "type": "array",
- "items": {
- "type": "object"
- }
- },
- "examples": {
- "Response": {
- "value": [
- {
- "path": "D:\\",
- "label": "DrivePool",
- "freeSpace": 16187217043456,
- "totalSpace": 56009755148288
- },
- {
- "path": "C:\\",
- "label": "Windows",
- "freeSpace": 78659211264,
- "totalSpace": 239409819648
- }
- ]
- }
- }
- }
- }
- },
- "401": {
- "description": "Invalid API Key"
- }
- },
- "operationId": "get-diskspace",
- "description": "Query Radarr for disk usage information\n\nLocation: System > Status",
- "security": [
- {
- "X-API-Key": []
- },
- {
- "apikey": []
- }
- ],
- "tags": [
- "Disk Space"
- ]
- }
- },
- "/system/status": {
- "get": {
- "summary": "Get Application Status",
- "responses": {
- "200": {
- "description": "Successful request",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "version": {
- "type": "string"
- },
- "buildTime": {
- "type": "string"
- },
- "isDebug": {
- "type": "boolean"
- },
- "isProduction": {
- "type": "boolean"
- },
- "isAdmin": {
- "type": "boolean"
- },
- "isUserInteractive": {
- "type": "boolean"
- },
- "startupPath": {
- "type": "string"
- },
- "appData": {
- "type": "string"
- },
- "osName": {
- "type": "string"
- },
- "osVersion": {
- "type": "string"
- },
- "isNetCore": {
- "type": "boolean"
- },
- "isMono": {
- "type": "boolean"
- },
- "isLinux": {
- "type": "boolean"
- },
- "isOsx": {
- "type": "boolean"
- },
- "isWindows": {
- "type": "boolean"
- },
- "isDocker": {
- "type": "boolean"
- },
- "mode": {
- "type": "string"
- },
- "branch": {
- "type": "string"
- },
- "authentication": {
- "type": "string"
- },
- "sqliteVersion": {
- "type": "string"
- },
- "migrationVersion": {
- "type": "integer"
- },
- "urlBase": {
- "type": "string"
- },
- "runtimeVersion": {
- "type": "string"
- },
- "runtimeName": {
- "type": "string"
- },
- "startTime": {
- "type": "string"
- },
- "packageUpdateMechanism": {
- "type": "string"
- }
- }
- },
- "examples": {
- "Response": {
- "value": {
- "version": "10.0.0.34882",
- "buildTime": "2020-09-01T23:23:23.9621974Z",
- "isDebug": true,
- "isProduction": false,
- "isAdmin": false,
- "isUserInteractive": true,
- "startupPath": "C:\\ProgramData\\Radarr",
- "appData": "C:\\ProgramData\\Radarr",
- "osName": "Windows",
- "osVersion": "10.0.18363.0",
- "isNetCore": true,
- "isMono": false,
- "isLinux": false,
- "isOsx": false,
- "isWindows": true,
- "isDocker": false,
- "mode": "console",
- "branch": "nightly",
- "authentication": "none",
- "sqliteVersion": "3.32.1",
- "migrationVersion": 180,
- "urlBase": "",
- "runtimeVersion": "3.1.10",
- "runtimeName": "netCore",
- "startTime": "2020-09-01T23:50:20.2415965Z",
- "packageUpdateMechanism": "builtIn"
- }
- }
- }
- }
- }
- },
- "401": {
- "description": "Invalid API Key"
- }
- },
- "operationId": "get-status",
- "security": [
- {
- "X-API-Key": []
- },
- {
- "apikey": []
- }
- ],
- "description": "Find out information such as OS, version, paths used, etc",
- "parameters": [],
- "tags": [
- "System"
- ]
- },
- "parameters": []
- },
- "/health": {
- "get": {
- "summary": "Get Failed Health Checks",
- "tags": [
- "Health"
- ],
- "responses": {
- "200": {
- "description": "Successful request",
- "content": {
- "application/json": {
- "schema": {
- "type": "array",
- "items": {
- "type": "object"
- }
- },
- "examples": {
- "Response": {
- "value": [
- {
- "source": "ImportMechanismCheck",
- "type": "warning",
- "message": "Enable Completed Download Handling",
- "wikiUrl": "https://wiki.servarr.com/radarr/system#completed-failed-download-handling"
- },
- {
- "source": "DownloadClientCheck",
- "type": "error",
- "message": "Unable to communicate with qBittorrent. Failed to connect to qBittorrent, check your settings.",
- "wikiUrl": "https://wiki.servarr.com/radarr/system#download-clients"
- }
- ]
- }
- }
- }
- }
- },
- "401": {
- "description": "Invalid API Key"
- }
- },
- "operationId": "get-health",
- "security": [
- {
- "X-API-Key": []
- },
- {
- "apikey": []
- }
- ],
- "description": "Query radarr for health information\n\nLocation: System > Status"
- }
- },
- "/command": {
- "post": {
- "summary": "Post a Command",
- "tags": [
- "Command"
- ],
- "operationId": "post-command",
- "responses": {
- "200": {
- "description": "Successful request"
- },
- "201": {
- "description": "",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "name": {
- "type": "string"
- }
- },
- "required": [
- "name"
- ]
- },
- "examples": {
- "Example": {
- "value": {
- "name": "Backup"
- }
- }
- }
- }
- }
- },
- "401": {
- "description": "Invalid API Key"
- }
- },
- "description": "Pushes commands to Radarr using a key:value pair. The main key is \"name\" and below are acceptable values but it can also accept other key:value pairs (listed under each command):\n\n* ApplicationUpdate - Trigger an update of Radarr\n* Backup - Trigger a backup routine\n* CheckHealth - Trigger a system health check\n* ClearBlocklist - Triggers the removal of all blocklisted movies\n* CleanUpRecycleBin - Trigger a recycle bin cleanup check\n* DeleteLogFiles - Triggers the removal of all Info/Debug/Trace log files\n* DeleteUpdateLogFiles - Triggers the removal of all Update log files\n* DownloadedMoviesScan - Triggers the scan of downloaded movies\n* MissingMoviesSearch - Triggers a search of all missing movies\n* RefreshMonitoredDownloads - Triggers the scan of monitored downloads\n* RefreshMovie - Trigger a refresh / scan of library\n * movieIds:int[] - Specify a list of ids (comma separated) for individual movies to refresh",
- "security": [
- {
- "X-API-Key": []
- }
- ],
- "parameters": []
- }
- },
- "/update": {
- "get": {
- "summary": "Get Recent Updates",
- "tags": [
- "Update"
- ],
- "responses": {
- "200": {
- "description": "Successful request",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "version": {
- "type": "string"
- },
- "branch": {
- "type": "string"
- },
- "releaseDate": {
- "type": "string"
- },
- "fileName": {
- "type": "string"
- },
- "url": {
- "type": "string"
- },
- "installed": {
- "type": "boolean"
- },
- "installable": {
- "type": "boolean"
- },
- "latest": {
- "type": "boolean"
- },
- "changes": {
- "type": "object",
- "properties": {
- "new": {
- "type": "array",
- "items": {
- "type": "string"
- }
- },
- "fixed": {
- "type": "array",
- "items": {
- "type": "string"
- }
- }
- }
- },
- "hash": {
- "type": "string"
- }
- }
- },
- "examples": {
- "Example": {
- "value": {
- "version": "3.0.0.3553",
- "branch": "nightly",
- "releaseDate": "2020-09-02T05:36:13.047313Z",
- "fileName": "Radarr.nightly.3.0.0.3553.windows-core-x64.zip",
- "url": "https://dev.azure.com/Radarr/Radarr/_apis/build/builds/1896/artifacts?artifactName=Packages&fileId=A710686A9CB6848E73C3DDCA5F2B0D83C6189546E66DD3EF2D0D30B20735F6E802&fileName=Radarr.aphrodite.3.0.0.3553.windows-core-x64.zip&api-version=5.1",
- "installed": false,
- "installable": false,
- "latest": false,
- "changes": {
- "new": [],
- "fixed": [
- "Importing completed downloads from NZBGet with post processing script failing",
- "Importing of completed download when not a child of the download client output path",
- "Getting parent of UNC paths"
- ]
- },
- "hash": "a95c855cbc3ee253fd0b74181e866106daffc7b71b4a9e2d57cfbeede4333aee"
- }
- }
- }
- }
- }
- },
- "401": {
- "description": "Invalid API Key"
- }
- },
- "operationId": "get-update",
- "description": "Will return a list of recent updates to Radarr\n\nLocation: System > Updates",
- "security": [
- {
- "X-API-Key": []
- },
- {
- "apikey": []
- }
- ]
- }
- },
- "/qualityProfile": {
- "get": {
- "summary": "Get All Quality Profiles",
- "tags": [
- "Quality"
- ],
- "responses": {
- "200": {
- "description": "Successful response",
- "content": {
- "application/json": {
- "schema": {
- "type": "array",
- "items": {
- "$ref": "#/components/schemas/QualityProfile"
- }
- },
- "examples": {}
- }
- }
- },
- "401": {
- "description": "Invalid API Key"
- }
- },
- "operationId": "get-add-discover",
- "description": "Query Radarr for quality profiles ",
- "security": [
- {
- "X-API-Key": []
- },
- {
- "apikey": []
- }
- ]
- },
- "parameters": []
- },
- "/calendar": {
- "get": {
- "summary": "Get Calendar Events",
- "tags": [
- "Calendar"
- ],
- "responses": {
- "200": {
- "description": "Successful request"
- },
- "401": {
- "description": "Invalid API Key"
- }
- },
- "operationId": "get-calendar",
- "description": "Get a list of movies based on calendar parameters",
- "security": [
- {
- "X-API-Key": []
- },
- {
- "apikey": []
- }
- ],
- "parameters": [
- {
- "schema": {
- "type": "boolean"
- },
- "in": "query",
- "name": "unmonitored",
- "required": true
- },
- {
- "schema": {
- "type": "string"
- },
- "in": "query",
- "name": "start",
- "description": "ISO 8601",
- "required": true
- },
- {
- "schema": {
- "type": "string"
- },
- "in": "query",
- "name": "end",
- "description": "ISO 8601",
- "required": true
- }
- ]
- }
- },
- "/queue": {
- "get": {
- "summary": "Get Activity Queue",
- "tags": [
- "Queue"
- ],
- "responses": {
- "200": {
- "description": "Successful request"
- },
- "401": {
- "description": "Invalid API Key"
- }
- },
- "operationId": "get-queue",
- "description": "Return a json object list of items in the queue",
- "security": [
- {
- "X-API-Key": []
- },
- {
- "apikey": []
- }
- ],
- "parameters": [
- {
- "schema": {
- "type": "integer"
- },
- "in": "query",
- "name": "page",
- "description": "1",
- "required": true
- },
- {
- "schema": {
- "type": "integer"
- },
- "in": "query",
- "name": "pageSize",
- "description": "20",
- "required": true
- },
- {
- "schema": {
- "type": "string"
- },
- "in": "query",
- "name": "sortDirection",
- "description": "ascending",
- "required": true
- },
- {
- "schema": {
- "type": "string"
- },
- "in": "query",
- "name": "sortKey",
- "description": "timeLeft",
- "required": true
- },
- {
- "schema": {
- "type": "boolean"
- },
- "in": "query",
- "name": "includeUnknownMovieItems",
- "description": "true",
- "required": true
- }
- ]
- }
- },
- "/history": {
- "get": {
- "summary": "Get History",
- "responses": {
- "200": {
- "description": "Successful request",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "page": {
- "type": "integer"
- },
- "pageSize": {
- "type": "integer"
- },
- "sortDirection": {
- "type": "string"
- },
- "totalRecords": {
- "type": "integer"
- },
- "records": {
- "type": "array",
- "items": {
- "$ref": "#/components/schemas/History"
- }
- }
- }
- },
- "examples": {}
- }
- }
- },
- "401": {
- "description": "Invalid API Key"
- }
- },
- "operationId": "get-history",
- "description": "Return a json object list of items in your history",
- "security": [
- {
- "X-API-Key": []
- },
- {
- "apikey": []
- }
- ],
- "parameters": [
- {
- "schema": {
- "type": "integer"
- },
- "in": "query",
- "name": "page",
- "description": "1",
- "required": true
- },
- {
- "schema": {
- "type": "integer"
- },
- "in": "query",
- "name": "pageSize",
- "description": "20",
- "required": true
- },
- {
- "schema": {
- "type": "string"
- },
- "in": "query",
- "name": "sortDirection",
- "description": "descending",
- "required": true
- },
- {
- "schema": {
- "type": "string"
- },
- "in": "query",
- "name": "sortKey",
- "description": "date",
- "required": true
- }
- ],
- "tags": [
- "History"
- ]
- }
- },
- "/customfilter": {
- "get": {
- "summary": "Get UI Custom Filters",
- "tags": [
- "Custom Filters"
- ],
- "responses": {
- "200": {
- "description": "Successful response",
- "content": {
- "application/json": {
- "schema": {
- "type": "array",
- "description": "",
- "minItems": 1,
- "uniqueItems": true,
- "items": {
- "type": "object",
- "properties": {
- "type": {
- "type": "string",
- "minLength": 1
- },
- "label": {
- "type": "string",
- "minLength": 1
- },
- "filters": {
- "type": "array",
- "uniqueItems": true,
- "minItems": 1,
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "minLength": 1
- },
- "value": {
- "type": "array",
- "items": {
- "type": "string"
- }
- },
- "type": {
- "type": "string"
- }
- },
- "required": [
- "key",
- "type"
- ]
- }
- },
- "id": {
- "type": "integer"
- }
- },
- "required": [
- "type",
- "label",
- "filters",
- "id"
- ]
- }
- },
- "examples": {
- "Example": {
- "value": [
- {
- "type": "movieIndex",
- "label": "Rated G",
- "filters": [
- {
- "key": "certification",
- "value": [
- "G"
- ],
- "type": "equal"
- }
- ],
- "id": 10
- }
- ]
- }
- }
- }
- }
- },
- "401": {
- "description": "Invalid API Key"
- }
- },
- "operationId": "get-customFilter",
- "description": "Query Radarr for custom filters",
- "security": [
- {
- "X-API-Key": []
- },
- {
- "apikey": []
- }
- ]
- },
- "parameters": []
- },
- "/importlist": {
- "get": {
- "summary": "Get All Import Lists",
- "responses": {
- "200": {
- "description": "Successful response",
- "content": {
- "application/json": {
- "schema": {
- "type": "array",
- "items": {
- "$ref": "#/components/schemas/ImportList"
- }
- },
- "examples": {
- "Example": {
- "value": [
- {
- "enabled": true,
- "enableAuto": true,
- "shouldMonitor": true,
- "rootFolderPath": "D:\\Plex\\Movies\\",
- "qualityProfileId": 4,
- "searchOnAdd": false,
- "minimumAvailability": "announced",
- "listType": "other",
- "listOrder": 3,
- "name": "IMDb List",
- "fields": [
- {
- "order": 0,
- "name": "listId",
- "label": "List/User ID",
- "helpText": "IMDb list ID (e.g ls12345678), IMDb user ID (e.g. ur12345678), 'top250' or 'popular'",
- "value": "ur109135197",
- "type": "textbox",
- "advanced": false
- }
- ],
- "implementationName": "IMDb Lists",
- "implementation": "IMDbListImport",
- "configContract": "IMDbListSettings",
- "infoLink": "https://wiki.servarr.com/radarr/settings#lists",
- "tags": [
- 2
- ],
- "id": 1
- }
- ]
- }
- }
- }
- }
- },
- "401": {
- "description": "Invalid API Key"
- }
- },
- "operationId": "get-importList",
- "description": "Query Radarr for all lists",
- "security": [
- {
- "X-API-Key": []
- },
- {
- "apikey": []
- }
- ],
- "tags": [
- "Import Lists"
- ]
- },
- "parameters": []
- },
- "/config/ui": {
- "get": {
- "summary": "Get UI Settings",
- "responses": {
- "200": {
- "description": "Successful request",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "firstDayOfWeek": {
- "type": "integer"
- },
- "calendarWeekColumnHeader": {
- "type": "string"
- },
- "movieRuntimeFormat": {
- "type": "string"
- },
- "shortDateFormat": {
- "type": "string"
- },
- "longDateFormat": {
- "type": "string"
- },
- "timeFormat": {
- "type": "string"
- },
- "showRelativeDates": {
- "type": "boolean"
- },
- "enableColorImpairedMode": {
- "type": "boolean"
- },
- "movieInfoLanguage": {
- "type": "integer"
- },
- "id": {
- "type": "integer"
- }
- }
- },
- "examples": {
- "Example": {
- "value": {
- "firstDayOfWeek": 0,
- "calendarWeekColumnHeader": "ddd M/D",
- "movieRuntimeFormat": "hoursMinutes",
- "shortDateFormat": "MMM D YYYY",
- "longDateFormat": "dddd, MMMM D YYYY",
- "timeFormat": "h(:mm)a",
- "showRelativeDates": true,
- "enableColorImpairedMode": false,
- "movieInfoLanguage": 1,
- "id": 1
- }
- }
- }
- }
- }
- },
- "401": {
- "description": "Invalid API Key"
- }
- },
- "operationId": "get-ui",
- "description": "Query Radarr for UI settings",
- "security": [
- {
- "X-API-Key": []
- },
- {
- "apikey": []
- }
- ],
- "tags": [
- "Settings"
- ]
- },
- "parameters": [],
- "put": {
- "summary": "Edit UI Settings",
- "operationId": "putconfig-ui",
- "responses": {
- "200": {
- "description": "OK"
- },
- "401": {
- "description": "Unauthorized",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {}
- }
- }
- }
- }
- },
- "description": "Edit one or many UI settings and save to to the database",
- "tags": [
- "Settings"
- ],
- "requestBody": {
- "content": {
- "application/json": {
- "schema": {
- "description": "",
- "type": "object",
- "properties": {
- "firstDayOfWeek": {
- "type": "integer"
- },
- "calendarWeekColumnHeader": {
- "type": "string",
- "minLength": 1
- },
- "movieRuntimeFormat": {
- "type": "string",
- "minLength": 1,
- "enum": [
- "hoursMinutes",
- "minutes"
- ]
- },
- "shortDateFormat": {
- "type": "string",
- "minLength": 1
- },
- "longDateFormat": {
- "type": "string",
- "minLength": 1
- },
- "timeFormat": {
- "type": "string",
- "minLength": 1
- },
- "showRelativeDates": {
- "type": "boolean"
- },
- "enableColorImpairedMode": {
- "type": "boolean"
- },
- "movieInfoLanguage": {
- "type": "number"
- },
- "id": {
- "type": "integer"
- }
- },
- "required": [
- "id"
- ]
- }
- }
- }
- },
- "security": [
- {
- "X-API-Key": []
- },
- {
- "apikey": []
- }
- ]
- }
- },
- "/remotePathMapping": {
- "get": {
- "summary": "Get All Remote Path Mappings",
- "tags": [
- "Remote Path Mapping"
- ],
- "responses": {
- "200": {
- "description": "Successful request",
- "content": {
- "application/json": {
- "schema": {
- "type": "array",
- "description": "",
- "minItems": 1,
- "uniqueItems": true,
- "items": {
- "type": "object",
- "properties": {
- "host": {
- "type": "string",
- "minLength": 1
- },
- "remotePath": {
- "type": "string",
- "minLength": 1
- },
- "localPath": {
- "type": "string",
- "minLength": 1
- },
- "id": {
- "type": "integer"
- }
- },
- "required": [
- "host",
- "remotePath",
- "localPath",
- "id"
- ]
- }
- },
- "examples": {
- "Example": {
- "value": [
- {
- "host": "localhost",
- "remotePath": "B:\\",
- "localPath": "A:\\Movies\\",
- "id": 1
- },
- {
- "host": "localhost",
- "remotePath": "C:\\",
- "localPath": "A:\\Movies\\",
- "id": 2
- }
- ]
- }
- }
- }
- }
- },
- "401": {
- "description": "Invalid API Key"
- }
- },
- "operationId": "get-remotePathMapping",
- "description": "Get a list of remote paths being mapped and used by Radarr",
- "security": [
- {
- "X-API-Key": []
- },
- {
- "apikey": []
- }
- ]
- }
- },
- "/downloadclient": {
- "get": {
- "summary": "Get All Download Clients",
- "tags": [
- "Download Client"
- ],
- "responses": {
- "200": {
- "description": "Successful request",
- "content": {
- "application/json": {
- "schema": {
- "type": "array",
- "items": {
- "$ref": "#/components/schemas/DownloadClient"
- }
- }
- }
- }
- },
- "401": {
- "description": "Invalid API Key"
- }
- },
- "operationId": "get-downloadClient",
- "description": "Get a list of all the download clients added in Radarr",
- "security": [
- {
- "X-API-Key": []
- },
- {
- "apikey": []
- }
- ]
- },
- "parameters": []
- },
- "/blocklist": {
- "get": {
- "summary": "Get Blocklisted Releases",
- "tags": [
- "Blocklist"
- ],
- "responses": {
- "200": {
- "description": "Invalid API Key",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "page": {
- "type": "integer",
- "description": "1"
- },
- "pageSize": {
- "type": "integer",
- "description": "20"
- },
- "sortDirection": {
- "type": "string",
- "description": "descending"
- },
- "sortKey": {
- "type": "string",
- "description": "date"
- },
- "totalRecords": {
- "type": "integer"
- },
- "records": {
- "type": "array",
- "items": {
- "$ref": "#/components/schemas/Blocklist"
- }
- }
- },
- "required": [
- "page",
- "pageSize",
- "sortDirection",
- "sortKey"
- ]
- }
- }
- }
- },
- "401": {
- "description": "Invalid API Key"
- }
- },
- "operationId": "get-blockList",
- "description": "Returns blocklisted releases",
- "security": [
- {
- "X-API-Key": []
- }
- ],
- "parameters": [
- {
- "schema": {
- "type": "integer"
- },
- "in": "query",
- "name": "page",
- "description": "1",
- "required": true
- },
- {
- "schema": {
- "type": "integer"
- },
- "in": "query",
- "name": "pageSize",
- "description": "20",
- "required": true
- },
- {
- "schema": {
- "type": "string"
- },
- "in": "query",
- "name": "sortDirection",
- "description": "descending",
- "required": true
- },
- {
- "schema": {
- "type": "string"
- },
- "in": "query",
- "name": "sortKey",
- "description": "date",
- "required": true
- }
- ]
- },
- "delete": {
- "summary": "Delete a Blocklisted Release",
- "operationId": "delete-blockList",
- "responses": {
- "200": {
- "description": "Successful request"
- },
- "401": {
- "description": "Invalid API Key"
- }
- },
- "description": "Removes a specific release (the id provided) from the blocklist",
- "security": [
- {
- "X-API-Key": []
- },
- {
- "apikey": []
- }
- ],
- "parameters": [
- {
- "schema": {
- "type": "integer"
- },
- "in": "query",
- "name": "id",
- "required": true
- }
- ],
- "tags": [
- "Blocklist"
- ]
- },
- "parameters": []
- },
- "/blocklist/movie": {
- "get": {
- "summary": "Get Blocklisted Releases for a Movie",
- "tags": [
- "Blocklist"
- ],
- "responses": {
- "200": {
- "description": "OK",
- "content": {
- "application/json": {
- "schema": {
- "type": "array",
- "items": {
- "$ref": "#/components/schemas/Blocklist"
- }
- }
- }
- }
- },
- "401": {
- "description": "Unauthorized"
- }
- },
- "operationId": "get-blocklist-movie",
- "description": "Retrieves blocklisted releases that are tied to a given movie in the database",
- "parameters": [
- {
- "schema": {
- "type": "integer"
- },
- "in": "query",
- "name": "movieId",
- "description": "Database Id for the movie ",
- "required": true
- }
- ],
- "security": [
- {
- "X-API-Key": []
- },
- {
- "apikey": []
- }
- ]
- }
- },
- "/blocklist/bulk": {
- "delete": {
- "summary": "Delete Blocklisted Releases",
- "operationId": "delete-blocklist-bulk",
- "responses": {
- "200": {
- "description": "OK"
- }
- },
- "description": "Delete blocklisted releases in bulk",
- "security": [
- {
- "X-API-Key": []
- }
- ],
- "requestBody": {
- "content": {
- "application/json": {
- "schema": {
- "description": "",
- "type": "object",
- "properties": {
- "ids": {
- "type": "array",
- "description": "Database ids of the blocklist items to delete",
- "items": {
- "type": "integer"
- }
- }
- },
- "required": [
- "ids"
- ]
- },
- "examples": {}
- }
- }
- },
- "tags": [
- "Blocklist"
- ]
- }
- },
- "/indexer": {
- "get": {
- "summary": "Get All Indexers",
- "tags": [
- "Indexer"
- ],
- "responses": {
- "200": {
- "description": "OK",
- "content": {
- "application/json": {
- "schema": {
- "type": "array",
- "description": "",
- "minItems": 1,
- "uniqueItems": true,
- "items": {
- "$ref": "#/components/schemas/Indexer"
- }
- }
- }
- }
- },
- "401": {
- "description": "Unauthorized",
- "content": {
- "application/json": {
- "schema": {
- "description": "",
- "type": "object",
- "properties": {
- "error": {
- "type": "string",
- "minLength": 1
- }
- },
- "required": [
- "error"
- ]
- }
- }
- }
- }
- },
- "operationId": "get-indexer",
- "security": [
- {
- "X-API-Key": []
- },
- {
- "apikey": []
- }
- ],
- "description": "Get all indexers"
- }
- },
- "/indexer/{id}": {
- "parameters": [
- {
- "schema": {
- "type": "integer"
- },
- "name": "id",
- "in": "path",
- "required": true,
- "description": "Database Id of the indexer"
- }
- ],
- "get": {
- "summary": "Get an Indexer",
- "tags": [
- "Indexer"
- ],
- "responses": {
- "200": {
- "description": "OK",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/Indexer"
- }
- }
- }
- },
- "401": {
- "description": "Unauthorized"
- }
- },
- "operationId": "get-indexer-id",
- "description": "Get Indexer by its database Id",
- "parameters": [],
- "security": [
- {
- "X-API-Key": []
- },
- {
- "apikey": []
- }
- ]
- },
- "put": {
- "summary": "Edit an Indexer",
- "operationId": "put-indexer-id",
- "responses": {
- "200": {
- "description": "OK"
- },
- "401": {
- "description": "Unauthorized"
- }
- },
- "security": [
- {
- "X-API-Key": []
- },
- {
- "apikey": []
- }
- ],
- "tags": [
- "Indexer"
- ]
- },
- "delete": {
- "summary": "Delete an Indexer",
- "operationId": "delete-indexer-id",
- "responses": {
- "200": {
- "description": "OK"
- },
- "401": {
- "description": "Unauthorized"
- }
- },
- "description": "Delete Indexer by database id",
- "security": [
- {
- "X-API-Key": []
- },
- {
- "apikey": []
- }
- ],
- "tags": [
- "Indexer"
- ]
- }
- },
- "/downloadclient/{id}": {
- "parameters": [
- {
- "schema": {
- "type": "integer"
- },
- "name": "id",
- "in": "path",
- "required": true,
- "description": "Database id of the download client"
- }
- ],
- "get": {
- "summary": "Get a Download Client",
- "tags": [
- "Download Client"
- ],
- "responses": {
- "200": {
- "description": "OK",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/DownloadClient"
- }
- }
- }
- },
- "401": {
- "description": "Unauthorized"
- }
- },
- "operationId": "get-downloadclient-id",
- "description": "Get a single download client by database id",
- "security": [
- {
- "X-API-Key": []
- },
- {
- "apikey": []
- }
- ]
- },
- "delete": {
- "summary": "Delete a Download Client",
- "operationId": "delete-downloadclient-id",
- "responses": {
- "200": {
- "description": "OK"
- }
- },
- "description": "Delete a download client by database id",
- "security": [
- {
- "X-API-Key": []
- }
- ],
- "tags": [
- "Download Client"
- ]
- },
- "put": {
- "summary": "Edit a Download Client",
- "operationId": "put-downloadclient-id",
- "responses": {
- "200": {
- "description": "OK"
- }
- },
- "security": [
- {
- "X-API-Key": []
- },
- {
- "apikey": []
- }
- ],
- "description": "Edit a downloadclient by database id",
- "requestBody": {
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/DownloadClient"
- }
- }
- },
- "description": ""
- },
- "tags": [
- "Download Client"
- ]
- }
- },
- "/notification": {
- "get": {
- "summary": "Get All Notifications",
- "tags": [
- "Notification"
- ],
- "responses": {
- "200": {
- "description": "OK",
- "content": {
- "application/json": {
- "schema": {
- "type": "array",
- "items": {
- "$ref": "#/components/schemas/Notification"
- }
- }
- }
- }
- },
- "401": {
- "description": "Unauthorized"
- }
- },
- "operationId": "get-notifications",
- "description": "Get all notifications",
- "security": [
- {
- "X-API-Key": []
- },
- {
- "apikey": []
- }
- ]
- },
- "parameters": []
- },
- "/notification/{id}": {
- "parameters": [
- {
- "schema": {
- "type": "integer"
- },
- "name": "id",
- "in": "path",
- "required": true,
- "description": "Database id of notification"
- }
- ],
- "get": {
- "summary": "Get a Notification",
- "tags": [
- "Notification"
- ],
- "responses": {
- "200": {
- "description": "OK",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/Notification"
- }
- }
- }
- },
- "401": {
- "description": "Unauthorized"
- }
- },
- "operationId": "get-notification-id",
- "security": [
- {
- "X-API-Key": []
- },
- {
- "apikey": []
- }
- ],
- "description": "Get Notification by database id"
- },
- "delete": {
- "summary": "Delete a Notification",
- "operationId": "delete-notification-id",
- "responses": {
- "200": {
- "description": "OK"
- },
- "401": {
- "description": "Unauthorized"
- }
- },
- "security": [
- {
- "X-API-Key": []
- },
- {
- "apikey": []
- }
- ],
- "description": "Delete Notification by database id",
- "tags": [
- "Notification"
- ]
- },
- "put": {
- "summary": "Edit a Notification",
- "operationId": "put-notification-id",
- "responses": {
- "200": {
- "description": "OK"
- },
- "401": {
- "description": "Unauthorized"
- }
- },
- "security": [
- {
- "X-API-Key": []
- },
- {
- "apikey": []
- }
- ],
- "requestBody": {
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/Notification"
- }
- }
- }
- },
- "description": "Edit Notification by database id",
- "tags": [
- "Notification"
- ]
- }
- },
- "/metadata": {
- "get": {
- "summary": "Get All Metadata",
- "tags": [
- "Metadata"
- ],
- "responses": {
- "200": {
- "description": "OK",
- "content": {
- "application/json": {
- "schema": {
- "type": "array",
- "items": {
- "$ref": "#/components/schemas/Metadata"
- }
- }
- }
- }
- },
- "401": {
- "description": "Unauthorized"
- }
- },
- "operationId": "get-metadata",
- "description": "Get all metadata consumer settings",
- "security": [
- {
- "X-API-Key": []
- },
- {
- "apikey": []
- }
- ]
- }
- },
- "/movie/lookup": {
- "get": {
- "summary": "Lookup a Movie to Add",
- "tags": [
- "Movie"
- ],
- "responses": {
- "200": {
- "description": "OK",
- "content": {
- "application/json": {
- "schema": {
- "type": "array",
- "items": {
- "$ref": "#/components/schemas/Movie"
- }
- }
- }
- }
- },
- "401": {
- "description": "Unauthorized"
- }
- },
- "operationId": "get-movie-lookup",
- "description": "Search for a movie to add to the database (Uses TMDB for search results)",
- "security": [
- {
- "X-API-Key": []
- },
- {
- "apikey": []
- }
- ],
- "parameters": [
- {
- "schema": {
- "type": "string"
- },
- "in": "query",
- "name": "term",
- "description": "search term to use for lookup",
- "required": true
- }
- ]
- }
- },
- "/history/movie": {
- "get": {
- "summary": "Get History for a Movie",
- "tags": [
- "History"
- ],
- "responses": {
- "200": {
- "description": "OK",
- "content": {
- "application/json": {
- "schema": {
- "type": "array",
- "items": {
- "$ref": "#/components/schemas/History"
- }
- }
- }
- }
- },
- "401": {
- "description": "Unauthorized"
- }
- },
- "operationId": "get-history-movie",
- "description": "Get history for a given movie in database by its database id",
- "parameters": [
- {
- "schema": {
- "type": "integer"
- },
- "in": "query",
- "name": "movieId",
- "description": "database id of movie",
- "required": true
- },
- {
- "schema": {
- "type": "integer"
- },
- "in": "query",
- "name": "eventType",
- "description": "history event type to retrieve"
- }
- ],
- "security": [
- {
- "X-API-Key": []
- },
- {
- "apikey": []
- }
- ]
- }
- },
- "/movie/editor": {
- "put": {
- "summary": "Edit Multiple Movies",
- "operationId": "put-movie-editor",
- "responses": {
- "200": {
- "description": "OK",
- "content": {
- "application/json": {
- "schema": {
- "type": "array",
- "items": {
- "$ref": "#/components/schemas/Movie"
- }
- }
- }
- }
- },
- "401": {
- "description": "Unauthorized"
- }
- },
- "description": "Editor endpoint is used by the movie editor in Radarr. The Edit operation allows to edit properties of multiple movies at once",
- "security": [
- {
- "X-API-Key": []
- },
- {
- "apikey": []
- }
- ],
- "requestBody": {
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "movieIds": {
- "type": "array",
- "items": {
- "type": "integer"
- }
- },
- "monitored": {
- "type": "boolean"
- },
- "qualityProfileId": {
- "type": "integer"
- },
- "minimumAvailability": {
- "type": "string"
- },
- "rootFolderPath": {
- "type": "string"
- },
- "tags": {
- "type": "array",
- "items": {
- "type": "integer"
- }
- },
- "applyTags": {
- "type": "string",
- "enum": [
- "add",
- "remove",
- "replace"
- ]
- },
- "moveFiles": {
- "type": "boolean"
- }
- },
- "required": [
- "movieIds"
- ]
- }
- }
- }
- },
- "tags": [
- "Movie"
- ]
- },
- "delete": {
- "summary": "Delete Multiple Movies",
- "operationId": "delete-movie-editor",
- "responses": {
- "200": {
- "description": "OK"
- },
- "401": {
- "description": "Unauthorized"
- }
- },
- "description": "Editor endpoint is used by the movie editor in Radarr. The Delete operation allows mass deletion of movies (and optionally files).",
- "security": [
- {
- "X-API-Key": []
- },
- {
- "apikey": []
- }
- ],
- "requestBody": {
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "movieIds": {
- "type": "array",
- "items": {
- "type": "integer"
- }
- },
- "deleteFIles": {
- "type": "boolean"
- },
- "addImportExclusion": {
- "type": "boolean"
- }
- },
- "required": [
- "movieIds",
- "deleteFIles",
- "addImportExclusion"
- ]
- }
- }
- }
- },
- "tags": [
- "Movie"
- ]
- }
- },
- "/movie/import": {
- "post": {
- "summary": "Add Movies From Folders",
- "operationId": "post-movie-import",
- "responses": {
- "200": {
- "description": "OK",
- "content": {
- "application/json": {
- "schema": {
- "type": "array",
- "items": {
- "$ref": "#/components/schemas/Movie"
- }
- }
- }
- }
- },
- "401": {
- "description": "Unauthorized"
- }
- },
- "description": "The movie import endpoint is used by the bulk import view in Radarr UI. It allows movies to be bulk added to the Radarr database.",
- "security": [
- {
- "X-API-Key": []
- },
- {
- "apikey": []
- }
- ],
- "requestBody": {
- "content": {
- "application/json": {
- "schema": {
- "type": "array",
- "items": {
- "$ref": "#/components/schemas/Movie"
- }
- }
- }
- }
- },
- "tags": [
- "Movie"
- ]
- }
- },
- "/moviefile": {
- "get": {
- "summary": "Get Multiple MovieFiles",
- "responses": {
- "200": {
- "description": "OK",
- "content": {
- "application/json": {
- "schema": {
- "type": "array",
- "items": {
- "$ref": "#/components/schemas/MovieFile"
- }
- }
- }
- }
- },
- "401": {
- "description": "Unauthorized"
- }
- },
- "operationId": "get-moviefile",
- "description": "The moviefile endpoint allows for retrieval of all moviefile by a list of ids or by the associated movieid. Either the moviefileids OR movieid query parameter must be passed.",
- "security": [
- {
- "X-API-Key": []
- },
- {
- "apikey": []
- }
- ],
- "parameters": [
- {
- "schema": {
- "type": "array"
- },
- "in": "query",
- "name": "moviefileids",
- "description": "Comma separated list of moviefile ids",
- "required": true
- },
- {
- "schema": {
- "type": "string"
- },
- "in": "query",
- "name": "movieid",
- "description": "Database id of movie to retrieve files for",
- "required": true
- }
- ],
- "tags": [
- "MovieFile"
- ]
- }
- },
- "/moviefile/{id}": {
- "parameters": [
- {
- "schema": {
- "type": "string"
- },
- "name": "id",
- "in": "path",
- "required": true
- }
- ],
- "get": {
- "summary": "Get a MovieFile",
- "responses": {
- "200": {
- "description": "OK",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/MovieFile"
- }
- }
- }
- },
- "401": {
- "description": "Unauthorized"
- }
- },
- "operationId": "get-moviefile-id",
- "security": [
- {
- "X-API-Key": []
- },
- {
- "apikey": []
- }
- ],
- "description": "Get a movie file object by its database id.",
- "tags": [
- "MovieFile"
- ]
- },
- "delete": {
- "summary": "Delete a Movie",
- "operationId": "delete-moviefile-id",
- "responses": {
- "200": {
- "description": "OK"
- },
- "401": {
- "description": "Unauthorized"
- }
- },
- "description": "Allows for deletion of a moviefile by its database id.",
- "security": [
- {
- "X-API-Key": []
- },
- {
- "apikey": []
- }
- ],
- "tags": [
- "MovieFile"
- ]
- }
- },
- "/importlist/{id}": {
- "parameters": [
- {
- "schema": {
- "type": "string"
- },
- "name": "id",
- "in": "path",
- "required": true
- }
- ],
- "get": {
- "summary": "Get an Import List",
- "tags": [
- "Import Lists"
- ],
- "responses": {
- "200": {
- "description": "OK"
- },
- "401": {
- "description": "Unauthorized",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/ImportList"
- }
- }
- }
- }
- },
- "operationId": "get-importlist-id",
- "description": "",
- "security": [
- {
- "X-API-Key": []
- },
- {
- "apikey": []
- }
- ]
- },
- "put": {
- "summary": "Edit an Import List",
- "operationId": "put-importlist-id",
- "responses": {
- "200": {
- "description": "OK"
- },
- "401": {
- "description": "Unauthorized"
- }
- },
- "security": [
- {
- "X-API-Key": []
- },
- {
- "apikey": []
- }
- ],
- "tags": [
- "Import Lists"
- ]
- },
- "delete": {
- "summary": "Delete an Import List",
- "operationId": "delete-importlist-id",
- "responses": {
- "200": {
- "description": "OK"
- },
- "401": {
- "description": "Unauthorized"
- }
- },
- "description": "",
- "security": [
- {
- "X-API-Key": []
- },
- {
- "apikey": []
- }
- ],
- "tags": [
- "Import Lists"
- ]
- }
- },
- "/config/host": {
- "get": {
- "summary": "Get Host Settings",
- "tags": [
- "Settings"
- ],
- "responses": {
- "200": {
- "description": "OK",
- "content": {
- "application/json": {
- "schema": {
- "description": "",
- "type": "object",
- "properties": {
- "bindAddress": {
- "type": "string",
- "minLength": 1
- },
- "port": {
- "type": "integer"
- },
- "sslPort": {
- "type": "integer"
- },
- "enableSsl": {
- "type": "boolean"
- },
- "launchBrowser": {
- "type": "boolean"
- },
- "authenticationMethod": {
- "type": "string",
- "minLength": 1
- },
- "analyticsEnabled": {
- "type": "boolean"
- },
- "username": {
- "type": "string",
- "minLength": 1
- },
- "password": {
- "type": "string",
- "minLength": 1
- },
- "logLevel": {
- "type": "string",
- "minLength": 1
- },
- "consoleLogLevel": {
- "type": "string"
- },
- "branch": {
- "type": "string",
- "minLength": 1
- },
- "apiKey": {
- "type": "string",
- "minLength": 1
- },
- "sslCertPath": {
- "type": "string"
- },
- "sslCertPassword": {
- "type": "string"
- },
- "urlBase": {
- "type": "string"
- },
- "updateAutomatically": {
- "type": "boolean"
- },
- "updateMechanism": {
- "type": "string",
- "minLength": 1
- },
- "updateScriptPath": {
- "type": "string"
- },
- "proxyEnabled": {
- "type": "boolean"
- },
- "proxyType": {
- "type": "string",
- "minLength": 1
- },
- "proxyHostname": {
- "type": "string"
- },
- "proxyPort": {
- "type": "integer"
- },
- "proxyUsername": {
- "type": "string"
- },
- "proxyPassword": {
- "type": "string"
- },
- "proxyBypassFilter": {
- "type": "string"
- },
- "proxyBypassLocalAddresses": {
- "type": "boolean"
- },
- "certificateValidation": {
- "type": "string",
- "minLength": 1
- },
- "backupFolder": {
- "type": "string",
- "minLength": 1
- },
- "backupInterval": {
- "type": "integer"
- },
- "backupRetention": {
- "type": "integer"
- },
- "id": {
- "type": "integer"
- }
- },
- "required": [
- "bindAddress",
- "port",
- "sslPort",
- "enableSsl",
- "launchBrowser",
- "authenticationMethod",
- "analyticsEnabled",
- "username",
- "password",
- "logLevel",
- "consoleLogLevel",
- "branch",
- "apiKey",
- "sslCertPath",
- "sslCertPassword",
- "urlBase",
- "updateAutomatically",
- "updateMechanism",
- "updateScriptPath",
- "proxyEnabled",
- "proxyType",
- "proxyHostname",
- "proxyPort",
- "proxyUsername",
- "proxyPassword",
- "proxyBypassFilter",
- "proxyBypassLocalAddresses",
- "certificateValidation",
- "backupFolder",
- "backupInterval",
- "backupRetention",
- "id"
- ]
- }
- }
- }
- },
- "401": {
- "description": "Unauthorized"
- }
- },
- "operationId": "get-config-host",
- "security": [
- {
- "X-API-Key": []
- },
- {
- "apikey": []
- }
- ],
- "description": "Get General/Host settings for Radarr."
- },
- "put": {
- "summary": "Edit Host Settings",
- "operationId": "put-config-host",
- "responses": {
- "200": {
- "description": "OK"
- },
- "401": {
- "description": "Unauthorized"
- }
- },
- "description": "Edit General/Host settings for Radarr.",
- "requestBody": {
- "content": {
- "application/json": {
- "schema": {
- "description": "",
- "type": "object",
- "properties": {
- "bindAddress": {
- "type": "string",
- "minLength": 1
- },
- "port": {
- "type": "number"
- },
- "sslPort": {
- "type": "number"
- },
- "enableSsl": {
- "type": "boolean"
- },
- "launchBrowser": {
- "type": "boolean"
- },
- "authenticationMethod": {
- "type": "string",
- "minLength": 1
- },
- "analyticsEnabled": {
- "type": "boolean"
- },
- "username": {
- "type": "string",
- "minLength": 1
- },
- "password": {
- "type": "string",
- "minLength": 1
- },
- "logLevel": {
- "type": "string",
- "minLength": 1
- },
- "consoleLogLevel": {
- "type": "string"
- },
- "branch": {
- "type": "string",
- "minLength": 1
- },
- "apiKey": {
- "type": "string",
- "minLength": 1
- },
- "sslCertPath": {
- "type": "string"
- },
- "sslCertPassword": {
- "type": "string"
- },
- "urlBase": {
- "type": "string"
- },
- "updateAutomatically": {
- "type": "boolean"
- },
- "updateMechanism": {
- "type": "string",
- "minLength": 1
- },
- "updateScriptPath": {
- "type": "string"
- },
- "proxyEnabled": {
- "type": "boolean"
- },
- "proxyType": {
- "type": "string",
- "minLength": 1
- },
- "proxyHostname": {
- "type": "string"
- },
- "proxyPort": {
- "type": "number"
- },
- "proxyUsername": {
- "type": "string"
- },
- "proxyPassword": {
- "type": "string"
- },
- "proxyBypassFilter": {
- "type": "string"
- },
- "proxyBypassLocalAddresses": {
- "type": "boolean"
- },
- "certificateValidation": {
- "type": "string",
- "minLength": 1
- },
- "backupFolder": {
- "type": "string",
- "minLength": 1
- },
- "backupInterval": {
- "type": "number"
- },
- "backupRetention": {
- "type": "number"
- },
- "id": {
- "type": "number"
- }
- },
- "required": [
- "bindAddress",
- "port",
- "sslPort",
- "enableSsl",
- "launchBrowser",
- "authenticationMethod",
- "analyticsEnabled",
- "username",
- "password",
- "logLevel",
- "consoleLogLevel",
- "branch",
- "apiKey",
- "sslCertPath",
- "sslCertPassword",
- "urlBase",
- "updateAutomatically",
- "updateMechanism",
- "updateScriptPath",
- "proxyEnabled",
- "proxyType",
- "proxyHostname",
- "proxyPort",
- "proxyUsername",
- "proxyPassword",
- "proxyBypassFilter",
- "proxyBypassLocalAddresses",
- "certificateValidation",
- "backupFolder",
- "backupInterval",
- "backupRetention",
- "id"
- ]
- }
- }
- },
- "description": ""
- },
- "tags": [
- "Settings"
- ],
- "security": [
- {
- "X-API-Key": []
- },
- {
- "apikey": []
- }
- ]
- }
- },
- "/config/naming": {
- "get": {
- "summary": "Get Naming Settings",
- "tags": [
- "Settings"
- ],
- "responses": {
- "200": {
- "description": "OK",
- "content": {
- "application/json": {
- "schema": {
- "description": "",
- "type": "object",
- "properties": {
- "renameMovies": {
- "type": "boolean"
- },
- "replaceIllegalCharacters": {
- "type": "boolean"
- },
- "colonReplacementFormat": {
- "type": "string",
- "minLength": 1
- },
- "standardMovieFormat": {
- "type": "string",
- "minLength": 1
- },
- "movieFolderFormat": {
- "type": "string",
- "minLength": 1
- },
- "includeQuality": {
- "type": "boolean"
- },
- "replaceSpaces": {
- "type": "boolean"
- },
- "id": {
- "type": "number"
- }
- },
- "required": [
- "renameMovies",
- "replaceIllegalCharacters",
- "colonReplacementFormat",
- "standardMovieFormat",
- "movieFolderFormat",
- "includeQuality",
- "replaceSpaces",
- "id"
- ]
- }
- }
- }
- },
- "401": {
- "description": "Unauthorized"
- }
- },
- "operationId": "get-config-naming",
- "description": "Get Settings for movie file and folder naming.",
- "security": [
- {
- "X-API-Key": []
- },
- {
- "apikey": []
- }
- ]
- },
- "put": {
- "summary": "Edit Naming Settings",
- "operationId": "put-config-naming",
- "responses": {
- "200": {
- "description": "OK"
- },
- "401": {
- "description": "Unauthorized"
- }
- },
- "tags": [
- "Settings"
- ],
- "description": "Edit Settings for movie file and folder naming.",
- "security": [
- {
- "X-API-Key": []
- },
- {
- "apikey": []
- }
- ],
- "requestBody": {
- "content": {
- "application/json": {
- "schema": {
- "description": "",
- "type": "object",
- "properties": {
- "renameMovies": {
- "type": "boolean"
- },
- "replaceIllegalCharacters": {
- "type": "boolean"
- },
- "colonReplacementFormat": {
- "type": "string",
- "minLength": 1
- },
- "standardMovieFormat": {
- "type": "string",
- "minLength": 1
- },
- "movieFolderFormat": {
- "type": "string",
- "minLength": 1
- },
- "includeQuality": {
- "type": "boolean"
- },
- "replaceSpaces": {
- "type": "boolean"
- },
- "id": {
- "type": "number"
- }
- },
- "required": [
- "renameMovies",
- "replaceIllegalCharacters",
- "colonReplacementFormat",
- "standardMovieFormat",
- "movieFolderFormat",
- "includeQuality",
- "replaceSpaces",
- "id"
- ]
- }
- }
- }
- }
- }
- },
- "/queue/{id}": {
- "parameters": [
- {
- "schema": {
- "type": "string"
- },
- "name": "id",
- "in": "path",
- "required": true
- }
- ],
- "delete": {
- "summary": "Remove Item from Queue",
- "operationId": "delete-queue-id",
- "responses": {
- "200": {
- "description": "OK"
- },
- "401": {
- "description": "Invalid API Key"
- }
- },
- "description": "Remove an item from the queue and optionally blocklist it",
- "security": [
- {
- "X-API-Key": []
- },
- {
- "apikey": []
- }
- ],
- "parameters": [
- {
- "schema": {
- "type": "boolean"
- },
- "in": "query",
- "name": "removeFromClient"
- },
- {
- "schema": {
- "type": "boolean"
- },
- "in": "query",
- "name": "blocklist"
- }
- ],
- "tags": [
- "Queue"
- ]
- }
- },
- "/queue/bulk": {
- "delete": {
- "summary": "Remove Items from Queue",
- "operationId": "delete-queue-bulk",
- "responses": {
- "200": {
- "description": "OK"
- },
- "401": {
- "description": "Invalid API Key"
- }
- },
- "security": [
- {
- "X-API-Key": []
- },
- {
- "apikey": []
- }
- ],
- "parameters": [
- {
- "schema": {
- "type": "boolean"
- },
- "in": "query",
- "name": "removeFromClient"
- },
- {
- "schema": {
- "type": "boolean"
- },
- "in": "query",
- "name": "blocklist"
- }
- ],
- "requestBody": {
- "content": {
- "application/json": {
- "schema": {
- "description": "",
- "type": "object",
- "properties": {
- "ids": {
- "type": "array",
- "items": {
- "type": "integer"
- }
- }
- },
- "required": [
- "ids"
- ]
- }
- }
- },
- "description": ""
- },
- "tags": [
- "Queue"
- ],
- "description": "Remove multiple items from queue by their ids"
- }
- },
- "/queue/details": {
- "get": {
- "summary": "Get Queue Item Details",
- "tags": [
- "Queue"
- ],
- "responses": {
- "200": {
- "description": "OK",
- "content": {
- "application/json": {
- "schema": {
- "type": "array",
- "description": "",
- "minItems": 1,
- "uniqueItems": true,
- "items": {
- "type": "object",
- "properties": {
- "languages": {
- "type": "array",
- "uniqueItems": true,
- "minItems": 1,
- "items": {
- "type": "object",
- "properties": {
- "id": {
- "type": "integer"
- },
- "name": {
- "type": "string",
- "minLength": 1
- }
- },
- "required": [
- "id",
- "name"
- ]
- }
- },
- "quality": {
- "$ref": "#/components/schemas/Quality"
- },
- "customFormats": {
- "type": "array",
- "uniqueItems": true,
- "minItems": 1,
- "items": {
- "$ref": "#/components/schemas/CustomFormat"
- }
- },
- "size": {
- "type": "number"
- },
- "title": {
- "type": "string",
- "minLength": 1
- },
- "sizeleft": {
- "type": "number"
- },
- "timeleft": {
- "type": "string",
- "minLength": 1
- },
- "estimatedCompletionTime": {
- "type": "string",
- "minLength": 1
- },
- "status": {
- "type": "string",
- "minLength": 1
- },
- "trackedDownloadStatus": {
- "type": "string",
- "minLength": 1
- },
- "trackedDownloadState": {
- "type": "string",
- "minLength": 1
- },
- "statusMessages": {
- "type": "array",
- "uniqueItems": true,
- "minItems": 1,
- "items": {
- "type": "object",
- "properties": {
- "title": {
- "type": "string",
- "minLength": 1
- },
- "messages": {
- "type": "array",
- "items": {
- "type": "object"
- }
- }
- },
- "required": [
- "title"
- ]
- }
- },
- "errorMessage": {
- "type": "string",
- "minLength": 1
- },
- "downloadId": {
- "type": "string",
- "minLength": 1
- },
- "protocol": {
- "type": "string",
- "minLength": 1
- },
- "downloadClient": {
- "type": "string",
- "minLength": 1
- },
- "indexer": {
- "type": "string",
- "minLength": 1
- },
- "outputPath": {
- "type": "string",
- "minLength": 1
- },
- "id": {
- "type": "integer"
- }
- },
- "required": [
- "languages",
- "quality",
- "customFormats",
- "size",
- "title",
- "sizeleft",
- "timeleft",
- "estimatedCompletionTime",
- "status",
- "trackedDownloadStatus",
- "trackedDownloadState",
- "statusMessages",
- "errorMessage",
- "downloadId",
- "protocol",
- "downloadClient",
- "indexer",
- "outputPath",
- "id"
- ]
- }
- }
- }
- }
- },
- "401": {
- "description": "Invalid API Key"
- }
- },
- "operationId": "get-queue-details",
- "security": [
- {
- "X-API-Key": []
- },
- {
- "apikey": []
- }
- ],
- "parameters": [
- {
- "schema": {
- "type": "boolean"
- },
- "in": "query",
- "name": "includeMovie",
- "description": "Include Movie object if linked"
- }
- ],
- "description": "Get details of all items in queue"
- }
- },
- "/queue/status": {
- "get": {
- "summary": "Get Queue Status",
- "tags": [
- "Queue"
- ],
- "responses": {
- "200": {
- "description": "OK",
- "content": {
- "application/json": {
- "schema": {
- "description": "",
- "type": "object",
- "properties": {
- "totalCount": {
- "type": "integer"
- },
- "count": {
- "type": "integer"
- },
- "unknownCount": {
- "type": "integer"
- },
- "errors": {
- "type": "boolean"
- },
- "warnings": {
- "type": "boolean"
- },
- "unknownErrors": {
- "type": "boolean"
- },
- "unknownWarnings": {
- "type": "boolean"
- }
- },
- "required": [
- "totalCount",
- "count",
- "unknownCount",
- "errors",
- "warnings",
- "unknownErrors",
- "unknownWarnings"
- ]
- }
- }
- }
- },
- "401": {
- "description": "Invalid API Key"
- }
- },
- "operationId": "get-queue-status",
- "description": "Stats on items in queue",
- "security": [
- {
- "X-API-Key": []
- },
- {
- "apikey": []
- }
- ]
- }
- },
- "/queue/grab/{id}": {
- "parameters": [
- {
- "schema": {
- "type": "string"
- },
- "name": "id",
- "in": "path",
- "required": true
- }
- ],
- "post": {
- "summary": "",
- "operationId": "post-queue-grab-id",
- "responses": {
- "200": {
- "description": "OK"
- },
- "401": {
- "description": "Invalid API Key"
- }
- },
- "security": [
- {
- "X-API-Key": []
- },
- {
- "apikey": []
- }
- ],
- "description": "Perform a Radarr \"force grab\" on a pending queue item by its ID.",
- "tags": [
- "Queue"
- ]
- }
- },
- "/rootfolder": {
- "get": {
- "summary": "Gets root folder",
- "responses": {
- "200": {
- "description": "Successful request",
- "content": {
- "application/json": {
- "schema": {
- "type": "array",
- "items": {
- "type": "object"
- }
- },
- "examples": {
- "Response": {
- "value": [
- {
- "path": "C:\\Downloads\\Movies",
- "freeSpace": 282500063232,
- "unmappedFolders": [],
- "id": 1
- }
- ]
- }
- }
- }
- }
- },
- "401": {
- "description": "Invalid API Key"
- }
- },
- "operationId": "get-rootfolder",
- "description": "Query Radarr for root folder information\n\nSettings: Media Management > Root Folders",
- "security": [
- {
- "X-API-Key": []
- },
- {
- "apikey": []
- }
- ],
- "tags": [
- "Root Folder"
- ]
- }
- }
- },
- "components": {
- "schemas": {
- "Movie": {
- "type": "object",
- "required": [
- "title"
- ],
- "properties": {
- "id": {
- "type": "integer",
- "format": "int64"
- },
- "title": {
- "type": "string",
- "example": "Dark Phoenix"
- },
- "sortTitle": {
- "type": "string",
- "example": "dark phoenix"
- },
- "sizeOnDisk": {
- "type": "number"
- },
- "overview": {
- "type": "string"
- },
- "inCinemas": {
- "type": "string"
- },
- "physicalRelease": {
- "type": "string"
- },
- "images": {
- "type": "array",
- "items": {
- "$ref": "#/components/schemas/Image"
- }
- },
- "website": {
- "type": "string",
- "example": "http://darkphoenix.com"
- },
- "year": {
- "type": "integer"
- },
- "hasFile": {
- "type": "boolean"
- },
- "youTubeTrailerId": {
- "type": "string"
- },
- "studio": {
- "type": "string"
- },
- "path": {
- "type": "string"
- },
- "rootFolderPath": {
- "type": "string"
- },
- "qualityProfileId": {
- "type": "integer"
- },
- "monitored": {
- "type": "boolean"
- },
- "minimumAvailability": {
- "type": "string",
- "enum": [
- "announced",
- "inCinemas",
- "released"
- ]
- },
- "isAvailable": {
- "type": "boolean"
- },
- "folderName": {
- "type": "string"
- },
- "runtime": {
- "type": "integer"
- },
- "cleanTitle": {
- "type": "string"
- },
- "imdbId": {
- "type": "string"
- },
- "tmdbId": {
- "type": "integer"
- },
- "titleSlug": {
- "type": "string"
- },
- "certification": {
- "type": "string"
- },
- "genres": {
- "type": "array",
- "items": {
- "type": "string"
- }
- },
- "tags": {
- "type": "array",
- "items": {
- "type": "integer"
- }
- },
- "added": {
- "type": "string"
- },
- "ratings": {
- "$ref": "#/components/schemas/Rating"
- },
- "collection": {
- "$ref": "#/components/schemas/Collection"
- },
- "status": {
- "type": "string",
- "description": "movie status",
- "enum": [
- "deleted",
- "tba",
- "announced",
- "inCinemas",
- "released"
- ]
- }
- },
- "xml": {
- "name": "Movie"
- }
- },
- "Image": {
- "type": "object",
- "properties": {
- "coverType": {
- "type": "string",
- "enum": ["poster", "fanart"],
- "example": "poster"
- },
- "url": {
- "type": "string",
- "summary": "A path that can be used together with the host to find the image - requires API key",
- "example": "/radarr/MediaCover/39/poster.jpg?lastWrite=637618111851086964"
- },
- "remoteUrl": {
- "type": "string",
- "summary": "A full URL of the TMDB source",
- "example": "https://image.tmdb.org/t/p/original/i0FHyNF9VvQTXOi4yKnZJ1zql1.jpg"
- }
- },
- "xml": {
- "name": "Image"
- }
- },
- "Collection": {
- "type": "object",
- "properties": {
- "name": {
- "type": "string"
- },
- "tmdbId": {
- "type": "integer"
- },
- "images": {
- "type": "array",
- "items": {
- "$ref": "#/components/schemas/Image"
- }
- }
- },
- "xml": {
- "name": "Collection"
- }
- },
- "Rating": {
- "type": "object",
- "properties": {
- "votes": {
- "type": "integer"
- },
- "value": {
- "type": "number"
- }
- },
- "xml": {
- "name": "Rating"
- }
- },
- "Tag": {
- "type": "object",
- "properties": {
- "id": {
- "type": "integer"
- },
- "label": {
- "type": "string"
- }
- }
- },
- "TagDetail": {
- "type": "object",
- "properties": {
- "id": {
- "type": "integer"
- },
- "label": {
- "type": "string"
- },
- "delayProfileIds": {
- "type": "array",
- "items": {
- "type": "integer"
- }
- },
- "notificationIds": {
- "type": "array",
- "items": {
- "type": "integer"
- }
- },
- "restrictionIds": {
- "type": "array",
- "items": {
- "type": "integer"
- }
- },
- "netImportIds": {
- "type": "array",
- "items": {
- "type": "integer"
- }
- },
- "movieIds": {
- "type": "array",
- "items": {
- "type": "integer"
- }
- }
- }
- },
- "Indexer": {
- "description": "",
- "type": "object",
- "properties": {
- "enableRss": {
- "type": "boolean"
- },
- "enableAutomaticSearch": {
- "type": "boolean"
- },
- "enableInteractiveSearch": {
- "type": "boolean"
- },
- "supportsRss": {
- "type": "boolean"
- },
- "supportsSearch": {
- "type": "boolean"
- },
- "protocol": {
- "type": "string",
- "minLength": 1
- },
- "priority": {
- "type": "integer",
- "minimum": 0,
- "maximum": 50
- },
- "name": {
- "type": "string",
- "minLength": 1
- },
- "fields": {
- "type": "array",
- "items": {
- "$ref": "#/components/schemas/ProviderField"
- }
- },
- "implementationName": {
- "type": "string",
- "minLength": 1
- },
- "implementation": {
- "type": "string",
- "minLength": 1
- },
- "configContract": {
- "type": "string",
- "minLength": 1
- },
- "infoLink": {
- "type": "string",
- "minLength": 1
- },
- "tags": {
- "type": "array",
- "items": {
- "type": "object"
- }
- },
- "id": {
- "type": "number"
- }
- },
- "required": [
- "enableRss",
- "enableAutomaticSearch",
- "enableInteractiveSearch",
- "supportsRss",
- "supportsSearch",
- "protocol",
- "priority",
- "name",
- "fields",
- "implementationName",
- "implementation",
- "configContract",
- "infoLink",
- "tags",
- "id"
- ]
- },
- "DownloadClient": {
- "description": "",
- "type": "object",
- "properties": {
- "enable": {
- "type": "boolean"
- },
- "protocol": {
- "type": "string",
- "minLength": 1
- },
- "priority": {
- "type": "integer",
- "minimum": 0,
- "maximum": 50
- },
- "name": {
- "type": "string",
- "minLength": 1
- },
- "fields": {
- "type": "array",
- "items": {
- "$ref": "#/components/schemas/ProviderField"
- }
- },
- "implementationName": {
- "type": "string",
- "minLength": 1
- },
- "implementation": {
- "type": "string",
- "minLength": 1
- },
- "configContract": {
- "type": "string",
- "minLength": 1
- },
- "infoLink": {
- "type": "string",
- "minLength": 1
- },
- "tags": {
- "type": "array",
- "items": {
- "type": "integer"
- }
- },
- "id": {
- "type": "integer"
- }
- },
- "required": [
- "enable",
- "protocol",
- "priority",
- "name",
- "fields",
- "implementationName",
- "implementation",
- "configContract",
- "infoLink",
- "tags",
- "id"
- ]
- },
- "Notification": {
- "description": "",
- "type": "object",
- "title": "",
- "properties": {
- "onGrab": {
- "type": "boolean"
- },
- "onDownload": {
- "type": "boolean"
- },
- "onUpgrade": {
- "type": "boolean"
- },
- "onRename": {
- "type": "boolean"
- },
- "onDelete": {
- "type": "boolean"
- },
- "onHealthIssue": {
- "type": "boolean"
- },
- "supportsOnGrab": {
- "type": "boolean"
- },
- "supportsOnDownload": {
- "type": "boolean"
- },
- "supportsOnUpgrade": {
- "type": "boolean"
- },
- "supportsOnRename": {
- "type": "boolean"
- },
- "supportsOnDelete": {
- "type": "boolean"
- },
- "supportsOnHealthIssue": {
- "type": "boolean"
- },
- "includeHealthWarnings": {
- "type": "boolean"
- },
- "name": {
- "type": "string",
- "minLength": 1
- },
- "fields": {
- "type": "array",
- "items": {
- "$ref": "#/components/schemas/ProviderField"
- }
- },
- "implementationName": {
- "type": "string",
- "minLength": 1
- },
- "implementation": {
- "type": "string",
- "minLength": 1
- },
- "configContract": {
- "type": "string",
- "minLength": 1
- },
- "infoLink": {
- "type": "string",
- "minLength": 1
- },
- "message": {
- "type": "object",
- "required": [
- "message",
- "type"
- ],
- "properties": {
- "message": {
- "type": "string",
- "minLength": 1
- },
- "type": {
- "type": "string",
- "minLength": 1
- }
- }
- },
- "tags": {
- "type": "array",
- "items": {
- "type": "integer"
- }
- },
- "id": {
- "type": "integer"
- }
- },
- "required": [
- "onGrab",
- "onDownload",
- "onUpgrade",
- "onRename",
- "onDelete",
- "onHealthIssue",
- "supportsOnGrab",
- "supportsOnDownload",
- "supportsOnUpgrade",
- "supportsOnRename",
- "supportsOnDelete",
- "supportsOnHealthIssue",
- "includeHealthWarnings",
- "name",
- "fields",
- "implementationName",
- "implementation",
- "configContract",
- "infoLink",
- "message",
- "tags",
- "id"
- ]
- },
- "Metadata": {
- "description": "",
- "type": "object",
- "properties": {
- "enable": {
- "type": "boolean"
- },
- "name": {
- "type": "string",
- "minLength": 1
- },
- "fields": {
- "type": "array",
- "items": {
- "$ref": "#/components/schemas/ProviderField"
- }
- },
- "implementationName": {
- "type": "string",
- "minLength": 1
- },
- "implementation": {
- "type": "string",
- "minLength": 1
- },
- "configContract": {
- "type": "string",
- "minLength": 1
- },
- "infoLink": {
- "type": "string",
- "minLength": 1
- },
- "tags": {
- "type": "array",
- "items": {
- "type": "integer"
- }
- },
- "id": {
- "type": "integer"
- }
- },
- "required": [
- "enable",
- "name",
- "fields",
- "implementationName",
- "implementation",
- "configContract",
- "infoLink",
- "tags",
- "id"
- ]
- },
- "ImportList": {
- "description": "",
- "type": "object",
- "properties": {
- "enabled": {
- "type": "boolean"
- },
- "enableAuto": {
- "type": "boolean"
- },
- "shouldMonitor": {
- "type": "boolean"
- },
- "rootFolderPath": {
- "type": "string",
- "minLength": 1
- },
- "qualityProfileId": {
- "type": "number"
- },
- "searchOnAdd": {
- "type": "boolean"
- },
- "minimumAvailability": {
- "type": "string",
- "minLength": 1
- },
- "listType": {
- "type": "string",
- "minLength": 1
- },
- "listOrder": {
- "type": "number"
- },
- "name": {
- "type": "string",
- "minLength": 1
- },
- "fields": {
- "type": "array",
- "items": {
- "$ref": "#/components/schemas/ProviderField"
- }
- },
- "implementationName": {
- "type": "string",
- "minLength": 1
- },
- "implementation": {
- "type": "string",
- "minLength": 1
- },
- "configContract": {
- "type": "string",
- "minLength": 1
- },
- "infoLink": {
- "type": "string",
- "minLength": 1
- },
- "tags": {
- "type": "array",
- "items": {
- "type": "integer"
- }
- },
- "id": {
- "type": "integer"
- }
- },
- "required": [
- "enabled",
- "enableAuto",
- "shouldMonitor",
- "rootFolderPath",
- "qualityProfileId",
- "searchOnAdd",
- "minimumAvailability",
- "listType",
- "listOrder",
- "name",
- "fields",
- "implementationName",
- "implementation",
- "configContract",
- "infoLink",
- "tags",
- "id"
- ]
- },
- "ProviderField": {
- "description": "",
- "type": "object",
- "properties": {
- "order": {
- "type": "integer"
- },
- "name": {
- "type": "string",
- "minLength": 1
- },
- "label": {
- "type": "string",
- "minLength": 1
- },
- "helpText": {
- "type": "string",
- "minLength": 1
- },
- "value": {
- "type": "string",
- "minLength": 1
- },
- "type": {
- "type": "string",
- "minLength": 1
- },
- "advanced": {
- "type": "boolean"
- }
- },
- "required": [
- "order",
- "name",
- "label",
- "helpText",
- "value",
- "type",
- "advanced"
- ]
- },
- "History": {
- "description": "",
- "type": "object",
- "properties": {
- "movieId": {
- "type": "number"
- },
- "sourceTitle": {
- "type": "string",
- "minLength": 1
- },
- "languages": {
- "type": "array",
- "uniqueItems": true,
- "minItems": 1,
- "items": {
- "type": "object",
- "properties": {
- "id": {
- "type": "number"
- },
- "name": {
- "type": "string",
- "minLength": 1
- }
- },
- "required": [
- "id",
- "name"
- ]
- }
- },
- "quality": {
- "$ref": "#/components/schemas/Quality"
- },
- "customFormats": {
- "type": "array",
- "items": {
- "$ref": "#/components/schemas/CustomFormat"
- }
- },
- "qualityCutoffNotMet": {
- "type": "boolean"
- },
- "date": {
- "type": "string",
- "minLength": 1
- },
- "downloadId": {
- "type": "string",
- "minLength": 1
- },
- "eventType": {
- "type": "string",
- "minLength": 1
- },
- "data": {
- "type": "object"
- },
- "id": {
- "type": "number"
- }
- },
- "required": [
- "movieId",
- "sourceTitle",
- "languages",
- "quality",
- "customFormats",
- "qualityCutoffNotMet",
- "date",
- "downloadId",
- "eventType",
- "data",
- "id"
- ]
- },
- "CustomFormat": {
- "description": "",
- "type": "object",
- "properties": {
- "id": {
- "type": "integer"
- },
- "name": {
- "type": "string",
- "minLength": 1
- },
- "includeCustomFormatWhenRenaming": {
- "type": "boolean"
- },
- "specifications": {
- "type": "array",
- "uniqueItems": true,
- "minItems": 1,
- "items": {
- "type": "object",
- "properties": {
- "name": {
- "type": "string",
- "minLength": 1
- },
- "implementation": {
- "type": "string",
- "minLength": 1
- },
- "implementationName": {
- "type": "string",
- "minLength": 1
- },
- "infoLink": {
- "type": "string",
- "minLength": 1
- },
- "negate": {
- "type": "boolean"
- },
- "required": {
- "type": "boolean"
- },
- "fields": {
- "type": "array",
- "uniqueItems": true,
- "minItems": 1,
- "items": {
- "$ref": "#/components/schemas/ProviderField"
- }
- }
- },
- "required": [
- "name",
- "implementation",
- "implementationName",
- "infoLink",
- "negate",
- "required"
- ]
- }
- }
- },
- "required": [
- "id",
- "name",
- "includeCustomFormatWhenRenaming",
- "specifications"
- ]
- },
- "Quality": {
- "description": "",
- "type": "object",
- "properties": {
- "quality": {
- "type": "object",
- "required": [
- "id",
- "name",
- "source",
- "resolution",
- "modifier"
- ],
- "properties": {
- "id": {
- "type": "integer"
- },
- "name": {
- "type": "string",
- "minLength": 1
- },
- "source": {
- "type": "string",
- "minLength": 1
- },
- "resolution": {
- "type": "integer"
- },
- "modifier": {
- "type": "string",
- "minLength": 1
- }
- }
- },
- "revision": {
- "type": "object",
- "required": [
- "version",
- "real",
- "isRepack"
- ],
- "properties": {
- "version": {
- "type": "integer"
- },
- "real": {
- "type": "integer"
- },
- "isRepack": {
- "type": "boolean"
- }
- }
- }
- },
- "required": [
- "quality",
- "revision"
- ]
- },
- "QualityProfile": {
- "description": "",
- "type": "object",
- "properties": {
- "name": {
- "type": "string",
- "minLength": 1
- },
- "upgradeAllowed": {
- "type": "boolean"
- },
- "cutoff": {
- "type": "integer"
- },
- "items": {
- "type": "array",
- "items": {
- "type": "object"
- }
- },
- "minFormatScore": {
- "type": "integer"
- },
- "cutoffFormatScore": {
- "type": "integer"
- },
- "formatItems": {
- "type": "array",
- "uniqueItems": true,
- "minItems": 1,
- "items": {
- "type": "object",
- "properties": {
- "format": {
- "type": "integer"
- },
- "name": {
- "type": "string",
- "minLength": 1
- },
- "score": {
- "type": "integer"
- }
- },
- "required": [
- "format",
- "name",
- "score"
- ]
- }
- },
- "language": {
- "type": "object",
- "required": [
- "id",
- "name"
- ],
- "properties": {
- "id": {
- "type": "integer"
- },
- "name": {
- "type": "string",
- "minLength": 1
- }
- }
- },
- "id": {
- "type": "integer"
- }
- },
- "required": [
- "name",
- "upgradeAllowed",
- "cutoff",
- "items",
- "minFormatScore",
- "cutoffFormatScore",
- "formatItems",
- "language",
- "id"
- ]
- },
- "Blocklist": {
- "description": "",
- "type": "object",
- "properties": {
- "movieId": {
- "type": "number"
- },
- "sourceTitle": {
- "type": "string",
- "minLength": 1
- },
- "languages": {
- "type": "array",
- "uniqueItems": true,
- "minItems": 1,
- "items": {
- "type": "object",
- "properties": {
- "id": {
- "type": "number"
- },
- "name": {
- "type": "string",
- "minLength": 1
- }
- },
- "required": [
- "id",
- "name"
- ]
- }
- },
- "quality": {
- "$ref": "#/components/schemas/Quality"
- },
- "customFormats": {
- "type": "array",
- "items": {
- "$ref": "#/components/schemas/CustomFormat"
- }
- },
- "date": {
- "type": "string",
- "minLength": 1
- },
- "protocol": {
- "type": "string",
- "minLength": 1
- },
- "indexer": {
- "type": "string",
- "minLength": 1
- },
- "message": {
- "type": "string",
- "minLength": 1
- },
- "id": {
- "type": "number"
- }
- },
- "required": [
- "movieId",
- "sourceTitle",
- "languages",
- "quality",
- "customFormats",
- "date",
- "protocol",
- "indexer",
- "message",
- "id"
- ]
- },
- "MovieFile": {
- "description": "",
- "type": "object",
- "title": "",
- "properties": {
- "movieId": {
- "type": "integer"
- },
- "relativePath": {
- "type": "string",
- "minLength": 1
- },
- "path": {
- "type": "string",
- "minLength": 1
- },
- "size": {
- "type": "number"
- },
- "dateAdded": {
- "type": "string",
- "minLength": 1
- },
- "indexerFlags": {
- "type": "integer"
- },
- "quality": {
- "$ref": "#/components/schemas/Quality"
- },
- "mediaInfo": {
- "type": "object",
- "required": [
- "audioAdditionalFeatures",
- "audioBitrate",
- "audioChannels",
- "audioCodec",
- "audioLanguages",
- "audioStreamCount",
- "videoBitDepth",
- "videoBitrate",
- "videoCodec",
- "videoFps",
- "resolution",
- "runTime",
- "scanType",
- "subtitles"
- ],
- "properties": {
- "audioAdditionalFeatures": {
- "type": "string"
- },
- "audioBitrate": {
- "type": "number"
- },
- "audioChannels": {
- "type": "number"
- },
- "audioCodec": {
- "type": "string",
- "minLength": 1
- },
- "audioLanguages": {
- "type": "string"
- },
- "audioStreamCount": {
- "type": "number"
- },
- "videoBitDepth": {
- "type": "number"
- },
- "videoBitrate": {
- "type": "number"
- },
- "videoCodec": {
- "type": "string",
- "minLength": 1
- },
- "videoFps": {
- "type": "number"
- },
- "resolution": {
- "type": "string",
- "minLength": 1
- },
- "runTime": {
- "type": "string",
- "minLength": 1
- },
- "scanType": {
- "type": "string",
- "minLength": 1
- },
- "subtitles": {
- "type": "string"
- }
- }
- },
- "qualityCutoffNotMet": {
- "type": "boolean"
- },
- "languages": {
- "type": "array",
- "uniqueItems": true,
- "minItems": 1,
- "items": {
- "type": "object",
- "properties": {
- "id": {
- "type": "number"
- },
- "name": {
- "type": "string",
- "minLength": 1
- }
- },
- "required": [
- "id",
- "name"
- ]
- }
- },
- "releaseGroup": {
- "type": "string",
- "minLength": 1
- },
- "id": {
- "type": "integer"
- }
- },
- "required": [
- "movieId",
- "relativePath",
- "path",
- "size",
- "dateAdded",
- "indexerFlags",
- "quality",
- "mediaInfo",
- "qualityCutoffNotMet",
- "languages",
- "releaseGroup",
- "id"
- ]
- }
- },
- "securitySchemes": {
- "X-API-Key": {
- "type": "http",
- "scheme": "basic",
- "description": "Used when not providing the key via URL"
- },
- "apikey": {
- "name": "apikey",
- "type": "apiKey",
- "in": "query",
- "description": "Used when not providing the key via header"
- }
- }
- },
- "tags": [
- {
- "name": "Movie"
- },
- {
- "name": "MovieFile"
- },
- {
- "name": "History"
- },
- {
- "name": "Blocklist"
- },
- {
- "name": "Queue"
- },
- {
- "name": "Indexer"
- },
- {
- "name": "Download Client"
- },
- {
- "name": "Import Lists"
- },
- {
- "name": "Notification"
- },
- {
- "name": "Tag"
- },
- {
- "name": "Disk Space"
- },
- {
- "name": "Settings"
- },
- {
- "name": "Metadata"
- },
- {
- "name": "System"
- }
- ]
-}