diff --git a/azure-pipelines.yml b/azure-pipelines.yml
index 1242e4eed..dc667e803 100644
--- a/azure-pipelines.yml
+++ b/azure-pipelines.yml
@@ -9,7 +9,7 @@ variables:
testsFolder: './_tests'
yarnCacheFolder: $(Pipeline.Workspace)/.yarn
nugetCacheFolder: $(Pipeline.Workspace)/.nuget/packages
- majorVersion: '1.33.2'
+ majorVersion: '1.35.0'
minorVersion: $[counter('minorVersion', 1)]
prowlarrVersion: '$(majorVersion).$(minorVersion)'
buildName: '$(Build.SourceBranchName).$(prowlarrVersion)'
diff --git a/docs.sh b/docs.sh
index ab084b61b..38b0e0fbc 100755
--- a/docs.sh
+++ b/docs.sh
@@ -38,7 +38,7 @@ 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.6.2 Swashbuckle.AspNetCore.Cli
+dotnet tool install --version 7.3.2 Swashbuckle.AspNetCore.Cli
dotnet tool run swagger tofile --output ./src/Prowlarr.Api.V1/openapi.json "$outputFolder/$FRAMEWORK/$RUNTIME/$application" v1 &
diff --git a/src/NzbDrone.Automation.Test/Prowlarr.Automation.Test.csproj b/src/NzbDrone.Automation.Test/Prowlarr.Automation.Test.csproj
index bb0b5fcc4..78c8b7d0f 100644
--- a/src/NzbDrone.Automation.Test/Prowlarr.Automation.Test.csproj
+++ b/src/NzbDrone.Automation.Test/Prowlarr.Automation.Test.csproj
@@ -4,7 +4,7 @@
-
+
diff --git a/src/NzbDrone.Common/Processes/ProcessProvider.cs b/src/NzbDrone.Common/Processes/ProcessProvider.cs
index 4947e7080..c68207a09 100644
--- a/src/NzbDrone.Common/Processes/ProcessProvider.cs
+++ b/src/NzbDrone.Common/Processes/ProcessProvider.cs
@@ -6,6 +6,7 @@ using System.ComponentModel;
using System.Diagnostics;
using System.IO;
using System.Linq;
+using System.Text;
using NLog;
using NzbDrone.Common.EnvironmentInfo;
using NzbDrone.Common.Model;
@@ -117,7 +118,9 @@ namespace NzbDrone.Common.Processes
UseShellExecute = false,
RedirectStandardError = true,
RedirectStandardOutput = true,
- RedirectStandardInput = true
+ RedirectStandardInput = true,
+ StandardOutputEncoding = Encoding.UTF8,
+ StandardErrorEncoding = Encoding.UTF8
};
if (environmentVariables != null)
diff --git a/src/NzbDrone.Common/Prowlarr.Common.csproj b/src/NzbDrone.Common/Prowlarr.Common.csproj
index b26b024bc..106890399 100644
--- a/src/NzbDrone.Common/Prowlarr.Common.csproj
+++ b/src/NzbDrone.Common/Prowlarr.Common.csproj
@@ -5,21 +5,21 @@
-
-
-
+
+
+
-
+
-
-
+
+
-
+
diff --git a/src/NzbDrone.Core.Test/IndexerTests/AvistazTests/AvistazFixture.cs b/src/NzbDrone.Core.Test/IndexerTests/AvistazTests/AvistazFixture.cs
index b8f7951d2..dcabb4dbf 100644
--- a/src/NzbDrone.Core.Test/IndexerTests/AvistazTests/AvistazFixture.cs
+++ b/src/NzbDrone.Core.Test/IndexerTests/AvistazTests/AvistazFixture.cs
@@ -51,7 +51,7 @@ namespace NzbDrone.Core.Test.IndexerTests.AvistazTests
torrentInfo.InfoUrl.Should().Be("https://avistaz.to/torrent/187240-japan-sinks-people-of-hope-2021-s01e05-720p-nf-web-dl-ddp20-x264-seikel");
torrentInfo.CommentUrl.Should().BeNullOrEmpty();
torrentInfo.Indexer.Should().Be(Subject.Definition.Name);
- torrentInfo.PublishDate.Should().Be(DateTime.Parse("2021-11-14 22:26:21"));
+ torrentInfo.PublishDate.Should().Be(DateTime.Parse("2021-11-14 21:26:21"));
torrentInfo.Size.Should().Be(935127615);
torrentInfo.InfoHash.Should().Be("a879261d4e6e792402f92401141a21de70d51bf2");
torrentInfo.MagnetUrl.Should().Be(null);
diff --git a/src/NzbDrone.Core.Test/IndexerTests/AvistazTests/ExoticazFixture.cs b/src/NzbDrone.Core.Test/IndexerTests/AvistazTests/ExoticazFixture.cs
index 4c4f9f38e..fe4ada593 100644
--- a/src/NzbDrone.Core.Test/IndexerTests/AvistazTests/ExoticazFixture.cs
+++ b/src/NzbDrone.Core.Test/IndexerTests/AvistazTests/ExoticazFixture.cs
@@ -51,7 +51,7 @@ namespace NzbDrone.Core.Test.IndexerTests.AvistazTests
torrentInfo.InfoUrl.Should().Be("https://exoticaz.to/torrent/64040-ssis-419-my-first-experience-is-yua-mikami-from-the-day-i-lost-my-virginity-i-was-devoted-to-sex");
torrentInfo.CommentUrl.Should().BeNullOrEmpty();
torrentInfo.Indexer.Should().Be(Subject.Definition.Name);
- torrentInfo.PublishDate.Should().Be(DateTime.Parse("2022-06-11 10:04:50"));
+ torrentInfo.PublishDate.Should().Be(DateTime.Parse("2022-06-11 09:04:50"));
torrentInfo.Size.Should().Be(7085405541);
torrentInfo.InfoHash.Should().Be("asdjfiasdf54asd7f4a2sdf544asdf");
torrentInfo.MagnetUrl.Should().Be(null);
diff --git a/src/NzbDrone.Core.Test/IndexerTests/FileListTests/FileListFixture.cs b/src/NzbDrone.Core.Test/IndexerTests/FileListTests/FileListFixture.cs
index 3699a9d0c..b6f06d180 100644
--- a/src/NzbDrone.Core.Test/IndexerTests/FileListTests/FileListFixture.cs
+++ b/src/NzbDrone.Core.Test/IndexerTests/FileListTests/FileListFixture.cs
@@ -55,7 +55,7 @@ namespace NzbDrone.Core.Test.IndexerTests.FileListTests
torrentInfo.InfoUrl.Should().Be("https://filelist.io/details.php?id=665873");
torrentInfo.CommentUrl.Should().BeNullOrEmpty();
torrentInfo.Indexer.Should().Be(Subject.Definition.Name);
- torrentInfo.PublishDate.Should().Be(DateTime.Parse("2020-01-25 20:20:19"));
+ torrentInfo.PublishDate.Should().Be(DateTime.Parse("2020-01-25 19:20:19"));
torrentInfo.Size.Should().Be(8300512414);
torrentInfo.InfoHash.Should().Be(null);
torrentInfo.MagnetUrl.Should().Be(null);
diff --git a/src/NzbDrone.Core/Datastore/BasicRepository.cs b/src/NzbDrone.Core/Datastore/BasicRepository.cs
index dc76a5a31..796e277b7 100644
--- a/src/NzbDrone.Core/Datastore/BasicRepository.cs
+++ b/src/NzbDrone.Core/Datastore/BasicRepository.cs
@@ -254,7 +254,7 @@ namespace NzbDrone.Core.Datastore
protected void Delete(SqlBuilder builder)
{
- var sql = builder.AddDeleteTemplate(typeof(TModel)).LogQuery();
+ var sql = builder.AddDeleteTemplate(typeof(TModel));
using (var conn = _database.OpenConnection())
{
diff --git a/src/NzbDrone.Core/Indexers/Definitions/AvistaZ.cs b/src/NzbDrone.Core/Indexers/Definitions/AvistaZ.cs
index 4e1899651..7d9ba3b51 100644
--- a/src/NzbDrone.Core/Indexers/Definitions/AvistaZ.cs
+++ b/src/NzbDrone.Core/Indexers/Definitions/AvistaZ.cs
@@ -84,6 +84,6 @@ namespace NzbDrone.Core.Indexers.Definitions
public class AvistaZParser : AvistazParserBase
{
- protected override string TimezoneOffset => "+01:00";
+ protected override string TimezoneOffset => "+02:00";
}
}
diff --git a/src/NzbDrone.Core/Indexers/Definitions/ExoticaZ.cs b/src/NzbDrone.Core/Indexers/Definitions/ExoticaZ.cs
index 784cc56e4..0933ea6a2 100644
--- a/src/NzbDrone.Core/Indexers/Definitions/ExoticaZ.cs
+++ b/src/NzbDrone.Core/Indexers/Definitions/ExoticaZ.cs
@@ -54,7 +54,7 @@ namespace NzbDrone.Core.Indexers.Definitions
{
private readonly IndexerCapabilitiesCategories _categories;
- protected override string TimezoneOffset => "+01:00";
+ protected override string TimezoneOffset => "+02:00";
public ExoticaZParser(IndexerCapabilitiesCategories categories)
{
diff --git a/src/NzbDrone.Core/Indexers/Definitions/FileList/FileListParser.cs b/src/NzbDrone.Core/Indexers/Definitions/FileList/FileListParser.cs
index b45ddf19b..6d91d930d 100644
--- a/src/NzbDrone.Core/Indexers/Definitions/FileList/FileListParser.cs
+++ b/src/NzbDrone.Core/Indexers/Definitions/FileList/FileListParser.cs
@@ -77,7 +77,7 @@ public class FileListParser : IParseIndexerResponse
InfoUrl = GetInfoUrl(id),
Seeders = row.Seeders,
Peers = row.Leechers + row.Seeders,
- PublishDate = DateTime.Parse(row.UploadDate + " +0200", CultureInfo.InvariantCulture, DateTimeStyles.AdjustToUniversal),
+ PublishDate = DateTime.Parse(row.UploadDate + " +0300", CultureInfo.InvariantCulture, DateTimeStyles.AdjustToUniversal),
Description = row.SmallDescription,
Genres = row.SmallDescription.Split(',', StringSplitOptions.TrimEntries | StringSplitOptions.RemoveEmptyEntries).ToList(),
ImdbId = imdbId,
diff --git a/src/NzbDrone.Core/Indexers/Definitions/NorBits.cs b/src/NzbDrone.Core/Indexers/Definitions/NorBits.cs
index 990cf3d68..e989a5c6a 100644
--- a/src/NzbDrone.Core/Indexers/Definitions/NorBits.cs
+++ b/src/NzbDrone.Core/Indexers/Definitions/NorBits.cs
@@ -27,7 +27,7 @@ public class NorBits : TorrentIndexerBase
public override string[] IndexerUrls => new[] { "https://norbits.net/" };
public override string Description => "NorBits is a Norwegian Private site for MOVIES / TV / GENERAL";
public override string Language => "nb-NO";
- public override Encoding Encoding => Encoding.GetEncoding("iso-8859-1");
+ public override Encoding Encoding => Encoding.UTF8;
public override IndexerPrivacy Privacy => IndexerPrivacy.Private;
public override IndexerCapabilities Capabilities => SetCapabilities();
diff --git a/src/NzbDrone.Core/Indexers/Definitions/SecretCinema.cs b/src/NzbDrone.Core/Indexers/Definitions/SecretCinema.cs
index ab63387e6..e8d8b1584 100644
--- a/src/NzbDrone.Core/Indexers/Definitions/SecretCinema.cs
+++ b/src/NzbDrone.Core/Indexers/Definitions/SecretCinema.cs
@@ -20,7 +20,7 @@ public class SecretCinema : GazelleBase
{
public override string Name => "Secret Cinema";
public override string[] IndexerUrls => new[] { "https://secret-cinema.pw/" };
- public override string Description => "A tracker for rare movies.";
+ public override string Description => "Secret Cinema is a Private ratioless site for rare MOVIES.";
public override IndexerPrivacy Privacy => IndexerPrivacy.Private;
public override IndexerCapabilities Capabilities => SetCapabilities();
@@ -151,7 +151,7 @@ public class SecretCinemaParser : IParseIndexerResponse
if (torrent.RemasterTitle.IsNotNullOrWhiteSpace())
{
- release.Title += $" [{torrent.RemasterTitle.Trim()}]";
+ release.Title += $" [{WebUtility.HtmlDecode(torrent.RemasterTitle).Trim()}]";
}
// Replace media formats with standards
diff --git a/src/NzbDrone.Core/Indexers/HttpIndexerBase.cs b/src/NzbDrone.Core/Indexers/HttpIndexerBase.cs
index fde23c691..4a8014c63 100644
--- a/src/NzbDrone.Core/Indexers/HttpIndexerBase.cs
+++ b/src/NzbDrone.Core/Indexers/HttpIndexerBase.cs
@@ -250,7 +250,11 @@ namespace NzbDrone.Core.Indexers
{
var response = await _httpClient.ExecuteProxiedAsync(request, Definition);
- if (response.StatusCode is HttpStatusCode.MovedPermanently or HttpStatusCode.Found or HttpStatusCode.SeeOther)
+ if (response.StatusCode is HttpStatusCode.MovedPermanently
+ or HttpStatusCode.Found
+ or HttpStatusCode.SeeOther
+ or HttpStatusCode.TemporaryRedirect
+ or HttpStatusCode.PermanentRedirect)
{
var autoRedirectChain = new List { request.Url.ToString() };
diff --git a/src/NzbDrone.Core/Localization/Core/ca.json b/src/NzbDrone.Core/Localization/Core/ca.json
index 3ff222098..83a720b51 100644
--- a/src/NzbDrone.Core/Localization/Core/ca.json
+++ b/src/NzbDrone.Core/Localization/Core/ca.json
@@ -484,7 +484,7 @@
"InfoUrl": "URL d'informació",
"PublishedDate": "Data de publicació",
"Redirected": "Redirecció",
- "AllSearchResultsHiddenByFilter": "Tots els resultats estan ocults pel filtre aplicat",
+ "AllSearchResultsHiddenByFilter": "Tots els resultats estan ocults pel filtre aplicat.",
"HealthMessagesInfoBox": "Podeu trobar més informació sobre la causa d'aquests missatges de comprovació de salut fent clic a l'enllaç wiki (icona del llibre) al final de la fila o consultant els vostres [registres]({link}). Si teniu problemes per a interpretar aquests missatges, podeu posar-vos en contacte amb el nostre suport als enllaços següents.",
"AptUpdater": "Utilitzeu apt per a instal·lar l'actualització",
"DockerUpdater": "actualitzeu el contenidor Docker per a rebre l'actualització",
@@ -507,5 +507,238 @@
"DownloadClientFreeboxSettingsApiUrl": "URL de l'API",
"DownloadClientFreeboxSettingsAppId": "Identificador de l'aplicació",
"PreviouslyInstalled": "Instal·lat anteriorment",
- "PasswordConfirmation": "Confirmeu la contrasenya"
+ "PasswordConfirmation": "Confirmeu la contrasenya",
+ "IndexerHDBitsSettingsOriginsHelpText": "Si no s'especifica, s'utilitzen totes les opcions.",
+ "MinimumSeeders": "Seeders mínims",
+ "SeedRatio": "Ràtio de la llavor",
+ "ApplicationSettingsSyncRejectBlocklistedTorrentHashesHelpText": "Si un torrent està bloquejat per un hash, pot ser que no es rebutgi correctament durant el RSS/Search per a alguns indexadors, habilitant això permetrà que es rebutgi després que s'agafi el torrent, però abans que s'enviï al client.",
+ "SeedTime": "Temps de la llavor",
+ "DefaultCategory": "Categoria predeterminada",
+ "IndexerVipExpiredHealthCheckMessage": "Els beneficis VIP de l'indexador han caducat: {indexerNames}",
+ "MassEditor": "Editor de masses",
+ "NoSearchResultsFound": "No s'han trobat resultats de cerca, proveu de realitzar una nova cerca a continuació.",
+ "NotSupported": "No suportat",
+ "OverrideAndAddToDownloadClient": "Sobreescriu i afegeix al client de baixada",
+ "PackSeedTime": "Temps de la llavor del paquet",
+ "SearchAllIndexers": "Cerca tots els indexadors",
+ "SearchIndexers": "Cerca indexadors",
+ "SeedTimeHelpText": "L'hora en què un torrent s'ha de sembrar abans d'aturar-se, buit és el predeterminat de l'aplicació",
+ "SettingsIndexerLogging": "Registre de l'indexador millorat",
+ "TotalIndexerSuccessfulGrabs": "Indexador total correcte",
+ "BookSearch": "Cerca de llibres",
+ "ClearHistoryMessageText": "Esteu segur que voleu netejar tot l'historial de {appName}?",
+ "IndexerGazelleGamesSettingsFreeleechOnlyHelpText": "Cerca només els llançaments de freeleech",
+ "ClearHistory": "Neteja l'historial",
+ "IndexerTorrentSyndikatSettingsApiKeyHelpText": "Clau de l'API del lloc",
+ "IndexerGazelleGamesSettingsApiKeyHelpText": "Clau API del lloc (trobada a Configuració => Accés)",
+ "IndexerBeyondHDSettingsRssKeyHelpText": "Clau RSS del lloc (trobada a Seguretat => Clau RSS)",
+ "ApplicationsLoadError": "No s'ha pogut carregar la llista d'aplicacions",
+ "BookSearchTypes": "Tipus de cerca de llibres",
+ "DownloadClientCategory": "Baixa la categoria del client",
+ "IndexerAuth": "Autor de l'indexador",
+ "IndexerBeyondHDSettingsLimitedOnly": "Només limitat",
+ "IndexerBeyondHDSettingsRefundOnly": "Només el reemborsament",
+ "IndexerBeyondHDSettingsRefundOnlyHelpText": "Cerca només el reemborsament",
+ "IndexerBeyondHDSettingsRewindOnlyHelpText": "Cerca només el rebobinat",
+ "IndexerBeyondHDSettingsSearchTypes": "Tipus de cerca",
+ "IndexerBeyondHDSettingsSearchTypesHelpText": "Seleccioneu els tipus de llançaments que us interessin. Si no hi ha cap seleccionat, s'utilitzen totes les opcions.",
+ "IndexerDownloadClientHelpText": "Especifiqueu quin client de baixada s'utilitza per a les captures fetes a {appName} des d'aquest indexador",
+ "IndexerGazelleGamesSettingsApiKeyHelpTextWarning": "Ha de tenir permisos d'usuari i torrents",
+ "IndexerGazelleGamesSettingsSearchGroupNames": "Cerca noms de grup",
+ "IndexerHDBitsSettingsFreeleechOnlyHelpText": "Mostra només els llançaments de freeleech",
+ "IndexerHDBitsSettingsUseFilenames": "Utilitza els noms de fitxer",
+ "IndexerHDBitsSettingsUseFilenamesHelpText": "Marqueu aquesta opció si voleu utilitzar noms de fitxer torrent com a títols de llançament",
+ "IndexerHDBitsSettingsUsernameHelpText": "Nom d'usuari del lloc",
+ "IndexerHealthCheckNoIndexers": "No hi ha indexadors activats, {appName} no retornarà els resultats de la cerca",
+ "IndexerHistoryLoadError": "Error en carregar l'historial de l'indexador",
+ "IndexerIPTorrentsSettingsCookieUserAgent": "Agent d'usuari de la galeta",
+ "IndexerIPTorrentsSettingsFreeleechOnlyHelpText": "Cerca només els llançaments de freeleech",
+ "IndexerInfo": "Informació de l'indexador",
+ "IndexerNebulanceSettingsApiKeyHelpText": "Clau API de la Configuració de l'usuari . Claus Api. La clau ha de tenir permisos de llista i baixada",
+ "IndexerNewznabSettingsVipExpirationHelpText": "Data d'entrada (yyyy-mm-dd) per a la caducitat VIP o en blanc, {appName} notificarà 1 setmana des de la caducitat de VIP",
+ "IndexerNoDefinitionCheckHealthCheckMessage": "Els indexadors no tenen definició i no funcionaran: {indexerNames}. Suprimiu i (o torneu a afegir) a {appName}.",
+ "IndexerObsoleteCheckMessage": "Els indexadors estan obsolets o s'han actualitzat: {0}. Suprimiu i (o torneu a afegir) a {appName}",
+ "IndexerPassThePopcornSettingsApiKeyHelpText": "Clau de l'API del lloc",
+ "IndexerRss": "Indexador RSS",
+ "IndexerSettingsGrabLimitHelpText": "El nombre màxim de captures especificat per la unitat respectiva que {appName} permetrà al lloc",
+ "IndexerSettingsPackSeedTimeIndexerHelpText": "L'hora en què un paquet (temporada o discografia) s'ha de sembrar el torrent abans d'aturar-se, buit és el valor predeterminat de l'aplicació",
+ "IndexerSettingsPreferMagnetUrl": "Prefereix l'URL de l'imant",
+ "IndexerSettingsPreferMagnetUrlHelpText": "Quan està activat, aquest indexador preferirà l'ús d'URLs magnet per a les captures amb enllaços de reserva a torrents",
+ "IndexerSettingsQueryLimitHelpText": "El nombre màxim de consultes especificat per la unitat respectiva que {appName} permetrà al lloc",
+ "InitialFailure": "Fallada inicial",
+ "NoIndexerCategories": "No s'ha trobat cap categoria per a aquest indexador",
+ "RepeatSearch": "Cerca repetida",
+ "SettingsLogRotateHelpText": "Nombre màxim de fitxers de registre a mantenir desats a la carpeta de registres",
+ "SyncProfile": "Perfil de sincronització",
+ "TotalUserAgentGrabs": "Total d'agents d'usuari",
+ "UnableToLoadAppProfiles": "No s'han pogut carregar els perfils de l'aplicació",
+ "VipExpiration": "Caducitat VIP",
+ "IndexerOrpheusSettingsApiKeyHelpText": "Clau API del lloc (trobada a Configuració => Accés)",
+ "IndexerRedactedSettingsApiKeyHelpText": "Clau API del lloc (trobada a Configuració => Accés)",
+ "ProwlarrSupportsAnyIndexer": "{appName} admet molts indexadors, a més de qualsevol indexador que utilitzi l'estàndard Newznab/Torznab utilitzant 'Generic Newznab' (per usenet) o 'Generic Torznab' (per torrents). Cerca i selecciona el teu indexador des de sota.",
+ "DownloadClientSettingsDefaultCategorySubFolderHelpText": "Categoria alternativa predeterminada si no hi ha cap categoria assignada per a un llançament. Afegir una categoria específica a {appName} evita conflictes amb baixades no relacionades amb {appName}. L'ús d'una categoria és opcional, però molt recomanable.",
+ "AppProfileSelectHelpText": "Els perfils d'aplicació s'utilitzen per controlar RSS, la cerca automàtica i la configuració de cerca interactiva en sincronitzar aplicacions",
+ "AudioSearch": "Cerca d'àudio",
+ "IndexerSettingsAppsMinimumSeeders": "Aplicacions de cercadors mínims",
+ "DeleteApplication": "Suprimeix l'aplicació",
+ "DownloadClientSettingsPriorityItemHelpText": "Prioritat a usar en capturar elements",
+ "DownloadClientSettingsDefaultCategoryHelpText": "Categoria alternativa predeterminada si no hi ha cap categoria assignada per a un llançament. Afegir una categoria específica a {appName} evita conflictes amb baixades no relacionades amb {appName}. L'ús d'una categoria és opcional, però molt recomanable.",
+ "EditCategory": "Edita la categoria",
+ "IndexerQuery": "Consulta de l'indexador",
+ "IndexerSettingsBaseUrl": "Url base",
+ "IndexerSettingsCookieHelpText": "Cookie del lloc",
+ "IndexerSettingsLimitsUnitHelpText": "La unitat de temps per comptar els límits per indexador",
+ "IndexerSettingsPackSeedTime": "Temps de la llavor del paquet",
+ "IndexerSite": "Lloc indexador",
+ "IndexerTagsHelpTextWarning": "Les etiquetes s'han d'utilitzar amb precaució, poden tenir efectes no desitjats. Un indexador amb una etiqueta només sincronitzarà amb aplicacions amb la mateixa etiqueta.",
+ "IndexerSettingsSummary": "Configura diversos paràmetres globals de l'indexador.",
+ "ManageApplications": "Gestiona les aplicacions",
+ "PackSeedTimeHelpText": "L'hora en què un paquet (temporada o discografia) s'ha de sembrar el torrent abans d'aturar-se, buit és el valor predeterminat de l'aplicació",
+ "PreferMagnetUrl": "Prefereix l'URL de l'imant",
+ "PreferMagnetUrlHelpText": "Quan està activat, aquest indexador preferirà l'ús d'URLs magnet per a les captures amb enllaços de reserva a torrents",
+ "ProwlarrDownloadClientsInAppOnlyAlert": "Els clients de baixada només són per a les cerques a l'aplicació {appName} i no sincronitzen amb les aplicacions. No hi ha plans per afegir aquesta funcionalitat.",
+ "IndexerBeyondHDSettingsRewindOnly": "Només rebobina",
+ "ProxyValidationUnableToConnect": "No s'ha pogut connectar al servidor intermediari: {exceptionMessage}. Comprova els detalls del registre que envolta aquest error",
+ "QueryOptions": "Opcions de la consulta",
+ "TestAllApps": "Prova totes les aplicacions",
+ "TotalHostQueries": "Total de consultes de l'amfitrió",
+ "AverageGrabs": "Mitjana d'herba",
+ "AverageQueries": "Mitjana de consultes",
+ "FilterPlaceHolder": "Cerca indexadors",
+ "IndexerBeyondHDSettingsLimitedOnlyHelpText": "Cerca només freeleech (Limited UL)",
+ "IndexerBeyondHDSettingsApiKeyHelpText": "Clau API del lloc (trobada a Seguretat => Clau API)",
+ "IndexerSettingsVipExpiration": "Caducitat VIP",
+ "IndexerVipExpiringHealthCheckMessage": "Els beneficis VIP de l'indexador expiraran aviat: {indexerNames}",
+ "LastFailure": "Darrera fallada",
+ "MovieSearch": "Cerca de pel·lícules",
+ "MovieSearchTypes": "Tipus de cerca de pel·lícules",
+ "MusicSearchTypes": "Tipus de cerca de música",
+ "QueryType": "Tipus de consulta",
+ "RssQueries": "Consultes RSS",
+ "SyncLevelFull": "Sincronització completa: mantindrà els indexadors d'aquesta aplicació completament sincronitzats. Els canvis fets als indexadors a {appName} se sincronitzen amb aquesta aplicació. Qualsevol canvi fet a indexadors remotament dins d'aquesta aplicació serà anul·lat per {appName} en la següent sincronització.",
+ "TotalHostGrabs": "Total d'amfitrions",
+ "TotalQueries": "Total de consultes",
+ "NoApplicationsFound": "No s'ha trobat cap aplicació",
+ "SyncProfiles": "Sincronitza els perfils",
+ "TorznabUrl": "Url Torznab",
+ "TvSearch": "Cerca de TV",
+ "DeleteIndexerProxy": "Suprimeix el servidor intermediari de l'indexador",
+ "DisabledUntil": "Desactivat fins",
+ "GrabTitle": "Captura el títol",
+ "SettingsIndexerLoggingHelpText": "Registra dades addicionals de l'indexador",
+ "SyncLevel": "Nivell de sincronització",
+ "AdvancedSettingsHiddenClickToShow": "Configuració avançada oculta, feu clic per mostrar",
+ "AdvancedSettingsShownClickToHide": "Configuració avançada mostrada, feu clic per amagar",
+ "AppsMinimumSeeders": "Aplicacions de cercadors mínims",
+ "AppsMinimumSeedersHelpText": "«Mínims filtradors requerits per les Aplicacions perquè l'indexador s'agafi",
+ "CountIndexersAvailable": "{count} indexador(s) disponible",
+ "HistoryCleanup": "Neteja de l'historial",
+ "HistoryDetails": "Detalls de l'historial",
+ "SettingsFilterSentryEventsHelpText": "Filtra els esdeveniments d'error d'usuari coneguts perquè s'enviïn com a Analytics",
+ "MappedCategories": "Categories assignades",
+ "AppSettingsSummary": "Aplicacions i paràmetres per configurar com {appName} interactua amb els vostres programes PVR",
+ "ConnectSettingsSummary": "Notificacions i scripts personalitzats",
+ "DeleteClientCategory": "Suprimeix la categoria del client de baixada",
+ "FullSync": "Sincronització completa",
+ "IndexerAlreadySetup": "Almenys una instància de l'indexador ja està configurada",
+ "RawSearchSupported": "S'admet la cerca RAW",
+ "RssFeed": "Canal RSS",
+ "SearchTypes": "Tipus de cerca",
+ "SeedRatioHelpText": "La relació a la qual ha d'arribar un torrent abans d'aturar-se, buida és la predeterminada de l'aplicació",
+ "SemiPrivate": "Semi-Privada",
+ "TotalIndexerQueries": "Total de consultes de l'indexador",
+ "TotalUserAgentQueries": "Total de consultes d'agents d'usuari",
+ "GoToApplication": "Ves a l'aplicació",
+ "Url": "Url",
+ "AreYouSureYouWantToDeleteIndexer": "Esteu segur que voleu suprimir '{name}' de {appName}?",
+ "AverageResponseTimesMs": "Temps mitjà de resposta de l'indexador (ms)",
+ "FoundCountReleases": "S'han trobat {itemCount} versions",
+ "AuthQueries": "Consultes d'Autorització",
+ "BasicSearch": "Cerca bàsica",
+ "IndexerName": "Nom de l'indexador",
+ "IndexerStatus": "Estat de l'indexador",
+ "IndexerTagsHelpText": "Utilitzeu etiquetes per especificar els intermediaris de l'indexador o a quines aplicacions se sincronitza l'indexador.",
+ "NewznabUrl": "Url Newznab",
+ "SearchCountIndexers": "Cerca {count} indexador",
+ "UnableToLoadDevelopmentSettings": "No s'han pogut carregar els paràmetres de desenvolupament",
+ "SettingsFilterSentryEvents": "Filtra els esdeveniments d'anàlisi",
+ "ApplicationTagsHelpText": "Sincronitza els indexadors d'aquesta aplicació que tenen una o més etiquetes coincidents. Si no es llisten etiquetes aquí, llavors no s'impedirà la sincronització d'indexadors a causa de les seves etiquetes.",
+ "ApplicationTagsHelpTextWarning": "Les etiquetes s'han d'utilitzar amb precaució, poden tenir efectes no desitjats. Una aplicació amb una etiqueta només sincronitzarà amb els indexadors que tinguin la mateixa etiqueta.",
+ "DeleteSelectedApplications": "Suprimeix les aplicacions seleccionades",
+ "DownloadClientsSettingsSummary": "Baixa la configuració dels clients per a la integració a la cerca de la interfície d'usuari {appName}",
+ "ElapsedTime": "Temps transcorregut",
+ "EnableIndexer": "Habilita l'indexador",
+ "EnableRssHelpText": "Habilita el canal RSS per a l'indexador",
+ "IncludeManualGrabsHelpText": "Inclou les notes manuals fetes a {appName}",
+ "IndexerFailureRate": "Taxa de fallada de l'indexador",
+ "ProwlarrSupportsAnyDownloadClient": "{appName} admet qualsevol dels clients de baixada que es llisten a continuació.",
+ "TotalGrabs": "Grabs totals",
+ "IndexerDetails": "Detalls de l'indexador",
+ "IndexerPriorityHelpText": "Prioritat de l'indexador des de l'1 (el més alt) fins al 50 (el més oest). Per defecte: 25.",
+ "IndexerProxy": "Servidor intermediari de l'indexador",
+ "UISettingsSummary": "Opcions de data, idioma i color defectuoses",
+ "IndexerCategories": "Categories de l'indexador",
+ "IndexerPassThePopcornSettingsFreeleechOnlyHelpText": "Cerca només els llançaments de freeleech",
+ "SearchCapabilities": "Capacitats de cerca",
+ "SearchType": "Tipus de cerca",
+ "SettingsLogSql": "Registre Sql",
+ "SyncLevelAddRemove": "Afegeix i elimina només: quan s'afegeixen o s'eliminen els indexadors de {appName}, s'actualitzarà aquesta aplicació remota.",
+ "IndexerProxies": "Propis de l'indexador",
+ "ApplicationSettingsSyncRejectBlocklistedTorrentHashes": "Sincronitza les fulles del torrent de la llista de blocs en bloc mentre s'agafa",
+ "CertificateValidationHelpText": "Canvia l'estricta validació de la certificació HTTPS",
+ "IndexerDisabled": "Indexador desactivat",
+ "IndexerFileListSettingsPasskeyHelpText": "Contrasenya del lloc (Aquesta és la cadena alfanumèrica a l'URL del seguidor que es mostra al client de baixada)",
+ "IndexerSettingsQueryLimit": "Límit de consulta",
+ "IndexerHDBitsSettingsPasskeyHelpText": "Contrasenya dels detalls de l'usuari",
+ "IndexerSettingsPasskey": "Clau de pas",
+ "ClickToChangeQueryOptions": "Feu clic per a canviar les opcions de consulta",
+ "EnabledRedirected": "Activat, redirigit",
+ "Parameters": "Paràmetres",
+ "QueryResults": "Resultats de la consulta",
+ "RedirectHelpText": "Redirigeix la sol·licitud de baixada entrant per a l'indexador i passa la captura directament en lloc de intermediaris a través de {appName}",
+ "UnableToLoadIndexerProxies": "No s'han pogut carregar els intermediaris de l'indexador",
+ "IndexerId": "ID de l'indexador",
+ "IndexerAlphaRatioSettingsExcludeScene": "Exclou l'escena",
+ "IndexerAlphaRatioSettingsExcludeSceneHelpText": "Exclou els llançaments d'escenes dels resultats",
+ "IndexerAlphaRatioSettingsFreeleechOnlyHelpText": "Cerca només els llançaments de freeleech",
+ "IndexerBeyondHDSettingsFreeleechOnlyHelpText": "Cerca només els llançaments de freeleech",
+ "IndexerFileListSettingsFreeleechOnlyHelpText": "Cerca només els llançaments de freeleech",
+ "IndexerFileListSettingsUsernameHelpText": "Nom d'usuari del lloc",
+ "IndexerGazelleGamesSettingsSearchGroupNamesHelpText": "Cerca publicacions per noms de grup",
+ "IndexerHDBitsSettingsOrigins": "Orígens",
+ "IndexerIPTorrentsSettingsCookieUserAgentHelpText": "Agent d'usuari associat a la cookie utilitzada des del navegador",
+ "IndexerNewznabSettingsApiKeyHelpText": "Clau de l'API del lloc",
+ "IndexerNzbIndexSettingsApiKeyHelpText": "Clau de l'API del lloc",
+ "IndexerSettingsAppsMinimumSeedersHelpText": "«Mínims filtradors requerits per les Aplicacions perquè l'indexador s'agafi",
+ "IndexerSettingsFreeleechOnly": "Només Freeleech",
+ "IndexerSettingsGrabLimit": "Límit de captura",
+ "IndexerSettingsLimitsUnit": "Unitats de límits",
+ "IndexerSettingsRssKey": "Clau RSS",
+ "SelectIndexers": "Selecciona els indexadors",
+ "SettingsSqlLoggingHelpText": "Registra totes les consultes SQL de {appName}",
+ "SyncAppIndexers": "Sincronitza els indexadors d'aplicacions",
+ "AppProfileInUse": "Perfil d'aplicació en ús",
+ "DeleteAppProfile": "Suprimeix el perfil de l'aplicació",
+ "TVSearchTypes": "Tipus de cerca de TV",
+ "IndexerMTeamTpSettingsFreeleechOnlyHelpText": "Cerca només els llançaments de freeleech",
+ "IndexerMTeamTpSettingsApiKeyHelpText": "Clau API del Lloc (trobada a Tauler de control de l'usuari => Seguretat => Laboratori)",
+ "MinimumSeedersHelpText": "Visors mínims requerits per l'aplicació perquè l'indexador s'agafi",
+ "NoIndexerHistory": "No s'ha trobat cap historial per a aquest indexador",
+ "SearchQueries": "Cerca consultes",
+ "SettingsConsoleLogLevel": "Nivell de registre de la consola",
+ "IndexerPassThePopcornSettingsGoldenPopcornOnly": "Només blat de moro daurat",
+ "IndexerPassThePopcornSettingsGoldenPopcornOnlyHelpText": "Cerca només els llançaments Golden Popcorn",
+ "Open": "Obre",
+ "ProwlarrDownloadClientsAlert": "Si voleu fer cerques directament dins de {appName}, heu d'afegir Clients de Baixades. En cas contrari, no cal afegir-les aquí. Per a les cerques des de les teves Apps, els clients de descàrrega configurats s'utilitzen en el seu lloc.",
+ "Website": "Lloc web",
+ "DownloadClientQbittorrentSettingsUseSslHelpText": "Utilitza una connexió segura. Vegeu Opcions -> Interfície web -> 'Utilitza HTTPS en comptes d'HTTP' a qBittorrent.",
+ "IndexerAvistazSettingsFreeleechOnlyHelpText": "Cerca només els llançaments de freeleech",
+ "IndexerAvistazSettingsPasswordHelpText": "Contrasenya del lloc",
+ "IndexerAvistazSettingsPidHelpText": "PID de la pàgina del meu compte o del meu perfil",
+ "IndexerAvistazSettingsUsernameHelpText": "Nom d'usuari del lloc",
+ "IndexerAvistazSettingsUsernameHelpTextWarning": "Només el rang de membre i superior pot utilitzar l'API en aquest indexador.",
+ "SelectedCountOfCountReleases": "S'han seleccionat {selectedCount} de les versions {itemCount}",
+ "SettingsLogRotate": "Rotació del registre",
+ "AreYouSureYouWantToDeleteCategory": "Esteu segur que voleu suprimir la categoria assignada?",
+ "Book": "Llibre"
}
diff --git a/src/NzbDrone.Core/Localization/Core/cs.json b/src/NzbDrone.Core/Localization/Core/cs.json
index 64f4be31d..21975a02e 100644
--- a/src/NzbDrone.Core/Localization/Core/cs.json
+++ b/src/NzbDrone.Core/Localization/Core/cs.json
@@ -638,5 +638,6 @@
"IndexerSettingsBaseUrl": "Základní URL",
"DownloadClientUTorrentProviderMessage": "uTorrent má historii zahrnování kryptoměnových těžařů, malwaru a reklam, důrazně vám doporučujeme zvolit jiného klienta.",
"IndexerSettingsBaseUrlHelpText": "Vyberte, jakou základní URL bude {appName} používat pro požadavky na web",
- "IndexerSettingsPackSeedTimeIndexerHelpText": "Doba, po kterou by měl být balíček (sezóna nebo diskografie) torrentu seedován před zastavením, prázdné pole znamená výchozí nastavení aplikace"
+ "IndexerSettingsPackSeedTimeIndexerHelpText": "Doba, po kterou by měl být balíček (sezóna nebo diskografie) torrentu seedován před zastavením, prázdné pole znamená výchozí nastavení aplikace",
+ "PackSeedTimeHelpText": "Doba, po kterou by měl být balíček (sezóna nebo diskografie) torrentu seedován před zastavením, prázdné pole znamená výchozí nastavení aplikace"
}
diff --git a/src/NzbDrone.Core/Localization/Core/fi.json b/src/NzbDrone.Core/Localization/Core/fi.json
index ab235f518..0236ce555 100644
--- a/src/NzbDrone.Core/Localization/Core/fi.json
+++ b/src/NzbDrone.Core/Localization/Core/fi.json
@@ -207,7 +207,7 @@
"StartTypingOrSelectAPathBelow": "Aloita kirjoitus tai valitse sijainti alta",
"StartupDirectory": "Käynnistyskansio",
"TableOptions": "Taulukkonäkymän asetukset",
- "TableOptionsColumnsMessage": "Valitse näytettävät sarakkeet ja niiden järjestys",
+ "TableOptionsColumnsMessage": "Valitse näytettävät sarakkeet ja niiden järjestys.",
"TagsHelpText": "Käytetään vähintään yhdellä täsmäävällä tunnisteella merkityille hakupalveluille.",
"UnableToAddANewAppProfilePleaseTryAgain": "Virhe lisättäessä sovellusprofiilia. Yritä uudelleen.",
"UnableToAddANewNotificationPleaseTryAgain": "Ilmoituspalvelun lisääminen epäonnistui. Yritä uudelleen.",
@@ -805,6 +805,6 @@
"IndexerPassThePopcornSettingsGoldenPopcornOnly": "Vain \"Golden Popcorn\"",
"IndexerPassThePopcornSettingsGoldenPopcornOnlyHelpText": "Etsi vain ns. kultaisella pocornilla merkittyjä julkaisuja.",
"IndexerSettingsFreeleechOnly": "Vain \"Freeleech\"",
- "IndexerSettingsCookieHelpText": "Jos sivusto vaatii kirjautumisevästeen, se on noudettava selaimen kautta.",
+ "IndexerSettingsCookieHelpText": "Jos sivusto vaatii kirjautumisevästeen, on se noudettava selaimen avulla.",
"IndexerAvistazSettingsPasswordHelpText": "Sivuston salasana"
}
diff --git a/src/NzbDrone.Core/Localization/Core/fr.json b/src/NzbDrone.Core/Localization/Core/fr.json
index 34fb107a9..8768f9c50 100644
--- a/src/NzbDrone.Core/Localization/Core/fr.json
+++ b/src/NzbDrone.Core/Localization/Core/fr.json
@@ -806,5 +806,6 @@
"IndexerSettingsPreferMagnetUrl": "URL de préférence Magnet",
"IndexerPassThePopcornSettingsGoldenPopcornOnly": "Popcorn doré uniquement",
"IndexerPassThePopcornSettingsGoldenPopcornOnlyHelpText": "Rechercher uniquement les versions Golden Popcorn",
- "IndexerAvistazSettingsUsernameHelpTextWarning": "Seuls les membres de rang et supérieur peuvent utiliser l'API sur cet indexeur."
+ "IndexerAvistazSettingsUsernameHelpTextWarning": "Seuls les membres de rang et supérieur peuvent utiliser l'API sur cet indexeur.",
+ "DownloadClientUTorrentProviderMessage": "uTorrent a un historique d'inclusion de cryptomineurs, de logiciels malveillants et de publicités. Nous vous recommandons fortement de choisir un autre client."
}
diff --git a/src/NzbDrone.Core/Localization/Core/ru.json b/src/NzbDrone.Core/Localization/Core/ru.json
index d396b076e..f31829160 100644
--- a/src/NzbDrone.Core/Localization/Core/ru.json
+++ b/src/NzbDrone.Core/Localization/Core/ru.json
@@ -806,5 +806,6 @@
"InstallMajorVersionUpdateMessage": "Это обновление установит новую версию, которая может не поддерживаться вашей системой. Вы уверены, что хотите установить это обновление?",
"FailedToFetchSettings": "Не удалось загрузить настройки",
"CurrentlyInstalled": "Установлено",
- "PreviouslyInstalled": "Ранее установленный"
+ "PreviouslyInstalled": "Ранее установленный",
+ "DownloadClientUTorrentProviderMessage": "Мы настоятельно советуем не использовать uTorrent, т.к. он известен как программа-шифровальщик и в целом вредоносное ПО."
}
diff --git a/src/NzbDrone.Core/Localization/Core/uk.json b/src/NzbDrone.Core/Localization/Core/uk.json
index f6390540a..f42bd890b 100644
--- a/src/NzbDrone.Core/Localization/Core/uk.json
+++ b/src/NzbDrone.Core/Localization/Core/uk.json
@@ -441,5 +441,13 @@
"CurrentlyInstalled": "В даний час встановлено",
"Season": "Причина",
"Stats": "Статус",
- "CountIndexersSelected": "{count} індексер(-и) обрано"
+ "CountIndexersSelected": "{count} індексер(-и) обрано",
+ "SeedRatio": "Коефіцієнт роздачі",
+ "ApplicationSettingsSyncRejectBlocklistedTorrentHashesHelpText": "Якщо торрент заблоковано хешем, він може не бути належним чином відхилений під час RSS/пошуку для деяких індексаторів. Увімкнення цього параметра дозволить відхилити його після захоплення торента, але до його відправки клієнту.",
+ "MinimumSeeders": "Мінімум сидерів (роздаючих)",
+ "SeedTime": "Час сидіння",
+ "Author": "Автор",
+ "OnHealthRestoredHelpText": "При відновленні стану",
+ "IndexerHDBitsSettingsOriginsHelpText": "Якщо не вказано, використовуються всі параметри.",
+ "days": "дні(в)"
}
diff --git a/src/NzbDrone.Core/Prowlarr.Core.csproj b/src/NzbDrone.Core/Prowlarr.Core.csproj
index 4b8138cb4..3f70dd577 100644
--- a/src/NzbDrone.Core/Prowlarr.Core.csproj
+++ b/src/NzbDrone.Core/Prowlarr.Core.csproj
@@ -11,18 +11,18 @@
-
+
-
+
-
+
diff --git a/src/NzbDrone.Host/Prowlarr.Host.csproj b/src/NzbDrone.Host/Prowlarr.Host.csproj
index 8dd6d8e61..12bd5168e 100644
--- a/src/NzbDrone.Host/Prowlarr.Host.csproj
+++ b/src/NzbDrone.Host/Prowlarr.Host.csproj
@@ -5,9 +5,9 @@
-
-
-
+
+
+
diff --git a/src/Prowlarr.Api.V1/Health/HealthResource.cs b/src/Prowlarr.Api.V1/Health/HealthResource.cs
index 1e2c8ffa5..3f357285d 100644
--- a/src/Prowlarr.Api.V1/Health/HealthResource.cs
+++ b/src/Prowlarr.Api.V1/Health/HealthResource.cs
@@ -1,6 +1,5 @@
using System.Collections.Generic;
using System.Linq;
-using NzbDrone.Common.Http;
using NzbDrone.Core.HealthCheck;
using Prowlarr.Http.REST;
@@ -11,7 +10,7 @@ namespace Prowlarr.Api.V1.Health
public string Source { get; set; }
public HealthCheckResult Type { get; set; }
public string Message { get; set; }
- public HttpUri WikiUrl { get; set; }
+ public string WikiUrl { get; set; }
}
public static class HealthResourceMapper
@@ -29,7 +28,7 @@ namespace Prowlarr.Api.V1.Health
Source = model.Source.Name,
Type = model.Type,
Message = model.Message,
- WikiUrl = model.WikiUrl
+ WikiUrl = model.WikiUrl.FullUri
};
}
diff --git a/src/Prowlarr.Api.V1/Prowlarr.Api.V1.csproj b/src/Prowlarr.Api.V1/Prowlarr.Api.V1.csproj
index 4371487f2..15684b0fe 100644
--- a/src/Prowlarr.Api.V1/Prowlarr.Api.V1.csproj
+++ b/src/Prowlarr.Api.V1/Prowlarr.Api.V1.csproj
@@ -5,7 +5,7 @@
-
+
diff --git a/src/Prowlarr.Api.V1/Tags/TagController.cs b/src/Prowlarr.Api.V1/Tags/TagController.cs
index ed3aeebb9..83e9825c9 100644
--- a/src/Prowlarr.Api.V1/Tags/TagController.cs
+++ b/src/Prowlarr.Api.V1/Tags/TagController.cs
@@ -1,4 +1,5 @@
using System.Collections.Generic;
+using FluentValidation;
using Microsoft.AspNetCore.Mvc;
using NzbDrone.Core.Datastore.Events;
using NzbDrone.Core.Messaging.Events;
@@ -20,6 +21,8 @@ namespace Prowlarr.Api.V1.Tags
: base(signalRBroadcaster)
{
_tagService = tagService;
+
+ SharedValidator.RuleFor(c => c.Label).NotEmpty();
}
public override TagResource GetResourceById(int id)
diff --git a/src/Prowlarr.Api.V1/openapi.json b/src/Prowlarr.Api.V1/openapi.json
index c7fa206e8..35cb7d6a0 100644
--- a/src/Prowlarr.Api.V1/openapi.json
+++ b/src/Prowlarr.Api.V1/openapi.json
@@ -4739,7 +4739,8 @@
"nullable": true
},
"wikiUrl": {
- "$ref": "#/components/schemas/HttpUri"
+ "type": "string",
+ "nullable": true
}
},
"additionalProperties": false
@@ -4991,48 +4992,6 @@
},
"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
- },
"IActionResult": {
"type": "object",
"additionalProperties": false