Files
InvoiceShelf/routes/api.php
T
Darko Gjorgjijoski 5ef7804e60 refactor: adopt modular domain architecture (#747)
* refactor: stabilize model identities for domain migration

* refactor: extract module platform context

* refactor: assign models to domain contexts

* refactor: extract ai platform context

* refactor: extract storage platform context

* refactor: extract mail platform context

* refactor: extract pdf platform context

* refactor: extract operations platform context

* refactor: move installation into operations platform

* refactor: extract money domain context

* refactor: extract taxation domain context

* refactor: extract catalog domain context

* refactor: extract metadata domain context

* refactor: extract reporting domain context

* refactor: extract purchases domain context

* refactor: extract receivables domain context

* refactor: extract accounts domain context

* refactor: complete reporting statement boundary

* refactor: extract contacts domain context

* refactor: extract sales domain context

* refactor: remove legacy application layers

* fix: migrate legacy bouncer role identities
2026-08-05 17:40:03 +02:00

167 lines
5.2 KiB
PHP

<?php
use Illuminate\Support\Facades\Route;
/*
|--------------------------------------------------------------------------
| API Routes
|--------------------------------------------------------------------------
|
| Here is where you can register API routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| is assigned the "api" middleware group. Enjoy building your API!
|
*/
// ping
// ----------------------------------
Route::get('ping', function () {
return response()->json([
'success' => 'invoiceshelf-self-hosted',
]);
})->name('ping');
// Version 1 endpoints
// --------------------------------------
Route::prefix('/v1')->group(function () {
// App version
// ----------------------------------
require app_path('Platform/Operations/routes/version.php');
// Authentication & Password Reset
// ----------------------------------
require app_path('Domains/Accounts/routes/public.php');
// Countries
// ----------------------------------
require app_path('Domains/Contacts/routes/public.php');
// Onboarding
// ----------------------------------
Route::middleware(['redirect-if-installed'])->prefix('installation')->group(function () {
require app_path('Platform/Operations/Installation/routes/api.php');
require app_path('Platform/Ai/routes/installer.php');
});
// Super Admin
// ----------------------------------
Route::middleware(['auth:sanctum', 'super-admin'])->prefix('super-admin')->group(function () {
require app_path('Platform/Operations/routes/admin.php');
require app_path('Domains/Accounts/routes/admin.php');
});
// Stop impersonation - uses auth:sanctum only (the impersonated user's token, not super-admin)
Route::middleware(['auth:sanctum'])->prefix('super-admin')->group(function () {
require app_path('Domains/Accounts/routes/impersonation.php');
});
Route::middleware(['auth:sanctum', 'company'])->group(function () {
Route::middleware(['bouncer'])->group(function () {
require app_path('Domains/Accounts/routes/company.php');
require app_path('Platform/Operations/routes/company.php');
// Currencies
// ----------------------------------
require app_path('Domains/Money/routes/company.php');
// Reporting and customers
// ----------------------------------
require app_path('Domains/Reporting/routes/company.php');
require app_path('Domains/Contacts/routes/company.php');
// Items
// ----------------------------------
require app_path('Domains/Catalog/routes/company.php');
// Sales documents
// -------------------------------------------------
require app_path('Domains/Sales/routes/company.php');
// Expenses
// ----------------------------------
require app_path('Domains/Purchases/routes/company.php');
// Payments
// ----------------------------------
require app_path('Domains/Receivables/routes/company.php');
// Custom fields
// ----------------------------------
require app_path('Domains/Metadata/routes/company.php');
// Backup & Disk
// ----------------------------------
require app_path('Platform/Storage/routes/company.php');
// PDF rendering and fonts
// ----------------------------------
require app_path('Platform/Pdf/routes/admin.php');
require app_path('Platform/Operations/routes/settings.php');
// Mails
// ----------------------------------
require app_path('Platform/Mail/routes/company.php');
require app_path('Platform/Ai/routes/company.php');
// Tax Types
// ----------------------------------
require app_path('Domains/Taxation/routes/company.php');
});
// Self Update
// ----------------------------------
// Disabled inside the official Docker image — containers upgrade via
// `docker compose pull`, not the in-app updater (see EnsureNotContainerized).
require app_path('Platform/Operations/routes/updater.php');
require app_path('Domains/Accounts/routes/management.php');
});
Route::prefix('/{company:slug}/customer')->group(function () {
// Authentication & Password Reset
// ----------------------------------
require app_path('Domains/Contacts/routes/customer-public.php');
// Invoices, Estimates, Payments and Expenses endpoints
// -------------------------------------------------------
Route::middleware(['auth:customer', 'customer-portal'])->group(function () {
require app_path('Domains/Contacts/routes/customer.php');
require app_path('Domains/Sales/routes/customer.php');
require app_path('Domains/Receivables/routes/customer.php');
require app_path('Domains/Purchases/routes/customer.php');
});
});
});
require app_path('Platform/Operations/routes/webhooks.php');