Add application API and OpenAPI docs
linter / quality (pull_request) Successful in 1m18s
tests / ci (8.4) (pull_request) Successful in 1m28s

This commit is contained in:
2026-04-20 13:22:56 +02:00
parent 70d760e3a6
commit 8b25421e7c
80 changed files with 6908 additions and 1277 deletions
+34
View File
@@ -0,0 +1,34 @@
<?php
use App\Http\Controllers\Api\ProjectBoardSettingsController;
use App\Http\Controllers\Api\ProjectRepositorySettingsController;
use App\Http\Controllers\Api\ProjectTicketMetadataSettingsController;
use Illuminate\Support\Facades\Route;
Route::get('board', [ProjectBoardSettingsController::class, 'show'])->name('board');
Route::prefix('board')
->name('board.')
->controller(ProjectBoardSettingsController::class)
->group(function (): void {
require __DIR__.'/settings/board.php';
});
Route::get('metadata', [ProjectTicketMetadataSettingsController::class, 'show'])->name('metadata');
Route::patch('metadata', [ProjectTicketMetadataSettingsController::class, 'update'])->name('metadata.update');
Route::prefix('metadata')
->name('metadata.')
->controller(ProjectTicketMetadataSettingsController::class)
->group(function (): void {
require __DIR__.'/settings/metadata.php';
});
Route::get('repositories', [ProjectRepositorySettingsController::class, 'show'])->name('repositories');
Route::prefix('repositories')
->name('repositories.')
->controller(ProjectRepositorySettingsController::class)
->group(function (): void {
require __DIR__.'/settings/repositories.php';
});
+16
View File
@@ -0,0 +1,16 @@
<?php
use Illuminate\Support\Facades\Route;
Route::prefix('columns')->name('columns.')->group(function (): void {
Route::post('/', 'storeColumn')->name('store');
Route::patch('{boardColumn}', 'updateColumn')->name('update');
Route::delete('{boardColumn}', 'destroyColumn')->name('destroy');
});
Route::prefix('statuses')->name('statuses.')->group(function (): void {
Route::post('/', 'storeStatus')->name('store');
Route::patch('{ticketStatus}', 'updateStatus')->name('update');
Route::delete('{ticketStatus}', 'destroyStatus')->name('destroy');
Route::patch('{ticketStatus}/transitions', 'updateStatusTransitions')->name('transitions.update');
});
+27
View File
@@ -0,0 +1,27 @@
<?php
use Illuminate\Support\Facades\Route;
Route::prefix('types')->name('types.')->group(function (): void {
Route::post('/', 'storeType')->name('store');
Route::patch('{ticketType}', 'updateType')->name('update');
Route::delete('{ticketType}', 'destroyType')->name('destroy');
});
Route::prefix('priorities')->name('priorities.')->group(function (): void {
Route::post('/', 'storePriority')->name('store');
Route::patch('{ticketPriority}', 'updatePriority')->name('update');
Route::delete('{ticketPriority}', 'destroyPriority')->name('destroy');
});
Route::prefix('fields')->name('fields.')->group(function (): void {
Route::post('/', 'storeFieldDefinition')->name('store');
Route::patch('{ticketFieldDefinition}', 'updateFieldDefinition')->name('update');
Route::delete('{ticketFieldDefinition}', 'destroyFieldDefinition')->name('destroy');
});
Route::prefix('link-types')->name('link-types.')->group(function (): void {
Route::post('/', 'storeLinkType')->name('store');
Route::patch('{ticketLinkType}', 'updateLinkType')->name('update');
Route::delete('{ticketLinkType}', 'destroyLinkType')->name('destroy');
});
@@ -0,0 +1,7 @@
<?php
use Illuminate\Support\Facades\Route;
Route::post('/', 'store')->name('store');
Route::patch('{repositoryConnection}', 'update')->name('update');
Route::delete('{repositoryConnection}', 'destroy')->name('destroy');
+31
View File
@@ -0,0 +1,31 @@
<?php
use App\Http\Controllers\Api\ProjectTicketBranchController;
use App\Http\Controllers\Api\ProjectTicketController;
use App\Http\Controllers\Api\ProjectTicketLinkController;
use Illuminate\Support\Facades\Route;
Route::prefix('{ticket}')->group(function (): void {
Route::get('/', [ProjectTicketController::class, 'show'])->name('show');
Route::patch('/', [ProjectTicketController::class, 'update'])->name('update');
Route::get('status-targets', [ProjectTicketController::class, 'statusTargets'])->name('status-targets');
Route::patch('status', [ProjectTicketController::class, 'move'])->name('status.update');
Route::prefix('branches')
->name('branches.')
->controller(ProjectTicketBranchController::class)
->group(function (): void {
Route::get('validate', 'validate')->name('validate');
Route::post('/', 'store')->name('store');
});
Route::prefix('links')
->name('links.')
->controller(ProjectTicketLinkController::class)
->group(function (): void {
Route::post('/', 'store')->name('store');
Route::delete('{ticketLink}', 'destroy')
->withoutScopedBindings()
->name('destroy');
});
});
+38
View File
@@ -0,0 +1,38 @@
<?php
use App\Http\Controllers\Api\ProjectBoardController;
use App\Http\Controllers\Api\ProjectController;
use App\Http\Controllers\Api\ProjectTicketController;
use Illuminate\Support\Facades\Route;
Route::prefix('projects')
->name('api.projects.')
->group(function (): void {
Route::get('/', [ProjectController::class, 'index'])->name('index');
Route::post('/', [ProjectController::class, 'store'])->name('store');
Route::prefix('{project}')
->group(function (): void {
Route::get('/', [ProjectController::class, 'show'])->name('show');
Route::delete('/', [ProjectController::class, 'destroy'])->name('destroy');
Route::get('board', [ProjectBoardController::class, 'board'])->name('board');
Route::get('backlog', [ProjectBoardController::class, 'backlog'])->name('backlog');
Route::get('ticket-options', [ProjectTicketController::class, 'options'])->name('ticket-options');
Route::get('tickets', [ProjectTicketController::class, 'index'])->name('tickets.index');
Route::post('tickets', [ProjectTicketController::class, 'store'])->name('tickets.store');
Route::scopeBindings()->group(function (): void {
Route::prefix('tickets')
->name('tickets.')
->group(function (): void {
require __DIR__.'/project/tickets.php';
});
Route::prefix('settings')
->name('settings.')
->group(function (): void {
require __DIR__.'/project/settings.php';
});
});
});
});
+14
View File
@@ -0,0 +1,14 @@
<?php
use App\Http\Controllers\Api\Settings\GitConnectionController;
use Illuminate\Support\Facades\Route;
Route::prefix('git-connections')
->name('api.git-connections.')
->controller(GitConnectionController::class)
->group(function (): void {
Route::get('/', 'index')->name('index');
Route::post('/', 'store')->name('store');
Route::patch('{gitConnection}', 'update')->name('update');
Route::delete('{gitConnection}', 'destroy')->name('destroy');
});