---
title: "Update fields on an existing variant."
method: PATCH
path: "/v1/trips/{id}/variants/{variantId}"
tags: ["Public API v1"]
---

# Update fields on an existing variant.

`PATCH /v1/trips/{id}/variants/{variantId}`

## Request

- Base URL: `https://api.mynextadventure.cloud` (the document declares no server; this is the origin it was published from)
- URL: `https://api.mynextadventure.cloud/v1/trips/{id}/variants/{variantId}`
- Auth: API key in header `X-API-Key`

Returns the variant as it now stands, so the caller can confirm the change landed rather than assuming it did.

## Path parameters

- `id` string, required
- `variantId` string, required

## Request body

- UpdateVariantV1Dto
  - `name` string: New variant name.
  - `dates` union: Either an exact-dates or flexi-dates structure for this variant.
    - ExactDatesV1Dto
      - `startDate` string, date-time, required
      - `endDate` string, date-time, required
    - FlexiDatesV1Dto
      - `departLeavingNotBeforeDate` string, date-time, required
      - `departArrivingNotAfterDate` string, date-time, required
      - `returnLeavingNotBeforeDate` string, date-time, required
      - `returnArrivingNotAfterDate` string, date-time, required
      - `minNights` number, required
      - `maxNights` number, required
  - `participants` VariantParticipantsV1Dto
    - `adults` number, required: Number of adults travelling on this variant. At least 1.
    - `children` VariantChildV1Dto[]: Children travelling on this variant, one entry per child. Omit or send [] for an adults-only trip.
      - `age` number, required: Age of the child in years, at the time of the trip.
    - `numberOfRooms` number: Number of rooms required.
  - `notes` string: Free-form variant notes.

## Response `200`

