Mission Express V2 API
Mission Express V2 API Documentation
V2-only production API documentation. The only production API base URL in this document is https://v2-api.missionexpress.ca. V1 / Legacy API references have been removed.
Overview
This document describes the Mission Express / Mission Rush / Mission Go V2 API surface: module switches, quoting, order creation, payments, refunds, Ship Parcel, Consolidation, Intercity Hitch, and driver workflow states.
Base URL
https://v2-api.missionexpress.ca/index.php?s=/api/post/missionrush/{action}/index.php?s=/api/post/hitch/{action}application/x-www-form-urlencodedExcept for file downloads, images, and external redirects, V2 App APIs are POST based.
Authentication
V2 app APIs identify users by user_id + token or drivers by rider_id + token. Admin-only APIs should not be published in public API documentation.
| Scenario | Required fields | Notes |
|---|---|---|
| Mission Rush customer | user_id, token | Customer orders, wallet, refund, address, and profile APIs. |
| Mission Go driver | rider_id, token | Driver online, accepting, pickup, delivery, and GPS workflows. |
| Public config | Depends on endpoint | Module status and selected pricing endpoints may be public; confirm before release. |
curl -X POST "https://v2-api.missionexpress.ca/index.php?s=/api/post/missionrush/myOrders" \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "user_id=14&token=USER_TOKEN&page=1&list_rows=20"
Unified Response Format
code = 1 means success. code = 0 or any other value means failure. The user-facing error message is returned in msg.
{
"code": 1,
"msg": "ok",
"time": 1779227065,
"data": {}
}/index.php?s=/api/post/missionrush/getModuleStatusModule Status / getModuleStatus
Used by app home screens and feature entry points to decide whether a module is enabled, under maintenance, or disabled.
| Field | Type | Description |
|---|---|---|
| module_key | string | Optional. If omitted, returns all modules. |
| status | string | enabled, maintenance, or disabled. |
| message | string | Message displayed when a module is unavailable. |
{
"code": 1,
"data": {
"modules": {
"send": {"status": "enabled"},
"food_pickup": {"status": "maintenance"},
"ship_parcel": {"status": "enabled"}
}
}
}
/index.php?s=/api/post/missionrush/getPricingConfigPricing Config / getPricingConfig
Returns current Mission Rush pricing configuration for policy displays and Ship Parcel pickup fee logic.
| Field | Type | Description |
|---|---|---|
| group | string | Optional. Recommended value: missionrush. |
| missionrush_pickup_fixed_fee_amount | number | Fixed Mission pickup fee. |
| ship_parcel_pickup_fee_amount | number | Pickup fee used by Ship Parcel. |
group=missionrush
Orders
The orders API powers the Mission Rush Orders page and can return unified rows for Direct, Cargo, Hitch, Consolidation, and Ship Parcel orders.
| Action | Path | Description |
|---|---|---|
| myOrders | /api/post/missionrush/myOrders | Paginated customer order list. |
| orderSnapshots | /api/post/missionrush/orderSnapshots | Lightweight order status refresh. |
| submitOrderReview | /api/post/missionrush/submitOrderReview | Submit order review. |
POST https://v2-api.missionexpress.ca/index.php?s=/api/post/missionrush/myOrders
user_id=14&token=USER_TOKEN&page=1&list_rows=20&tab=in_progress
Send / Cargo
Send is local courier delivery. Cargo is large-item / freight pickup and delivery. Distance fees should be based on platform route calculation, not front-end straight-line distance.
| Module | Action | Description |
|---|---|---|
| Send Quote | getDirectOrderQuote | Quote before creating a Send order. |
| Send Pay | createPaidDirectOrder | Create a paid Send order using Square / Apple Pay / Google Pay / saved card. |
| Send Wallet Pay | createBalancePaidDirectOrder | Create a Send order paid by wallet balance. |
| Cargo Pay | createPaidCargoOrder | Create a paid Cargo order. |
| Cargo Wallet Pay | createBalancePaidCargoOrder | Create a Cargo order paid by wallet balance. |
Food Pickup / Grocery Pickup
Food Pickup and Grocery Pickup share the Direct delivery fulfillment flow, but use different entry points, merchant lists, and order type metadata.
| Action | Description |
|---|---|
foodPickupShops | Returns Food Pickup merchants. |
groceryPickupShops | Returns Grocery Pickup merchants. |
createPaidDirectOrder | Uses order_type / payload to distinguish Send, Food, and Grocery orders. |
Ship Parcel
Ship Parcel is a formal V2 module supporting Canada Post rates, admin quote saving, payments, and Label / Tracking status fields.
| Action | Path | Description |
|---|---|---|
| getShipParcelRates | /api/post/missionrush/getShipParcelRates | Fetch live Canada Post rates. Purolator can be added later. |
| createShipParcelQuoteRequest | /api/post/missionrush/createShipParcelQuoteRequest | Create a Ship Parcel quote request / draft order. |
| getShipParcelQuoteStatus | /api/post/missionrush/getShipParcelQuoteStatus | Fetch quote, payment, tracking, and label status. |
| getShipParcelPaymentQuote | /api/post/missionrush/getShipParcelPaymentQuote | Return payable amount and payment line items before checkout. |
| createPaidShipParcelOrder | /api/post/missionrush/createPaidShipParcelOrder | Pay a Ship Parcel order. |
Key request fields
| Field | Type | Description |
|---|---|---|
| from / to | object/json string | Origin and destination data. |
| packages | array/json string | Each package includes weight_kg, length_cm, width_cm, and height_cm. |
| carrier_options | object/json string | Carrier options such as signature and coverage. |
| handoff_method | string | dropoff or pickup_from_address. |
| pickup_fee_payer | string | customer or platform. |
Label / Tracking fields
| Field | Description |
|---|---|
| tracking_no | Carrier tracking number. |
| label_url | Label PDF or image URL. |
| carrier_label_status | Examples: ready, checking_config, generated, failed, pending_api_integration. |
| carrier_label_error | Label generation failure message. |
Intercity Hitch
Hitch uses the separate /api/post/hitch controller path for city-pair routes, driver trips, matching, quoting, and paid order creation.
| Action | Path | Description |
|---|---|---|
| cities | /api/post/hitch/cities | City list. |
| routes | /api/post/hitch/routes | Enabled routes and prices. |
| trips | /api/post/hitch/trips | Driver-posted trips. |
| quoteOrder | /api/post/hitch/quoteOrder | Pre-payment quote. |
| createPaidHitchOrder | /api/post/hitch/createPaidHitchOrder | Create paid Hitch order. |
Consolidation
Consolidation covers customer registration, warehouse addresses, package pre-alerts, package lists, consolidation orders, final quotes, payments, and public price-list display for customers.
| Action | Path | Description |
|---|---|---|
| createConsolidationRegistration | /api/post/missionrush/createConsolidationRegistration | Create or update a consolidation customer profile. |
| consolidationWarehouses | /api/post/missionrush/consolidationWarehouses | Return available warehouses, receiving addresses, and inbound instructions. |
| getConsolidationDashboard | /api/post/missionrush/getConsolidationDashboard | Return dashboard summary, customer number, and package states. |
| getConsolidationPriceList | /api/post/missionrush/getConsolidationPriceList | Return public route price-list rules for display only. The app must not use this endpoint to calculate a payable amount. |
| createConsolidationPackage | /api/post/missionrush/createConsolidationPackage | Submit a package pre-alert / domestic tracking number. |
| listConsolidationPackages | /api/post/missionrush/listConsolidationPackages | Return package list and statuses. |
| createConsolidationOrder | /api/post/missionrush/createConsolidationOrder | Create a consolidation outbound order / packing request. |
| listConsolidationOrders | /api/post/missionrush/listConsolidationOrders | Return consolidation order list. |
| getConsolidationOrderPaymentQuote | /api/post/missionrush/getConsolidationOrderPaymentQuote | Return the final payable quote for a consolidation order. |
| payConsolidationOrderByBalance | /api/post/missionrush/payConsolidationOrderByBalance | Pay a consolidation order with wallet balance. |
getConsolidationPriceList
/index.php?s=/api/post/missionrush/getConsolidationPriceListThis endpoint lets Mission Rush display consolidation route price-list information. It does not estimate package fees and does not create a payable amount.
Request fields
| Field | Type | Required | Description |
|---|---|---|---|
| city_code / destination_city_code | string | No | Destination city code, for example MOOSE_JAW. If omitted, visible routes for all cities may be returned. |
| transport_type / shipping_method | string | No | air or sea. |
| company_id | int | No | Consolidation provider ID. If omitted, visible providers may be returned. |
Important response fields
| Field | Description |
|---|---|
| company_name / company_code | Consolidation provider name and code. |
| transport_type / transport_type_name | Transport method: air or sea. |
| destination_city_code / destination_city_name | Destination city. |
| station_id / station_name | Pickup point / service point. |
| route_code | Route code from the admin coverage rule. |
| price_rules.general | General goods price rule: first weight, additional weight, customs fee per ticket, and volume divisor. |
| price_rules.sensitive | Sensitive goods price rule: first weight, additional weight, customs fee per ticket, and volume divisor. |
| volume_divisor | Dimensional-weight divisor. It may differ by provider and route, for example 5000 or 6000. |
| billing_notice | Final billing notice. |
curl -X POST "https://v2-api.missionexpress.ca/index.php?s=/api/post/missionrush/getConsolidationPriceList" \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "city_code=MOOSE_JAW"
{
"code": 1,
"msg": "ok",
"data": {
"list": [
{
"company_id": 2,
"company_name": "广州奕宁达国际供应链有限公司",
"transport_type": "air",
"transport_type_name": "空运",
"destination_city_code": "MOOSE_JAW",
"destination_city_name": "Moose Jaw",
"station_name": "Lillooet",
"route_code": "AIR_YININGDA_TO_MOOSE_JAW",
"price_rules": {
"general": {
"goods_type_name": "普货",
"currency": "CNY",
"first_weight_kg": 0.5,
"first_fee": 34,
"additional_unit_kg": 1,
"additional_fee": 68,
"customs_fee_per_ticket": 35,
"volume_divisor": 6000
},
"sensitive": {
"goods_type_name": "敏感货",
"currency": "CNY",
"first_weight_kg": 0.5,
"first_fee": 37,
"additional_unit_kg": 1,
"additional_fee": 74,
"customs_fee_per_ticket": 45,
"volume_divisor": 6000
}
}
}
],
"billing_notice": "Prices are displayed as a price list only. No estimated fee is calculated during package pre-alert. Final fees are based on the provider's warehouse weighing, dimensional check, and final quote."
}
}
Wallet & Payments
V2 supports Square card, saved card, Apple Pay, Google Pay, account balance, and mixed payment. iOS should show Apple Pay only; Android should show Google Pay only.
| Action | Description |
|---|---|
| listWalletPaymentMethods | List saved cards. |
| createWalletTopUp | Top up by Square source id. |
| createWalletTopUpWithSavedCard | Top up by saved card. |
| createPaidDirectOrder / createPaidCargoOrder / createPaidShipParcelOrder | Create externally paid orders. |
| createBalancePaidDirectOrder / createBalancePaidCargoOrder / payChinaOrderByBalance | Create balance-paid orders. |
Refunds
Call refund preview first to check eligibility, amount, and rule. Then submit the refund request.
| Action | Path | Description |
|---|---|---|
| refundPreview | /api/post/missionrush/refundPreview | Returns can_refund, refund_amount, rule, and message. |
| requestRefund | /api/post/missionrush/requestRefund | Submits refund request and may process Square / balance refund immediately when eligible. |
| Rule | Description |
|---|---|
| already_refunded | Order was already refunded. |
| completed_no_refund | Completed orders are not refundable. |
| no_refund_after_arrival | No refund after driver arrival. |
| full_refund | Eligible for full refund. |
| base_fee_deducted | Base fee is deducted after driver acceptance. |
Mission Go Driver App
Driver APIs cover online state, accepting jobs, arrival confirmation, pickup photo, and delivery confirmation. Direct Pickup and Cargo should require completion of the current job before taking another; Ship Parcel Online is independent and supports continuous jobs.
| Rule | Description |
|---|---|
| Direct Pickup | Driver must complete current Direct order before accepting another. |
| Cargo | Driver must complete current Cargo order before accepting another. |
| Ship Parcel | Independent online module. Continuous accepting is allowed. |
| Confirm Pickup GPS | Use 50m GPS check; if failed, allow photo override and record it. |
Status Reference
| Field | Value | Description |
|---|---|---|
| pay_status | 0 / 1 / 2 | Unpaid / pending / paid. |
| payment_status | unpaid / paid / completed | String payment status for Ship Parcel / Consolidation. |
| refund_status | 0 / 1 / 2 or none/pending/refunded/failed | Different tables may use numeric or string values; clients should tolerate both. |
| post_order.status | 1 / 2 / 3 / 10 | Waiting pickup / waiting pickup / delivering / completed. |
| ship_parcel.status | pending_quote / quoted / paid / shipped / delivered / cancelled | Ship Parcel business status. |
| quote_status | manual_pending / quoted / expired | Quote status. |
Error Codes & Messages
V2 currently uses code=0 plus a readable msg for most business errors. Client apps should display msg and log the raw response.
| Message example | Description |
|---|---|
| Invalid token | Login expired or token mismatch. |
| Order number is required | Missing order number. |
| Order not found | Order does not exist or does not belong to the current user. |
| Missing square_source_id | External payment is missing Square source id. |
| Square payment not completed | Square did not return completed status. |
| Package ... is over Canada Post single-parcel limit: 30 kg | Ship Parcel single package exceeds Canada Post limit. |
Release Checklist
- Confirm every page uses
https://v2-api.missionexpress.caonly. - Upload
api-docs-cn.html,api-docs-en.html, andapi-docs-index.htmltogether. - Confirm the website navigation points API Docs to
api-docs-index.html. - Before public release, grep current server code for public functions and confirm the action names match production.
