# The variant model

Source: https://developers.swell.is/backend-api/variants/the-variant-model

## Fields

- `id` (objectId, auto): Unique identifier for the variant.
- `name` (string, required): Human-friendly name of the variant. Defaults to the combined name of all options, for example "Blue, Large" in the case of 2 options; color and size.
- `parent_id` (objectId, required): ID of the parent product.
- `active` (boolean): An active variant is visible to customers in a storefront. Otherwise it will be hidden from view. Default: `false`.
- `archived` (boolean): A variant is automatically archived when it has been sold in the past and product options are changed in a way that would cause the variant to be removed.
- `attributes` (object): An object containing custom attribute values. Overrides product attributes. See [attributes](https://developers.swell.is/frontend-api/attributes) for more details.
- `code` (string): Unique code to identify the gift card variant.
- `cost` (currency): Cost of goods used to calculate gross margins. Overrides parent product `cost`.
- `currency` (string): Three-letter [ISO currency code](https://www.iso.org/iso-4217-currency-codes.html) in uppercase. Defaults to store's base currency.
- `date_created` (date, auto): Date and time the variant was created.
- `date_updated` (date, auto): Date and time the variant was last updated.
- `images` (array of object): List of images depicting the variant.
  - `id` (objectId, auto): Unique identifier for the object.
  - `caption` (string): A brief description of the image.
  - `file` (object): An object representing the image file.
    - `id` (objectId): Unique identifier for the file.
    - `content_type` (string): MIME content type of the file.
    - `data` (filedata): A reference to the raw file data.
    - `date_uploaded` (date): Date the file was uploaded.
    - `filename` (string): Optional file name.
    - `height` (int): Image height in pixels, if applicable.
    - `length` (int): Size of the file in bytes.
    - `md5` (string): An MD5 hash of the file contents. This can be used to uniquely identify the file for caching purposes.
    - `url` (string): A public URL to reference the file. Updated automatically if file content changes.
    - `width` (int): Image width in pixels, if applicable.
    - `private` (boolean): Indicates the image is not visible to customers.
    - `metadata` (object): Arbitrary image data, typically used to store custom values. See Frontend API for more details.
- `option_value_ids` (array of child_scalar): List of option value IDs that constitute the variant.
- `orig_price` (currency): Reflects the non-sale price of the product
- `parent` (Product): Expandable link to the parent product.
- `price` (currency): List price used by default when `sale=false` or `sale_price` is not defined. Overrides parent product `price`.
- `prices` (array of object): Price rules to override `price` and `sale_price` when conditions match quantity or account group in a cart. Overrides parent product `prices`.
  - `price` (currency, required): Price applied when conditions are met.
  - `account_group` (string): Customer account group as a condition to apply price.
  - `quantity_max` (int): Maximum quantity as a condition to apply price.
  - `quantity_min` (int): Minimum quantity as a condition to apply price.
  - `discount_percent` (float)
- `purchase_options` (object): Purchase options available for the product variant.
  - `standard` (object): Designates purchase option as a one-time purchase.
    - `price` (currency): List price used by default when `sale=false` or `sale_price` is not defined. Overrides product price.
    - `sale` (boolean): Indicates whether the product option is on sale. If `true`, the `sale_price` will be used by default when the product is added to a cart.
    - `sale_price` (currency): Sale price used by default when `sale=true`, overriding `price`. Overrides product sale price.
    - `prices` (array of object): Price rules determined by cart quantity or customer account group. Overrides `price` and `sale_price` when conditions match.
      - `price` (currency, required): Price applied when conditions are met.
      - `account_group` (string): Customer account group as a condition to apply price.
      - `quantity_max` (int): Maximum quantity as a condition to apply price.
      - `quantity_min` (int): Minimum quantity as a condition to apply price.
      - `discount_percent` (float)
    - `orig_price` (currency)
- `sale` (boolean): Indicates the variant is on sale and`sale_price` is used by default when the product is added to a cart. Overrides parent product `sale`.
- `sale_price` (currency): Sale price used by default when `sale=true`, overriding `price`. Overrides parent product `sale_price`.
- `shipment_weight` (float): If specified, shipping is calculated based on this shipping weight. Otherwise, it will assume 1 lb/oz/kg depending on your default weight unit. Overrides parent product `shipment_weight`.
- `sku` (string): Stock keeping unit (SKU) used to track inventory in a warehouse.
- `stock` (Stock): Expandable list of stock adjustments for the variant.
- `stock_level` (int): Current in-stock quantity of the variant, based on the sum of [stock](https://developers.swell.is/backend-api/stock) entries.
- `stock_level_in_locations` (int): Total stock level of the variant across inventory locations.
- `stock_locations` (object): Stock distributed over inventory locations, if multi-location inventory is enabled.
- `subscription_interval` (enum): The default billing interval when this product is used as a subscription plan. Can be `monthly`, `yearly`, `weekly` or `daily`. Possible values: `monthly`, `daily`, `weekly`, `yearly`.
- `subscription_interval_count` (int): Multiplier when combined with `subscription_interval`. For example, to make a subscription bill every 2 weeks, set `subscription_interval=weekly` and `subscription_interval_count=2`.
- `subscription_trial_days` (int): Number of days offered as a free trial before the customer is billed. If a subscription is canceled by the last day of the trial period, an invoice won't be issued.

## Example response

```json
{
  "id": "60f199509111e70000000067",
  "name": "Medium",
  "parent_id": "60f199509111e70000000069",
  "active": true,
  "archived": false,
  "attributes": {
    "example": true
  },
  "currency": "USD",
  "date_created": "2021-07-16T14:36:00.333Z",
  "date_updated": "2021-07-16T14:36:00.333Z",
  "images": [
    {
      "id": "5ca24abb9c077817e5fe2b37",
      "caption": "Just a variant",
      "file": {
        "id": "5ca24abb9c077817e5fe2b38",
        "length": 66764,
        "md5": "99194f53bfdea832553e7fa8ae8fd80f",
        "content_type": "image/png",
        "url": "http://cdn.swell.store/test/5ca24abb9c077817e5fe2b36/99194f53bfdea832553e7fa8ae8fd80f",
        "width": 940,
        "height": 600
      }
    }
  ],
  "option_value_ids": [
    "59764b54e68ba2330390319a"
  ],
  "price": 18.99,
  "sale": false,
  "sale_price": null,
  "sku": "EX2001",
  "stock_level": 6
}
```
