- Fix model_pricing table references (model_id -> model, display_name -> model)
- Fix price columns (output_price_per_1k -> output_price_per_million)
- Add price conversion (per_million / 1000 = per_1k) in all API responses
- Add whereNotNull('model') filters to exclude invalid entries
- Add getModelDisplayName() helper method to all controllers
- Fix AccountController to use gateway_users budget fields directly
- Remove Budget model dependencies from AccountController
- Add custom Scramble server URL configuration for API docs
- Create ScrambleServiceProvider to set correct /api prefix
- Add migration to rename user_id to gateway_user_id in llm_requests
- Add custom ApiGuard for gateway_users authentication
- Update all API controllers: AccountController, ModelController, PricingController, ProviderController
All API endpoints now working correctly:
- GET /api/account
- GET /api/models
- GET /api/pricing
- GET /api/providers/{provider}
82 lines
4.0 KiB
PHP
82 lines
4.0 KiB
PHP
<?php
|
|
|
|
use Illuminate\Support\Facades\Route;
|
|
use App\Http\Controllers\DashboardController;
|
|
use App\Http\Controllers\GatewayUserController;
|
|
use App\Http\Controllers\ApiKeyController;
|
|
use App\Http\Controllers\BudgetController;
|
|
use App\Http\Controllers\UsageLogController;
|
|
use App\Http\Controllers\ModelPricingController;
|
|
use App\Http\Controllers\Admin\CredentialController;
|
|
use App\Http\Controllers\Admin\UserBudgetController;
|
|
use App\Http\Controllers\Admin\UserManagementController;
|
|
|
|
Route::view('/', 'welcome');
|
|
|
|
Route::middleware(['auth', 'verified'])->group(function () {
|
|
// Dashboard
|
|
Route::get('dashboard', [DashboardController::class, 'index'])->name('dashboard');
|
|
Route::get('dashboard/realtime-stats', [DashboardController::class, 'realtimeStats'])->name('dashboard.realtime-stats');
|
|
|
|
// Gateway Users Management
|
|
Route::resource('gateway-users', GatewayUserController::class);
|
|
Route::post('gateway-users/{id}/toggle-block', [GatewayUserController::class, 'toggleBlock'])
|
|
->name('gateway-users.toggle-block');
|
|
Route::post('gateway-users-bulk-action', [GatewayUserController::class, 'bulkAction'])
|
|
->name('gateway-users.bulk-action');
|
|
|
|
// API Keys Management (Admin Interface)
|
|
Route::resource('keys', ApiKeyController::class)->except(['edit', 'update']);
|
|
Route::post('keys/{id}/revoke', [ApiKeyController::class, 'revoke'])
|
|
->name('keys.revoke');
|
|
|
|
// Budgets Management
|
|
Route::resource('budgets', BudgetController::class);
|
|
Route::post('budgets/{id}/assign-users', [BudgetController::class, 'assignUsers'])
|
|
->name('budgets.assign-users');
|
|
|
|
// Usage Logs
|
|
Route::get('usage-logs', [UsageLogController::class, 'index'])->name('usage-logs.index');
|
|
Route::get('usage-logs/export', [UsageLogController::class, 'export'])->name('usage-logs.export');
|
|
|
|
// Model Pricing
|
|
Route::resource('model-pricing', ModelPricingController::class);
|
|
Route::get('model-pricing-calculator', [ModelPricingController::class, 'calculator'])->name('model-pricing.calculator');
|
|
Route::post('model-pricing-calculate', [ModelPricingController::class, 'calculate'])->name('model-pricing.calculate');
|
|
Route::get('model-pricing-import', [ModelPricingController::class, 'importForm'])->name('model-pricing.import-form');
|
|
Route::post('model-pricing-import', [ModelPricingController::class, 'import'])->name('model-pricing.import');
|
|
Route::get('admin/provider-models/{provider}', [ModelPricingController::class, 'getProviderModels'])->name('api.provider-models');
|
|
|
|
// Provider Credentials Management (Admin)
|
|
Route::prefix('admin')->name('admin.')->group(function () {
|
|
// User Management
|
|
Route::get('users', [UserManagementController::class, 'index'])
|
|
->name('users.index');
|
|
|
|
// Credentials
|
|
Route::resource('credentials', CredentialController::class);
|
|
Route::post('credentials/{credential}/test', [CredentialController::class, 'test'])
|
|
->name('credentials.test');
|
|
Route::post('credentials/{credential}/toggle', [CredentialController::class, 'toggle'])
|
|
->name('credentials.toggle');
|
|
|
|
// User Budget & Rate Limit Management
|
|
Route::get('users/{user}/budget', [UserBudgetController::class, 'show'])
|
|
->name('users.budget.show');
|
|
Route::put('users/{user}/budget', [UserBudgetController::class, 'updateBudget'])
|
|
->name('users.budget.update');
|
|
Route::put('users/{user}/rate-limit', [UserBudgetController::class, 'updateRateLimit'])
|
|
->name('users.rate-limit.update');
|
|
Route::post('users/{user}/rate-limit/reset', [UserBudgetController::class, 'resetRateLimit'])
|
|
->name('users.rate-limit.reset');
|
|
Route::post('users/{user}/budget/reset', [UserBudgetController::class, 'resetBudget'])
|
|
->name('users.budget.reset');
|
|
});
|
|
});
|
|
|
|
Route::view('profile', 'profile')
|
|
->middleware(['auth'])
|
|
->name('profile');
|
|
|
|
require __DIR__.'/auth.php';
|