Waste Pilot · Developer Documentation

Multi-tenant operations API for dumpster rental companies

Understand the platform. Build with it. Integrate with it.

Technical guide to the ArcaneWaste Laravel backend—JWT-authenticated V1 API, order lifecycle, dispatch, Finix payments, fleet management, and event-driven side effects for company, customer, driver, and admin clients.

4 Actor types Company · Customer · Driver · Admin
V1 REST API /api/v1 + JWT Bearer
14+ Order statuses OrderService lifecycle
Finix Payments Cards · wallet · SaaS billing

How the system connects

Derived from the actual Laravel route tree, services, and integrations. Hover or focus a node to learn what it does—click to open documentation.

What runs on the platform

Waste Pilot connects four actor types through shared domain models. Companies operate as tenants; every query must scope by company_id explicitly.

How a request moves through the platform

From user action to JSON response—select a step to see inputs, outputs, and related docs.

01

User action

Customer or company user initiates an operation—place order, approve, dispatch, or pay.

Component
Client application
Inputs
Form payload, JWT token (if authenticated)
Outputs
HTTP request to /api/v1
Related documentation →
02

API request

Laravel routes the request through actor middleware—jwt.verify, checkType, ensure.company.user, and optional subscription gates.

Component
routes/api.php
Inputs
Method, URI, headers, body
Outputs
Validated request reaching controller
Related documentation →
03

Validation

FormRequest classes validate input. Billing routes require asset_specification_id; order mutations check company subscription where configured.

Component
FormRequest + middleware
Inputs
Raw request data
Outputs
Validated DTO or 422 error envelope
Related documentation →
04

Billing quote

BillingService::calculateBilling resolves pricing profile, taxes, promotion, and payment term upfront amount.

Component
BillingService
Inputs
asset_specification_id, dates, promotion_id
Outputs
Quote payload (needs_to_pay, grand_total, line breakdown)
Related documentation →
05

Business logic

OrderService persists order, pricing snapshot, payment term snapshot, line items, and status history—then dispatches domain events.

Component
OrderService
Inputs
Validated order data + billing result
Outputs
Order record, events for listeners
Related documentation →
06

Database

MySQL stores cents for money fields. Detail charges live in order_line_items; aggregates on the order row use MoneyCast.

Component
MySQL + Eloquent
Inputs
Service-layer writes
Outputs
Committed transaction state
Related documentation →
07

Response

Controllers return sendSuccessResponse JSON. Events trigger async side effects—FCM, wallet, notifications.

Component
Controller + EventServiceProvider
Inputs
Service result
Outputs
{ success, message, data } to client
Related documentation →

Explore the platform

Your integration journey

Developer resources