---
title: "Products Model"
description: "Use GET /products to discover products across businesses. The public operation is Product.all; it does not declare operation-level authentication."
canonical: https://docs.ordering.co/api-reference/guides/products-model/
---

# Products Model

Use `GET /products` to discover products across businesses. The public operation is `Product.all`; it does not declare operation-level authentication.

Product lookup follows one of two paths:

- Without `order_type_id` or `type`, it delegates to the general product listing behavior.
- With a fulfillment type, it evaluates availability through businesses, delivery zones, menus, schedules, and product state.

## Availability parameters

- `timestamp` is interpreted as a Unix timestamp when present.
- `location` uses `LAT,LNG` and must contain exactly two numeric values.
- `dropdown_option_id` or `dropdownoption` can select a configured delivery-zone option instead of coordinates.
- `order_type_id` or `type` selects the fulfillment mode.
- `professional_id` can scope products for professional assignments.
- `groupBy=business` changes the result from products to matching businesses in the availability branch.

Fulfillment modes include:

| Value | Mode                |
| ----- | ------------------- |
| `1`   | `delivery`          |
| `2`   | `pickup`            |
| `3`   | `eatin`             |
| `4`   | `curbside`          |
| `5`   | `driver_thru`       |
| `6`   | `seat_delivery`     |
| `7`   | `catering_delivery` |
| `8`   | `catering_pickup`   |
| `9`   | `reservation`       |

Fields such as `offer_rate`, `offer_rate_type`, and `offer_include_options` belong to the product model; they are not query parameters for `GET /products`.

The Product model contains many additional catalog, inventory, pricing, SEO, dietary, and operational fields. Use sparse projections and operation-specific schemas instead of treating this guide as a complete response contract.

## Schema properties

**Schema:** `Product`

| Name                        | Type                    | Description |
| --------------------------- | ----------------------- | ----------- |
| `allergens`                 | object \| array \| null | —           |
| `barcode`                   | string \| null          | —           |
| `barcode_alternative`       | string \| null          | —           |
| `calories`                  | number \| null          | —           |
| `category_id`               | integer \| null         | —           |
| `cost_offer_price`          | number \| null          | —           |
| `cost_price`                | number \| null          | —           |
| `created_at`                | string \| null          | —           |
| `deleted_at`                | string \| null          | —           |
| `description`               | string \| null          | —           |
| `dietary_tags`              | object \| array \| null | —           |
| `duration`                  | any                     | —           |
| `enabled`                   | boolean \| null         | —           |
| `estimated_person`          | integer \| null         | —           |
| `external_id`               | integer \| null         | —           |
| `featured`                  | boolean \| null         | —           |
| `fee_id`                    | integer \| null         | —           |
| `hide_special_instructions` | boolean \| null         | —           |
| `id`                        | integer \| null         | —           |
| `images`                    | string \| null          | —           |
| `in_offer`                  | boolean \| null         | —           |
| `inventoried`               | boolean \| null         | —           |
| `is_alcohol`                | boolean \| null         | —           |
| `is_hidden`                 | boolean \| null         | —           |
| `load_type`                 | string \| null          | —           |
| `maximum_per_order`         | integer \| null         | —           |
| `minimum_per_order`         | integer \| null         | —           |
| `name`                      | string \| null          | —           |
| `offer_include_options`     | boolean \| null         | —           |
| `offer_price`               | number \| null          | —           |
| `offer_rate`                | number \| null          | —           |
| `offer_rate_type`           | integer \| null         | —           |
| `price`                     | number \| null          | —           |
| `quantity`                  | integer \| null         | —           |
| `rank`                      | number \| null          | —           |
| `seo_description`           | string \| null          | —           |
| `seo_image`                 | string \| null          | —           |
| `seo_keywords`              | string \| null          | —           |
| `seo_title`                 | string \| null          | —           |
| `sku`                       | string \| null          | —           |
| `slug`                      | string \| null          | —           |
| `snooze_until`              | any                     | —           |
| `tax_id`                    | integer \| null         | —           |
| `type`                      | any                     | —           |
| `updated_at`                | string \| null          | —           |
| `upselling`                 | boolean \| null         | —           |
| `weight`                    | number \| null          | —           |
| `weight_unit`               | string \| null          | —           |
