---
title: "Creates or amends a Booking."
method: PUT
path: "/v1/bookings/{bookingReference}"
tags: ["Booking"]
---

# Creates or amends a Booking.

`PUT /v1/bookings/{bookingReference}`

This operation should be idempotent. Requests to this endpoint that fail may be retried after a few minutes. See more in the Responses section. If the issue persists, the fallback integration mechanism will be used (A.K.A. the email or FTP delivered XML file).

## Path parameters

- `bookingReference` string, required

## Request body

- AmendBookingRequest — Encapsulates the necessary information to create or amend an existing Booking.
  - `leadPassenger` LeadPassenger, required — The specifics about the Lead Passenger of the Booking.
    - `firstName` string, required — The first name of the Lead Passenger.
    - `lastName` string, required — The last name of the Lead Passenger.
    - `email` string, email, required — Due to GDPR, this might not be our customer's email, rather a Suntransfers contact email.
    - `phoneNumber` string, required — The phone number of the Lead Passenger, including country code.
  - `agency` AgencyBookingDetails — Details about the Agency making the Booking.
    - `name` string, required — The name of the Agency.
    - `bookingReference` string, nullable — The Agency's internal Booking reference. This is very often different from the Suntransfers Booking reference.
  - `transfers` Transfer[], required — The list of Transfers associated with the Booking being amended or created.
    - `status` 'Created' | 'Modified' | 'Cancelled', required — The current status of the Transfer.
    - `origin` Location, required — Details about a Location used in a Transfer's pickup or drop-off.
      - `name` string, required — The internationally known English name.
      - `translatedName` string, required — The translated name when the supplier's language is not English.
      - `type` 'Gateway' | 'Resort', required — `Gateway` denotes Airports, Ports, and Train Stations while `Resort` denotes Cities, Neighborhoods, Regions etc.
      - `id` string, required — The Suntransfers' internal unique identifier for the location.
      - `countryCode` string, required — The two-letter ISO 3166-1 country code.
      - `gatewayCode` string, nullable — The gateway code when `type` is `Gateway`. This is an IATA airport code for airports, a UN/LOCODE for ports, or a locally recognized code for train stations (e.g., `ESBCNSAN` for Barcelona Sants train station).
      - `latitude` number, double, required — Informational only. Always rely on `name` and `translatedName` instead. Rationale: When `type` is `Resort`, this value cannot represent a point because a Resort refers to a region. When `type` is `Gateway`, this value is unreliable due to the complexity of airports and terminals.
      - `longitude` number, double, required — Informational only. Always rely on `name` and `translatedName` instead. Rationale: When `type` is `Resort`, this value cannot represent a point because a Resort refers to a region. When `type` is `Gateway`, this value is unreliable due to the complexity of airports and terminals.
    - `destination` Location, required — Details about a Location used in a Transfer's pickup or drop-off.
      - `name` string, required — The internationally known English name.
      - `translatedName` string, required — The translated name when the supplier's language is not English.
      - `type` 'Gateway' | 'Resort', required — `Gateway` denotes Airports, Ports, and Train Stations while `Resort` denotes Cities, Neighborhoods, Regions etc.
      - `id` string, required — The Suntransfers' internal unique identifier for the location.
      - `countryCode` string, required — The two-letter ISO 3166-1 country code.
      - `gatewayCode` string, nullable — The gateway code when `type` is `Gateway`. This is an IATA airport code for airports, a UN/LOCODE for ports, or a locally recognized code for train stations (e.g., `ESBCNSAN` for Barcelona Sants train station).
      - `latitude` number, double, required — Informational only. Always rely on `name` and `translatedName` instead. Rationale: When `type` is `Resort`, this value cannot represent a point because a Resort refers to a region. When `type` is `Gateway`, this value is unreliable due to the complexity of airports and terminals.
      - `longitude` number, double, required — Informational only. Always rely on `name` and `translatedName` instead. Rationale: When `type` is `Resort`, this value cannot represent a point because a Resort refers to a region. When `type` is `Gateway`, this value is unreliable due to the complexity of airports and terminals.
    - `vehicle` Vehicle, required — Details about a Vehicle required for a Transfer.
      - `code` string, required — The Suntransfers Vehicle Code.
      - `type` string, required — The type of the Vehicle.
      - `title` string, required — The title of the Vehicle.
      - `isShared` boolean, required — Indicates if the Vehicle is of shared type (e.g., shuttle) or private type (e.g., taxi).
      - `isWheelchairAccessible` boolean, required — Indicates if the Vehicle is wheelchair accessible.
      - `maxPassengers` integer, nullable — The maximum number of Passengers the Vehicle can accommodate. This property is `null` for shuttle-type Vehicles where the capacity is virtually unlimited.
    - `passengers` Passengers, required — The specifics about the number of Passengers in the Transfer.
      - `total` integer, required — The total number of Passengers in the Transfer, that is, the sum of `adults`, `children`, and `infants`.
      - `adults` integer, required — The number of adults in the Transfer.
      - `children` integer, required — The number of children in the Transfer.
      - `infants` integer, required — The number of infants in the Transfer.
      - `ages` integer[], nullable — The ages, in years, of the children and infants in the Transfer.
    - `accommodation` Accommodation — Details about the Accommodation related to a Transfer pickup or drop-off.
      - `type` 'Hotel' | 'Villa' | 'Apartment' | 'Campsite' | 'Other', nullable — The type of Accommodation.
      - `name` string, nullable — The name of the Accommodation.
      - `addressParts` string[], nullable — The distinct components of the Accommodation's address.
      - `phone` string, nullable — The phone number of the Accommodation.
      - `giataCode` string, nullable — The GIATA code of the Accommodation.
      - `pickupName` string, nullable — The locally-known name of the pickup point.
      - `pickupAddressParts` string[], nullable — The distinct components of the Accommodation's pickup address.
    - `transferDateTime` string, date-time, required — An ISO 8601 date-time string in local time.
    - `pickupDateTime` string, date-time, nullable — The local date and time of the Pickup.
    - `latestPickupDateTime` string, date-time, nullable — The latest possible local date and time of the Pickup.
    - `fromFlight` Flight — Details about a Flight associated with a Transfer.
      - `airline` string, nullable — The name of the airline operating the flight.
      - `flightNumber` string, nullable — The flight number.
      - `flightNumberAirline` string, nullable — The airline code associated with the flight number. This is result of the `flightNumber` data split.
      - `flightNumberDigits` string, nullable — The digits associated with the flight number. This is result of the `flightNumber` data split.
      - `originGateway` string, nullable — The code of the origin Gateway. See the property `gatewayCode` in the `Location` type for more details.
      - `flightDateTime` string, date-time, nullable — The local date and time of the Flight.
    - `toFlight` Flight — Details about a Flight associated with a Transfer.
      - `airline` string, nullable — The name of the airline operating the flight.
      - `flightNumber` string, nullable — The flight number.
      - `flightNumberAirline` string, nullable — The airline code associated with the flight number. This is result of the `flightNumber` data split.
      - `flightNumberDigits` string, nullable — The digits associated with the flight number. This is result of the `flightNumber` data split.
      - `originGateway` string, nullable — The code of the origin Gateway. See the property `gatewayCode` in the `Location` type for more details.
      - `flightDateTime` string, date-time, nullable — The local date and time of the Flight.
    - `extras` Extra[], nullable — The list of Extra services added to the Transfer.
      - `id` string, required — The Suntransfers Extra identifier.
      - `name` string, required — The name of the Extra.
      - `translatedName` string, required — The translated name of the Extra.
      - `quantity` integer, required — The quantity of the Extra.
      - `unitRate` number, double, required — The unit rate of the Extra.
      - `notes` string, nullable — Additional notes about the Extra.
    - `price` Price, required — The pricing details of a Transfer.
      - `baseRate` number, double, required — The base rate for the Transfer.
      - `extras` number, double, nullable — The total amount for any extra services added to the Transfer.
      - `nightSupplement` number, double, nullable — The additional charge for night Transfers.
      - `weekdaySupplement` number, double, nullable — The additional charge for weekday Transfers.
      - `totalRate` number, double, required — The total rate for the Transfer, that is, the sum of `baseRate`, `extras`, `nightSupplement`, and `weekdaySupplement`.
    - `hasCheckedLuggage` boolean, nullable — Indicates if the passenger has checked luggage. That can help on determining the appropriate Vehicle and predicting the amount of time waiting at the Gateway.
    - `isVisaRequired` boolean, nullable — Indicates if a Visa is required for the passenger. That can help on predicting the amount of time a driver might need to wait at the Gateway.
    - `quoteId` string, nullable — An identifier to a Quote previously requested.
  - `modificationType` 'Amendment' | 'TransferDeclined' | 'TransferNotProvided' | 'ExtraNotProvided' | 'LateCollection' | 'DriverNoShow', required — The type of modification being made to a Booking.

