@extends('layouts.app') @section('title', 'API Documentation — LoreKeepers') @section('content')

API Documentation

Programmatic access to the LoreKeepers game database and user libraries.

Authentication

All API requests require an API key. @auth Generate one in Settings → API Keys. @else Sign up and generate one in Settings → API Keys. @endauth

Pass the key via the Authorization header:

Authorization: Bearer YOUR_API_KEY

Alternatively, append ?api_key=YOUR_API_KEY as a query parameter.

Base URL & Rate Limiting

Base URL
https://gamelog.ro/api/v1
Rate Limit
60 requests / minute

Returns HTTP 429 when exceeded.

Endpoints

@php $endpoints = [ ['GET', '/games', 'List games', 'Filters: genre (id), platform (id), year, sort (rating|release|title|popular). Paginated 20/page.'], ['GET', '/games/search', 'Search games', 'Required: q (min 2 chars). Returns up to 20 matches.'], ['GET', '/games/top-rated', 'Top rated games', 'Games with ≥1 rating, sorted by avg rating. Paginated 20/page.'], ['GET', '/games/new-releases', 'New releases', 'Games released ≤ today, sorted newest first. Paginated 20/page.'], ['GET', '/games/{slug}', 'Game detail', 'Full game info: companies, screenshots, latest 5 reviews.'], ['GET', '/genres', 'All genres', 'Returns id, name, slug for all genres.'], ['GET', '/platforms', 'All platforms', 'Returns id, name, slug for all platforms.'], ['GET', '/users/{slug}', 'User profile', 'Public profile: username, name, avatar, stats, joined date.'], ['GET', '/users/{slug}/library', 'User library', "User's game library. Paginated 20/page. Returns game + status + rating."], ]; @endphp
@foreach($endpoints as $ep)
{{ $ep[0] }}
/api/v1{{ $ep[1] }}
{{ $ep[2] }}
{{ $ep[3] }}
@endforeach

Response Format

All list endpoints return paginated responses wrapped in data + meta:

{
  "data": [ ... ],
  "meta": {
    "current_page": 1,
    "last_page": 5,
    "per_page": 20,
    "total": 93
  }
}

Example Request

curl https://gamelog.ro/api/v1/games/top-rated \
  -H "Authorization: Bearer YOUR_API_KEY"

Error Codes

Status Meaning
401Missing or invalid API key
404Resource not found
422Validation error (e.g. q too short)
429Rate limit exceeded (60 req/min)
@endsection