APG PayAPG Paydocs

Merchants

Update travel upload

PATCH/travel-uploads/{travelUploadId}

Settle an upload as Uploaded or Failed.

Permissions

Required permission
merchantTravelData:update

Requires the `update` action on `merchantTravelData` for the supplied runtime context

Path parameters

travelUploadIdstring
required

Request body

This body is a tagged shape: type is always "TvluplUpdateSettle". Send it; more variants can be added, and a caller that switches on it keeps working when they are.

Discriminated by type
type = "TvluplUpdateSettle"
statusTvluplStatusrequired

Uploaded or Failed. Uploading is the state an upload starts in, not one to settle on.

UploadingUploadedFailedUnknown
failureMessagestring

Why it failed. Only with Failed.

curl -X PATCH https://api.tst.au.apgpay.dev/travel-uploads/{travelUploadId} \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "type": "TvluplUpdateSettle",
  "status": "Uploading",
  "failureMessage": "string"
}'

Responses

The response is a tagged shape: type is always "TvluplUpdateRspAttributes". Switch on it; subtypes can be added, and a client that already reads it will not break.

Discriminated by type
type = "TvluplUpdateRspAttributes"

The resource as it stands after the change.

Example
{
  "type": "TvluplUpdateRspAttributes",
  "updated": {
    "type": "TvluplViewAttributes",
    "travelUploadId": "tvlupl_9f2Kd8QpLzXw",
    "merchantId": "mcht_9f2Kd8QpLzXw",
    "fileName": "Ada Lovelace",
    "uploaderReference": "your-own-reference",
    "uploaderName": "Ada Lovelace",
    "status": "Uploading",
    "failureMessage": "string",
    "createdAt": "2026-08-19T04:21:07Z",
    "updatedAt": "2026-08-19T04:21:07Z"
  }
}

Error responses