Viewing file: api.php (8.31 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php
use Illuminate\Http\Request; use Illuminate\Support\Facades\Route; use Illuminate\Support\Facades\Auth; use App\Http\Controllers\DashboardController; use App\Http\Controllers\AccountController; use App\Http\Controllers\ReportsController; use App\Http\Controllers\AdminController; use App\Http\Controllers\AuthController; use App\Http\Controllers\CampaignController; use App\Http\Controllers\WalletController; use App\Http\Controllers\TransactionController; use App\Http\Controllers\SettingsController;
/* |-------------------------------------------------------------------------- | API Routes |-------------------------------------------------------------------------- | | Here is where you can register API routes for your application. These | routes are loaded by the RouteServiceProvider and all of them will | be assigned to the "api" middleware group. Make something great! | */
Route::middleware('auth:sanctum')->group(function () { Route::get('/user', function (Request $request) { return $request->user(); }); // Dashboard API routes Route::prefix('dashboard')->group(function () { Route::get('/kpis', [DashboardController::class, 'getKpis']); Route::get('/campaigns', [DashboardController::class, 'getCampaigns']); }); Route::post('/campaigns/{id}/duplicate', [CampaignController::class, 'duplicate']); Route::apiResource('campaigns', CampaignController::class);
// Wallet & Transactions Route::get('/wallet', [WalletController::class, 'index']); Route::post('/wallet/top-up', [WalletController::class, 'topUp']); Route::get('/transactions', [TransactionController::class, 'index']); Route::post('/transactions/{id}/approve', [TransactionController::class, 'approve']); // Admin only
// Settings Routes Route::prefix('settings')->group(function () { // General Route::get('/profile', [SettingsController::class, 'getProfile']); Route::put('/profile', [SettingsController::class, 'updateProfile']); Route::get('/preferences', [SettingsController::class, 'getPreferences']); Route::put('/preferences', [SettingsController::class, 'updatePreferences']); // Notifications Route::get('/notifications', [SettingsController::class, 'getNotificationSettings']); Route::put('/notifications', [SettingsController::class, 'updateNotificationSettings']); // Billing Route::get('/billing', [SettingsController::class, 'getBillingInfo']); Route::get('/payment-methods', [SettingsController::class, 'getPaymentMethods']); Route::post('/payment-methods', [SettingsController::class, 'addPaymentMethod']); Route::delete('/payment-methods/{id}', [SettingsController::class, 'deletePaymentMethod']); Route::put('/payment-methods/{id}/default', [SettingsController::class, 'setDefaultPaymentMethod']); Route::get('/invoices', [SettingsController::class, 'getInvoices']); Route::get('/fees', [SettingsController::class, 'getFeeStructure']); // Security Route::get('/security', [SettingsController::class, 'getSecuritySettings']); Route::post('/security/2fa/setup', [SettingsController::class, 'setup2FA']); Route::post('/security/2fa/verify', [SettingsController::class, 'verify2FASetup']); Route::post('/security/2fa/disable', [SettingsController::class, 'disableTwoFactor']); Route::get('/security/recovery-codes', [SettingsController::class, 'getRecoveryCodes']); Route::post('/security/recovery-codes/regenerate', [SettingsController::class, 'regenerateRecoveryCodes']); Route::post('/security/password', [SettingsController::class, 'changePassword']); Route::get('/security/sessions', [SettingsController::class, 'getActiveSessions']); Route::delete('/security/sessions/{id}', [SettingsController::class, 'revokeSession']); Route::get('/account/download', [SettingsController::class, 'downloadAccountData']); Route::post('/account/delete', [SettingsController::class, 'requestAccountDeletion']); }); });
// Auth API routes Route::post('/login', [AuthController::class, 'login']); Route::post('/register', [AuthController::class, 'register']); Route::post('/logout', [AuthController::class, 'logout'])->middleware('auth:sanctum'); Route::post('/forgot-password', [AuthController::class, 'forgotPassword']);
// Account API routes Route::prefix('account')->group(function () { Route::get('/info', [AccountController::class, 'getAccountInfo']); Route::get('/statistics', [AccountController::class, 'getAccountStatistics']); });
// Reports API routes Route::prefix('reports')->middleware('auth:sanctum')->group(function () { Route::get('/kpis', [ReportsController::class, 'getKpis']); Route::get('/campaign-performance', [ReportsController::class, 'getCampaignPerformance']); Route::get('/geo-breakdown', [ReportsController::class, 'getGeoBreakdown']); Route::get('/device-breakdown', [ReportsController::class, 'getDeviceBreakdown']); Route::get('/export', [ReportsController::class, 'exportReport']); });
// Admin API routes Route::middleware('auth:sanctum')->prefix('admin')->group(function () { Route::get('/revenue-dashboard/kpis', [AdminController::class, 'getRevenueKpis']); Route::get('/revenue-dashboard/revenue-streams', [AdminController::class, 'getRevenueStreams']); Route::get('/revenue-dashboard/top-customers', [AdminController::class, 'getTopCustomers']); Route::get('/revenue-dashboard/top-campaigns', [AdminController::class, 'getTopCampaigns']); Route::get('/revenue-dashboard/anomalies', [AdminController::class, 'getAnomalies']); Route::get('/revenue-dashboard/export', [AdminController::class, 'exportRevenueReport']);
Route::post('/staff', [AdminController::class, 'createStaff']); Route::get('/staff', [AdminController::class, 'getStaff']); Route::post('/permissions', [AdminController::class, 'createPermission']); Route::post('/assign-permission', [AdminController::class, 'assignPermission']); Route::get('/permissions', [AdminController::class, 'getPermissions']); // Account Pool routes Route::prefix('account-pool')->group(function () { Route::get('/', [App\Http\Controllers\AccountPoolController::class, 'index']); Route::post('/', [App\Http\Controllers\AccountPoolController::class, 'store']); Route::put('/{id}', [App\Http\Controllers\AccountPoolController::class, 'update']); Route::delete('/{id}', [App\Http\Controllers\AccountPoolController::class, 'destroy']); Route::post('/{id}/sync', [App\Http\Controllers\AccountPoolController::class, 'sync']); Route::post('/sync-all', [App\Http\Controllers\AccountPoolController::class, 'syncAll']); Route::post('/{id}/assign', [App\Http\Controllers\AccountPoolController::class, 'assign']); Route::post('/{id}/unassign', [App\Http\Controllers\AccountPoolController::class, 'unassign']); Route::get('/stats', [App\Http\Controllers\AccountPoolController::class, 'stats']); });
// User Mapping routes Route::prefix('user-mappings')->group(function () { Route::get('/', [App\Http\Controllers\UserMappingController::class, 'index']); Route::post('/', [App\Http\Controllers\UserMappingController::class, 'store']); Route::post('/{userId}/bind', [App\Http\Controllers\UserMappingController::class, 'bind']); Route::post('/{userId}/unbind', [App\Http\Controllers\UserMappingController::class, 'unbind']); Route::post('/{userId}/rebind', [App\Http\Controllers\UserMappingController::class, 'rebind']); Route::get('/{userId}/audit-history', [App\Http\Controllers\UserMappingController::class, 'auditHistory']); Route::get('/stats', [App\Http\Controllers\UserMappingController::class, 'stats']); });
// Audit Logs Route::get('/audit-logs/export', [App\Http\Controllers\AuditLogController::class, 'export']); Route::get('/audit-logs', [App\Http\Controllers\AuditLogController::class, 'index']);
// System Alerts Route::get('/system-alerts', [App\Http\Controllers\SystemAlertController::class, 'index']); Route::post('/system-alerts/{id}/acknowledge', [App\Http\Controllers\SystemAlertController::class, 'acknowledge']); Route::post('/system-alerts/mark-all-read', [App\Http\Controllers\SystemAlertController::class, 'markAllRead']);
});
|