Download OpenAPI specification:
Preview of the Ready App driver-passport document-sharing surface for the TruckX integration.
Consent model. Passport data is driver-owned. Each document carries a driver-controlled shareability flag; only documents the driver has marked shareable are visible to partners. A per-partner consent-grant model (grant/revoke/audit) ships with partner credentials.
Endpoints shown authenticate with bearer tokens (driver-scoped JWTs in this preview). Dedicated partner credentials are being provisioned for TruckX and will work as follows (final details in the integration guide):
client_credentials exchange at a dedicated partner token endpoint; your client_secret is shown once at issuance and can be rotated with an overlap window.documents:read, consent:read); tokens carry the partner id and are introspectable.Every date on this surface (issue_date, expiration_date) is a DD/MM/YYYY string, e.g. 27/04/2026. Zero-padding is optional (27/4/2026 is accepted). Each endpoint's description restates this next to its fields.
Two patterns exist on this surface; every endpoint below is labeled with its pattern.
400, 403, 404, 500) with the standard envelope body {status, status_code, message, data}.get_driver_profile): the HTTP status is 200/201 even on validation failure; the authoritative outcome is status_code / status / message inside the body. Always check the body status_code on these.get_driver_documents_only returns its payload directly ({key_url, ...}) rather than the envelope.Partner credentials will be rate-limited per credential with X-RateLimit-Limit, X-RateLimit-Remaining, and X-RateLimit-Reset response headers and 429 on exceed. Final tiers ship in the integration guide; assume a conservative default (60 req/min) when designing polling.
GET /drivers/broker-verify/companies/ paginates with page (default 1) / page_size (default 20) and returns pagination: {page, page_size, total_count, total_pages}. All other list responses on this surface return complete sets.
The partner surface is versioned by this document's info.version; breaking changes will be announced ahead of time once partner credentials are live.
This preview is shared under NDA, is subject to change, and is not a commitment of endpoint availability for server-to-server use until partner credentials are issued.
Bulk-create DriverDocument rows. Accepts application/json with documents[].file as base64, or multipart/form-data using bracketed keys documents[0][name], documents[0][file], documents[0][issue_date], documents[0][expiration_date], documents[0][document_type_id] or documents[0][custom_document_type], documents[0][is_shareable_with_broker_shipper]. Exactly one of document_type_id / custom_document_type per item; custom types are created (or reused) per driver. is_shareable_with_broker_shipper defaults to true.
Dates: issue_date / expiration_date are DD/MM/YYYY strings (e.g. 27/04/2026; zero-padding optional, 27/4/2026 is accepted).
Error pattern: envelope-signaled. This endpoint returns HTTP 200/201 even when validation fails; read the real outcome from status_code / status / message in the response body. See Error handling in the overview.
required | Array of objects (UMBDocumentV2Item) |
{- "documents": [
- {
- "name": "Commercial Driver License",
- "file": "data:application/pdf;base64,JVBERi0xLjcgLi4u",
- "issue_date": "27/04/2022",
- "expiration_date": "27/04/2026",
- "document_type_id": 1,
- "is_shareable_with_broker_shipper": true
}, - {
- "name": "DOT Medical Card",
- "file": "data:application/pdf;base64,JVBERi0xLjcgLi4u",
- "issue_date": "03/01/2025",
- "expiration_date": "03/01/2027",
- "custom_document_type": "Medical Card",
- "is_shareable_with_broker_shipper": true
}
]
}{- "status": true,
- "status_code": 201,
- "message": "Documents uploaded successfully",
- "data": [
- {
- "id": 9134,
- "name": "Commercial Driver License",
- "issue_date": "27/04/2022",
- "expiration_date": "27/04/2026",
- "document_type_id": 1,
- "is_shareable_with_broker_shipper": true
}
]
}Bulk-create DriverInstitute certification rows for the authenticated driver. Items use issue_date/expiration_date in DD/MM/YYYY. Validation errors are returned inside a 200/201 envelope (status=false, status_code=400), not as HTTP 400.
Dates: issue_date / expiration_date are DD/MM/YYYY strings (e.g. 27/04/2026; zero-padding optional, 27/4/2026 is accepted).
Error pattern: envelope-signaled. This endpoint returns HTTP 200/201 even when validation fails; read the real outcome from status_code / status / message in the response body. See Error handling in the overview.
required | Array of objects (UMBCertificationItem) |
{- "certification": [
- {
- "institute": "Transportation Security Administration",
- "certification": "TWIC Card",
- "issue_date": "15/03/2024",
- "expiration_date": "15/03/2029"
}
]
}{- "status": true,
- "status_code": 0,
- "message": "string",
- "data": { }
}Bulk-create DriverEndorsement rows with issue_date and expiration_date (DD/MM/YYYY, expiration must be after issue).
Dates: issue_date / expiration_date are DD/MM/YYYY strings (e.g. 27/04/2026; zero-padding optional, 27/4/2026 is accepted).
Error pattern: envelope-signaled. This endpoint returns HTTP 200/201 even when validation fails; read the real outcome from status_code / status / message in the response body. See Error handling in the overview.
required | Array of objects (UMBEndorsementV2Item) |
{- "endorsement": [
- {
- "company": "Florida DHSMV",
- "certification": "Hazmat (H) Endorsement",
- "issue_date": "01/02/2025",
- "expiration_date": "01/02/2030"
}
]
}{- "status": true,
- "status_code": 0,
- "message": "string",
- "data": { }
}Driver profile with vehicles, document type list, experiences, DOT form completion and marketing consent flags. Always returned with HTTP 200 on success. A non-driver caller gets HTTP 403 from the IsDriver permission class (the in-body 401 branch in the view is dead code behind IsDriver).
Error pattern: envelope-signaled. This endpoint returns HTTP 200/201 even when validation fails; read the real outcome from status_code / status / message in the response body. See Error handling in the overview.
| tz | string Default: "0:00" Client timezone offset used when building documents_type list |
{- "status": true,
- "message": "string",
- "status_code": 0,
- "data": [
- {
- "profile_id": 0,
- "full_name": "string",
- "first_name": "string",
- "last_name": "string",
- "middle_name": "string",
- "country": "string",
- "city": "string",
- "state": "string",
- "number": "string",
- "about": "string",
- "profile_picture": "string",
- "current_position": "string",
- "percentage": 0,
- "form_completion_percentage": 0,
- "form_complete_index": 0,
- "notification": true,
- "firestore_id": "string",
- "vehicle_type": [
- {
- "key": "string",
- "value": "string"
}
], - "email": "string",
- "health_care_url": "string",
- "documents_type": [
- { }
], - "experiences": [
- {
- "company": "string",
- "role": "string",
- "start_date": "string",
- "end_date": "string",
- "currently_working": true
}
], - "sms_opt_in": true,
- "phone_number": "string",
- "phone_verified": true,
- "email_opt_in": true
}
]
}Status per canonical required document type with every upload listed in uploaded_documents. Optional company_id switches the required list to that company's require_* flags (same rules as submission validation).
Error pattern: HTTP-signaled. Failures use real HTTP status codes (400/403/404/500) with the standard envelope body. See Error handling in the overview.
| company_id | integer Use this company's verification requirements instead of the full fixed list |
{- "status": true,
- "status_code": 0,
- "data": {
- "driver_id": 0,
- "company_id": 0,
- "is_valid": true,
- "documents": [
- {
- "type": "string",
- "document_type_id": 0,
- "document_type_name": "string",
- "status": "available",
- "file_url": "string",
- "expiration_date": "2019-08-24",
- "uploaded_documents": [
- {
- "id": 0,
- "document_type_id": 0,
- "document_type_name": "string",
- "file_url": "string",
- "expiration_date": "2019-08-24",
- "status": "available"
}
]
}
], - "missing_documents": [
- "string"
]
}
}Pagination: page (default 1) and page_size (default 20); the response carries pagination: {page, page_size, total_count, total_pages}.
Error pattern: HTTP-signaled. Failures use real HTTP status codes (400/403/404/500) with the standard envelope body. See Error handling in the overview.
| q | string Matches company name, description, or load pickup/delivery cities |
| page | integer >= 1 Default: 1 |
| page_size | integer [ 1 .. 100 ] Default: 20 |
{- "status": true,
- "status_code": 0,
- "data": {
- "companies": [
- {
- "company_id": 0,
- "company_name": "string",
- "company_picture": "string",
- "short_description": "string",
- "location": "string",
- "active_load_count": 0,
- "driver_submission_status": "string",
- "submitted_at": "string"
}
], - "pagination": {
- "page": 0,
- "page_size": 0,
- "total_count": 0,
- "total_pages": 0
}
}
}Error pattern: HTTP-signaled. Failures use real HTTP status codes (400/403/404/500) with the standard envelope body. See Error handling in the overview.
| company_id required | integer |
{- "status": true,
- "status_code": 0,
- "data": {
- "company": {
- "company_id": 0,
- "company_name": "string",
- "company_logo": "string",
- "location": "string",
- "contact_phone": "string",
- "contact_person": "string",
- "description": "string",
- "recipient_profile_id": 0,
- "chat_thread_id": 0
}, - "driver_submission_status": "string",
- "loads": [
- {
- "load_id": 0,
- "commodity_type": "string",
- "pickup_city": "string",
- "delivery_city": "string",
- "equipment_type": "string",
- "equipment_size": "string",
- "equipment_weight": "string",
- "pickup_date": "2019-08-24",
- "pickup_time": "string",
- "delivery_date": "2019-08-24",
- "delivery_time": "string",
- "rate_offered": "string"
}
]
}
}Validates duplicate submissions, questionnaire booleans, experience/document ownership, expiry of shared documents and required-document completeness (validate_driver_documents per company require_* flags) before creating a DriverProfileSubmission with status "Submitted".
Error pattern: HTTP-signaled. Failures use real HTTP status codes (400/403/404/500) with the standard envelope body. See Error handling in the overview.
| company_id required | integer |
| selected_experience_ids | Array of integers Required (non-empty) when own_authority is false; ids must belong to the driver |
| shared_document_ids | Array of integers Must belong to the driver and be unexpired |
| drug_test required | boolean |
| own_truck required | boolean |
| own_authority required | boolean |
| carrier_company_id | integer or null DriverExperience pk used as carrier reference |
{- "company_id": 0,
- "selected_experience_ids": [
- 0
], - "shared_document_ids": [
- 0
], - "drug_test": true,
- "own_truck": true,
- "own_authority": true,
- "carrier_company_id": 0
}{- "status": true,
- "status_code": 0,
- "message": "string",
- "data": {
- "submission_id": 0
}
}