PHP code example of systemverk / laravel-api-usage
1. Go to this page and download the library: Download systemverk/laravel-api-usage library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
use Systemverk\LaravelApiUsage\Actors\AuthenticatedUserActorResolver;
use Illuminate\Http\Request;
use Systemverk\LaravelApiUsage\Actors\UsageActor;
use Systemverk\LaravelApiUsage\Contracts\ResolvesUsageActor;
final class OrganizationActorResolver implements ResolvesUsageActor
{
public function resolve(Request $request): ?UsageActor
{
$organizationId = $request->user()?->organization_id;
if (! $organizationId) {
return UsageActor::guest();
}
return UsageActor::make('organization', $organizationId);
}
}
// app/Providers/AppServiceProvider.php
use Illuminate\Http\Request;
use Systemverk\LaravelApiUsage\Support\UsageRecorder;
public function boot(): void
{
UsageRecorder::resolveCredentialUsing(
fn (Request $request) => $request->user()?->currentAccessToken()?->getKey()
);
}
// Everything one team did this month, across all of its keys
ApiUsage::usage()->thisMonth()->forActor(UsageActor::make('team', $team->id))->summary();
// Just one key
ApiUsage::usage()->thisMonth()->forCredential($token->id)->summary();
use Systemverk\LaravelApiUsage\Models\ApiUsageRequest;
use Systemverk\LaravelApiUsage\Models\ApiUsageSummary;
// Slowest concrete paths in the last 24 hours
ApiUsageRequest::query()
->where('requested_at', '>=', now()->utc()->subDay())
->selectRaw('path, count(*) as hits, avg(duration_ms) as avg_ms')
->groupBy('path')
->orderByDesc('avg_ms')
->limit(10)
->get();
// Server errors today
ApiUsageRequest::query()->statusClass(5)->whereDate('requested_at', today())->count();
// Monthly rollups for one actor
ApiUsageSummary::query()->monthly()->forActor(UsageActor::organization(42))->get();
'except' => ['up', 'health', 'webhooks/*'],
'sampling' => ['rate' => 0.1], // record roughly one request in ten