MENU navbar-image

Introduction

This documentation aims to provide all the information you need to work with our API.

<aside>As you scroll, you'll see code examples for working with the API in different programming languages in the dark area to the right (or as part of the content on mobile).
You can switch the language used with the tabs at the top right (or from the nav menu at the top left on mobile).</aside>

Authenticating requests

This API is not authenticated.

Endpoints

POST api/v1/auth/login

Example request:
curl --request POST \
    "http://localhost:8000/api/v1/auth/login" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"email\": \"gbailey@example.net\",
    \"password\": \"|]|{+-\"
}"
const url = new URL(
    "http://localhost:8000/api/v1/auth/login"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "email": "gbailey@example.net",
    "password": "|]|{+-"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/v1/auth/login

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

email   string     

Must be a valid email address. Example: gbailey@example.net

password   string     

Example: |]|{+-

GET api/v1/track/{token}

Example request:
curl --request GET \
    --get "http://localhost:8000/api/v1/track/architecto" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://localhost:8000/api/v1/track/architecto"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (404):

Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 60
x-ratelimit-remaining: 59
access-control-allow-origin: *
 

{
    "message": "No query results for model [App\\Models\\OrderQrToken]."
}
 

Request      

GET api/v1/track/{token}

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

token   string     

Example: architecto

GET api/v1/auth/me

Example request:
curl --request GET \
    --get "http://localhost:8000/api/v1/auth/me" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://localhost:8000/api/v1/auth/me"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "message": "Unauthenticated."
}
 

Request      

GET api/v1/auth/me

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

POST api/v1/auth/refresh

Example request:
curl --request POST \
    "http://localhost:8000/api/v1/auth/refresh" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://localhost:8000/api/v1/auth/refresh"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/v1/auth/refresh

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

POST api/v1/auth/logout

Example request:
curl --request POST \
    "http://localhost:8000/api/v1/auth/logout" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://localhost:8000/api/v1/auth/logout"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/v1/auth/logout

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

GET api/v1/dashboard/mobile

Example request:
curl --request GET \
    --get "http://localhost:8000/api/v1/dashboard/mobile" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://localhost:8000/api/v1/dashboard/mobile"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "message": "Unauthenticated."
}
 

Request      

GET api/v1/dashboard/mobile

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

POST api/v1/orders/calculate-price

Example request:
curl --request POST \
    "http://localhost:8000/api/v1/orders/calculate-price" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"service_type\": \"express\",
    \"weight_kg\": 27,
    \"priority\": \"express\"
}"
const url = new URL(
    "http://localhost:8000/api/v1/orders/calculate-price"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "service_type": "express",
    "weight_kg": 27,
    "priority": "express"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/v1/orders/calculate-price

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

service_type   string     

Example: express

Must be one of:
  • wash
  • dry
  • wash_dry
  • fold
  • iron
  • express
  • custom
weight_kg   number     

Must be at least 0.1. Example: 27

priority   string  optional    

Example: express

Must be one of:
  • normal
  • express
  • priority

GET api/v1/orders/qr/{token}

Example request:
curl --request GET \
    --get "http://localhost:8000/api/v1/orders/qr/architecto" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://localhost:8000/api/v1/orders/qr/architecto"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "message": "Unauthenticated."
}
 

Request      

GET api/v1/orders/qr/{token}

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

token   string     

Example: architecto

PATCH api/v1/orders/{id}/stage

Example request:
curl --request PATCH \
    "http://localhost:8000/api/v1/orders/architecto/stage" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"stage\": \"released\",
    \"notes\": \"architecto\"
}"
const url = new URL(
    "http://localhost:8000/api/v1/orders/architecto/stage"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "stage": "released",
    "notes": "architecto"
};

