{
 "info": {
  "_postman_id": "a1f7e3c0-5b2d-4e9a-9c1f-digitweb20260601",
  "name": "DigitWeb API",
  "description": "REST API for the DigitWeb fleet management platform. Authenticate every request with your api_key (issued under System Management > Api Keys). Full reference: https://www.digitweb.co.za/api/index.php",
  "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
 },
 "variable": [
  {
   "key": "base_url",
   "value": "https://lbza.digitweb.co.za/api",
   "type": "string"
  },
  {
   "key": "api_key",
   "value": "YOUR_API_KEY",
   "type": "string"
  }
 ],
 "item": [
  {
   "name": "Vehicles API",
   "item": [
    {
     "name": "Get Vehicles",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{base_url}}/getVehicles?api_key={{api_key}}&filter=",
       "host": [
        "{{base_url}}"
       ],
       "path": [
        "getVehicles"
       ],
       "query": [
        {
         "key": "api_key",
         "value": "{{api_key}}"
        },
        {
         "key": "filter",
         "value": "",
         "description": "Comma-delimited IMEI list (optional)"
        }
       ]
      },
      "description": "List all vehicles associated with this API Key's user."
     }
    }
   ]
  },
  {
   "name": "Live Data API",
   "item": [
    {
     "name": "Get Vehicle Live Data",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{base_url}}/getLiveData?api_key={{api_key}}&filter=",
       "host": [
        "{{base_url}}"
       ],
       "path": [
        "getLiveData"
       ],
       "query": [
        {
         "key": "api_key",
         "value": "{{api_key}}"
        },
        {
         "key": "filter",
         "value": "",
         "description": "Comma-delimited IMEI list (optional)"
        }
       ]
      },
      "description": "Current GPS / device data for each vehicle."
     }
    },
    {
     "name": "Get Vehicle Live Map",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{base_url}}/getLiveMap?api_key={{api_key}}&map_api_key=YOUR_GOOGLE_MAPS_API_KEY&width=600&height=600&filter=",
       "host": [
        "{{base_url}}"
       ],
       "path": [
        "getLiveMap"
       ],
       "query": [
        {
         "key": "api_key",
         "value": "{{api_key}}"
        },
        {
         "key": "map_api_key",
         "value": "YOUR_GOOGLE_MAPS_API_KEY",
         "description": "Google Maps Static API key"
        },
        {
         "key": "width",
         "value": "600"
        },
        {
         "key": "height",
         "value": "600"
        },
        {
         "key": "filter",
         "value": "",
         "description": "Comma-delimited IMEI list (optional)"
        },
        {
         "key": "zoom",
         "value": "13",
         "disabled": true,
         "description": "Optional, default 13"
        }
       ]
      },
      "description": "Static map image (PNG) of current vehicle locations."
     }
    }
   ]
  },
  {
   "name": "Trips API",
   "item": [
    {
     "name": "Get Vehicle Trips",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{base_url}}/getTrips?api_key={{api_key}}&filter=&start_date=2026-05-01&end_date=2026-05-31",
       "host": [
        "{{base_url}}"
       ],
       "path": [
        "getTrips"
       ],
       "query": [
        {
         "key": "api_key",
         "value": "{{api_key}}"
        },
        {
         "key": "filter",
         "value": "",
         "description": "Comma-delimited IMEI list (optional)"
        },
        {
         "key": "start_date",
         "value": "2026-05-01"
        },
        {
         "key": "end_date",
         "value": "2026-05-31"
        }
       ]
      },
      "description": "Trips per vehicle between two dates (max 31 days)."
     }
    }
   ]
  },
  {
   "name": "Expense Type API",
   "item": [
    {
     "name": "Get Expense Types",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{base_url}}/getExpenseTypes?api_key={{api_key}}",
       "host": [
        "{{base_url}}"
       ],
       "path": [
        "getExpenseTypes"
       ],
       "query": [
        {
         "key": "api_key",
         "value": "{{api_key}}"
        }
       ]
      },
      "description": "List valid expense slip types (Fuel + the user's expense_types)."
     }
    },
    {
     "name": "Add Expense Type",
     "request": {
      "method": "POST",
      "header": [],
      "body": {
       "mode": "urlencoded",
       "urlencoded": [
        {
         "key": "expense_name",
         "value": "Toll Fees",
         "type": "text",
         "description": "Required, max 255 chars"
        }
       ]
      },
      "url": {
       "raw": "{{base_url}}/addExpenseType?api_key={{api_key}}",
       "host": [
        "{{base_url}}"
       ],
       "path": [
        "addExpenseType"
       ],
       "query": [
        {
         "key": "api_key",
         "value": "{{api_key}}"
        }
       ]
      }
     }
    },
    {
     "name": "Edit Expense Type",
     "request": {
      "method": "POST",
      "header": [],
      "body": {
       "mode": "urlencoded",
       "urlencoded": [
        {
         "key": "type",
         "value": "21",
         "type": "text",
         "description": "Required — expense type id"
        },
        {
         "key": "expense_name",
         "value": "Toll & Gate Fees",
         "type": "text",
         "description": "Required"
        }
       ]
      },
      "url": {
       "raw": "{{base_url}}/editExpenseType?api_key={{api_key}}",
       "host": [
        "{{base_url}}"
       ],
       "path": [
        "editExpenseType"
       ],
       "query": [
        {
         "key": "api_key",
         "value": "{{api_key}}"
        }
       ]
      }
     }
    },
    {
     "name": "Delete Expense Type",
     "request": {
      "method": "POST",
      "header": [],
      "body": {
       "mode": "urlencoded",
       "urlencoded": [
        {
         "key": "type",
         "value": "21",
         "type": "text",
         "description": "Required — expense type id"
        }
       ]
      },
      "url": {
       "raw": "{{base_url}}/deleteExpenseType?api_key={{api_key}}",
       "host": [
        "{{base_url}}"
       ],
       "path": [
        "deleteExpenseType"
       ],
       "query": [
        {
         "key": "api_key",
         "value": "{{api_key}}"
        }
       ]
      }
     }
    }
   ]
  },
  {
   "name": "Expenses API",
   "item": [
    {
     "name": "Add Expense Slip",
     "request": {
      "method": "POST",
      "header": [],
      "body": {
       "mode": "urlencoded",
       "urlencoded": [
        {
         "key": "vehicle_uid",
         "value": "42971",
         "type": "text",
         "description": "Required"
        },
        {
         "key": "type",
         "value": "2",
         "type": "text",
         "description": "Required — 2 for Fuel or an expense type id"
        },
        {
         "key": "amount",
         "value": "1024.75",
         "type": "text",
         "description": "Required, > 0"
        },
        {
         "key": "qty",
         "value": "45.5",
         "type": "text",
         "description": "Optional"
        },
        {
         "key": "event_datetime",
         "value": "2026-05-04 08:12:00",
         "type": "text",
         "description": "Required (yyyy-mm-dd hh:mm:ss)"
        },
        {
         "key": "slip_number",
         "value": "INV-1023",
         "type": "text",
         "description": "Optional"
        },
        {
         "key": "comment",
         "value": "Full tank",
         "type": "text",
         "description": "Optional"
        }
       ]
      },
      "url": {
       "raw": "{{base_url}}/addExpenseSlip?api_key={{api_key}}",
       "host": [
        "{{base_url}}"
       ],
       "path": [
        "addExpenseSlip"
       ],
       "query": [
        {
         "key": "api_key",
         "value": "{{api_key}}"
        }
       ]
      }
     }
    },
    {
     "name": "Get Expense Slip",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{base_url}}/getExpenseSlip?api_key={{api_key}}&slip_uid=80211",
       "host": [
        "{{base_url}}"
       ],
       "path": [
        "getExpenseSlip"
       ],
       "query": [
        {
         "key": "api_key",
         "value": "{{api_key}}"
        },
        {
         "key": "slip_uid",
         "value": "80211"
        }
       ]
      }
     }
    },
    {
     "name": "Get Expense Slips",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{base_url}}/getExpenseSlips?api_key={{api_key}}&vehicle_uid=42971&start_date=2026-05-01&end_date=2026-05-31",
       "host": [
        "{{base_url}}"
       ],
       "path": [
        "getExpenseSlips"
       ],
       "query": [
        {
         "key": "api_key",
         "value": "{{api_key}}"
        },
        {
         "key": "vehicle_uid",
         "value": "42971"
        },
        {
         "key": "start_date",
         "value": "2026-05-01"
        },
        {
         "key": "end_date",
         "value": "2026-05-31"
        }
       ]
      }
     }
    },
    {
     "name": "Edit Expense Slip",
     "request": {
      "method": "POST",
      "header": [],
      "body": {
       "mode": "urlencoded",
       "urlencoded": [
        {
         "key": "slip_uid",
         "value": "80211",
         "type": "text",
         "description": "Required"
        },
        {
         "key": "amount",
         "value": "1100.00",
         "type": "text",
         "description": "Optional, > 0"
        },
        {
         "key": "qty",
         "value": "",
         "type": "text",
         "description": "Optional",
         "disabled": true
        },
        {
         "key": "slip_number",
         "value": "",
         "type": "text",
         "description": "Optional",
         "disabled": true
        },
        {
         "key": "event_datetime",
         "value": "",
         "type": "text",
         "description": "Optional",
         "disabled": true
        },
        {
         "key": "comment",
         "value": "Corrected",
         "type": "text",
         "description": "Optional"
        }
       ]
      },
      "url": {
       "raw": "{{base_url}}/editExpenseSlip?api_key={{api_key}}",
       "host": [
        "{{base_url}}"
       ],
       "path": [
        "editExpenseSlip"
       ],
       "query": [
        {
         "key": "api_key",
         "value": "{{api_key}}"
        }
       ]
      }
     }
    },
    {
     "name": "Delete Expense Slip",
     "request": {
      "method": "POST",
      "header": [],
      "body": {
       "mode": "urlencoded",
       "urlencoded": [
        {
         "key": "slip_uid",
         "value": "80211",
         "type": "text",
         "description": "Required"
        }
       ]
      },
      "url": {
       "raw": "{{base_url}}/deleteExpenseSlip?api_key={{api_key}}",
       "host": [
        "{{base_url}}"
       ],
       "path": [
        "deleteExpenseSlip"
       ],
       "query": [
        {
         "key": "api_key",
         "value": "{{api_key}}"
        }
       ]
      }
     }
    }
   ]
  },
  {
   "name": "Operators API",
   "item": [
    {
     "name": "Get Operators",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{base_url}}/getOperators?api_key={{api_key}}",
       "host": [
        "{{base_url}}"
       ],
       "path": [
        "getOperators"
       ],
       "query": [
        {
         "key": "api_key",
         "value": "{{api_key}}"
        }
       ]
      }
     }
    },
    {
     "name": "Get Operator",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{base_url}}/getOperator?api_key={{api_key}}&operator_uid=3312",
       "host": [
        "{{base_url}}"
       ],
       "path": [
        "getOperator"
       ],
       "query": [
        {
         "key": "api_key",
         "value": "{{api_key}}"
        },
        {
         "key": "operator_uid",
         "value": "3312"
        }
       ]
      }
     }
    },
    {
     "name": "Add Operator",
     "request": {
      "method": "POST",
      "header": [],
      "body": {
       "mode": "urlencoded",
       "urlencoded": [
        {
         "key": "fullname",
         "value": "John Smith",
         "type": "text",
         "description": "Required"
        },
        {
         "key": "id_number",
         "value": "8001015009087",
         "type": "text",
         "description": "Required"
        },
        {
         "key": "tag_id",
         "value": "17533BB4",
         "type": "text",
         "description": "Required — globally unique. Use id_number if no tag."
        },
        {
         "key": "mobile_number",
         "value": "0820000000",
         "type": "text",
         "description": "Optional"
        },
        {
         "key": "home_number",
         "value": "",
         "type": "text",
         "description": "Optional",
         "disabled": true
        },
        {
         "key": "employee_number",
         "value": "EMP-102",
         "type": "text",
         "description": "Optional"
        },
        {
         "key": "current_points",
         "value": "0",
         "type": "text",
         "description": "Optional",
         "disabled": true
        },
        {
         "key": "home_address",
         "value": "",
         "type": "text",
         "description": "Optional",
         "disabled": true
        },
        {
         "key": "next_of_kin",
         "value": "",
         "type": "text",
         "description": "Optional",
         "disabled": true
        },
        {
         "key": "next_of_kin_contact_number",
         "value": "",
         "type": "text",
         "description": "Optional",
         "disabled": true
        },
        {
         "key": "email_address",
         "value": "john@example.com",
         "type": "text",
         "description": "Optional"
        },
        {
         "key": "active_flag",
         "value": "1",
         "type": "text",
         "description": "Optional, default 1"
        },
        {
         "key": "default_trip_type",
         "value": "0",
         "type": "text",
         "description": "Optional, default 0"
        },
        {
         "key": "driver_licence_expiry_datetime",
         "value": "2027-03-31",
         "type": "text",
         "description": "Optional (yyyy-mm-dd)"
        },
        {
         "key": "pdp_expiry_datetime",
         "value": "2026-03-31",
         "type": "text",
         "description": "Optional (yyyy-mm-dd)"
        },
        {
         "key": "dgp_expiry_datetime",
         "value": "",
         "type": "text",
         "description": "Optional (yyyy-mm-dd)",
         "disabled": true
        },
        {
         "key": "mc_expiry_datetime",
         "value": "",
         "type": "text",
         "description": "Optional (yyyy-mm-dd)",
         "disabled": true
        }
       ]
      },
      "url": {
       "raw": "{{base_url}}/addOperator?api_key={{api_key}}",
       "host": [
        "{{base_url}}"
       ],
       "path": [
        "addOperator"
       ],
       "query": [
        {
         "key": "api_key",
         "value": "{{api_key}}"
        }
       ]
      }
     }
    },
    {
     "name": "Edit Operator",
     "request": {
      "method": "POST",
      "header": [],
      "body": {
       "mode": "urlencoded",
       "urlencoded": [
        {
         "key": "operator_uid",
         "value": "3312",
         "type": "text",
         "description": "Required"
        },
        {
         "key": "mobile_number",
         "value": "0830000000",
         "type": "text",
         "description": "Optional"
        },
        {
         "key": "active_flag",
         "value": "1",
         "type": "text",
         "description": "Optional"
        }
       ]
      },
      "url": {
       "raw": "{{base_url}}/editOperator?api_key={{api_key}}",
       "host": [
        "{{base_url}}"
       ],
       "path": [
        "editOperator"
       ],
       "query": [
        {
         "key": "api_key",
         "value": "{{api_key}}"
        }
       ]
      },
      "description": "Any field from Add Operator is editable. Only set the ones you want to change."
     }
    },
    {
     "name": "Delete Operator",
     "request": {
      "method": "POST",
      "header": [],
      "body": {
       "mode": "urlencoded",
       "urlencoded": [
        {
         "key": "operator_uid",
         "value": "3312",
         "type": "text",
         "description": "Required"
        }
       ]
      },
      "url": {
       "raw": "{{base_url}}/deleteOperator?api_key={{api_key}}",
       "host": [
        "{{base_url}}"
       ],
       "path": [
        "deleteOperator"
       ],
       "query": [
        {
         "key": "api_key",
         "value": "{{api_key}}"
        }
       ]
      }
     }
    }
   ]
  },
  {
   "name": "User Locations API",
   "item": [
    {
     "name": "Get User Locations",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{base_url}}/getUserLocations?api_key={{api_key}}",
       "host": [
        "{{base_url}}"
       ],
       "path": [
        "getUserLocations"
       ],
       "query": [
        {
         "key": "api_key",
         "value": "{{api_key}}"
        }
       ]
      }
     }
    },
    {
     "name": "Get User Location",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{base_url}}/getUserLocation?api_key={{api_key}}&user_location_uid=5521",
       "host": [
        "{{base_url}}"
       ],
       "path": [
        "getUserLocation"
       ],
       "query": [
        {
         "key": "api_key",
         "value": "{{api_key}}"
        },
        {
         "key": "user_location_uid",
         "value": "5521"
        }
       ]
      }
     }
    },
    {
     "name": "Add User Location (point)",
     "request": {
      "method": "POST",
      "header": [],
      "body": {
       "mode": "urlencoded",
       "urlencoded": [
        {
         "key": "description",
         "value": "Head Office",
         "type": "text",
         "description": "Required — location name"
        },
        {
         "key": "latitude",
         "value": "-33.84089",
         "type": "text",
         "description": "Required (-90..90)"
        },
        {
         "key": "longitude",
         "value": "18.65483",
         "type": "text",
         "description": "Required (-180..180)"
        },
        {
         "key": "color",
         "value": "blue",
         "type": "text",
         "description": "Optional"
        },
        {
         "key": "radius",
         "value": "150",
         "type": "text",
         "description": "Optional, default 1"
        },
        {
         "key": "location_type",
         "value": "point",
         "type": "text",
         "description": "Optional ('point' or 'polygon')"
        },
        {
         "key": "icon",
         "value": "",
         "type": "text",
         "description": "Optional",
         "disabled": true
        },
        {
         "key": "speed",
         "value": "0",
         "type": "text",
         "description": "Optional",
         "disabled": true
        },
        {
         "key": "no_go",
         "value": "0",
         "type": "text",
         "description": "Optional",
         "disabled": true
        },
        {
         "key": "only_push",
         "value": "0",
         "type": "text",
         "description": "Optional",
         "disabled": true
        }
       ]
      },
      "url": {
       "raw": "{{base_url}}/addUserLocation?api_key={{api_key}}",
       "host": [
        "{{base_url}}"
       ],
       "path": [
        "addUserLocation"
       ],
       "query": [
        {
         "key": "api_key",
         "value": "{{api_key}}"
        }
       ]
      }
     }
    },
    {
     "name": "Add User Location (polygon with points)",
     "request": {
      "method": "POST",
      "header": [],
      "body": {
       "mode": "urlencoded",
       "urlencoded": [
        {
         "key": "description",
         "value": "Depot Yard (No-Go Zone)",
         "type": "text",
         "description": "Required"
        },
        {
         "key": "latitude",
         "value": "-33.8225",
         "type": "text",
         "description": "Required — polygon centre/reference"
        },
        {
         "key": "longitude",
         "value": "18.6646",
         "type": "text",
         "description": "Required"
        },
        {
         "key": "color",
         "value": "red",
         "type": "text"
        },
        {
         "key": "location_type",
         "value": "polygon",
         "type": "text"
        },
        {
         "key": "points",
         "value": "[{\"lat\":-33.8221,\"lng\":18.6640},{\"lat\":-33.8221,\"lng\":18.6652},{\"lat\":-33.8230,\"lng\":18.6652},{\"lat\":-33.8230,\"lng\":18.6640}]",
         "type": "text",
         "description": "JSON array of {lat,lng} vertices"
        },
        {
         "key": "no_go",
         "value": "1",
         "type": "text"
        },
        {
         "key": "speed",
         "value": "40",
         "type": "text"
        }
       ]
      },
      "url": {
       "raw": "{{base_url}}/addUserLocation?api_key={{api_key}}",
       "host": [
        "{{base_url}}"
       ],
       "path": [
        "addUserLocation"
       ],
       "query": [
        {
         "key": "api_key",
         "value": "{{api_key}}"
        }
       ]
      }
     }
    },
    {
     "name": "Edit User Location",
     "request": {
      "method": "POST",
      "header": [],
      "body": {
       "mode": "urlencoded",
       "urlencoded": [
        {
         "key": "user_location_uid",
         "value": "5521",
         "type": "text",
         "description": "Required"
        },
        {
         "key": "description",
         "value": "Head Office",
         "type": "text",
         "description": "Optional"
        },
        {
         "key": "color",
         "value": "green",
         "type": "text",
         "description": "Optional"
        },
        {
         "key": "radius",
         "value": "200",
         "type": "text",
         "description": "Optional"
        }
       ]
      },
      "url": {
       "raw": "{{base_url}}/editUserLocation?api_key={{api_key}}",
       "host": [
        "{{base_url}}"
       ],
       "path": [
        "editUserLocation"
       ],
       "query": [
        {
         "key": "api_key",
         "value": "{{api_key}}"
        }
       ]
      },
      "description": "Any field from Add User Location is editable. Only set the ones you want to change."
     }
    },
    {
     "name": "Delete User Location",
     "request": {
      "method": "POST",
      "header": [],
      "body": {
       "mode": "urlencoded",
       "urlencoded": [
        {
         "key": "user_location_uid",
         "value": "5521",
         "type": "text",
         "description": "Required"
        }
       ]
      },
      "url": {
       "raw": "{{base_url}}/deleteUserLocation?api_key={{api_key}}",
       "host": [
        "{{base_url}}"
       ],
       "path": [
        "deleteUserLocation"
       ],
       "query": [
        {
         "key": "api_key",
         "value": "{{api_key}}"
        }
       ]
      }
     }
    }
   ]
  },
  {
   "name": "Job Cards API",
   "item": [
    {
     "name": "Get Job Cards",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{base_url}}/getJobCards?api_key={{api_key}}&from_date=2026-06-01&to_date=2026-06-30",
       "host": [
        "{{base_url}}"
       ],
       "path": [
        "getJobCards"
       ],
       "query": [
        {
         "key": "api_key",
         "value": "{{api_key}}"
        },
        {
         "key": "from_date",
         "value": "2026-06-01",
         "description": "Optional (yyyy-mm-dd)"
        },
        {
         "key": "to_date",
         "value": "2026-06-30",
         "description": "Optional (yyyy-mm-dd)"
        },
        {
         "key": "external_reference",
         "value": "",
         "disabled": true,
         "description": "Optional exact match"
        },
        {
         "key": "site_reference_number",
         "value": "",
         "disabled": true,
         "description": "Optional exact match"
        },
        {
         "key": "trip_transaction_no",
         "value": "",
         "disabled": true,
         "description": "Optional exact match"
        },
        {
         "key": "load_assignment_id",
         "value": "",
         "disabled": true,
         "description": "Optional integer"
        }
       ]
      },
      "description": "List job cards for this api_key's user (max 1000, newest first). Each row includes all mapped columns plus the original payload."
     }
    },
    {
     "name": "Get Job Card",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{base_url}}/getJobCard?api_key={{api_key}}&job_card_uid=1234",
       "host": [
        "{{base_url}}"
       ],
       "path": [
        "getJobCard"
       ],
       "query": [
        {
         "key": "api_key",
         "value": "{{api_key}}"
        },
        {
         "key": "job_card_uid",
         "value": "1234"
        }
       ]
      }
     }
    },
    {
     "name": "Add Job Card",
     "request": {
      "method": "POST",
      "header": [
       {
        "key": "Content-Type",
        "value": "application/json"
       }
      ],
      "body": {
       "mode": "raw",
       "raw": "{\n  \"CompanyId\": \"9E31D5D4-31FD-4219-8C34-C8263507D006\",\n  \"Consignor\": \"DB FINE SPECIALITIES (PTY) LTD\",\n  \"Consignee\": \"TRITON PHARMACEUTICALS\",\n  \"SiteName\": \"TRITON PHARMACEUTICALS\",\n  \"SiteReferenceNumber\": \"JHB20260301857\",\n  \"TripsheetReference\": \"DLVJ26101177\",\n  \"SiteAddress\": {\n    \"Line1\": \"76 LECHWE STREET\",\n    \"Line2\": \"CORPORATE PARK SOUTH\",\n    \"City\": \"MIDRAND\"\n  },\n  \"DueDate\": \"2026-03-26T16:21:00+02:00\",\n  \"ReferenceNumber\": \"INV01462\",\n  \"Latitude\": \"-25.9486262\",\n  \"Longitude\": \"28.1377091\",\n  \"DriverName\": \"HARRISON NDHLOVU\",\n  \"DriverUsername\": \"harrison\",\n  \"DriverMobileNumber\": \"0716104248\",\n  \"DriverExternal\": \"24\",\n  \"IsDelivery\": true,\n  \"IsPriority\": false,\n  \"PlannedSequence\": 1,\n  \"SyncState\": 0,\n  \"TripStopId\": 54596,\n  \"LoadAssignmentId\": 127524,\n  \"LoadAssignmentTransactionNo\": \"JHB20260301857\",\n  \"TripTransactionNo\": \"TR26030285\"\n}",
       "options": {
        "raw": {
         "language": "json"
        }
       }
      },
      "url": {
       "raw": "{{base_url}}/addJobCard?api_key={{api_key}}",
       "host": [
        "{{base_url}}"
       ],
       "path": [
        "addJobCard"
       ],
       "query": [
        {
         "key": "api_key",
         "value": "{{api_key}}"
        }
       ]
      },
      "description": "Receive a job-card JSON payload. The body is the JSON (set Content-Type: application/json). Alternative: send 'payload' as a form-urlencoded field. All known fields are extracted into mapped columns; the verbatim JSON is preserved in the payload column."
     }
    },
    {
     "name": "Edit Job Card",
     "request": {
      "method": "POST",
      "header": [
       {
        "key": "Content-Type",
        "value": "application/json"
       }
      ],
      "body": {
       "mode": "raw",
       "raw": "{\n  \"SiteReferenceNumber\": \"JHB20260301857\",\n  \"TripTransactionNo\": \"TR26030285\",\n  \"Instructions\": \"UPDATED instructions for the driver.\",\n  \"DueDate\": \"2026-03-26T17:30:00+02:00\"\n}",
       "options": {
        "raw": {
         "language": "json"
        }
       }
      },
      "url": {
       "raw": "{{base_url}}/editJobCard?api_key={{api_key}}&job_card_uid=1234",
       "host": [
        "{{base_url}}"
       ],
       "path": [
        "editJobCard"
       ],
       "query": [
        {
         "key": "api_key",
         "value": "{{api_key}}"
        },
        {
         "key": "job_card_uid",
         "value": "1234"
        }
       ]
      },
      "description": "Replace the stored JSON. api_key and job_card_uid go in the query string because PHP's $_POST is empty for raw JSON bodies. Triggers an audit snapshot in job_card_history."
     }
    },
    {
     "name": "Get Job Card History",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{base_url}}/getJobCardHistory?api_key={{api_key}}&job_card_uid=1234",
       "host": [
        "{{base_url}}"
       ],
       "path": [
        "getJobCardHistory"
       ],
       "query": [
        {
         "key": "api_key",
         "value": "{{api_key}}"
        },
        {
         "key": "job_card_uid",
         "value": "1234"
        }
       ]
      },
      "description": "Append-only audit log for a single job card. Each row is a snapshot taken on Add (action='create') or Edit (action='edit'), oldest first."
     }
    }
   ]
  },
  {
   "name": "Fill-to-Fill Report API",
   "item": [
    {
     "name": "Get Fuel Fill Report",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{base_url}}/getFuelFillReport?api_key={{api_key}}&vehicle_uid=13402&start_date=2026-05-01&end_date=2026-05-31",
       "host": [
        "{{base_url}}"
       ],
       "path": [
        "getFuelFillReport"
       ],
       "query": [
        {
         "key": "api_key",
         "value": "{{api_key}}"
        },
        {
         "key": "vehicle_uid",
         "value": "13402"
        },
        {
         "key": "start_date",
         "value": "2026-05-01"
        },
        {
         "key": "end_date",
         "value": "2026-05-31",
         "description": "Max range 366 days"
        }
       ]
      },
      "description": "Per-fill consumption maths for the vehicle in the range. Each fill includes event_uid (used by Add Fuel Fill Slip)."
     }
    },
    {
     "name": "Add Fuel Fill Slip",
     "request": {
      "method": "POST",
      "header": [],
      "body": {
       "mode": "urlencoded",
       "urlencoded": [
        {
         "key": "event_uid",
         "value": "90240",
         "type": "text",
         "description": "Required — event_uid from Get Fuel Fill Report"
        },
        {
         "key": "qty",
         "value": "50",
         "type": "text",
         "description": "Required, > 0 (litres)"
        },
        {
         "key": "amount",
         "value": "1150.00",
         "type": "text",
         "description": "Optional"
        },
        {
         "key": "slip_number",
         "value": "INV-1099",
         "type": "text",
         "description": "Optional"
        }
       ]
      },
      "url": {
       "raw": "{{base_url}}/addFuelFillSlip?api_key={{api_key}}",
       "host": [
        "{{base_url}}"
       ],
       "path": [
        "addFuelFillSlip"
       ],
       "query": [
        {
         "key": "api_key",
         "value": "{{api_key}}"
        }
       ]
      },
      "description": "Links a slip to a detected fuel fill (type 1). Only one slip per fill — use editExpenseSlip / deleteExpenseSlip on the returned slip_uid to change it."
     }
    }
   ]
  },
  {
   "name": "Routes API",
   "item": [
    {
     "name": "Add Route",
     "request": {
      "method": "POST",
      "header": [],
      "body": {
       "mode": "urlencoded",
       "urlencoded": [
        {
         "key": "route_name",
         "value": "Monday CT Deliveries",
         "type": "text",
         "description": "Required - route name"
        },
        {
         "key": "route_datetime",
         "value": "2026-07-28 08:00",
         "type": "text",
         "description": "Required - planned start YYYY-MM-DD HH:MM[:SS]"
        },
        {
         "key": "round_trip",
         "value": "1",
         "type": "text",
         "description": "Optional - 0 (default) or 1 (return to first stop)"
        },
        {
         "key": "vehicle_uid",
         "value": "1234",
         "type": "text",
         "description": "Optional - if owned by this key, schedule this vehicle"
        },
        {
         "key": "stops",
         "value": "[{\"lat\":-33.9249,\"lng\":18.4241,\"name\":\"Depot\",\"stop_time\":10},{\"user_location_uid\":5521,\"stop_time\":15},{\"lat\":-33.9010,\"lng\":18.5123,\"name\":\"Client B\",\"stop_time\":5}]",
         "type": "text",
         "description": "Required - JSON array of >=2 stops; each is {user_location_uid,stop_time} or {lat,lng,name,stop_time}"
        },
        {
         "key": "webhooks",
         "value": "true",
         "type": "text",
         "description": "Optional - true to emit webhooks for this route (default false)",
         "disabled": true
        }
       ]
      },
      "url": {
       "raw": "{{base_url}}/addRoute?api_key={{api_key}}",
       "host": [
        "{{base_url}}"
       ],
       "path": [
        "addRoute"
       ],
       "query": [
        {
         "key": "api_key",
         "value": "{{api_key}}"
        }
       ]
      }
     }
    },
    {
     "name": "Update Route",
     "request": {
      "method": "POST",
      "header": [],
      "body": {
       "mode": "urlencoded",
       "urlencoded": [
        {
         "key": "route_uid",
         "value": "87421",
         "type": "text",
         "description": "Required - a route owned by this key"
        },
        {
         "key": "route_name",
         "value": "Monday CT Deliveries (rev 2)",
         "type": "text",
         "description": "Optional - new name"
        },
        {
         "key": "route_datetime",
         "value": "2026-07-28 08:00",
         "type": "text",
         "description": "Optional - new start YYYY-MM-DD HH:MM[:SS]"
        },
        {
         "key": "round_trip",
         "value": "1",
         "type": "text",
         "description": "Optional - 0 or 1"
        },
        {
         "key": "stops",
         "value": "[{\"lat\":-33.9249,\"lng\":18.4241,\"name\":\"Depot\"},{\"user_location_uid\":5521},{\"lat\":-33.9010,\"lng\":18.5123,\"name\":\"Client B\"}]",
         "type": "text",
         "description": "Optional - if sent, REPLACES all stops (same format as Add Route)",
         "disabled": true
        },
        {
         "key": "webhooks",
         "value": "true",
         "type": "text",
         "description": "Optional - turn this route's webhooks on/off",
         "disabled": true
        }
       ]
      },
      "url": {
       "raw": "{{base_url}}/updateRoute?api_key={{api_key}}",
       "host": [
        "{{base_url}}"
       ],
       "path": [
        "updateRoute"
       ],
       "query": [
        {
         "key": "api_key",
         "value": "{{api_key}}"
        }
       ]
      }
     }
    },
    {
     "name": "Delete Route",
     "request": {
      "method": "POST",
      "header": [],
      "body": {
       "mode": "urlencoded",
       "urlencoded": [
        {
         "key": "route_uid",
         "value": "87421",
         "type": "text",
         "description": "Required - a route owned by this key"
        }
       ]
      },
      "url": {
       "raw": "{{base_url}}/deleteRoute?api_key={{api_key}}",
       "host": [
        "{{base_url}}"
       ],
       "path": [
        "deleteRoute"
       ],
       "query": [
        {
         "key": "api_key",
         "value": "{{api_key}}"
        }
       ]
      }
     }
    },
    {
     "name": "Cancel Route",
     "request": {
      "method": "POST",
      "header": [],
      "body": {
       "mode": "urlencoded",
       "urlencoded": [
        {
         "key": "route_uid",
         "value": "87421",
         "type": "text",
         "description": "Required - a route owned by this key (only cancels if still active)"
        }
       ]
      },
      "url": {
       "raw": "{{base_url}}/cancelRoute?api_key={{api_key}}",
       "host": [
        "{{base_url}}"
       ],
       "path": [
        "cancelRoute"
       ],
       "query": [
        {
         "key": "api_key",
         "value": "{{api_key}}"
        }
       ]
      }
     }
    },
    {
     "name": "Assign Route Vehicle",
     "request": {
      "method": "POST",
      "header": [],
      "body": {
       "mode": "urlencoded",
       "urlencoded": [
        {
         "key": "route_uid",
         "value": "87421",
         "type": "text",
         "description": "Required - a route owned by this key"
        },
        {
         "key": "vehicle_uid",
         "value": "1234",
         "type": "text",
         "description": "Required - a vehicle owned by this key; use 0 to unassign"
        }
       ]
      },
      "url": {
       "raw": "{{base_url}}/assignRouteVehicle?api_key={{api_key}}",
       "host": [
        "{{base_url}}"
       ],
       "path": [
        "assignRouteVehicle"
       ],
       "query": [
        {
         "key": "api_key",
         "value": "{{api_key}}"
        }
       ]
      }
     }
    },
    {
     "name": "Set Webhook",
     "request": {
      "method": "POST",
      "header": [],
      "body": {
       "mode": "urlencoded",
       "urlencoded": [
        {
         "key": "webhook_secret",
         "value": "YOUR_SHARED_SECRET",
         "type": "text",
         "description": "Required - shared secret; engine signs X-Signature=HMAC-SHA256(body,secret)"
        },
        {
         "key": "webhook_url",
         "value": "https://routeplan.digitweb.co.za/v1/webhooks/tracking",
         "type": "text",
         "description": "Optional - delivery endpoint (default shown)"
        },
        {
         "key": "webhook_enabled",
         "value": "1",
         "type": "text",
         "description": "Optional - 1 (default) or 0 to disable"
        }
       ]
      },
      "url": {
       "raw": "{{base_url}}/setWebhook?api_key={{api_key}}",
       "host": [
        "{{base_url}}"
       ],
       "path": [
        "setWebhook"
       ],
       "query": [
        {
         "key": "api_key",
         "value": "{{api_key}}"
        }
       ]
      }
     }
    }
   ]
  },
  {
   "name": "Maersk Integration API",
   "item": [
    {
     "name": "Assign Job Card & Container",
     "request": {
      "method": "POST",
      "header": [],
      "body": {
       "mode": "urlencoded",
       "urlencoded": [
        {
         "key": "vehicle_uid",
         "value": "1234",
         "type": "text",
         "description": "The vehicle to assign to (required unless imei is given)"
        },
        {
         "key": "imei",
         "value": "864022083408947",
         "type": "text",
         "description": "Alternative to vehicle_uid; resolved to the caller's vehicle",
         "disabled": true
        },
        {
         "key": "jobcard_number",
         "value": "JC-2026-0098",
         "type": "text",
         "description": "Optional (this and/or container_number) - max 50 chars"
        },
        {
         "key": "container_number",
         "value": "MSKU1234567",
         "type": "text",
         "description": "Optional (this and/or jobcard_number) - max 50 chars"
        }
       ]
      },
      "url": {
       "raw": "{{base_url}}/maerskAssign?api_key={{api_key}}",
       "host": [
        "{{base_url}}"
       ],
       "path": [
        "maerskAssign"
       ],
       "query": [
        {
         "key": "api_key",
         "value": "{{api_key}}"
        }
       ]
      }
     }
    }
   ]
  }
 ]
}
