diff --git a/app/Http/Controllers/Api/ApplicationsController.php b/app/Http/Controllers/Api/ApplicationsController.php index b7e9ac6ff..0ec63562e 100644 --- a/app/Http/Controllers/Api/ApplicationsController.php +++ b/app/Http/Controllers/Api/ApplicationsController.php @@ -64,6 +64,17 @@ private function removeSensitiveData($application) ['bearerAuth' => []], ], tags: ['Applications'], + parameters: [ + new OA\Parameter( + name: 'tag', + in: 'query', + description: 'Filter applications by tag name.', + required: false, + schema: new OA\Schema( + type: 'string', + ) + ), + ], responses: [ new OA\Response( response: 200, @@ -94,13 +105,19 @@ public function applications(Request $request) if (is_null($teamId)) { return invalidTokenResponse(); } - $projects = Project::where('team_id', $teamId)->get(); - $applications = collect(); - $applications->push($projects->pluck('applications')->flatten()); - $applications = $applications->flatten(); - $applications = $applications->map(function ($application) { - return $this->removeSensitiveData($application); - }); + + $tagName = $request->query('tag'); + + $applications = Application::ownedByCurrentTeamAPI($teamId) + ->when($tagName, function ($query, $tagName) { + $query->whereHas('tags', function ($query) use ($tagName) { + $query->where('name', $tagName); + }); + }) + ->get() + ->map(function ($application) { + return $this->removeSensitiveData($application); + }); return response()->json($applications); } diff --git a/openapi.json b/openapi.json index 9bbae8154..5a2465a10 100644 --- a/openapi.json +++ b/openapi.json @@ -19,6 +19,17 @@ "summary": "List", "description": "List all applications.", "operationId": "list-applications", + "parameters": [ + { + "name": "tag", + "in": "query", + "description": "Filter applications by tag name.", + "required": false, + "schema": { + "type": "string" + } + } + ], "responses": { "200": { "description": "Get all applications.", diff --git a/openapi.yaml b/openapi.yaml index 4a68857fb..28aba508f 100644 --- a/openapi.yaml +++ b/openapi.yaml @@ -14,6 +14,14 @@ paths: summary: List description: 'List all applications.' operationId: list-applications + parameters: + - + name: tag + in: query + description: 'Filter applications by tag name.' + required: false + schema: + type: string responses: '200': description: 'Get all applications.'