fetch(url, {
    method: "PATCH",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

PATCH api/v1/orders/{id}/stage

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   string     

The ID of the order. Example: architecto

Body Parameters

stage   string     

Example: released

Must be one of:
  • received
  • queued
  • washing
  • drying
  • ironing
  • folding
  • packing
  • ready_for_pickup
  • released
notes   string  optional    

Example: architecto

GET api/v1/orders

Example request:
curl --request GET \
    --get "http://localhost:8000/api/v1/orders" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://localhost:8000/api/v1/orders"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "message": "Unauthenticated."
}
 

Request      

GET api/v1/orders

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

POST api/v1/orders

Example request:
curl --request POST \
    "http://localhost:8000/api/v1/orders" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"customer_id\": \"6ff8f7f6-1eb3-3525-be4a-3932c805afed\",
    \"branch_id\": \"6b72fe4a-5b40-307c-bc24-f79acf9a1bb9\",
    \"weight_kg\": 77,
    \"service_type\": \"wash\",
    \"custom_service_name\": \"i\",
    \"payment_status\": \"partial\",
    \"payment_method\": \"card\",
    \"fulfillment_type\": \"delivery\",
    \"priority\": \"priority\",
    \"skip_ironing\": true,
    \"total_amount\": 76,
    \"paid_amount\": 60,
    \"estimated_finish_at\": \"2026-07-01T05:48:40\",
    \"notes\": \"architecto\"
}"
const url = new URL(
    "http://localhost:8000/api/v1/orders"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "customer_id": "6ff8f7f6-1eb3-3525-be4a-3932c805afed",
    "branch_id": "6b72fe4a-5b40-307c-bc24-f79acf9a1bb9",
    "weight_kg": 77,
    "service_type": "wash",
    "custom_service_name": "i",
    "payment_status": "partial",
    "payment_method": "card",
    "fulfillment_type": "delivery",
    "priority": "priority",
    "skip_ironing": true,
    "total_amount": 76,
    "paid_amount": 60,
    "estimated_finish_at": "2026-07-01T05:48:40",
    "notes": "architecto"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/v1/orders

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

customer_id   string     

Must be a valid UUID. Must match an existing stored value. Example: 6ff8f7f6-1eb3-3525-be4a-3932c805afed

branch_id   string  optional    

Must be a valid UUID. Must match an existing stored value. Example: 6b72fe4a-5b40-307c-bc24-f79acf9a1bb9

weight_kg   number     

Must be at least 0.1. Example: 77

service_type   string     

Example: wash

Must be one of:
  • wash
  • dry
  • wash_dry
  • fold
  • iron
  • express
  • custom
custom_service_name   string  optional    

This field is required when service_type is custom. Must not be greater than 255 characters. Example: i

payment_status   string  optional    

Example: partial

Must be one of:
  • unpaid
  • partial
  • paid
  • refunded
payment_method   string  optional    

Example: card

Must be one of:
  • cash
  • card
  • gcash
  • bank_transfer
  • credit
fulfillment_type   string  optional    

Example: delivery

Must be one of:
  • pickup
  • delivery
priority   string  optional    

Example: priority

Must be one of:
  • normal
  • express
  • priority
skip_ironing   boolean  optional    

Example: true

total_amount   number  optional    

Must be at least 0. Example: 76

paid_amount   number  optional    

Must be at least 0. Example: 60

estimated_finish_at   string  optional    

Must be a valid date. Example: 2026-07-01T05:48:40

notes   string  optional    

Example: architecto

GET api/v1/orders/{id}

Example request:
curl --request GET \
    --get "http://localhost:8000/api/v1/orders/architecto" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://localhost:8000/api/v1/orders/architecto"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "message": "Unauthenticated."
}
 

Request      

GET api/v1/orders/{id}

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   string     

The ID of the order. Example: architecto

GET api/v1/customers/{customer}/orders

Example request:
curl --request GET \
    --get "http://localhost:8000/api/v1/customers/architecto/orders" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://localhost:8000/api/v1/customers/architecto/orders"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "message": "Unauthenticated."
}
 

Request      

GET api/v1/customers/{customer}/orders

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

customer   string     

The customer. Example: architecto

GET api/v1/customers

Example request:
curl --request GET \
    --get "http://localhost:8000/api/v1/customers" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://localhost:8000/api/v1/customers"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "message": "Unauthenticated."
}
 

