fn_b/routes/api.php

51 lines
3.1 KiB
PHP
Executable File

<?php
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\Api\Tg\HookController;
use App\Http\Controllers\Api\Nasa\V1\CategoryBaseController as NasaV1CategoryBaseController;
use App\Http\Controllers\Api\v1\GithubController;
Route::get('/github/todayupd', [GithubController::class, 'todayUpd']);
Route::get('/github/getlast', [GithubController::class, 'getLast']);
Route::get('/github/getfntoday/{date?}', [GithubController::class, 'getFnToday']);
Route::prefix('nasa/v1')->middleware('nasa.auth')->group(function () {
Route::prefix('category/base')->group(function() {
Route::get('', [NasaV1CategoryBaseController::class, 'index']);
Route::get('detail/{id}', [NasaV1CategoryBaseController::class, 'detail']);
Route::put('detail/save/{id}', [NasaV1CategoryBaseController::class, 'detailSave']);
Route::delete('delete/{id}', [NasaV1CategoryBaseController::class, 'delete']);
Route::get('add', [NasaV1CategoryBaseController::class, 'add']);
Route::put('add/save', [NasaV1CategoryBaseController::class, 'addSave']);
Route::get('clone/{id}', [NasaV1CategoryBaseController::class, 'clone']);
Route::put('clone/save', [NasaV1CategoryBaseController::class, 'cloneSave']);
Route::get('hit/{id}/{field}', [NasaV1CategoryBaseController::class, 'hit']);
});
});
// AI editorial API: independent of legacy feed ingestion and ATOM.
Route::prefix('editorial/v1')->middleware([\App\Http\Middleware\EditorialAuthentication::class, 'throttle:60,1'])->group(function () {
$controller = \App\Http\Controllers\Api\Editorial\EditorialController::class;
Route::get('catalog', [$controller, 'catalog']);
Route::get('source-articles/{article}', [$controller, 'source'])->whereNumber('article');
Route::post('assets', [$controller, 'upload']);
Route::get('assets/{sha}', [$controller, 'asset'])->where('sha', '[a-f0-9]{64}');
Route::post('drafts', [$controller, 'store']);
Route::get('drafts/{draft}', [$controller, 'draft'])->whereUuid('draft');
Route::post('drafts/{draft}/publish', [$controller, 'publish'])->whereUuid('draft');
Route::get('articles/{key}', [$controller, 'article']);
Route::get('articles/{key}/versions/{revision}', [$controller, 'version'])->whereNumber('revision');
Route::post('articles/{key}/rollback', [$controller, 'rollback']);
Route::get('publications/{publication}', [$controller, 'receipt'])->whereUuid('publication');
Route::post('publications/{publication}/synchronize', [$controller, 'synchronize'])->whereUuid('publication');
});
Route::get('editorial/v1/preview/{draft}/{key}', [\App\Http\Controllers\Api\Editorial\EditorialController::class, 'preview'])
->middleware(['signed:relative', 'throttle:60,1'])->whereUuid('draft')->name('editorial.preview');
Route::get('editorial/v1/preview-assets/{sha}', [\App\Http\Controllers\Api\Editorial\EditorialController::class, 'asset'])
->middleware(['signed:relative', 'throttle:120,1'])->where('sha', '[a-f0-9]{64}')->name('editorial.preview-asset');