openapi: 3.0.3
info:
title: 'WashFlow API Documentation'
description: ''
version: 1.0.0
servers:
-
url: 'http://localhost:8000'
tags:
-
name: Endpoints
description: ''
paths:
/api/v1/auth/login:
post:
summary: ''
operationId: postApiV1AuthLogin
description: ''
parameters: []
responses: { }
tags:
- Endpoints
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
email:
type: string
description: 'Must be a valid email address.'
example: gbailey@example.net
password:
type: string
description: ''
example: '|]|{+-'
required:
- email
- password
security: []
'/api/v1/track/{token}':
get:
summary: ''
operationId: getApiV1TrackToken
description: ''
parameters: []
responses:
404:
description: ''
content:
application/json:
schema:
type: object
example:
message: 'No query results for model [App\Models\OrderQrToken].'
properties:
message:
type: string
example: 'No query results for model [App\Models\OrderQrToken].'
tags:
- Endpoints
security: []
parameters:
-
in: path
name: token
description: ''
example: architecto
required: true
schema:
type: string
/api/v1/auth/me:
get:
summary: ''
operationId: getApiV1AuthMe
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: Unauthenticated.
properties:
message:
type: string
example: Unauthenticated.
tags:
- Endpoints
security: []
/api/v1/auth/refresh:
post:
summary: ''
operationId: postApiV1AuthRefresh
description: ''
parameters: []
responses: { }
tags:
- Endpoints
security: []
/api/v1/auth/logout:
post:
summary: ''
operationId: postApiV1AuthLogout
description: ''
parameters: []
responses: { }
tags:
- Endpoints
security: []
/api/v1/dashboard/mobile:
get:
summary: ''
operationId: getApiV1DashboardMobile
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: Unauthenticated.
properties:
message:
type: string
example: Unauthenticated.
tags:
- Endpoints
security: []
/api/v1/orders/calculate-price:
post:
summary: ''
operationId: postApiV1OrdersCalculatePrice
description: ''
parameters: []
responses: { }
tags:
- Endpoints
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
service_type:
type: string
description: ''
example: express
enum:
- wash
- dry
- wash_dry
- fold
- iron
- express
- custom
weight_kg:
type: number
description: 'Must be at least 0.1.'
example: 27
priority:
type: string
description: ''
example: express
enum:
- normal
- express
- priority
nullable: true
required:
- service_type
- weight_kg
security: []
'/api/v1/orders/qr/{token}':
get:
summary: ''
operationId: getApiV1OrdersQrToken
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: Unauthenticated.
properties:
message:
type: string
example: Unauthenticated.
tags:
- Endpoints
security: []
parameters:
-
in: path
name: token
description: ''
example: architecto
required: true
schema:
type: string
'/api/v1/orders/{id}/stage':
patch:
summary: ''
operationId: patchApiV1OrdersIdStage
description: ''
parameters: []
responses: { }
tags:
- Endpoints
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
stage:
type: string
description: ''
example: released
enum:
- received
- queued
- washing
- drying
- ironing
- folding
- packing
- ready_for_pickup
- released
notes:
type: string
description: ''
example: architecto
nullable: true
required:
- stage
security: []
parameters:
-
in: path
name: id
description: 'The ID of the order.'
example: architecto
required: true
schema:
type: string
/api/v1/orders:
get:
summary: ''
operationId: getApiV1Orders
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: Unauthenticated.
properties:
message:
type: string
example: Unauthenticated.
tags:
- Endpoints
security: []
post:
summary: ''
operationId: postApiV1Orders
description: ''
parameters: []
responses: { }
tags:
- Endpoints
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
customer_id:
type: string
description: 'Must be a valid UUID. Must match an existing stored value.'
example: 6ff8f7f6-1eb3-3525-be4a-3932c805afed
branch_id:
type: string
description: 'Must be a valid UUID. Must match an existing stored value.'
example: 6b72fe4a-5b40-307c-bc24-f79acf9a1bb9
nullable: true
weight_kg:
type: number
description: 'Must be at least 0.1.'
example: 77
service_type:
type: string
description: ''
example: wash
enum:
- wash
- dry
- wash_dry
- fold
- iron
- express
- custom
custom_service_name:
type: string
description: 'This field is required when service_type is custom. Must not be greater than 255 characters.'
example: i
nullable: true
payment_status:
type: string
description: ''
example: partial
enum:
- unpaid
- partial
- paid
- refunded
nullable: true
payment_method:
type: string
description: ''
example: card
enum:
- cash
- card
- gcash
- bank_transfer
- credit
nullable: true
fulfillment_type:
type: string
description: ''
example: delivery
enum:
- pickup
- delivery
nullable: true
priority:
type: string
description: ''
example: priority
enum:
- normal
- express
- priority
nullable: true
skip_ironing:
type: boolean
description: ''
example: true
total_amount:
type: number
description: 'Must be at least 0.'
example: 76
nullable: true
paid_amount:
type: number
description: 'Must be at least 0.'
example: 60
nullable: true
estimated_finish_at:
type: string
description: 'Must be a valid date.'
example: '2026-07-01T05:48:40'
nullable: true
notes:
type: string
description: ''
example: architecto
nullable: true
required:
- customer_id
- weight_kg
- service_type
security: []
'/api/v1/orders/{id}':
get:
summary: ''
operationId: getApiV1OrdersId
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: Unauthenticated.
properties:
message:
type: string
example: Unauthenticated.
tags:
- Endpoints
security: []
parameters:
-
in: path
name: id
description: 'The ID of the order.'
example: architecto
required: true
schema:
type: string
'/api/v1/customers/{customer}/orders':
get:
summary: ''
operationId: getApiV1CustomersCustomerOrders
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: Unauthenticated.
properties:
message:
type: string
example: Unauthenticated.
tags:
- Endpoints
security: []
parameters:
-
in: path
name: customer
description: 'The customer.'
example: architecto
required: true
schema:
type: string
/api/v1/customers:
get:
summary: ''
operationId: getApiV1Customers
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: Unauthenticated.
properties:
message:
type: string
example: Unauthenticated.
tags:
- Endpoints
security: []
post:
summary: ''
operationId: postApiV1Customers
description: ''
parameters: []
responses: { }
tags:
- Endpoints
security: []
'/api/v1/customers/{id}':
get:
summary: ''
operationId: getApiV1CustomersId
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: Unauthenticated.
properties:
message:
type: string
example: Unauthenticated.
tags:
- Endpoints
security: []
put:
summary: ''
operationId: putApiV1CustomersId
description: ''
parameters: []
responses: { }
tags:
- Endpoints
security: []
delete:
summary: ''
operationId: deleteApiV1CustomersId
description: ''
parameters: []
responses: { }
tags:
- Endpoints
security: []
parameters:
-
in: path
name: id
description: 'The ID of the customer.'
example: architecto
required: true
schema:
type: string
/api/v1/branches:
get:
summary: ''
operationId: getApiV1Branches
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: Unauthenticated.
properties:
message:
type: string
example: Unauthenticated.
tags:
- Endpoints
security: []
post:
summary: ''
operationId: postApiV1Branches
description: ''
parameters: []
responses: { }
tags:
- Endpoints
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
name:
type: string
description: 'Must not be greater than 255 characters.'
example: b
code:
type: string
description: 'Must not be greater than 20 characters.'
example: ngzmiyvdljnikhwa
timezone:
type: string
description: 'Must not be greater than 64 characters.'
example: Australia/Lord_Howe
nullable: true
address:
type: string
description: ''
example: architecto
nullable: true
phone:
type: string
description: 'Must not be greater than 30 characters.'
example: 'n'
nullable: true
required:
- name
- code
security: []
'/api/v1/branches/{id}':
get:
summary: ''
operationId: getApiV1BranchesId
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: Unauthenticated.
properties:
message:
type: string
example: Unauthenticated.
tags:
- Endpoints
security: []
put:
summary: ''
operationId: putApiV1BranchesId
description: ''
parameters: []
responses: { }
tags:
- Endpoints
requestBody:
required: false
content:
application/json:
schema:
type: object
properties:
name:
type: string
description: 'Must not be greater than 255 characters.'
example: b
code:
type: string
description: 'Must not be greater than 20 characters.'
example: ngzmiyvdljnikhwa
timezone:
type: string
description: 'Must not be greater than 64 characters.'
example: Australia/Lord_Howe
nullable: true
address:
type: string
description: ''
example: architecto
nullable: true
phone:
type: string
description: 'Must not be greater than 30 characters.'
example: 'n'
nullable: true
is_active:
type: boolean
description: ''
example: true
security: []
parameters:
-
in: path
name: id
description: 'The ID of the branch.'
example: architecto
required: true
schema:
type: string