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.

This is a V2-only document and only shows current V2 production APIs. Legacy API documentation is not included on this page.
Document Version
V2-only / 2026-05-22
Systems
Mission Rush / Mission Go / V2 Admin

Base URL

Production Base URL
https://v2-api.missionexpress.ca
Mission Rush API Pattern
/index.php?s=/api/post/missionrush/{action}
Hitch API Pattern
/index.php?s=/api/post/hitch/{action}
Request Content-Type
application/x-www-form-urlencoded

Except 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.

ScenarioRequired fieldsNotes
Mission Rush customeruser_id, tokenCustomer orders, wallet, refund, address, and profile APIs.
Mission Go driverrider_id, tokenDriver online, accepting, pickup, delivery, and GPS workflows.
Public configDepends on endpointModule 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": {}
}
POST/index.php?s=/api/post/missionrush/getModuleStatus

Module Status / getModuleStatus

Used by app home screens and feature entry points to decide whether a module is enabled, under maintenance, or disabled.

FieldTypeDescription
module_keystringOptional. If omitted, returns all modules.
statusstringenabled, maintenance, or disabled.
messagestringMessage displayed when a module is unavailable.
{
  "code": 1,
  "data": {
    "modules": {
      "send": {"status": "enabled"},
      "food_pickup": {"status": "maintenance"},
      "ship_parcel": {"status": "enabled"}
    }
  }
}
POST/index.php?s=/api/post/missionrush/getPricingConfig

Pricing Config / getPricingConfig

Returns current Mission Rush pricing configuration for policy displays and Ship Parcel pickup fee logic.

FieldTypeDescription
groupstringOptional. Recommended value: missionrush.
missionrush_pickup_fixed_fee_amountnumberFixed Mission pickup fee.
ship_parcel_pickup_fee_amountnumberPickup 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.

ActionPathDescription
myOrders/api/post/missionrush/myOrdersPaginated customer order list.
orderSnapshots/api/post/missionrush/orderSnapshotsLightweight order status refresh.
submitOrderReview/api/post/missionrush/submitOrderReviewSubmit 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.

ModuleActionDescription
Send QuotegetDirectOrderQuoteQuote before creating a Send order.
Send PaycreatePaidDirectOrderCreate a paid Send order using Square / Apple Pay / Google Pay / saved card.
Send Wallet PaycreateBalancePaidDirectOrderCreate a Send order paid by wallet balance.
Cargo PaycreatePaidCargoOrderCreate a paid Cargo order.
Cargo Wallet PaycreateBalancePaidCargoOrderCreate 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.

ActionDescription
foodPickupShopsReturns Food Pickup merchants.
groceryPickupShopsReturns Grocery Pickup merchants.
createPaidDirectOrderUses 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.

ActionPathDescription
getShipParcelRates/api/post/missionrush/getShipParcelRatesFetch live Canada Post rates. Purolator can be added later.
createShipParcelQuoteRequest/api/post/missionrush/createShipParcelQuoteRequestCreate a Ship Parcel quote request / draft order.
getShipParcelQuoteStatus/api/post/missionrush/getShipParcelQuoteStatusFetch quote, payment, tracking, and label status.
getShipParcelPaymentQuote/api/post/missionrush/getShipParcelPaymentQuoteReturn payable amount and payment line items before checkout.
createPaidShipParcelOrder/api/post/missionrush/createPaidShipParcelOrderPay a Ship Parcel order.

Key request fields

FieldTypeDescription
from / toobject/json stringOrigin and destination data.
packagesarray/json stringEach package includes weight_kg, length_cm, width_cm, and height_cm.
carrier_optionsobject/json stringCarrier options such as signature and coverage.
handoff_methodstringdropoff or pickup_from_address.
pickup_fee_payerstringcustomer or platform.

Label / Tracking fields

FieldDescription
tracking_noCarrier tracking number.
label_urlLabel PDF or image URL.
carrier_label_statusExamples: ready, checking_config, generated, failed, pending_api_integration.
carrier_label_errorLabel 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.

ActionPathDescription
cities/api/post/hitch/citiesCity list.
routes/api/post/hitch/routesEnabled routes and prices.
trips/api/post/hitch/tripsDriver-posted trips.
quoteOrder/api/post/hitch/quoteOrderPre-payment quote.
createPaidHitchOrder/api/post/hitch/createPaidHitchOrderCreate 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.

