API

APIs structure

All the APIs in Balance are defined in the api.php file and each API "points" to a controller's method.

APIs are be grouped by prefix and name.

Here's an example:

Route::prefix('v1')
    ->name('api.')
    ->middleware('auth:sanctum')
    ->group(function () {
        // Users
        Route::prefix('users')
            ->name('users.')
            ->controller(UsersApiController::class)
            ->group(function () {
                Route::post('media', 'storeMedia')
                    ->name('storeMedia');
                Route::post('{user}/updatePhoto', 'updatePhoto')
                    ->name('updatePhoto');
                Route::get('{user}/getActiveOrders', 'getActiveOrders')
                    ->name('getActiveOrders');
                Route::get('{user}/getTeams', 'getTeams')
                    ->name('getTeams');
                Route::get('{user}/getUserTimesheets', 'getUserTimesheets')
                    ->name('getUserTimesheets');
            });
        Route::resource('users', UsersApiController::class);

        // Config info
        Route::get('config/getDistroInfo', [ConfigApiController::class, 'getDistroInfo'])
            ->name('config.getDistroInfo');

        // Locales
        Route::prefix('locales')
            ->name('locales.')
            ->controller(LocalesController::class)
            ->group(function () {
                Route::get('languages', 'languages')
                    ->name('languages');
                Route::get('messages', 'messages')
                    ->name('messages');
            });


        // Abilities
        Route::resource('abilities', AbilitiesController::class)
            ->only('index');

        // Teams
        Route::prefix('teams')
            ->name('teams.')
            ->controller(TeamsApiController::class)
            ->group(function () {
                Route::get('{team}/getUserList', 'getUserList')
                    ->name('getUserList');
                Route::get('{team}/getProjects', 'getProjects')
                    ->name('getProjects');
                Route::get('{team}/getActiveOrders', 'getActiveOrders')
                    ->name('getActiveOrders');
            });
        Route::resource('teams', TeamsApiController::class);

        // Companies
        Route::prefix('companies')
            ->name('companies.')
            ->controller(CompaniesApiController::class)
            ->group(function () {
                Route::get('{company}/getDonutChartData', 'getDonutChartData')
                    ->name('getDonutChartData');
                Route::get('{company}/getActiveOrders', 'getActiveOrders')
                    ->name('getActiveOrders');
                Route::get('{company}/getProjects', 'getProjects')
                    ->name('getProjects');
                Route::post('{company}/addAttachments', 'addAttachments')
                    ->name('addAttachments');
                Route::get('{company}/getWidgetData', 'getWidgetData')
                    ->name('getWidgetData');
            });
        Route::resource('companies', CompaniesApiController::class);
        
        // Projects
        Route::prefix('projects')
            ->name('projects.')
            ->controller(ProjectsApiController::class)
            ->group(function () {
                Route::get('{project}/getChartData', 'getChartData')
                    ->name('getChartData');
                Route::post('{project}/addAttachments', 'addAttachments')
                    ->name('addAttachments');
                Route::post('{project}/removeAttachment', 'removeAttachment')
                    ->name('removeAttachment');
                Route::get('getTaskData', 'getTaskData')
                    ->name('getTaskData');
            });
        Route::resource('projects', ProjectsApiController::class); 
    });

In addition to the route group and the route prefix, middleware can also be used (e.g.auth:sanctum).

Last updated