group(function () { // Mobile token auth (Ladill Mini Android). Public — proxies to the central // Ladill identity API and issues a Sanctum token. Route::post('/auth/login', [AuthController::class, 'login'])->middleware('throttle:10,1')->name('api.auth.login'); Route::post('/auth/register', [AuthController::class, 'register'])->middleware('throttle:10,1')->name('api.auth.register'); Route::middleware(['auth:sanctum', \App\Http\Middleware\SetActingAccount::class])->group(function () { Route::post('/auth/logout', [AuthController::class, 'logout'])->name('api.auth.logout'); Route::get('/me', MeController::class); Route::get('/qr-codes', [QrCodeController::class, 'index']); Route::post('/qr-codes', [QrCodeController::class, 'store']); Route::get('/qr-codes/{qrCode}', [QrCodeController::class, 'show'])->whereNumber('qrCode'); Route::patch('/qr-codes/{qrCode}', [QrCodeController::class, 'update'])->whereNumber('qrCode'); Route::get('/qr-codes/{qrCode}/analytics', [QrCodeController::class, 'analytics'])->whereNumber('qrCode'); // Ladill Mini — payments product. Route::get('/mini/overview', MiniOverviewController::class)->name('api.mini.overview'); Route::get('/mini/payment-qrs', [MiniPaymentQrController::class, 'index'])->name('api.mini.payment-qrs.index'); Route::post('/mini/payment-qrs', [MiniPaymentQrController::class, 'store'])->name('api.mini.payment-qrs.store'); Route::get('/mini/payment-qrs/{paymentQr}', [MiniPaymentQrController::class, 'show'])->whereNumber('paymentQr')->name('api.mini.payment-qrs.show'); Route::patch('/mini/payment-qrs/{paymentQr}', [MiniPaymentQrController::class, 'update'])->whereNumber('paymentQr')->name('api.mini.payment-qrs.update'); Route::delete('/mini/payment-qrs/{paymentQr}', [MiniPaymentQrController::class, 'destroy'])->whereNumber('paymentQr')->name('api.mini.payment-qrs.destroy'); Route::get('/mini/payment-qrs/{paymentQr}/preview.png', [MiniPaymentQrController::class, 'preview'])->whereNumber('paymentQr')->name('api.mini.payment-qrs.preview'); Route::get('/mini/payments', [MiniPaymentsController::class, 'index'])->name('api.mini.payments.index'); Route::get('/mini/payouts', MiniPayoutsController::class)->name('api.mini.payouts'); // Account self-service (Settings, Wallet, Support) — keeps Mini usable // entirely in-app without the website. Route::get('/mini/account/settings', [MiniAccountController::class, 'settings'])->name('api.mini.account.settings'); Route::put('/mini/account/settings', [MiniAccountController::class, 'updateSettings'])->name('api.mini.account.settings.update'); Route::put('/mini/account/profile', [MiniAccountController::class, 'updateProfile'])->name('api.mini.account.profile'); Route::post('/mini/account/avatar', [MiniAccountController::class, 'uploadAvatar'])->name('api.mini.account.avatar'); Route::post('/mini/account/change-password', [MiniAccountController::class, 'changePassword'])->name('api.mini.account.change-password'); Route::get('/mini/wallet', [MiniWalletController::class, 'show'])->name('api.mini.wallet'); Route::post('/mini/wallet/topup', [MiniWalletController::class, 'topup'])->name('api.mini.wallet.topup'); Route::get('/mini/wallet/payout-account', [MiniWalletController::class, 'payoutAccount'])->name('api.mini.wallet.payout-account'); Route::put('/mini/wallet/payout-account', [MiniWalletController::class, 'updatePayoutAccount'])->name('api.mini.wallet.payout-account.update'); Route::get('/mini/wallet/withdrawals', [MiniWalletController::class, 'withdrawals'])->name('api.mini.wallet.withdrawals'); Route::post('/mini/wallet/withdraw', [MiniWalletController::class, 'withdraw'])->name('api.mini.wallet.withdraw'); Route::post('/mini/support/chat', [MiniSupportController::class, 'chat'])->name('api.mini.support.chat'); }); });