## Response `200`

`200 OK`: The Booking has been amended. Signals that the amendment has happened synchronously. That means that the Booking and this update is already available and valid in the supplier's system. See `202` for the asynchronous version.

- AmendBookingResponse — Represents the result of a Booking amendment request, which can create or amend an existing Booking.
  - `bookingReference` string, required — The Suntransfers Booking reference identifier. This is currently a string starting with 'SUNTR_' followed by alphanumeric characters.
  - `supplierReferences` SupplierReference[], nullable — The Supplier's internal Transfer references or IDs.

## Other responses

- `201` — `201 Created`: The Booking has been created. Signals that the creation has happened synchronously. That means that the Booking and this update is already available and valid in the supplier's system. See `202` for the asynchronous version.
- `202` — `202 Accepted`: The request has been validated and queued for processing. Signals that the creation/amendment will be handled asynchronously. That means that the Booking or this update is not available or valid in the supplier's system yet, but that it will done soon. See `201` for the synchronous version.
- `400` — `400 Bad Request`: The details of the issues found on the request are present in the `detail` property of the response.
- `401` — `401 Unauthorized`: Credentials are likely out of sync. Contact Suntransfers as soon as possible via our official email to synchronize credentials. Attention: DO NOT specify any details about username, password, or authentication method in the response.
- `500` — `500 Internal Server Error`: Suntransfers systems might retry this request later.

---

[API](https://skmtc.net/suntransfers/apis/st-spec-suntransfers-supplier-api-specification.md) · [All operations](https://skmtc.net/suntransfers/apis/st-spec-suntransfers-supplier-api-specification/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/suntransfers/st-spec-suntransfers-supplier-api-specification/revisions/af3b2f961b6a/schema)
