From cbd5d45bbf3cd2566ac072f92a6bc1ff89691da1 Mon Sep 17 00:00:00 2001 From: Kenn Jacobsen Date: Tue, 22 Nov 2022 13:43:50 +0100 Subject: [PATCH] Split search/index API into two separate APIs (#13447) * Split searcher and indexer API into two separate ones * Fixed bad merge + fixed namespaces * Update OpenAPI json scheme --- .../AllIndexerController.cs} | 10 +- .../DetailsIndexerController.cs} | 10 +- .../Indexer/IndexerControllerBase.cs | 11 + .../RebuildIndexerController.cs} | 12 +- .../Search/SearchControllerBase.cs | 11 - .../AllSearcherController.cs} | 10 +- .../QuerySearcherController.cs} | 16 +- .../Searcher/SearcherControllerBase.cs | 11 + src/Umbraco.Cms.ManagementApi/OpenApi.json | 466 +++++++++--------- 9 files changed, 284 insertions(+), 273 deletions(-) rename src/Umbraco.Cms.ManagementApi/Controllers/{Search/IndexListExamineController.cs => Indexer/AllIndexerController.cs} (82%) rename src/Umbraco.Cms.ManagementApi/Controllers/{Search/IndexDetailsExamineController.cs => Indexer/DetailsIndexerController.cs} (85%) create mode 100644 src/Umbraco.Cms.ManagementApi/Controllers/Indexer/IndexerControllerBase.cs rename src/Umbraco.Cms.ManagementApi/Controllers/{Search/IndexRebuildSearchController.cs => Indexer/RebuildIndexerController.cs} (88%) delete mode 100644 src/Umbraco.Cms.ManagementApi/Controllers/Search/SearchControllerBase.cs rename src/Umbraco.Cms.ManagementApi/Controllers/{Search/SearcherListSearchController.cs => Searcher/AllSearcherController.cs} (79%) rename src/Umbraco.Cms.ManagementApi/Controllers/{Search/SearcherSearchSearchController.cs => Searcher/QuerySearcherController.cs} (83%) create mode 100644 src/Umbraco.Cms.ManagementApi/Controllers/Searcher/SearcherControllerBase.cs diff --git a/src/Umbraco.Cms.ManagementApi/Controllers/Search/IndexListExamineController.cs b/src/Umbraco.Cms.ManagementApi/Controllers/Indexer/AllIndexerController.cs similarity index 82% rename from src/Umbraco.Cms.ManagementApi/Controllers/Search/IndexListExamineController.cs rename to src/Umbraco.Cms.ManagementApi/Controllers/Indexer/AllIndexerController.cs index 7fdad56404..0f3769d175 100644 --- a/src/Umbraco.Cms.ManagementApi/Controllers/Search/IndexListExamineController.cs +++ b/src/Umbraco.Cms.ManagementApi/Controllers/Indexer/AllIndexerController.cs @@ -6,15 +6,15 @@ using Umbraco.Cms.ManagementApi.ViewModels.Pagination; using Umbraco.Cms.ManagementApi.ViewModels.Search; using Umbraco.Extensions; -namespace Umbraco.Cms.ManagementApi.Controllers.Search; +namespace Umbraco.Cms.ManagementApi.Controllers.Indexer; [ApiVersion("1.0")] -public class IndexListSearchController : SearchControllerBase +public class AllIndexerController : IndexerControllerBase { private readonly IExamineManager _examineManager; private readonly IIndexViewModelFactory _indexViewModelFactory; - public IndexListSearchController( + public AllIndexerController( IExamineManager examineManager, IIndexViewModelFactory indexViewModelFactory) { @@ -26,10 +26,10 @@ public class IndexListSearchController : SearchControllerBase /// Get the details for indexers /// /// - [HttpGet("index")] + [HttpGet] [MapToApiVersion("1.0")] [ProducesResponseType(typeof(PagedViewModel), StatusCodes.Status200OK)] - public Task> Indexes(int skip, int take) + public Task> All(int skip, int take) { IndexViewModel[] indexes = _examineManager.Indexes .Select(_indexViewModelFactory.Create) diff --git a/src/Umbraco.Cms.ManagementApi/Controllers/Search/IndexDetailsExamineController.cs b/src/Umbraco.Cms.ManagementApi/Controllers/Indexer/DetailsIndexerController.cs similarity index 85% rename from src/Umbraco.Cms.ManagementApi/Controllers/Search/IndexDetailsExamineController.cs rename to src/Umbraco.Cms.ManagementApi/Controllers/Indexer/DetailsIndexerController.cs index b8759e478b..c17c77390b 100644 --- a/src/Umbraco.Cms.ManagementApi/Controllers/Search/IndexDetailsExamineController.cs +++ b/src/Umbraco.Cms.ManagementApi/Controllers/Indexer/DetailsIndexerController.cs @@ -4,15 +4,15 @@ using Microsoft.AspNetCore.Mvc; using Umbraco.Cms.ManagementApi.Factories; using Umbraco.Cms.ManagementApi.ViewModels.Search; -namespace Umbraco.Cms.ManagementApi.Controllers.Search; +namespace Umbraco.Cms.ManagementApi.Controllers.Indexer; [ApiVersion("1.0")] -public class IndexDetailsSearchController : SearchControllerBase +public class DetailsIndexerController : IndexerControllerBase { private readonly IIndexViewModelFactory _indexViewModelFactory; private readonly IExamineManager _examineManager; - public IndexDetailsSearchController( + public DetailsIndexerController( IIndexViewModelFactory indexViewModelFactory, IExamineManager examineManager) { @@ -29,11 +29,11 @@ public class IndexDetailsSearchController : SearchControllerBase /// This is kind of rudimentary since there's no way we can know that the index has rebuilt, we /// have a listener for the index op complete so we'll just check if that key is no longer there in the runtime cache /// - [HttpGet("index/{indexName}")] + [HttpGet("{indexName}")] [MapToApiVersion("1.0")] [ProducesResponseType(typeof(ProblemDetails), StatusCodes.Status400BadRequest)] [ProducesResponseType(typeof(IndexViewModel), StatusCodes.Status200OK)] - public async Task> Index(string indexName) + public async Task> Details(string indexName) { if (_examineManager.TryGetIndex(indexName, out IIndex? index)) { diff --git a/src/Umbraco.Cms.ManagementApi/Controllers/Indexer/IndexerControllerBase.cs b/src/Umbraco.Cms.ManagementApi/Controllers/Indexer/IndexerControllerBase.cs new file mode 100644 index 0000000000..183d99a718 --- /dev/null +++ b/src/Umbraco.Cms.ManagementApi/Controllers/Indexer/IndexerControllerBase.cs @@ -0,0 +1,11 @@ +using Microsoft.AspNetCore.Mvc; +using Umbraco.New.Cms.Web.Common.Routing; + +namespace Umbraco.Cms.ManagementApi.Controllers.Indexer; + +[ApiController] +[VersionedApiBackOfficeRoute("indexer")] +[ApiExplorerSettings(GroupName = "Indexer")] +public class IndexerControllerBase : ManagementApiControllerBase +{ +} diff --git a/src/Umbraco.Cms.ManagementApi/Controllers/Search/IndexRebuildSearchController.cs b/src/Umbraco.Cms.ManagementApi/Controllers/Indexer/RebuildIndexerController.cs similarity index 88% rename from src/Umbraco.Cms.ManagementApi/Controllers/Search/IndexRebuildSearchController.cs rename to src/Umbraco.Cms.ManagementApi/Controllers/Indexer/RebuildIndexerController.cs index 825014540d..f4bbb0dac5 100644 --- a/src/Umbraco.Cms.ManagementApi/Controllers/Search/IndexRebuildSearchController.cs +++ b/src/Umbraco.Cms.ManagementApi/Controllers/Indexer/RebuildIndexerController.cs @@ -5,17 +5,17 @@ using Microsoft.Extensions.Logging; using Umbraco.Cms.Infrastructure.Examine; using Umbraco.New.Cms.Infrastructure.Services; -namespace Umbraco.Cms.ManagementApi.Controllers.Search; +namespace Umbraco.Cms.ManagementApi.Controllers.Indexer; [ApiVersion("1.0")] -public class IndexRebuildSearchController : SearchControllerBase +public class RebuildIndexerController : IndexerControllerBase { - private readonly ILogger _logger; + private readonly ILogger _logger; private readonly IIndexingRebuilderService _indexingRebuilderService; private readonly IExamineManager _examineManager; - public IndexRebuildSearchController( - ILogger logger, + public RebuildIndexerController( + ILogger logger, IIndexingRebuilderService indexingRebuilderService, IExamineManager examineManager) { @@ -29,7 +29,7 @@ public class IndexRebuildSearchController : SearchControllerBase /// /// /// - [HttpPost("index/{indexName}/rebuild")] + [HttpPost("{indexName}/rebuild")] [MapToApiVersion("1.0")] [ProducesResponseType(typeof(ProblemDetails), StatusCodes.Status400BadRequest)] [ProducesResponseType(typeof(OkResult), StatusCodes.Status200OK)] diff --git a/src/Umbraco.Cms.ManagementApi/Controllers/Search/SearchControllerBase.cs b/src/Umbraco.Cms.ManagementApi/Controllers/Search/SearchControllerBase.cs deleted file mode 100644 index 9d3befc022..0000000000 --- a/src/Umbraco.Cms.ManagementApi/Controllers/Search/SearchControllerBase.cs +++ /dev/null @@ -1,11 +0,0 @@ -using Microsoft.AspNetCore.Mvc; -using Umbraco.New.Cms.Web.Common.Routing; - -namespace Umbraco.Cms.ManagementApi.Controllers.Search; - -[ApiController] -[VersionedApiBackOfficeRoute("search")] -[ApiExplorerSettings(GroupName = "Search")] -public class SearchControllerBase : ManagementApiControllerBase -{ -} diff --git a/src/Umbraco.Cms.ManagementApi/Controllers/Search/SearcherListSearchController.cs b/src/Umbraco.Cms.ManagementApi/Controllers/Searcher/AllSearcherController.cs similarity index 79% rename from src/Umbraco.Cms.ManagementApi/Controllers/Search/SearcherListSearchController.cs rename to src/Umbraco.Cms.ManagementApi/Controllers/Searcher/AllSearcherController.cs index 344a905eb9..e003dcb37d 100644 --- a/src/Umbraco.Cms.ManagementApi/Controllers/Search/SearcherListSearchController.cs +++ b/src/Umbraco.Cms.ManagementApi/Controllers/Searcher/AllSearcherController.cs @@ -5,23 +5,23 @@ using Umbraco.Cms.ManagementApi.ViewModels.Pagination; using Umbraco.Cms.ManagementApi.ViewModels.Search; using Umbraco.Extensions; -namespace Umbraco.Cms.ManagementApi.Controllers.Search; +namespace Umbraco.Cms.ManagementApi.Controllers.Searcher; [ApiVersion("1.0")] -public class SearcherListSearchController : SearchControllerBase +public class AllSearcherController : SearcherControllerBase { private readonly IExamineManager _examineManager; - public SearcherListSearchController(IExamineManager examineManager) => _examineManager = examineManager; + public AllSearcherController(IExamineManager examineManager) => _examineManager = examineManager; /// /// Get the details for searchers /// /// - [HttpGet("searcher")] + [HttpGet] [MapToApiVersion("1.0")] [ProducesResponseType(typeof(PagedViewModel), StatusCodes.Status200OK)] - public async Task>> Searchers(int skip, int take) + public async Task>> All(int skip, int take) { var searchers = new List( _examineManager.RegisteredSearchers.Select(searcher => new SearcherViewModel { Name = searcher.Name }) diff --git a/src/Umbraco.Cms.ManagementApi/Controllers/Search/SearcherSearchSearchController.cs b/src/Umbraco.Cms.ManagementApi/Controllers/Searcher/QuerySearcherController.cs similarity index 83% rename from src/Umbraco.Cms.ManagementApi/Controllers/Search/SearcherSearchSearchController.cs rename to src/Umbraco.Cms.ManagementApi/Controllers/Searcher/QuerySearcherController.cs index 3b9f7f6f85..971bc979f2 100644 --- a/src/Umbraco.Cms.ManagementApi/Controllers/Search/SearcherSearchSearchController.cs +++ b/src/Umbraco.Cms.ManagementApi/Controllers/Searcher/QuerySearcherController.cs @@ -8,24 +8,24 @@ using Umbraco.Cms.ManagementApi.ViewModels.Pagination; using Umbraco.Cms.ManagementApi.ViewModels.Search; using Umbraco.Extensions; -namespace Umbraco.Cms.ManagementApi.Controllers.Search; +namespace Umbraco.Cms.ManagementApi.Controllers.Searcher; [ApiVersion("1.0")] -public class SearcherSearchSearchController : SearchControllerBase +public class QuerySearcherController : SearcherControllerBase { private readonly IExamineManagerService _examineManagerService; - public SearcherSearchSearchController(IExamineManagerService examineManagerService) => _examineManagerService = examineManagerService; + public QuerySearcherController(IExamineManagerService examineManagerService) => _examineManagerService = examineManagerService; - [HttpGet("searcher/{searcherName}/search")] + [HttpGet("{searcherName}/query")] [MapToApiVersion("1.0")] [ProducesResponseType(typeof(PagedViewModel), StatusCodes.Status200OK)] [ProducesResponseType(typeof(ProblemDetails), StatusCodes.Status404NotFound)] - public async Task>> GetSearchResults(string searcherName, string? query, int skip, int take) + public async Task>> Query(string searcherName, string? term, int skip, int take) { - query = query?.Trim(); + term = term?.Trim(); - if (query.IsNullOrWhiteSpace()) + if (term.IsNullOrWhiteSpace()) { return new PagedViewModel(); } @@ -50,7 +50,7 @@ public class SearcherSearchSearchController : SearchControllerBase { results = searcher .CreateQuery() - .NativeQuery(query) + .NativeQuery(term) .Execute(QueryOptions.SkipTake(skip, take)); } catch (ParseException) diff --git a/src/Umbraco.Cms.ManagementApi/Controllers/Searcher/SearcherControllerBase.cs b/src/Umbraco.Cms.ManagementApi/Controllers/Searcher/SearcherControllerBase.cs new file mode 100644 index 0000000000..309591e6af --- /dev/null +++ b/src/Umbraco.Cms.ManagementApi/Controllers/Searcher/SearcherControllerBase.cs @@ -0,0 +1,11 @@ +using Microsoft.AspNetCore.Mvc; +using Umbraco.New.Cms.Web.Common.Routing; + +namespace Umbraco.Cms.ManagementApi.Controllers.Searcher; + +[ApiController] +[VersionedApiBackOfficeRoute("searcher")] +[ApiExplorerSettings(GroupName = "Searcher")] +public class SearcherControllerBase : ManagementApiControllerBase +{ +} diff --git a/src/Umbraco.Cms.ManagementApi/OpenApi.json b/src/Umbraco.Cms.ManagementApi/OpenApi.json index d2c27c5746..b4b01c10e7 100644 --- a/src/Umbraco.Cms.ManagementApi/OpenApi.json +++ b/src/Umbraco.Cms.ManagementApi/OpenApi.json @@ -892,16 +892,6 @@ } ], "responses": { - "401": { - "description": "Unauthorized", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, "200": { "description": "Success", "content": { @@ -911,6 +901,16 @@ } } } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } } } } @@ -942,16 +942,6 @@ } ], "responses": { - "401": { - "description": "Unauthorized", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, "200": { "description": "Success", "content": { @@ -961,6 +951,16 @@ } } } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } } } } @@ -1181,6 +1181,16 @@ } ], "responses": { + "200": { + "description": "Success", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PagedHelpPage" + } + } + } + }, "400": { "description": "Bad Request", "content": { @@ -1190,13 +1200,121 @@ } } } + } + } + } + }, + "/umbraco/management/api/v1/indexer": { + "get": { + "tags": [ + "Indexer" + ], + "operationId": "GetIndexer", + "parameters": [ + { + "name": "skip", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } }, + { + "name": "take", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { "200": { "description": "Success", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PagedHelpPage" + "$ref": "#/components/schemas/PagedIndex" + } + } + } + } + } + } + }, + "/umbraco/management/api/v1/indexer/{indexName}": { + "get": { + "tags": [ + "Indexer" + ], + "operationId": "GetIndexerByIndexName", + "parameters": [ + { + "name": "indexName", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Index" + } + } + } + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + } + } + }, + "/umbraco/management/api/v1/indexer/{indexName}/rebuild": { + "post": { + "tags": [ + "Indexer" + ], + "operationId": "PostIndexerByIndexNameRebuild", + "parameters": [ + { + "name": "indexName", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OkResult" + } + } + } + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" } } } @@ -1211,6 +1329,16 @@ ], "operationId": "GetInstallSettings", "responses": { + "200": { + "description": "Success", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/InstallSettings" + } + } + } + }, "400": { "description": "Bad Request", "content": { @@ -1230,16 +1358,6 @@ } } } - }, - "200": { - "description": "Success", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/InstallSettings" - } - } - } } } } @@ -1260,6 +1378,9 @@ } }, "responses": { + "200": { + "description": "Success" + }, "400": { "description": "Bad Request", "content": { @@ -1279,9 +1400,6 @@ } } } - }, - "200": { - "description": "Success" } } } @@ -1302,6 +1420,9 @@ } }, "responses": { + "200": { + "description": "Success" + }, "400": { "description": "Bad Request", "content": { @@ -1311,9 +1432,6 @@ } } } - }, - "200": { - "description": "Success" } } } @@ -1374,16 +1492,6 @@ } ], "responses": { - "404": { - "description": "Not Found", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/NotFoundResult" - } - } - } - }, "200": { "description": "Success", "content": { @@ -1393,6 +1501,16 @@ } } } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotFoundResult" + } + } + } } } }, @@ -1413,6 +1531,9 @@ } ], "responses": { + "200": { + "description": "Success" + }, "400": { "description": "Bad Request", "content": { @@ -1432,9 +1553,6 @@ } } } - }, - "200": { - "description": "Success" } } } @@ -1455,6 +1573,9 @@ } }, "responses": { + "201": { + "description": "Created" + }, "400": { "description": "Bad Request", "content": { @@ -1464,9 +1585,6 @@ } } } - }, - "201": { - "description": "Created" } } } @@ -1487,15 +1605,8 @@ } }, "responses": { - "404": { - "description": "Not Found", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/NotFoundResult" - } - } - } + "200": { + "description": "Success" }, "400": { "description": "Bad Request", @@ -1507,8 +1618,15 @@ } } }, - "200": { - "description": "Success" + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotFoundResult" + } + } + } } } } @@ -1688,16 +1806,6 @@ } ], "responses": { - "401": { - "description": "Unauthorized", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, "200": { "description": "Success", "content": { @@ -1707,6 +1815,16 @@ } } } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } } } } @@ -1738,16 +1856,6 @@ } ], "responses": { - "401": { - "description": "Unauthorized", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, "200": { "description": "Success", "content": { @@ -1757,6 +1865,16 @@ } } } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } } } } @@ -2626,130 +2744,12 @@ } } }, - "/umbraco/management/api/v1/search/index": { + "/umbraco/management/api/v1/searcher": { "get": { "tags": [ - "Search" + "Searcher" ], - "operationId": "GetSearchIndex", - "parameters": [ - { - "name": "skip", - "in": "query", - "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "take", - "in": "query", - "schema": { - "type": "integer", - "format": "int32" - } - } - ], - "responses": { - "200": { - "description": "Success", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/PagedIndex" - } - } - } - } - } - } - }, - "/umbraco/management/api/v1/search/index/{indexName}": { - "get": { - "tags": [ - "Search" - ], - "operationId": "GetSearchIndexByIndexName", - "parameters": [ - { - "name": "indexName", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "400": { - "description": "Bad Request", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - "200": { - "description": "Success", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Index" - } - } - } - } - } - } - }, - "/umbraco/management/api/v1/search/index/{indexName}/rebuild": { - "post": { - "tags": [ - "Search" - ], - "operationId": "PostSearchIndexByIndexNameRebuild", - "parameters": [ - { - "name": "indexName", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "400": { - "description": "Bad Request", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - "200": { - "description": "Success", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/OkResult" - } - } - } - } - } - } - }, - "/umbraco/management/api/v1/search/searcher": { - "get": { - "tags": [ - "Search" - ], - "operationId": "GetSearchSearcher", + "operationId": "GetSearcher", "parameters": [ { "name": "skip", @@ -2782,12 +2782,12 @@ } } }, - "/umbraco/management/api/v1/search/searcher/{searcherName}/search": { + "/umbraco/management/api/v1/searcher/{searcherName}/query": { "get": { "tags": [ - "Search" + "Searcher" ], - "operationId": "GetSearchSearcherBySearcherNameSearch", + "operationId": "GetSearcherBySearcherNameQuery", "parameters": [ { "name": "searcherName", @@ -2798,7 +2798,7 @@ } }, { - "name": "query", + "name": "term", "in": "query", "schema": { "type": "string" @@ -2876,16 +2876,6 @@ ], "operationId": "GetServerStatus", "responses": { - "400": { - "description": "Bad Request", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, "200": { "description": "Success", "content": { @@ -2895,6 +2885,16 @@ } } } + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } } } } @@ -2906,16 +2906,6 @@ ], "operationId": "GetServerVersion", "responses": { - "400": { - "description": "Bad Request", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, "200": { "description": "Success", "content": { @@ -2925,6 +2915,16 @@ } } } + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } } } } @@ -3245,6 +3245,9 @@ } }, "responses": { + "200": { + "description": "Success" + }, "400": { "description": "Bad Request", "content": { @@ -3254,9 +3257,6 @@ } } } - }, - "200": { - "description": "Success" } } } @@ -7115,4 +7115,4 @@ "OAuth": [] } ] -} \ No newline at end of file +}