Skip to main content

Event Management System API Documentation

Table of Contents

  1. Overview
  2. Authentication
  3. API Endpoints
  4. Models & Data Structures
  5. Helper Functions
  6. Frontend Components
  7. Usage Examples

Overview

This is a comprehensive Laravel-based event management system that handles event creation, registration, payments, rankings, and merchandise. The system supports multiple user roles including organizers, administrators, and participants.

Key Features

  • Event creation and management
  • User registration and authentication
  • Payment processing (Redsys integration)
  • Event rankings and statistics
  • Merchandise catalog management
  • Multi-language support
  • Discount and promotion management
  • Communication system

Authentication

Sanctum Authentication

The API uses Laravel Sanctum for authentication. Most endpoints require authentication via the auth:sanctum middleware.

Session Authentication

Web routes use session-based authentication with the auth middleware.

API Endpoints

Authentication Endpoints

User Login

Request Body:
Response:

User Registration

Request Body:

Event Management API

Get Events (Filtered)

Query Parameters:
  • search (string): Search term for event name
  • category (integer): Category ID filter
  • date_from (date): Start date filter
  • date_to (date): End date filter
  • status (string): Event status filter
Response:

Create Event

Request Body:

Update Event

Request Body: Same as create event

Get Event Forms

Response:

Update Event Forms

Request Body:

Checkout & Payment API

Get Event Products

Response:

Add Product to Cart

Request Body:

Remove from Cart

Request Body:

Get Product Variants

Response:

Find Product Variant

Request Body:

Rankings API

Get Event Rankings

Create Ranking

Request Body:

Recalculate Rankings

Export Rankings

Discounts API

Get Discounts

Create Discount

Request Body:

Update Discount

Delete Discount

Communications API

Get Communications

Send Communication

Request Body:

Generate Report

Types: participants, payments, rankings

Merchandise API

Get Catalogs

Create Catalog

Request Body:

Update Catalog

Delete Catalog

Upload Product Image

Request: Multipart form data with image file

Get Products

Get Single Product

Process Checkout

Request Body:

Configuration API

Create Permission

Request Body:

Delete Permission

User Management API

Get User Profile

Update Profile

Request Body:

Update Password

Request Body:

Organization Management API

Get Organizations

Create Organization

Request Body:

Update Organization

Delete Organization

Export Organizations

Language Management API

Get Languages

Create Language

Request Body:

Update Language

Delete Language

Tariff Management API

Get Tariffs

Create Tariff

Request Body:

Update Tariff

Delete Tariff

Models & Data Structures

Event Model

User Model

Event Registration Model

Helper Functions

Status Management Functions

get_status_meta()

Returns status metadata including label and CSS class.
Usage:

get_status_class()

Returns CSS class for a status.
Usage:

get_status_label()

Returns human-readable label for a status.
Usage:

Frontend Components

JavaScript Dependencies

The application uses several JavaScript libraries:
  • jQuery: DOM manipulation and AJAX requests
  • Bootstrap: UI framework
  • DataTables: Table functionality
  • Swiper: Carousel/slider functionality
  • Toastr: Notification system
  • Moment.js: Date/time manipulation
  • PDFMake: PDF generation
  • JSZip: File compression
  • Tabulator: Advanced table functionality

Key Frontend Features

DataTables Integration

AJAX Form Submissions

File Uploads

Usage Examples

Creating an Event

Processing a Payment

Managing Rankings

Sending Communications

Managing Merchandise

Error Handling

Common HTTP Status Codes

  • 200: Success
  • 201: Created
  • 400: Bad Request
  • 401: Unauthorized
  • 403: Forbidden
  • 404: Not Found
  • 422: Validation Error
  • 500: Internal Server Error

Error Response Format

Rate Limiting

The API implements rate limiting to prevent abuse. Limits are applied per user/IP address:
  • Authentication endpoints: 5 requests per minute
  • General API endpoints: 60 requests per minute
  • File upload endpoints: 10 requests per minute

Security Considerations

  1. Authentication: All sensitive endpoints require authentication
  2. Authorization: Role-based access control using Spatie Laravel Permission
  3. CSRF Protection: Web forms include CSRF tokens
  4. Input Validation: All inputs are validated using Laravel’s validation system
  5. SQL Injection Protection: Uses Eloquent ORM with parameterized queries
  6. XSS Protection: Output is properly escaped in Blade templates

Testing

API Testing Examples

This documentation covers the main APIs, functions, and components of the event management system. For specific implementation details, refer to the individual controller and model files.