feat(api): add tag filtering on the applications list endpoint (#7360)

This commit is contained in:
Yassine Benh
2026-01-10 20:22:29 +01:00
committed by GitHub
parent 2f5e879b73
commit 31ba241d97
3 changed files with 43 additions and 7 deletions

View File

@@ -64,6 +64,17 @@ class ApplicationsController extends Controller
['bearerAuth' => []], ['bearerAuth' => []],
], ],
tags: ['Applications'], 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: [ responses: [
new OA\Response( new OA\Response(
response: 200, response: 200,
@@ -94,13 +105,19 @@ class ApplicationsController extends Controller
if (is_null($teamId)) { if (is_null($teamId)) {
return invalidTokenResponse(); return invalidTokenResponse();
} }
$projects = Project::where('team_id', $teamId)->get();
$applications = collect(); $tagName = $request->query('tag');
$applications->push($projects->pluck('applications')->flatten());
$applications = $applications->flatten(); $applications = Application::ownedByCurrentTeamAPI($teamId)
$applications = $applications->map(function ($application) { ->when($tagName, function ($query, $tagName) {
return $this->removeSensitiveData($application); $query->whereHas('tags', function ($query) use ($tagName) {
}); $query->where('name', $tagName);
});
})
->get()
->map(function ($application) {
return $this->removeSensitiveData($application);
});
return response()->json($applications); return response()->json($applications);
} }

View File

@@ -19,6 +19,17 @@
"summary": "List", "summary": "List",
"description": "List all applications.", "description": "List all applications.",
"operationId": "list-applications", "operationId": "list-applications",
"parameters": [
{
"name": "tag",
"in": "query",
"description": "Filter applications by tag name.",
"required": false,
"schema": {
"type": "string"
}
}
],
"responses": { "responses": {
"200": { "200": {
"description": "Get all applications.", "description": "Get all applications.",

View File

@@ -14,6 +14,14 @@ paths:
summary: List summary: List
description: 'List all applications.' description: 'List all applications.'
operationId: list-applications operationId: list-applications
parameters:
-
name: tag
in: query
description: 'Filter applications by tag name.'
required: false
schema:
type: string
responses: responses:
'200': '200':
description: 'Get all applications.' description: 'Get all applications.'