mirror of
https://github.com/HolgerHatGarKeineNode/einundzwanzig-app.git
synced 2026-06-11 02:50:29 +00:00
351dd87fa9
- 🌐 Added API documentation annotations for multiple controllers (Meetups, Cities, Countries, Courses, Highscores, Venues), improving public and developer-facing endpoint clarity. - ➕ Integrated and configured the `dedoc/scramble` package for automated OpenAPI documentation generation. - 🔒 Excluded internal routes and actions from API documentation using `ExcludeRouteFromDocs` attributes. - 🌍 Added new localization keys for API Token features across multiple languages (`lv`, `es`, etc.). - 🛠️ Introduced `Group`, `Response`, and `QueryParameter` attributes for better request descriptions and structured documentation. - 🚀 Enhanced functionality for listing operations in controllers with filters and query parameters like `search` and `selected`.
67 lines
2.9 KiB
PHP
67 lines
2.9 KiB
PHP
<?php
|
|
|
|
use App\Http\Controllers\Api\BindleController;
|
|
use App\Http\Controllers\Api\BtcMapCommunityController;
|
|
use App\Http\Controllers\Api\CityController;
|
|
use App\Http\Controllers\Api\CountryController;
|
|
use App\Http\Controllers\Api\CourseController;
|
|
use App\Http\Controllers\Api\CourseEventController;
|
|
use App\Http\Controllers\Api\HighscoreController;
|
|
use App\Http\Controllers\Api\LecturerController;
|
|
use App\Http\Controllers\Api\MeetupController;
|
|
use App\Http\Controllers\Api\MeetupEventController;
|
|
use App\Http\Controllers\Api\MeetupMapController;
|
|
use App\Http\Controllers\Api\NostrPlebController;
|
|
use App\Http\Controllers\Api\VenueController;
|
|
use App\Http\Controllers\LnurlAuthController;
|
|
use Illuminate\Support\Facades\Route;
|
|
|
|
Route::middleware(['throttle:60,1'])
|
|
->as('api.')
|
|
->group(function () {
|
|
Route::resource('countries', CountryController::class);
|
|
Route::get('meetup/ical', [MeetupController::class, 'ical'])->name('api.meetup.ical');
|
|
Route::resource('meetup', MeetupController::class);
|
|
Route::resource('lecturers', LecturerController::class);
|
|
Route::resource('courses', CourseController::class)
|
|
->only(['index', 'show']);
|
|
Route::resource('cities', CityController::class);
|
|
Route::resource('venues', VenueController::class);
|
|
Route::get('highscores', [HighscoreController::class, 'index'])->name('highscores.index');
|
|
Route::post('highscores', [HighscoreController::class, 'store'])
|
|
->middleware('throttle:10,1')
|
|
->name('highscores.store');
|
|
Route::get('nostrplebs', NostrPlebController::class);
|
|
Route::get('bindles', BindleController::class);
|
|
Route::get('meetups', MeetupMapController::class);
|
|
Route::get('meetup-events/{date?}', MeetupEventController::class);
|
|
Route::get('btc-map-communities', BtcMapCommunityController::class);
|
|
});
|
|
|
|
/*
|
|
* Authenticated write endpoints (Sanctum token auth).
|
|
* Lets a lecturer create/update their own courses and course events
|
|
* programmatically, e.g. to sync events from an external system.
|
|
*/
|
|
Route::middleware('auth:sanctum')
|
|
->as('api.')
|
|
->group(function () {
|
|
Route::post('courses', [CourseController::class, 'store'])
|
|
->name('courses.store');
|
|
Route::patch('courses/{course}', [CourseController::class, 'update'])
|
|
->name('courses.update');
|
|
|
|
Route::get('course-events', [CourseEventController::class, 'index'])
|
|
->name('course-events.index');
|
|
Route::post('course-events', [CourseEventController::class, 'store'])
|
|
->name('course-events.store');
|
|
Route::patch('course-events/{courseEvent}', [CourseEventController::class, 'update'])
|
|
->name('course-events.update');
|
|
});
|
|
|
|
Route::get('/lnurl-auth-callback', [LnurlAuthController::class, 'callback'])
|
|
->name('auth.ln.callback');
|
|
|
|
Route::post('/check-auth-error', [LnurlAuthController::class, 'checkError'])
|
|
->name('auth.check-error');
|