> ## Documentation Index
> Fetch the complete documentation index at: https://learn.orbexa.io/llms.txt
> Use this file to discover all available pages before exploring further.

# ACP product data object field specification

> ACP Product object complete field specification — detailed reference for Product, Variant, Price, Media, Availability, and Category fields.

# Product Data Format

ACP's product data model has two layers: **Product** (the item) and **Variant** (specific SKUs). Each Product must contain at least one Variant.

## 2.1 Feed Header (Data Source Identifier)

Every data file or API call must include a Feed Header identifying the data source:

| Field             | Type   | Required | Description                                           |
| ----------------- | ------ | -------- | ----------------------------------------------------- |
| `feed_id`         | string | Yes      | Unique identifier for the data feed                   |
| `account_id`      | string | Yes      | Merchant account ID                                   |
| `target_merchant` | string | Yes      | Target merchant identifier                            |
| `target_country`  | string | Yes      | Target country (ISO 3166-1 alpha-2, e.g., "US", "GB") |

## 2.2 Product Object

| Field         | Type        | Required | Description                                                                 |
| ------------- | ----------- | -------- | --------------------------------------------------------------------------- |
| `id`          | string      | Yes      | Unique product identifier — **must remain stable throughout its lifecycle** |
| `title`       | string      | No       | Product title                                                               |
| `description` | Description | No       | Product description (supports multiple formats)                             |
| `url`         | URI string  | No       | Product page URL                                                            |
| `media`       | Media\[]    | No       | Product images/videos                                                       |
| `variants`    | Variant\[]  | **Yes**  | At least 1 variant                                                          |

**ID stability**: Product IDs must remain unchanged throughout their entire lifecycle. Changing an ID causes ChatGPT to lose all historical data and recommendation records for that product.

## 2.3 Variant Object

Each Variant represents a specific configuration of a product (e.g., a color/size combination):

| Field             | Type             | Required | Description                                              |
| ----------------- | ---------------- | -------- | -------------------------------------------------------- |
| `id`              | string           | Yes      | Unique variant identifier, must be stable                |
| `title`           | string           | Yes      | Variant title                                            |
| `description`     | Description      | No       | Variant-specific description                             |
| `url`             | URI string       | No       | Variant-specific page URL                                |
| `barcodes`        | Barcode\[]       | No       | Barcodes (GTIN, etc.)                                    |
| `price`           | Price            | No       | Current selling price                                    |
| `list_price`      | Price            | No       | Original / strikethrough price                           |
| `unit_price`      | UnitPrice        | No       | Unit price (by weight/volume, etc.)                      |
| `availability`    | Availability     | No       | Stock status                                             |
| `categories`      | Category\[]      | No       | Product categories                                       |
| `condition`       | string\[]        | No       | Product condition: `new` or `secondhand`                 |
| `variant_options` | VariantOption\[] | No       | Specification options (color, size, etc.)                |
| `media`           | Media\[]         | No       | Variant-specific images (first one is the primary image) |
| `seller`          | Seller           | No       | Seller information (for marketplace merchants)           |

## 2.4 Price Object

All prices use **ISO 4217 minor currency units** (cents):

```json theme={null}
{
  "amount": 7999,
  "currency": "USD"
}
```

| Field      | Type    | Required | Constraint                                          |
| ---------- | ------- | -------- | --------------------------------------------------- |
| `amount`   | integer | Yes      | Greater than or equal to 0, in minor currency units |
| `currency` | string  | Yes      | ISO 4217 three-letter code (e.g., "USD", "EUR")     |

**Note**: \$79.99 is represented as `7999` in ACP. Japanese yen and other zero-decimal currencies use the face value directly.

## 2.5 Description Object

Provide at least one format. Plain text is recommended:

| Field      | Type   | Description                     |
| ---------- | ------ | ------------------------------- |
| `plain`    | string | Plain text format (recommended) |
| `html`     | string | HTML format                     |
| `markdown` | string | Markdown format                 |

## 2.6 Availability Object

| Field       | Type    | Values                                                                  |
| ----------- | ------- | ----------------------------------------------------------------------- |
| `available` | boolean | true/false                                                              |
| `status`    | string  | `in_stock` / `backorder` / `preorder` / `out_of_stock` / `discontinued` |

**Delisting a product**: Set `is_eligible_search=false` or omit the product from the next full catalog snapshot.

## 2.7 Media Object

| Field      | Type       | Required                 |
| ---------- | ---------- | ------------------------ |
| `type`     | string     | Yes (`image` or `video`) |
| `url`      | URI string | Yes                      |
| `alt_text` | string     | No                       |
| `width`    | integer    | No (pixels)              |
| `height`   | integer    | No (pixels)              |

**The first image is the primary image**: In the media array, the first entry with `type: "image"` will be used as the primary image displayed by ChatGPT.

## 2.8 Category Object

| Field      | Type   | Description                                                               |
| ---------- | ------ | ------------------------------------------------------------------------- |
| `value`    | string | Category name                                                             |
| `taxonomy` | string | Classification system: `merchant` / `google_product_category` / `shopify` |

Supported classification systems:

* **merchant**: Merchant-defined custom categories
* **google\_product\_category**: Google Product Category standard
* **shopify**: Shopify category standard

## 2.9 VariantOption Object

Used to describe user-facing specification dimensions of a variant:

```json theme={null}
{
  "name": "Color",
  "value": "Black"
}
```

Common options: Color, Size, Material, Capacity, etc.

## 2.10 Seller Object (for Marketplace Merchants)

| Field   | Type    | Description          |
| ------- | ------- | -------------------- |
| `name`  | string  | Seller name          |
| `links` | Link\[] | Seller-related links |

The Link object `type` enum: `privacy_policy` / `terms_of_service` / `refund_policy` / `shipping_policy` / `faq`

**Use durable public URLs**: Seller links must be stable, long-lived public URLs.

## 2.11 Barcode Object

```json theme={null}
{
  "type": "gtin",
  "value": "0123456789012"
}
```

## 2.12 Complete Product Example

```json theme={null}
{
  "id": "prod_running_shoe_001",
  "title": "Classic Running Shoe",
  "description": {
    "plain": "Lightweight running shoe designed for daily training and short-distance races"
  },
  "url": "https://store.example.com/products/running-shoe-001?utm_medium=feed",
  "media": [
    {
      "type": "image",
      "url": "https://store.example.com/images/shoe-main.jpg",
      "alt_text": "Classic Running Shoe front view"
    }
  ],
  "variants": [
    {
      "id": "var_shoe_001_black_10",
      "title": "Classic Running Shoe - Black Size 10",
      "price": {
        "amount": 7999,
        "currency": "USD"
      },
      "list_price": {
        "amount": 9999,
        "currency": "USD"
      },
      "availability": {
        "available": true,
        "status": "in_stock"
      },
      "variant_options": [
        { "name": "Color", "value": "Black" },
        { "name": "Size", "value": "10" }
      ],
      "categories": [
        { "value": "Running Shoes", "taxonomy": "google_product_category" },
        { "value": "Athletic/Running Shoes", "taxonomy": "merchant" }
      ],
      "barcodes": [
        { "type": "gtin", "value": "0123456789012" }
      ]
    }
  ]
}
```

***

**Next chapter**: [File Upload Integration](/en/book-4/ch3-file-upload) — SFTP push specifications, file format requirements, and sharding strategy
