Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/OswalSnow/AR-Barber/llms.txt

Use this file to discover all available pages before exploring further.

All staff routes are protected by Laravel’s auth middleware. Requests without a valid authenticated session are redirected to /login with a 302 response. Authentication is handled by Laravel Breeze using a session cookie — there is no token-based auth on these routes.
Unauthenticated requests to any /staff/* or /dashboard route will receive a 302 Found redirect to /login. API clients must first authenticate via POST /login and include the resulting session cookie on subsequent requests.

GET /dashboard

Renders the main staff panel view. Fetches all users with role = 'barber' and passes them to the dashboard view. Middleware: auth, verified No parameters. Renders an HTML view.

GET /staff/availability

Returns the full slot grid for a barber on a given date, including both available and occupied slots. Unlike the public availability endpoint, this response shows every slot so staff can see the complete schedule at a glance. Middleware: auth
barber_id
integer
required
The ID of the barber whose schedule to retrieve.
date
string
required
The date to inspect, formatted as YYYY-MM-DD.
Response
slots
object[]
Array of slot objects covering the barber’s full workday.
{
  "slots": [
    { "time": "09:00", "available": false, "status": "occupied" },
    { "time": "09:30", "available": true,  "status": "available" },
    { "time": "10:00", "available": true,  "status": "available" }
  ]
}

GET /staff/appointments

Returns all appointments booked for a barber on a given date. Middleware: auth
date
string
default:"today"
The date to query, formatted as YYYY-MM-DD. Defaults to today’s date when omitted.
Response
[]
object[]
Array of Appointment objects.
[
  {
    "id": 42,
    "customer_name": "Carlos Méndez",
    "customer_phone": "5512345678",
    "servicio": "ambos",
    "starts_at": "2026-06-15T10:00:00",
    "ends_at": "2026-06-15T11:00:00",
    "status": "pending",
    "user_id": 3
  }
]

DELETE /staff/appointments/{id}

Cancels and removes an appointment by its ID. Middleware: auth
id
integer
required
The ID of the appointment to delete.
Returns a 200 response on success or a 404 if the appointment does not exist.

POST /staff/workdays/set

Opens or closes a specific calendar day for a barber and sets the working hours for that day. Middleware: auth
barber_id
integer
required
The ID of the barber whose schedule is being updated.
day
string
required
The date to configure, formatted as YYYY-MM-DD.
is_open
boolean
required
Set to true to mark the day as a working day, or false to close it. Closed days will return an empty array from the public availability endpoint.
start_time
string
required
The start of the working day in HH:MM format, e.g. "09:00".
end_time
string
required
The end of the working day in HH:MM format, e.g. "18:00".
When is_open is false, start_time and end_time must still be sent but their values are ignored. Send placeholder values such as "00:00" to satisfy validation.

POST /staff/portfolio

Uploads a new image to the barber’s portfolio gallery. The image appears on the public /servicios page. Middleware: auth
Route name: staff.portfolio.store
Send the request as multipart/form-data with the image file attached. Refer to PortfolioImageController@store for accepted MIME types and size limits.

DELETE /staff/portfolio/{id}

Removes a portfolio image by its ID. Middleware: auth
Route name: staff.portfolio.destroy
id
integer
required
The ID of the portfolio image to delete.
Returns a 200 on success or a 404 if the image does not exist.

Build docs developers (and LLMs) love