---
title: "Retrieve a package item choice"
method: GET
path: "/shop/packages/{packageId}/item-choices/{itemChoiceId}"
tags: ["Packages"]
---

# Retrieve a package item choice

`GET /shop/packages/{packageId}/item-choices/{itemChoiceId}`

Returns a single `PackageItemChoice` belonging to the given
`Package`, including the full option list and any configured
start-time rules.

## Response `200`

A single `PackageItemChoice` on a `Package`.

- object
  - `data` PackageItemChoice, required
    - `id` string, required — The ID of this choice.
    - `allocation` object, required
      - `amount` integer, required
      - `revenue_centre` string, required
    - `allow_overlaps` boolean, required — Allow this choice to overlap with other items when `prevent_choice_overlaps` is enabled on the package.
    - `auto_select_timeslot` boolean, required — Whether a timeslot should be automatically selected for this choice
    - `choice_configuration` object, required — Any additional configuration for this choice.
    - `description` string, required — A description of this choice.
    - `hide_times` boolean, required — Whether to hide times for this choice from customers
    - `name` string, required — A name for this choice.
    - `max_options` integer, nullable, required — The maximum number of options that may be chosen.
    - `min_options` integer, nullable, required — The minimum number of options that must be chosen.
    - `offering_type` 'appointment' | 'product' | 'session', required — The type of offerings included in this choice.
    - `option_budget` integer, required — The budget that this package allows for options in this choice. Each option will use its standalone price, and the overall package price will be increased if the total exceeds the budget.
    - `optional` boolean, required — Whether this item choice should be optional.
    - `options` PackageItemChoiceOption[], required — An array of options to make up this choice.
      - `id` string, required — Identifier of the offering this option points at — an `AppointmentType`, `SessionType` or retail `Product`, depending on `item_type`. The guest sees the offering's name and image when picking this option in the storefront.
      - `item_type` string, required — The type of item this option represents.
      - `offering` PackageShopOffering, required
        - `id` string, required — The ID of the offering
        - `categories` object[]
          - `id` string, required — The ID of the category
          - `name` string, required — The name of the category
        - `currency` string, required — The currency code for the price
        - `description` string, required — The name of the offering
        - `discounted_price_from` integer — If set, a discounted 'price from' that applies to the current customer
        - `duration` integer — The duration of the offering in minutes
        - `durations` integer[]
        - `external_id` string, nullable, required — An external identifier for this offering.
        - `has_availability` boolean — Whether there is availability for the offering on the requested date.
        - `image` Media
          - `id` string, uuid, required — Unique identifier of the uploaded media item, returned from `createMedia`. Pass this ID into any field that accepts a media reference (logos, hero images, product images, etc.).
          - `file_name` string, required — Original filename of the uploaded asset, preserved as provided at upload time. Used for display in the media library and as a hint when serving downloads.
          - `mime_type` string, required — The mime type of the media item.
          - `original_url` string, required — The url of the media resource.
          - `size` integer, required — The size of the media item in bytes.
          - `url` string, required — The url of the converted media resource.
        - `max_guests` integer — The maximum guests this offering is for
        - `min_guests` integer — The minimum guests this offering is for
        - `name` string, required — The name of the offering
        - `next_available_date` string, date — The next available date if there is no availability on the given date
        - `price_from` integer — The minimum price of the offering on the given date
        - `price_to` integer — The maximum price of the offering on the given date
        - `type` string — Identifies the type of this model
      - `price_change` integer, nullable, required — A currency amount that this option would increase the package price by.
    - `start_time_rules` PackageChoiceStartTimeRule[], required — An array of rules determining the start times that should be allowed for this choice.
      - `absolute_time_from` string, nullable, required — The earliest allowed start time.
      - `absolute_time_to` string, nullable, required — The latest allowed start time.
      - `relative_mins_from` integer, nullable, required — The minimum number of minutes from the relative base point that should be allowed.
      - `relative_mins_to` integer, nullable, required — The maximum number of minutes from the relative base point that should be allowed.
      - `relative_to` 'first_item_start', nullable, required — The base time that a relative start time should be calculated from.
      - `type` 'relative' | 'absolute', required — The type of the rule.
    - `visible` boolean, required — Whether this item choice should be visible to the customer.

## Other responses

- `401` — The user is unauthenticated
- `403` — The authenticated user does not have permission.
- `404` — The resource couldn't be found

---

[API](https://skmtc.dev/try/apis/trybe-api.md) · [All operations](https://skmtc.dev/try/apis/trybe-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/try/trybe-api/revisions/f37f92702da5/schema)