The app should not calculate an estimated fee during package pre-alert. The public price list is for display only. The final payable amount must be based on the consolidation provider's warehouse weighing, dimensional-weight check, and final quote.
ActionPathDescription
createConsolidationRegistration/api/post/missionrush/createConsolidationRegistrationCreate or update a consolidation customer profile.
consolidationWarehouses/api/post/missionrush/consolidationWarehousesReturn available warehouses, receiving addresses, and inbound instructions.
getConsolidationDashboard/api/post/missionrush/getConsolidationDashboardReturn dashboard summary, customer number, and package states.
getConsolidationPriceList/api/post/missionrush/getConsolidationPriceListReturn public route price-list rules for display only. The app must not use this endpoint to calculate a payable amount.
createConsolidationPackage/api/post/missionrush/createConsolidationPackageSubmit a package pre-alert / domestic tracking number.
listConsolidationPackages/api/post/missionrush/listConsolidationPackagesReturn package list and statuses.
createConsolidationOrder/api/post/missionrush/createConsolidationOrderCreate a consolidation outbound order / packing request.
listConsolidationOrders/api/post/missionrush/listConsolidationOrdersReturn consolidation order list.
getConsolidationOrderPaymentQuote/api/post/missionrush/getConsolidationOrderPaymentQuoteReturn the final payable quote for a consolidation order.
payConsolidationOrderByBalance/api/post/missionrush/payConsolidationOrderByBalancePay a consolidation order with wallet balance.

getConsolidationPriceList

POST/index.php?s=/api/post/missionrush/getConsolidationPriceList

This 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

FieldTypeRequiredDescription
city_code / destination_city_codestringNoDestination city code, for example MOOSE_JAW. If omitted, visible routes for all cities may be returned.
transport_type / shipping_methodstringNoair or sea.
company_idintNoConsolidation provider ID. If omitted, visible providers may be returned.

Important response fields

FieldDescription
company_name / company_codeConsolidation provider name and code.
transport_type / transport_type_nameTransport method: air or sea.
destination_city_code / destination_city_nameDestination city.
station_id / station_namePickup point / service point.
route_codeRoute code from the admin coverage rule.
price_rules.generalGeneral goods price rule: first weight, additional weight, customs fee per ticket, and volume divisor.
price_rules.sensitiveSensitive goods price rule: first weight, additional weight, customs fee per ticket, and volume divisor.
volume_divisorDimensional-weight divisor. It may differ by provider and route, for example 5000 or 6000.
billing_noticeFinal 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.

ActionDescription
listWalletPaymentMethodsList saved cards.
createWalletTopUpTop up by Square source id.
createWalletTopUpWithSavedCardTop up by saved card.
createPaidDirectOrder / createPaidCargoOrder / createPaidShipParcelOrderCreate externally paid orders.
createBalancePaidDirectOrder / createBalancePaidCargoOrder / payChinaOrderByBalanceCreate balance-paid orders.

Refunds

Call refund preview first to check eligibility, amount, and rule. Then submit the refund request.

ActionPathDescription
refundPreview/api/post/missionrush/refundPreviewReturns can_refund, refund_amount, rule, and message.
requestRefund/api/post/missionrush/requestRefundSubmits refund request and may process Square / balance refund immediately when eligible.
RuleDescription
already_refundedOrder was already refunded.
completed_no_refundCompleted orders are not refundable.
no_refund_after_arrivalNo refund after driver arrival.
full_refundEligible for full refund.
base_fee_deductedBase 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.

RuleDescription
Direct PickupDriver must complete current Direct order before accepting another.
CargoDriver must complete current Cargo order before accepting another.
Ship ParcelIndependent online module. Continuous accepting is allowed.
Confirm Pickup GPSUse 50m GPS check; if failed, allow photo override and record it.

Status Reference

FieldValueDescription
pay_status0 / 1 / 2Unpaid / pending / paid.
payment_statusunpaid / paid / completedString payment status for Ship Parcel / Consolidation.
refund_status0 / 1 / 2 or none/pending/refunded/failedDifferent tables may use numeric or string values; clients should tolerate both.
post_order.status1 / 2 / 3 / 10Waiting pickup / waiting pickup / delivering / completed.
ship_parcel.statuspending_quote / quoted / paid / shipped / delivered / cancelledShip Parcel business status.
quote_statusmanual_pending / quoted / expiredQuote 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 exampleDescription
Invalid tokenLogin expired or token mismatch.
Order number is requiredMissing order number.
Order not foundOrder does not exist or does not belong to the current user.
Missing square_source_idExternal payment is missing Square source id.
Square payment not completedSquare did not return completed status.
Package ... is over Canada Post single-parcel limit: 30 kgShip Parcel single package exceeds Canada Post limit.

Release Checklist

  • Confirm every page uses https://v2-api.missionexpress.ca only.
  • Upload api-docs-cn.html, api-docs-en.html, and api-docs-index.html together.
  • 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.