---
title: "Update appointment milestones"
method: PUT
path: "/services/appointments/v1/appointment/{appointmentId}/milestones"
tags: ["Milestones"]
---

# Update appointment milestones

`PUT /services/appointments/v1/appointment/{appointmentId}/milestones`

## Request

- Base URL: `https://na12.api.project44.com`
- URL: `https://na12.api.project44.com/services/appointments/v1/appointment/{appointmentId}/milestones`
- Auth: OAuth 2
  - Client credentials
  - Token URL: `/api/v4/oauth2/token`
- TypeScript: <https://skmtc.dev/project44/apis/project44-rest-api/docs/services/appointments/v1/appointment/:appointmentId/milestones/put.ts> (a function with typed inputs; its response is checked against the schema)

Update milestones for a specific appointment

## Path parameters

- `appointmentId` integer, required

## Request body

- MilestonesSchema
  - `milestones` object[]
    - `event` 'ARRIVED' | 'START' | 'END' | 'DEPARTED' | 'CHECKED_IN' | 'CHECKED_OUT': Type of milestone event
    - `scheduledDateTime` string, date-time: Scheduled date and time for the milestone
    - `actualDateTime` string, date-time: Actual date and time when the milestone occurred

## Response `200`

Milestones updated successfully

- AppointmentsResponse
  - `appointment` Appointment
    - `appointmentId` integer: Unique identifier for the appointment
    - `scheduleStartDateTime` string, date-time: Scheduled start date and time for the appointment
    - `scheduleEndDateTime` string, date-time: Scheduled end date and time for the appointment
    - `slotDurationInMinutes` integer: Duration of the appointment slot in minutes
  - `location` YmsLocation
    - `identifier` string[]: External identifiers for the site
    - `siteCode` string: Code identifying the site
    - `siteName` string: Human-readable name of the site
  - `milestones` Milestones[]
    - `actualDateTime` string, date-time: Actual date and time when the milestone occurred
    - `event` 'ARRIVED' | 'START' | 'END' | 'DEPARTED' | 'CHECKED_IN' | 'CHECKED_OUT': Type of milestone event
    - `scheduledDateTime` string, date-time: Scheduled date and time for the milestone
  - `status` string: Status of the operation
  - `yardShipment` YardShipment
    - `carrier` string: Name of the carrier
    - `cabNo` string: Cab number
    - `customer` string: Customer name
    - `comment` string: Additional comments
    - `commodity` string: Type of commodity
    - `id` string: Unique identifier for the shipment
    - `loadType` 'live' | 'drop': Type of load
    - `licensePlateNo` string: License plate number
    - `loadInformation` LoadInformation[]
      - `productType` string: Type of product
      - `quantity` integer: Quantity of the product
      - `sku` string: Stock keeping unit
    - `orderIds` string[]: List of order IDs
    - `pallets` integer: Number of pallets
    - `reference1` string: Primary reference number
    - `reference2` string: Secondary reference number
    - `serviceType` 'pickup' | 'delivery': Type of service
    - `status` string: Current status of the shipment
    - `trailer` string: Trailer number
    - `units` integer: Number of units
    - `vendor` string: Vendor name
    - `weight` integer: Weight in pounds

## Other responses

- `400`: Bad request - Invalid milestone data
- `401`: Unauthorized
- `403`: Forbidden
- `404`: Appointment not found

---

[API](https://skmtc.dev/project44/apis/project44-rest-api.md) - [All operations](https://skmtc.dev/project44/apis/project44-rest-api/llms.txt) - [OpenAPI document](https://skmtc.dev/project44/apis/project44-rest-api/revisions/cdf9675e2294?raw)
