@extends('admin.layouts.admin') @section('title', 'API · Uso') @section('content')
Uso del API

Volumen de peticiones, usuarios conectados y errores de api.fermenty.es

{{-- Rango (escopa todos los bloques de la página) --}}
@foreach(\App\Http\Controllers\Admin\ApiStatsAdminController::RANGES as $range) {{ $range }} días @endforeach
@php $fmt = fn ($v) => number_format($v, 0, ',', '.'); @endphp {{-- KPIs --}}
Peticiones ({{ $days }} días)
{{ $fmt($stats['total']) }}
{{ $fmt($stats['today']) }} hoy
Usuarios API únicos
{{ $fmt($stats['users']) }}
{{ $fmt($stats['users_today']) }} hoy
Latencia media
{{ $fmt($stats['avg_ms']) }} ms
sobre {{ $fmt($stats['total']) }} peticiones
Errores (≥ 400)
{{ $fmt($stats['errors']) }}
{{ str_replace('.', ',', (string) $stats['error_rate']) }}% del total
@if($stats['total'] === 0)
Aún no hay peticiones registradas

Cada consulta a api.fermenty.es queda registrada automáticamente. En cuanto la app empiece a hacer peticiones verás aquí el volumen diario, los usuarios conectados y los endpoints más usados.

@else {{-- Charts --}}
Peticiones por día
@include('admin.api_stats._columns', [ 'data' => array_map(fn ($d) => [ 'label' => $d['label'], 'value' => $d['requests'], 'tip' => $d['label'] . ' — ' . $fmt($d['requests']) . ' peticiones · ' . $fmt($d['errors']) . ' errores · ' . $fmt($d['avg_ms']) . ' ms', ], $daily), 'color' => '#2a78d6', 'unit' => 'peticiones', 'ariaLabel' => 'Peticiones al API por día', ])
Usuarios únicos por día
@include('admin.api_stats._columns', [ 'data' => array_map(fn ($d) => [ 'label' => $d['label'], 'value' => $d['users'], 'tip' => $d['label'] . ' — ' . $fmt($d['users']) . ' usuarios únicos', ], $daily), 'color' => '#1baf7a', 'unit' => 'usuarios', 'ariaLabel' => 'Usuarios únicos del API por día', ])
{{-- Vista tabla (equivalente accesible de ambos charts) --}}
Ver datos diarios en tabla
@foreach(array_reverse($daily) as $d) @endforeach
FechaPeticionesUsuarios únicosErroresMedia ms
{{ $d['label'] }} {{ $fmt($d['requests']) }} {{ $fmt($d['users']) }} {{ $fmt($d['errors']) }} {{ $fmt($d['avg_ms']) }}
{{-- Top endpoints --}}
Endpoints más usados
@foreach($endpoints as $ep) @endforeach
EndpointPeticionesUsuariosMedia msErrores
{{ $ep->method }} {{ str_replace('api.v1.', '', $ep->endpoint) }} {{ $fmt($ep->requests) }} {{ $fmt($ep->users) }} {{ $fmt(round($ep->avg_ms ?? 0)) }} {{ $fmt($ep->errors) }}
{{-- Top usuarios --}}
Usuarios más activos
@if($topUsers->isEmpty())

Todavía no hay peticiones autenticadas.

@else
@foreach($topUsers as $row) @endforeach
UsuarioPeticionesÚltima actividad
@if($row->user) {{ $row->user->name }}
{{ $row->user->email }}
@else Usuario eliminado @endif
{{ $fmt($row->requests) }} {{ \Illuminate\Support\Carbon::parse($row->last_seen)->format('d/m H:i') }}
@endif
{{-- Errores recientes --}}
Errores recientes (≥ 400)
@if($recentErrors->isEmpty())

Sin errores en este rango. 🎉

@else
@foreach($recentErrors as $err) @endforeach
FechaCódigoEndpointUsuarioIP
{{ $err->created_at->format('d/m H:i') }} {{ $err->status }} {{ $err->method }} {{ $err->path }} {{ $err->user?->email ?? '—' }} {{ $err->ip }}
@endif
@endif @endsection @push('scripts') @endpush