Request      

GET api/v1/customers

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

POST api/v1/customers

Example request:
curl --request POST \
    "http://localhost:8000/api/v1/customers" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://localhost:8000/api/v1/customers"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/v1/customers

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

GET api/v1/customers/{id}

Example request:
curl --request GET \
    --get "http://localhost:8000/api/v1/customers/architecto" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://localhost:8000/api/v1/customers/architecto"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "message": "Unauthenticated."
}
 

Request      

GET api/v1/customers/{id}

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   string     

The ID of the customer. Example: architecto

PUT api/v1/customers/{id}

Example request:
curl --request PUT \
    "http://localhost:8000/api/v1/customers/architecto" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://localhost:8000/api/v1/customers/architecto"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "PUT",
    headers,
}).then(response => response.json());

Request      

PUT api/v1/customers/{id}

PATCH api/v1/customers/{id}

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   string     

The ID of the customer. Example: architecto

DELETE api/v1/customers/{id}

Example request:
curl --request DELETE \
    "http://localhost:8000/api/v1/customers/architecto" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://localhost:8000/api/v1/customers/architecto"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Request      

DELETE api/v1/customers/{id}

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   string     

The ID of the customer. Example: architecto

GET api/v1/branches

Example request:
curl --request GET \
    --get "http://localhost:8000/api/v1/branches" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://localhost:8000/api/v1/branches"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "message": "Unauthenticated."
}
 

Request      

GET api/v1/branches

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

POST api/v1/branches

Example request:
curl --request POST \
    "http://localhost:8000/api/v1/branches" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"name\": \"b\",
    \"code\": \"ngzmiyvdljnikhwa\",
    \"timezone\": \"Australia\\/Lord_Howe\",
    \"address\": \"architecto\",
    \"phone\": \"n\"
}"
const url = new URL(
    "http://localhost:8000/api/v1/branches"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "name": "b",
    "code": "ngzmiyvdljnikhwa",
    "timezone": "Australia\/Lord_Howe",
    "address": "architecto",
    "phone": "n"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/v1/branches

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

name   string     

Must not be greater than 255 characters. Example: b

code   string     

Must not be greater than 20 characters. Example: ngzmiyvdljnikhwa

timezone   string  optional    

Must not be greater than 64 characters. Example: Australia/Lord_Howe

address   string  optional    

Example: architecto

phone   string  optional    

Must not be greater than 30 characters. Example: n

GET api/v1/branches/{id}

Example request:
curl --request GET \
    --get "http://localhost:8000/api/v1/branches/architecto" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://localhost:8000/api/v1/branches/architecto"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "message": "Unauthenticated."
}
 

Request      

GET api/v1/branches/{id}

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   string     

The ID of the branch. Example: architecto

PUT api/v1/branches/{id}

Example request:
curl --request PUT \
    "http://localhost:8000/api/v1/branches/architecto" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"name\": \"b\",
    \"code\": \"ngzmiyvdljnikhwa\",
    \"timezone\": \"Australia\\/Lord_Howe\",
    \"address\": \"architecto\",
    \"phone\": \"n\",
    \"is_active\": true
}"
const url = new URL(
    "http://localhost:8000/api/v1/branches/architecto"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "name": "b",
    "code": "ngzmiyvdljnikhwa",
    "timezone": "Australia\/Lord_Howe",
    "address": "architecto",
    "phone": "n",
    "is_active": true
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

PUT api/v1/branches/{id}

PATCH api/v1/branches/{id}

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   string     

The ID of the branch. Example: architecto

Body Parameters

name   string  optional    

Must not be greater than 255 characters. Example: b

code   string  optional    

Must not be greater than 20 characters. Example: ngzmiyvdljnikhwa

timezone   string  optional    

Must not be greater than 64 characters. Example: Australia/Lord_Howe

address   string  optional    

Example: architecto

phone   string  optional    

Must not be greater than 30 characters. Example: n

is_active   boolean  optional    

Example: true