feat(api): add delete endpoints for scheduled tasks in applications and services

This commit is contained in:
Ahmed 2026-02-17 01:33:46 +03:00
parent edc92d7edc
commit a5d48c54da
4 changed files with 358 additions and 4 deletions

View file

@ -77,7 +77,7 @@ public function create_scheduled_task(Request $request, Application|Service $res
}
#[OA\Get(
summary: 'List (Application)',
summary: 'List Task',
description: 'List all scheduled tasks for an application.',
path: '/applications/{uuid}/scheduled-tasks',
operationId: 'list-scheduled-tasks-by-application-uuid',
@ -140,7 +140,7 @@ public function scheduled_tasks_by_application_uuid(Request $request)
}
#[OA\Post(
summary: 'Create (Application)',
summary: 'Create Task',
description: 'Create a new scheduled task for an application.',
path: '/applications/{uuid}/scheduled-tasks',
operationId: 'create-scheduled-task-by-application-uuid',
@ -218,8 +218,85 @@ public function create_scheduled_task_by_application_uuid(Request $request)
return $this->create_scheduled_task($request, $application);
}
#[OA\Delete(
summary: 'Delete Task',
description: 'Delete a scheduled task for an application.',
path: '/applications/{uuid}/scheduled-tasks/{task_uuid}',
operationId: 'delete-scheduled-task-by-application-uuid',
security: [
['bearerAuth' => []],
],
tags: ['Scheduled Tasks'],
parameters: [
new OA\Parameter(
name: 'uuid',
in: 'path',
description: 'UUID of the application.',
required: true,
schema: new OA\Schema(
type: 'string',
)
),
new OA\Parameter(
name: 'task_uuid',
in: 'path',
description: 'UUID of the scheduled task.',
required: true,
schema: new OA\Schema(
type: 'string',
)
),
],
responses: [
new OA\Response(
response: 200,
description: 'Scheduled task deleted.',
content: [
new OA\MediaType(
mediaType: 'application/json',
schema: new OA\Schema(
type: 'object',
properties: [
'message' => ['type' => 'string', 'example' => 'Scheduled task deleted.'],
]
)
),
]
),
new OA\Response(
response: 401,
ref: '#/components/responses/401',
),
new OA\Response(
response: 404,
ref: '#/components/responses/404',
),
]
)]
public function delete_scheduled_task_by_application_uuid(Request $request)
{
$teamId = getTeamIdFromToken();
if (is_null($teamId)) {
return invalidTokenResponse();
}
$application = Application::whereRelation('environment.project.team', 'id', $teamId)->where('uuid', $request->uuid)->first();
if (! $application) {
return response()->json(['message' => 'Application not found.'], 404);
}
$task = $application->scheduled_tasks()->where('uuid', $request->task_uuid)->first();
if (! $task) {
return response()->json(['message' => 'Scheduled task not found.'], 404);
}
$task->delete();
return response()->json(['message' => 'Scheduled task deleted.']);
}
#[OA\Get(
summary: 'List (Service)',
summary: 'List Tasks',
description: 'List all scheduled tasks for a service.',
path: '/services/{uuid}/scheduled-tasks',
operationId: 'list-scheduled-tasks-by-service-uuid',
@ -282,7 +359,7 @@ public function scheduled_tasks_by_service_uuid(Request $request)
}
#[OA\Post(
summary: 'Create (Service)',
summary: 'Create Task',
description: 'Create a new scheduled task for a service.',
path: '/services/{uuid}/scheduled-tasks',
operationId: 'create-scheduled-task-by-service-uuid',
@ -359,4 +436,81 @@ public function create_scheduled_task_by_service_uuid(Request $request)
return $this->create_scheduled_task($request, $service);
}
#[OA\Delete(
summary: 'Delete Task',
description: 'Delete a scheduled task for a service.',
path: '/services/{uuid}/scheduled-tasks/{task_uuid}',
operationId: 'delete-scheduled-task-by-service-uuid',
security: [
['bearerAuth' => []],
],
tags: ['Scheduled Tasks'],
parameters: [
new OA\Parameter(
name: 'uuid',
in: 'path',
description: 'UUID of the service.',
required: true,
schema: new OA\Schema(
type: 'string',
)
),
new OA\Parameter(
name: 'task_uuid',
in: 'path',
description: 'UUID of the scheduled task.',
required: true,
schema: new OA\Schema(
type: 'string',
)
),
],
responses: [
new OA\Response(
response: 200,
description: 'Scheduled task deleted.',
content: [
new OA\MediaType(
mediaType: 'application/json',
schema: new OA\Schema(
type: 'object',
properties: [
'message' => ['type' => 'string', 'example' => 'Scheduled task deleted.'],
]
)
),
]
),
new OA\Response(
response: 401,
ref: '#/components/responses/401',
),
new OA\Response(
response: 404,
ref: '#/components/responses/404',
),
]
)]
public function delete_scheduled_task_by_service_uuid(Request $request)
{
$teamId = getTeamIdFromToken();
if (is_null($teamId)) {
return invalidTokenResponse();
}
$service = Service::whereRelation('environment.project.team', 'id', $teamId)->where('uuid', $request->uuid)->first();
if (! $service) {
return response()->json(['message' => 'Service not found.'], 404);
}
$task = $service->scheduled_tasks()->where('uuid', $request->task_uuid)->first();
if (! $task) {
return response()->json(['message' => 'Scheduled task not found.'], 404);
}
$task->delete();
return response()->json(['message' => 'Scheduled task deleted.']);
}
}