- TripVariantV1Dto
  - `id` string, required
  - `name` string, required
  - `dates` union: Either an exact-dates or flexi-dates structure for this variant.
    - ExactDatesV1Dto
      - `startDate` string, date-time, required
      - `endDate` string, date-time, required
    - FlexiDatesV1Dto
      - `departLeavingNotBeforeDate` string, date-time, required
      - `departArrivingNotAfterDate` string, date-time, required
      - `returnLeavingNotBeforeDate` string, date-time, required
      - `returnArrivingNotAfterDate` string, date-time, required
      - `minNights` number, required
      - `maxNights` number, required
  - `minNights` number
  - `maxNights` number
  - `participants` TripVariantParticipantsV1Dto, required
    - `adults` number, required
    - `children` TripVariantChildV1Dto[], required
      - `age` number, required
    - `numberOfRooms` number
  - `destinations` TripDestinationV1Dto[], required
    - `destination` string, required
    - `destinationKey` string, required
    - `isReturnToHome` boolean
    - `startDate` string, date-time: Arrival date at this destination.
    - `endDate` string, date-time: Departure date from this destination.
    - `accommodationOptions` AccommodationOptionV1Dto[], required
      - `key` string, required
      - `name` string
      - `type` 'hotel' | 'hostel' | 'apartment' | 'house' | 'camping' | 'other': Type of accommodation.
      - `totalCost` number, required
      - `currency` string, required
      - `location` OptionLocationOutV1Dto, required
        - `name` string
        - `formattedAddress` string
        - `coordinates` OptionPlaceCoordinatesV1Dto
          - `lat` number, required
          - `lng` number, required
        - `googlePlaceId` string
        - `locationiqPlaceId` string
      - `checkIn` string, date-time
      - `checkOut` string, date-time
      - `freeCancellationUntil` string, date-time
      - `checkInTime` string
      - `checkOutTime` string
      - `roomDetails` RoomDetailsOutV1Dto
        - `numberOfRooms` number
        - `sizeInM2` number
      - `sourceUrl` string
      - `notes` string
      - `imageUrl` string: URL of a photo of the accommodation.
      - `description` string: Short description of the accommodation.
      - `url` string: Link to the listing or the property website.
      - `features` string[]: Facilities this accommodation offers.
      - `externalRating` ExternalRatingV1Dto
        - `score` number, required: Rating score as published by the source (e.g. 8.8).
        - `scale` number, required: Maximum of the rating scale (e.g. 10 for Booking.com, 5 for Google). Required whenever score is set.
        - `count` number: Number of reviews behind the score.
        - `source` string: Where the rating came from (e.g. "booking.com").
      - `createdBy` UserInfoV1Dto
        - `email` string, required
        - `userId` string, required
        - `name` string, required
        - `avatar` string
        - `isCurrentUser` boolean
    - `selectedAccommodation` string
    - `transportOptions` TransportOptionV1Dto[], required
      - `key` string, required
      - `transportType` 'car' | 'plane' | 'train' | 'bus' | 'ship' | 'motorbike' | 'bike' | 'other'
      - `from` OptionLocationOutV1Dto
        - `name` string
        - `formattedAddress` string
        - `coordinates` OptionPlaceCoordinatesV1Dto
          - `lat` number, required
          - `lng` number, required
        - `googlePlaceId` string
        - `locationiqPlaceId` string
      - `to` OptionLocationOutV1Dto
        - `name` string
        - `formattedAddress` string
        - `coordinates` OptionPlaceCoordinatesV1Dto
          - `lat` number, required
          - `lng` number, required
        - `googlePlaceId` string
        - `locationiqPlaceId` string
      - `departAt` string, date-time
      - `arriveAt` string, date-time
      - `durationHours` number
      - `durationMinutes` number
      - `roundTrip` boolean, required
      - `roundTripReturn` boolean
      - `outboundIncludesReturnCost` boolean
      - `returnTransportOptionKey` string
      - `totalCost` number
      - `notes` string
      - `link` string
      - `currency` string
      - `createdBy` UserInfoV1Dto
        - `email` string, required
        - `userId` string, required
        - `name` string, required
        - `avatar` string
        - `isCurrentUser` boolean
    - `selectedTransportOption` string
    - `gettingAroundOptions` GettingAroundOptionV1Dto[], required
      - `key` string, required
      - `type` 'walk' | 'publicTransport' | 'rideShare' | 'ownCar' | 'rentalCar' | 'ownMotor' | 'rentalMotor' | 'bike' | 'rentalBike' | 'other'
      - `totalCost` number
      - `currency` string
      - `notes` string
      - `link` string
      - `createdBy` UserInfoV1Dto
        - `email` string, required
        - `userId` string, required
        - `name` string, required
        - `avatar` string
        - `isCurrentUser` boolean
    - `selectedGettingAroundOption` string
    - `notes` string
  - `eventsToAttend` EventToAttendV1Dto[], required
    - `key` string, required
    - `name` string, required
    - `start` string, date-time
    - `end` string, date-time
    - `location` EventLocationV1Dto
      - `googlePlaceId` string
      - `name` string
      - `formattedAddress` string
      - `coordinates` EventLocationCoordinatesV1Dto
        - `lat` number, required
        - `lng` number, required
    - `eventType` string
    - `totalCost` number
    - `currency` string
    - `link` string
    - `notes` string
    - `userUploadedImageUrl` string: Photo of the place, shown on the map popup.
    - `selected` boolean, required
    - `createdBy` string
  - `createdAt` string, date-time, required
  - `updatedAt` string, date-time, required
  - `notes` string

## Other responses

- `400`: Unrecognisable dates.
- `404`: Trip or variant not found, or no edit access.

---

[API](https://skmtc.dev/mynextadventure/apis/mynextadventure-public-api.md) · [All operations](https://skmtc.dev/mynextadventure/apis/mynextadventure-public-api/llms.txt) · [OpenAPI document](https://skmtc.dev/mynextadventure/apis/mynextadventure-public-api/revisions/a246114e73a0?raw)
