---
title: "Read merged appointment requirement for a stop"
method: GET
path: "/v1/shipper/shipment/{orderNumber}/appointment/{stop}"
tags: ["Shipper API"]
---

# Read merged appointment requirement for a stop

`GET /v1/shipper/shipment/{orderNumber}/appointment/{stop}`

## Request

- Base URL: `https://api.oway.io`
- URL: `https://api.oway.io/v1/shipper/shipment/{orderNumber}/appointment/{stop}`
- Auth: HTTP bearer and API key in header `x-oway-api-key`

Returns the effective AppointmentRequirement for one stop, computed as the merge of the place-level default and the order-level override using a "more-strict wins" rule. The `_merged` diagnostic block in the response shows per-field provenance (PLACE | ORDER | PLACE_AND_ORDER | NONE).

## Path parameters

- `orderNumber` string, required
- `stop` 'PICKUP' | 'DELIVERY', required

## Response `200`

Merged appointment requirement. Fields are null when neither place nor order has data for that field; `_merged` is always present and shows source of each field.

- AppointmentRequirementResponse: The effective (merged) appointment requirement for one stop, with per-field provenance in the _merged diagnostic.
  - `channel` 'PHONE' | 'EMAIL' | 'PORTAL': Channel for booking the appointment
  - `portalUrl` string: Portal URL when channel is PORTAL
  - `contacts` AppointmentContact[]: Contacts the carrier can use
    - `name` string, required: Contact name
    - `email` string, email: Email address
    - `phone` string: Phone in E.164 format
    - `role` string: Role of the contact at the facility
  - `instructions` string: Free-text instructions
  - `referenceNumbers` string[]: Reference numbers
  - `leadTimeHours` integer: Minimum advance notice in hours
  - `appointmentRequired` boolean: Whether the merged effective appointmentRequired is true (OR of place-level and order-level booleans).
  - `_merged` MergedDiagnostic: Per-field provenance for the merged appointment requirement. Tells the caller whether each field came from the place-level default, the order-level override, both, or neither.
    - `fields` object: Map of field name -> source. Field names: channel, portalUrl, contacts, instructions, referenceNumbers, leadTimeHours. Values: PLACE | ORDER | PLACE_AND_ORDER | NONE.

## Other responses

- `404`: Order does not exist or does not belong to your company.

---

[API](https://skmtc.dev/shipoway/apis/oway-shipper-api.md) - [All operations](https://skmtc.dev/shipoway/apis/oway-shipper-api/llms.txt) - [OpenAPI document](https://skmtc.dev/shipoway/apis/oway-shipper-api/revisions/35141ac5fb57?raw)
