Download the PHP package aichadigital/laratickets without Composer
On this page you can find all versions of the php package aichadigital/laratickets. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download aichadigital/laratickets
More information about aichadigital/laratickets
Files in aichadigital/laratickets
Package laratickets
Short Description Laravel package for support tickets
License AGPL-3.0-or-later
Homepage https://github.com/aichadigital/laratickets
Informations about the package laratickets
Laratickets - Advanced Support Ticket System for Laravel
Development happens on gitlab.castris.com. The GitHub repository is a read-only distribution mirror: issues and pull requests opened there are not seen.
v1.0 — stable contract. The public contract is frozen as of v1.0.0 (see
docs/ADR-004-v1.0-contract.md).
- Core (stable): open · assign · reassign · converse · close · departments
- routing · priority · attachments · statuses.
- Optional-stable (ON by default): level escalation.
- Optional-experimental (
@experimental, OFF by default): evaluations, agent rating, risk assessment — outside the semver promise.
A comprehensive, UUID-first support ticket management system for Laravel with 4-level escalation, risk assessment, evaluations, and full RESTful API. General-purpose for any UUID-first Laravel application.
Features
- 4-Level Escalation System: Automatic and manual escalation between support levels (I, II, III, IV)
- Department Management: Organize tickets by departments (Technical, Administrative, Commercial)
- Risk Assessment: Level III/IV agents can assess ticket risk with automatic critical escalation
- Ticket Evaluations: Global ticket scoring and individual agent ratings
- File Attachments: Upload/download/delete files attached to tickets. Configurable disk (local/S3/…), mime/size restrictions, role-based authorization via contract. See ADR-002.
- RESTful API: Full versioned API (v1) with Laravel Sanctum authentication
- Flexible Authorization: Contract-based authorization system, easily adaptable to any permission package
- UUID-first: Requires
users.idUUID v7 char(36). See setup-uuid.md (shared with larabill) for consumer setup. See ADR-001 for rationale. - Event System: 11 events for complete extensibility
- SLA Management: Configurable SLA hours per level with auto-escalation on breach
- Comprehensive Testing: 25+ tests with 80+ assertions
Requirements
- PHP 8.4+
- Laravel 12.x
Installation
Install via Composer:
Run the installation command:
This will:
- Publish configuration file
- Run migrations (10 tables)
- Seed default levels (I-IV) and departments
Migrations are package-managed. Laratickets owns its database schema and loads it from the package via
loadMigrationsFrom(). The install command does not copy migrations into your application, and applications should not publish or edit the package migrations. User foreign keys require UUID-compatible (char(36)UUID v7) user IDs. If you need custom schema ownership, fork or request an extension point. See ADR-005.
Configuration
The configuration file is published to config/laratickets.php:
Department eligibility (since 1.2.0)
Tickets cannot be filed into — or moved into — a department flagged
active = false. TicketService::createTicket() throws
InactiveDepartmentException, and StoreTicketRequest / UpdateTicketRequest
fail validation on department_id.
Before 1.2.0 every write path accepted a retired department. If a flow of yours relies on that, switch enforcement off:
Two things worth knowing:
- If you published
config/laratickets.phpbefore 1.2.0, yourdepartmentsblock replaces the package's (mergeConfigFrom()is a shallowarray_merge), so the new key is absent for you. It is read asconfig('laratickets.departments.enforce_active', true), so the safe default still applies — but to turn enforcement off you must add the key to your own file by hand. - Update is narrower than create. A ticket already sitting in a department that was later retired stays editable; only a new assignment to a retired department is rejected.
Writes that bypass the package — $ticket->update([...]) in raw Eloquent, or a
mass update by query — are outside this guard by design.
Basic Usage
Creating a Ticket
Requesting Escalation
Assessing Risk
Evaluating a Ticket
API Usage
All API endpoints require Laravel Sanctum authentication.
Base URL: /api/v1/laratickets
Examples
Create Ticket:
List Tickets:
Request Escalation:
See API Documentation for complete endpoint reference.
Authorization
Laratickets uses a contract-based authorization system. The default implementation provides basic authorization, but you can easily integrate with any permission package (Bouncer, Spatie Permission, etc.).
Custom Authorization Handler
Update config:
Events
Laratickets dispatches 11 events that you can listen to:
TicketCreatedTicketAssignedTicketStatusChangedTicketClosedEscalationRequestedEscalationApprovedEscalationRejectedTicketEvaluatedAgentRatedRiskAssessedSLABreached
Example Listener
Testing
Code Style
Changelog
Please see CHANGELOG for more information on what has changed recently.
Contributing
Please see CONTRIBUTING for details.
Security Vulnerabilities
Please review our security policy on how to report security vulnerabilities.
Credits
- Abdelkarim Mateos Sanchez
- All Contributors
License
This project is licensed under the GNU Affero General Public License v3.0 (AGPL-3.0-or-later). See LICENSE.md for details.
Contributor License Agreement
Contributors must agree to our Contributor License Agreement (CLA) before their contributions can be accepted. This helps ensure the project remains free and open source.
All versions of laratickets with dependencies
illuminate/contracts Version ^12.0||^13.0
ramsey/uuid Version ^4.7
spatie/laravel-package-tools Version ^1.17