# Catalog

The catalog is **read-only** over HTTP: a **READ** credential is enough. Use **API reference** for exact query names, enums, and response fields.

## Product groups vs products

- A **product group** is a family of merchandise Fleet exposes in the catalog (brand, category, imagery, marketing name, etc.).
- **Products** under a group are the **orderable variants**—different configurations, sizes, or options you can price and add to a cart. When you build a cart line, you point at a **product** id (`products.id`), not only the group.

So: **group** = shelf / family, **product** = the specific item you price and order.

## Why `delivery_country` appears everywhere

Catalog availability and pricing depend on **where hardware ships**. Listing groups, listing products in a group, and asking for a price all require (or strongly involve) a **delivery country** so Fleet can apply the right availability rules. The **API reference** spells out which query parameters are required for each GET.

## Filters on product groups

You can narrow product groups with optional dimensions such as **category**, **brand**, and **text search**—useful for building a storefront or internal picker without loading the entire catalog. Allowed category values and field meanings are enumerated in **API reference**.

## Pricing for one product

The pricing endpoint returns the **commercial terms** for a single catalog product: a principal **amount** (see OpenAPI for currency handling) plus **lower and upper bounds for shipping lead time** (`min_shipping` and `max_shipping`). Those bounds **depend on the delivery country** and, when Fleet requires a keyboard choice for that offer, on the **`keyboard_layout`** you pass in—different layouts can change logistics assumptions. Numeric units and nullability are defined in **API reference**.

## Keyboard layouts

When Fleet needs a keyboard choice for pricing or carts, the **catalog listing for a product group** can expose allowed **`keyboard_layout`** values for relevant rows (see **API reference** for how this appears on each product). Use the **same** string values in **cart lines** and **device** payloads where a layout is required—see the [Carts & orders](./carts-and-orders/) and [Devices](./devices/) guides.

## Next step

In the sidebar, open **API reference** and use the **Catalog** tag for URLs, query matrices, and JSON examples.