VIA Platform API Reference
Version: 1.0.0 Total Endpoints: 25 Base URL: https://via.handymanny.cloud/api
Authentication and management API for VIA Logistics Platform
Authentication
Method: JWT Bearer Token
Header:
Authorization: Bearer <token>Get Token:
POST /api/auth/login
{
"email": "user@example.com",
"password": "password"
}Endpoints
/
GET Health
Root
Responses:
- 200: Successful Response
/api/auth/login
POST Authentication
Authenticate user and get tokens
Request Body:
Model: LoginRequest
Responses:
- 200: Successful Response
- 401: Unauthorized
- 403: Forbidden
- 422: Validation Error
/api/auth/logout
POST Authentication
Logout and revoke refresh token
Request Body:
Model: LogoutRequest
Responses:
- 200: Successful Response
- 401: Unauthorized
- 422: Validation Error
/api/auth/me
GET Authentication
Get current authenticated user
Responses:
- 200: Successful Response
- 401: Unauthorized
/api/auth/refresh
POST Authentication
Refresh access token
Request Body:
Model: RefreshTokenRequest
Responses:
- 200: Successful Response
- 401: Unauthorized
- 422: Validation Error
/api/auth/register
POST Authentication
Register a new user (admin only)
Request Body:
Model: RegisterRequest
Responses:
- 200: Successful Response
- 403: Forbidden
- 409: Conflict
- 422: Validation Error
/api/auth/reset-password
POST Authentication
Reset password with token
Request Body:
Model: PasswordResetConfirm
Responses:
- 200: Successful Response
- 400: Bad Request
- 422: Validation Error
/api/auth/reset-password-request
POST Authentication
Request a password reset token
Request Body:
Model: PasswordResetRequest
Responses:
- 200: Successful Response
- 422: Validation Error
/api/auth/verify
GET Authentication
Verify JWT token (for nginx auth_request)
Responses:
- 200: Successful Response
/api/companies
GET Companies
List Companies
Parameters:
limit(query, integer) (optional)offset(query, integer) (optional)status(query, string) (optional)search(query, string) (optional)sort(query, string) (optional)order(query, string) (optional)
Responses:
- 200: Successful Response
- 422: Validation Error
POST Companies
Create Company
Request Body:
Model: CompanyCreate
Responses:
- 201: Successful Response
- 422: Validation Error
/api/companies/{company_id}
DELETE Companies
Delete Company
Parameters:
company_id(path, string) (required)
Responses:
- 200: Successful Response
- 422: Validation Error
GET Companies
Get Company
Parameters:
company_id(path, string) (required)
Responses:
- 200: Successful Response
- 422: Validation Error
PATCH Companies
Update Company
Parameters:
company_id(path, string) (required)
Request Body:
Model: CompanyUpdate
Responses:
- 200: Successful Response
- 422: Validation Error
/api/convoys
GET convoys
List Convoys
Parameters:
status(query, string) (optional)destination_patio_id(query, string) (optional)limit(query, integer) (optional)offset(query, integer) (optional)
Responses:
- 200: Successful Response
- 422: Validation Error
/api/convoys/form
POST convoys
Form Convoys Endpoint
Request Body:
Model: ConvoyFormRequest
Responses:
- 200: Successful Response
- 422: Validation Error
/api/convoys/{convoy_id}
DELETE convoys
Cancel Convoy
Parameters:
convoy_id(path, integer) (required)
Responses:
- 200: Successful Response
- 422: Validation Error
GET convoys
Get Convoy
Parameters:
convoy_id(path, integer) (required)
Responses:
- 200: Successful Response
- 422: Validation Error
PATCH convoys
Update Convoy
Parameters:
convoy_id(path, integer) (required)
Request Body:
Model: ConvoyUpdateRequest
Responses:
- 200: Successful Response
- 422: Validation Error
/api/drivers
GET Drivers
List Drivers
Parameters:
limit(query, integer) (optional)offset(query, integer) (optional)company_id(query, string) (optional)status(query, string) (optional)search(query, string) (optional)sort(query, string) (optional)order(query, string) (optional)
Responses:
- 200: Successful Response
- 422: Validation Error
POST Drivers
Create Driver
Request Body:
Model: DriverCreate
Responses:
- 201: Successful Response
- 422: Validation Error
/api/drivers/{driver_id}
DELETE Drivers
Delete Driver
Parameters:
driver_id(path, string) (required)
Responses:
- 200: Successful Response
- 422: Validation Error
GET Drivers
Get Driver
Parameters:
driver_id(path, string) (required)
Responses:
- 200: Successful Response
- 422: Validation Error
PATCH Drivers
Update Driver
Parameters:
driver_id(path, string) (required)
Request Body:
Model: DriverUpdate
Responses:
- 200: Successful Response
- 422: Validation Error
/api/health
GET Health
API health check
Responses:
- 200: Successful Response
/api/patios
GET Patios
List Patios
Parameters:
limit(query, integer) (optional)offset(query, integer) (optional)zone(query, string) (optional)status(query, string) (optional)search(query, string) (optional)sort(query, string) (optional)order(query, string) (optional)
Responses:
- 200: Successful Response
- 422: Validation Error
POST Patios
Create Patio
Request Body:
Model: PatioCreate
Responses:
- 201: Successful Response
- 422: Validation Error
/api/patios/{patio_id}
DELETE Patios
Delete Patio
Parameters:
patio_id(path, string) (required)
Responses:
- 200: Successful Response
- 422: Validation Error
GET Patios
Get Patio
Parameters:
patio_id(path, string) (required)
Responses:
- 200: Successful Response
- 422: Validation Error
PATCH Patios
Update Patio
Parameters:
patio_id(path, string) (required)
Request Body:
Model: PatioUpdate
Responses:
- 200: Successful Response
- 422: Validation Error
/api/terminals
GET Terminals
List Terminals
Parameters:
limit(query, integer) (optional)offset(query, integer) (optional)port(query, string) (optional)status(query, string) (optional)search(query, string) (optional)sort(query, string) (optional)order(query, string) (optional)
Responses:
- 200: Successful Response
- 422: Validation Error
POST Terminals
Create Terminal
Request Body:
Model: TerminalCreate
Responses:
- 201: Successful Response
- 422: Validation Error
/api/terminals/{terminal_id}
DELETE Terminals
Delete Terminal
Parameters:
terminal_id(path, string) (required)
Responses:
- 200: Successful Response
- 422: Validation Error
GET Terminals
Get Terminal
Parameters:
terminal_id(path, string) (required)
Responses:
- 200: Successful Response
- 422: Validation Error
PATCH Terminals
Update Terminal
Parameters:
terminal_id(path, string) (required)
Request Body:
Model: TerminalUpdate
Responses:
- 200: Successful Response
- 422: Validation Error
/api/trucks
GET Trucks
List Trucks
Parameters:
limit(query, integer) (optional)offset(query, integer) (optional)company_id(query, string) (optional)status(query, string) (optional)truck_type(query, string) (optional)sort(query, string) (optional)order(query, string) (optional)
Responses:
- 200: Successful Response
- 422: Validation Error
POST Trucks
Create Truck
Request Body:
Model: TruckCreate
Responses:
- 201: Successful Response
- 422: Validation Error
/api/trucks/{truck_id}
DELETE Trucks
Delete Truck
Parameters:
truck_id(path, string) (required)
Responses:
- 200: Successful Response
- 422: Validation Error
GET Trucks
Get Truck
Parameters:
truck_id(path, string) (required)
Responses:
- 200: Successful Response
- 422: Validation Error
PATCH Trucks
Update Truck
Parameters:
truck_id(path, string) (required)
Request Body:
Model: TruckUpdate
Responses:
- 200: Successful Response
- 422: Validation Error
/api/users
GET Users
List Users
Parameters:
limit(query, integer) (optional)offset(query, integer) (optional)role(query, string) (optional)status(query, string) (optional)search(query, string) (optional)sort(query, string) (optional)order(query, string) (optional)
Responses:
- 200: Successful Response
- 422: Validation Error
/api/users/{user_id}
DELETE Users
Delete User
Parameters:
user_id(path, string) (required)
Responses:
- 200: Successful Response
- 422: Validation Error
GET Users
Get User
Parameters:
user_id(path, string) (required)
Responses:
- 200: Successful Response
- 422: Validation Error
PATCH Users
Update User
Parameters:
user_id(path, string) (required)
Request Body:
Model: UserUpdate
Responses:
- 200: Successful Response
- 422: Validation Error
Data Models
CompanyCreate
| Field | Type | Description |
|---|---|---|
name | string | |
rfc | any | |
contact_email | any | |
contact_phone | any | |
address | any | |
city | any | |
state | any | |
country | any |
CompanyResponse
| Field | Type | Description |
|---|---|---|
company_id | string | |
name | string | |
rfc | any | |
status | string | |
contact_email | any | |
contact_phone | any | |
address | any | |
city | any | |
state | any | |
country | any | |
fleet_size | any | |
total_violations | any | |
compliance_score | any | |
created_at | string | |
updated_at | string |
CompanyUpdate
| Field | Type | Description |
|---|---|---|
name | any | |
rfc | any | |
contact_email | any | |
contact_phone | any | |
address | any | |
city | any | |
state | any | |
status | any |
ConvoyCancelResponse
| Field | Type | Description |
|---|---|---|
success | boolean | |
message | string | |
trucks_released | integer |
ConvoyDetailResponse
| Field | Type | Description |
|---|---|---|
convoy_id | integer | |
convoy_code | string | |
destination_patio | any | |
leader_truck | any | |
trucks | array | |
status | string | |
truck_count | integer | |
container_count | integer | |
departure_time | any | |
eta | any | |
distance_km | any | |
max_speed_kmh | any | |
travel_time_min | any | |
loading_time_min | any | |
total_time_min | any | |
current_speed_kmh | any | |
throttle_active | boolean | |
notes | any | |
created_at | any | |
updated_at | any |
ConvoyFormRequest
| Field | Type | Description |
|---|---|---|
terminal_id | any | |
sequence_id | any | |
auto_assign | boolean | |
departure_time | any | |
traffic_factor | number | |
weather_factor | number |
ConvoyFormResponse
| Field | Type | Description |
|---|---|---|
success | boolean | |
convoys_formed | integer | |
convoys | array | |
skipped_units | integer | |
message | any |
ConvoyFormResultItem
| Field | Type | Description |
|---|---|---|
convoy_id | integer | |
convoy_code | string | |
destination_patio_id | integer | |
destination_patio_name | any | |
truck_count | integer | |
container_count | integer | |
departure_time | any | |
eta | any | |
distance_km | any | |
max_speed_kmh | any | |
status | string |
ConvoyListItem
| Field | Type | Description |
|---|---|---|
convoy_id | integer | |
convoy_code | string | |
destination_patio | any | |
truck_count | integer | |
container_count | integer | |
departure_time | any | |
eta | any | |
distance_km | any | |
max_speed_kmh | any | |
status | string | |
current_location | any | |
created_at | any |
ConvoyListResponse
| Field | Type | Description |
|---|---|---|
total | integer | |
convoys | array |
ConvoyTruckResponse
| Field | Type | Description |
|---|---|---|
truck_id | integer | |
plate | string | |
unit_number | any | |
position | integer | |
is_leader | boolean | |
driver | any | |
containers | array | |
truck_type | any |
ConvoyUpdateRequest
| Field | Type | Description |
|---|---|---|
max_speed_kmh | any | |
destination_patio_id | any | |
eta | any | |
status | any | |
departure_time | any | |
notes | any |
ConvoyUpdateResponse
| Field | Type | Description |
|---|---|---|
success | boolean | |
convoy | any |
DeleteResponse
| Field | Type | Description |
|---|---|---|
success | boolean | |
message | string |
DriverCreate
| Field | Type | Description |
|---|---|---|
company_id | string | |
name | string | |
license_number | string | |
phone | any | |
email | any |
DriverUpdate
| Field | Type | Description |
|---|---|---|
name | any | |
license_number | any | |
phone | any | |
email | any | |
status | any | |
total_trips | any | |
total_violations | any | |
safety_score | any | |
speed_violations | any |
ErrorResponse
| Field | Type | Description |
|---|---|---|
detail | string |
HTTPValidationError
| Field | Type | Description |
|---|---|---|
detail | array |
HealthResponse
| Field | Type | Description |
|---|---|---|
status | string | |
version | string | |
database | string |
ListResponse
| Field | Type | Description |
|---|---|---|
total | integer | |
limit | integer | |
offset | integer | |
data | array |
LoginRequest
| Field | Type | Description |
|---|---|---|
email | string | |
password | string |
LoginResponse
| Field | Type | Description |
|---|---|---|
access_token | string | |
refresh_token | string | |
token_type | string | |
user | any |
LogoutRequest
| Field | Type | Description |
|---|---|---|
refresh_token | string |
LogoutResponse
| Field | Type | Description |
|---|---|---|
success | boolean | |
message | string |
PasswordResetConfirm
| Field | Type | Description |
|---|---|---|
reset_token | string | |
new_password | string |
PasswordResetConfirmResponse
| Field | Type | Description |
|---|---|---|
success | boolean | |
message | string |
PasswordResetRequest
| Field | Type | Description |
|---|---|---|
email | string |
PasswordResetRequestResponse
| Field | Type | Description |
|---|---|---|
reset_token | string | |
message | string | |
expires_in_minutes | integer |
PatioCreate
| Field | Type | Description |
|---|---|---|
name | string | |
zone | any | |
location | any | |
city | any | |
country | any | |
contact_email | any | |
contact_phone | any | |
total_capacity | any | |
available_capacity | any |
PatioUpdate
| Field | Type | Description |
|---|---|---|
name | any | |
zone | any | |
location | any | |
city | any | |
contact_email | any | |
contact_phone | any | |
total_capacity | any | |
available_capacity | any | |
status | any |
RefreshResponse
| Field | Type | Description |
|---|---|---|
access_token | string | |
token_type | string |
RefreshTokenRequest
| Field | Type | Description |
|---|---|---|
refresh_token | string |
RegisterRequest
| Field | Type | Description |
|---|---|---|
email | string | |
password | string | |
name | string | |
role | string | |
company_id | any |
RegisterResponse
| Field | Type | Description |
|---|---|---|
user | any | |
message | string |
SuccessResponse
| Field | Type | Description |
|---|---|---|
success | boolean | |
data | any | |
message | any |
TerminalCreate
| Field | Type | Description |
|---|---|---|
name | string | |
port | any | |
location | any | |
city | any | |
country | any | |
contact_email | any | |
contact_phone | any | |
operating_hours | any |
TerminalResponse
| Field | Type | Description |
|---|---|---|
terminal_id | string | |
name | string | |
port | any | |
status | string | |
location | any | |
city | any | |
country | any | |
contact_email | any | |
contact_phone | any | |
operating_hours | any | |
recent_sequences | any | |
created_at | string | |
updated_at | string |
TerminalUpdate
| Field | Type | Description |
|---|---|---|
name | any | |
port | any | |
location | any | |
city | any | |
contact_email | any | |
contact_phone | any | |
operating_hours | any | |
status | any |
TruckCreate
| Field | Type | Description |
|---|---|---|
company_id | string | |
registration | string | |
truck_type | string | |
brand | any | |
model | any | |
year | any | |
capacity_tons | any |
TruckResponse
| Field | Type | Description |
|---|---|---|
truck_id | string | |
company_id | string | |
registration | string | |
truck_type | string | |
status | string | |
brand | any | |
model | any | |
year | any | |
current_driver_id | any | |
current_location | any | |
capacity_tons | any | |
gps_status | any | |
created_at | string | |
updated_at | string |
TruckUpdate
| Field | Type | Description |
|---|---|---|
registration | any | |
truck_type | any | |
brand | any | |
model | any | |
year | any | |
current_driver_id | any | |
current_location | any | |
capacity_tons | any | |
gps_status | any | |
status | any |
UserResponse
| Field | Type | Description |
|---|---|---|
id | string | |
email | string | |
name | string | |
role | string | |
status | string | |
company_id | any | |
created_at | string |
UserUpdate
| Field | Type | Description |
|---|---|---|
name | any | |
role | any | |
company_id | any | |
status | any |
ValidationError
| Field | Type | Description |
|---|---|---|
loc | array | |
msg | string | |
type | string |
app__convoy_schemas__DriverResponse
| Field | Type | Description |
|---|---|---|
name | string | |
phone | any |
app__convoy_schemas__PatioResponse
| Field | Type | Description |
|---|---|---|
id | integer | |
code | string | |
name | string | |
lat | any | |
lng | any |
app__schemas__DriverResponse
| Field | Type | Description |
|---|---|---|
driver_id | string | |
company_id | string | |
name | string | |
license_number | string | |
status | string | |
phone | any | |
email | any | |
total_trips | any | |
total_violations | any | |
safety_score | any | |
speed_violations | any | |
created_at | string | |
updated_at | string |
app__schemas__PatioResponse
| Field | Type | Description |
|---|---|---|
patio_id | string | |
name | string | |
zone | any | |
status | string | |
location | any | |
city | any | |
country | any | |
contact_email | any | |
contact_phone | any | |
total_capacity | any | |
available_capacity | any | |
capacity_history | any | |
created_at | string | |
updated_at | string |
Last Updated: 2026-02-28 11:36:05 Auto-generated from OpenAPI specification