View file

@ -3570,6 +3570,65 @@
]
}
},
"\/applications\/{uuid}\/scheduled-tasks\/{task_uuid}": {
"delete": {
"tags": [
"Scheduled Tasks"
],
"summary": "Delete Task",
"description": "Delete a scheduled task for an application.",
"operationId": "delete-scheduled-task-by-application-uuid",
"parameters": [
{
"name": "uuid",
"in": "path",
"description": "UUID of the application.",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "task_uuid",
"in": "path",
"description": "UUID of the scheduled task.",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Scheduled task deleted.",
"content": {
"application\/json": {
"schema": {
"properties": {
"message": {
"type": "string",
"example": "Scheduled task deleted."
}
},
"type": "object"
}
}
}
},
"401": {
"$ref": "#\/components\/responses\/401"
},
"404": {
"$ref": "#\/components\/responses\/404"
}
},
"security": [
{
"bearerAuth": []
}
]
}
},
"\/cloud-tokens": {
"get": {
"tags": [
@ -10241,6 +10300,65 @@
]
}
},
"\/services\/{uuid}\/scheduled-tasks\/{task_uuid}": {
"delete": {
"tags": [
"Scheduled Tasks"
],
"summary": "Delete Task",
"description": "Delete a scheduled task for a service.",
"operationId": "delete-scheduled-task-by-service-uuid",
"parameters": [
{
"name": "uuid",
"in": "path",
"description": "UUID of the service.",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "task_uuid",
"in": "path",
"description": "UUID of the scheduled task.",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Scheduled task deleted.",
"content": {
"application\/json": {
"schema": {
"properties": {
"message": {
"type": "string",
"example": "Scheduled task deleted."
}
},
"type": "object"
}
}
}
},
"401": {
"$ref": "#\/components\/responses\/401"
},
"404": {
"$ref": "#\/components\/responses\/404"
}
},
"security": [
{
"bearerAuth": []
}
]
}
},
"\/teams": {
"get": {
"tags": [

View file

@ -2257,6 +2257,46 @@ paths:
security:
-
bearerAuth: []
'/applications/{uuid}/scheduled-tasks/{task_uuid}':
delete:
tags:
- 'Scheduled Tasks'
summary: 'Delete Task'
description: 'Delete a scheduled task for an application.'
operationId: delete-scheduled-task-by-application-uuid
parameters:
-
name: uuid
in: path
description: 'UUID of the application.'
required: true
schema:
type: string
-
name: task_uuid
in: path
description: 'UUID of the scheduled task.'
required: true
schema:
type: string
responses:
'200':
description: 'Scheduled task deleted.'
content:
application/json:
schema:
properties:
message:
type: string
example: 'Scheduled task deleted.'
type: object
'401':
$ref: '#/components/responses/401'
'404':
$ref: '#/components/responses/404'
security:
-
bearerAuth: []
/cloud-tokens:
get:
tags:
@ -6419,6 +6459,46 @@ paths:
security:
-
bearerAuth: []
'/services/{uuid}/scheduled-tasks/{task_uuid}':
delete:
tags:
- 'Scheduled Tasks'
summary: 'Delete Task'
description: 'Delete a scheduled task for a service.'
operationId: delete-scheduled-task-by-service-uuid
parameters:
-
name: uuid
in: path
description: 'UUID of the service.'
required: true
schema:
type: string
-
name: task_uuid
in: path
description: 'UUID of the scheduled task.'
required: true
schema:
type: string
responses:
'200':
description: 'Scheduled task deleted.'
content:
application/json:
schema:
properties:
message:
type: string
example: 'Scheduled task deleted.'
type: object
'401':
$ref: '#/components/responses/401'
'404':
$ref: '#/components/responses/404'
security:
-
bearerAuth: []
/teams:
get:
tags:

View file

@ -175,9 +175,11 @@
Route::get('/applications/{uuid}/scheduled-tasks', [ScheduledTasksController::class, 'scheduled_tasks_by_application_uuid'])->middleware(['api.ability:read']);
Route::post('/applications/{uuid}/scheduled-tasks', [ScheduledTasksController::class, 'create_scheduled_task_by_application_uuid'])->middleware(['api.ability:write']);
Route::delete('/applications/{uuid}/scheduled-tasks/{task_uuid}', [ScheduledTasksController::class, 'delete_scheduled_task_by_application_uuid'])->middleware(['api.ability:write']);
Route::get('/services/{uuid}/scheduled-tasks', [ScheduledTasksController::class, 'scheduled_tasks_by_service_uuid'])->middleware(['api.ability:read']);
Route::post('/services/{uuid}/scheduled-tasks', [ScheduledTasksController::class, 'create_scheduled_task_by_service_uuid'])->middleware(['api.ability:write']);
Route::delete('/services/{uuid}/scheduled-tasks/{task_uuid}', [ScheduledTasksController::class, 'delete_scheduled_task_by_service_uuid'])->middleware(['api.ability:write']);
});
Route::group([