# Interfaces

### Attribute

An attribute represents a type of value that can be assigned to a product.

Fields:

| code                                                                                               | [**AttributeCode!**](https://docs.ergonode.com/graphql/overview/scalars#attributecode)            | Readable id of `Attribute`.                                                  |
| -------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------- |
| name (languages: [**\[Language!\]**](https://docs.ergonode.com/graphql/overview/scalars#language)) | [**\[TranslatedString!\]!**](https://docs.ergonode.com/graphql/overview/objects#translatedstring) | Translatable name allowing to set different values in every active language. |
| scope                                                                                              | [**AttributeScope!**](https://docs.ergonode.com/graphql/overview/enums#attributescope)            | Scope of `Attribute` determining its values behavior.                        |
| metadata                                                                                           | [**\[Metadatum!\]!**](https://docs.ergonode.com/graphql/overview/objects#metadatum)               | Metadata allows describing the `Attribute` in an enhanced, custom way.       |

Implemented by:

* [**DateAttribute**](https://docs.ergonode.com/graphql/overview/objects#dateattribute)
* [**FileAttribute**](https://docs.ergonode.com/graphql/overview/objects#fileattribute)
* [**GalleryAttribute**](https://docs.ergonode.com/graphql/overview/objects#galleryattribute)
* [**ImageAttribute**](https://docs.ergonode.com/graphql/overview/objects#imageattribute)
* [**MultiSelectAttribute**](https://docs.ergonode.com/graphql/overview/objects#multiselectattribute)
* [**NumericAttribute**](https://docs.ergonode.com/graphql/overview/objects#numericattribute)
* [**OptionAttribute**](#optionattribute)
* [**PriceAttribute**](https://docs.ergonode.com/graphql/overview/objects#priceattribute)
* [**ProductRelationAttribute**](https://docs.ergonode.com/graphql/overview/objects#productrelationattribute)
* [**SelectAttribute**](https://docs.ergonode.com/graphql/overview/objects#selectattribute)
* [**TextareaAttribute**](https://docs.ergonode.com/graphql/overview/objects#textareaattribute)
* [**TextAttribute**](https://docs.ergonode.com/graphql/overview/objects#textattribute)
* [**UnitAttribute**](https://docs.ergonode.com/graphql/overview/objects#unitattribute)

### AttributeValue

Represents a value defining a specific attribute.

Fields:

| translations (languages: [**\[Language!\]**](https://docs.ergonode.com/graphql/overview/scalars#language)) | [**\[AttributeValueTranslation!\]!**](#attributevaluetranslation) | A value translations.                        |
| ---------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------- | -------------------------------------------- |
| attribute                                                                                                  | [**Attribute!**](#attribute)                                      | An `Attribute` describing the type of value. |

Implemented by:

* [**DateAttributeValue**](https://docs.ergonode.com/graphql/overview/objects#dateattributevalue)
* [**FileAttributeValue**](https://docs.ergonode.com/graphql/overview/objects#fileattributevalue)
* [**GalleryAttributeValue**](https://docs.ergonode.com/graphql/overview/objects#galleryattributevalue)
* [**ImageAttributeValue**](https://docs.ergonode.com/graphql/overview/objects#imageattributevalue)
* [**MultiSelectAttributeValue**](https://docs.ergonode.com/graphql/overview/objects#multiselectattributevalue)
* [**NumericAttributeValue**](https://docs.ergonode.com/graphql/overview/objects#numericattributevalue)
* [**PriceAttributeValue**](https://docs.ergonode.com/graphql/overview/objects#priceattributevalue)
* [**ProductRelationAttributeValue**](https://docs.ergonode.com/graphql/overview/objects#productrelationattributevalue)
* [**SelectAttributeValue**](https://docs.ergonode.com/graphql/overview/objects#selectattributevalue)
* [**TextareaAttributeValue**](https://docs.ergonode.com/graphql/overview/objects#textareaattributevalue)
* [**TextAttributeValue**](https://docs.ergonode.com/graphql/overview/objects#textareaattributevalue)
* [**UnitAttributeValue**](https://docs.ergonode.com/graphql/overview/objects#unitattributevalue)

### AttributeValueTranslation

Represents a translated attribute value for language.

Fields:

| language | [**Language!**](https://docs.ergonode.com/graphql/overview/scalars#language) | A language of a translation. |
| -------- | ---------------------------------------------------------------------------- | ---------------------------- |

Implemented by:

* [**DateAttributeValueTranslation**](https://docs.ergonode.com/graphql/overview/objects#dateattributevaluetranslation)
* [**FileAttributeValueTranslation**](https://docs.ergonode.com/graphql/overview/objects#fileattributevaluetranslation)
* [**GalleryAttributeValueTranslation**](https://docs.ergonode.com/graphql/overview/objects#galleryattributevaluetranslation)
* [**ImageAttributeValueTranslation**](https://docs.ergonode.com/graphql/overview/objects#imageattributevaluetranslation)
* [**MultiSelectAttributeValueTranslation**](https://docs.ergonode.com/graphql/overview/objects#multiselectattributevaluetranslation)
* [**NumericAttributeValueTranslation**](https://docs.ergonode.com/graphql/overview/objects#numericattributevaluetranslation)
* [**PriceAttributeValueTranslation**](https://docs.ergonode.com/graphql/overview/objects#priceattributevaluetranslation)
* [**ProductRelationAttributeValueTranslation**](https://docs.ergonode.com/graphql/overview/objects#productrelationattributevaluetranslation)
* [**SelectAttributeValueTranslation**](https://docs.ergonode.com/graphql/overview/objects#selectattributevaluetranslation)
* [**TextareaAttributeValueTranslation**](https://docs.ergonode.com/graphql/overview/objects#textareaattributevaluetranslation)
* [**TextAttributeValueTranslation**](https://docs.ergonode.com/graphql/overview/objects#textattributevaluetranslation)
* [**UnitAttributeValueTranslation**](https://docs.ergonode.com/graphql/overview/objects#unitattributevaluetranslation)

### CustomField

A custom field represents a type of value that can be assigned to an attribute option.

Fields:

| code | [**CustomFieldCode!**](https://docs.ergonode.com/graphql/overview/scalars#customfieldcode) | Readable id of `CustomField`. |
| ---- | ------------------------------------------------------------------------------------------ | ----------------------------- |

Implemented by:

* [**ImageCustomField**](https://docs.ergonode.com/graphql/overview/objects#imagecustomfield)
* [**TextareaCustomField**](https://docs.ergonode.com/graphql/overview/objects#textareacustomfield)
* [**TextareaRTECustomField**](https://docs.ergonode.com/graphql/overview/objects#textareartecustomfield)
* [**TextCustomField**](https://docs.ergonode.com/graphql/overview/objects#textcustomfield)

### CustomFieldTranslatedValue

Represents a value defining a specific `CustomField` in specific language only.

Fields:

| customField | [**CustomField!**](#customfield) | A `CustomField` describing the type of value. |
| ----------- | -------------------------------- | --------------------------------------------- |

Implemented by:

* [**ImageCustomFieldTranslatedValue**](https://docs.ergonode.com/graphql/overview/objects#imagecustomfieldtranslatedvalue)
* [**TextareaCustomFieldTranslatedValue**](https://docs.ergonode.com/graphql/overview/objects#textareacustomfieldtranslatedvalue)
* [**TextareaRTECustomFieldTranslatedValue**](https://docs.ergonode.com/graphql/overview/objects#textareartecustomfieldtranslatedvalue)
* [**TextCustomFieldTranslatedValue**](https://docs.ergonode.com/graphql/overview/objects#textcustomfieldtranslatedvalue)

### CustomFieldValue

Represents a value defining a specific `CustomField`.

Fields:

| customField                                                                                                | [**CustomField!**](#customfield)                                      | A `CustomField` describing the type of value. |
| ---------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------- | --------------------------------------------- |
| translations (languages: [**\[Language!\]**](https://docs.ergonode.com/graphql/overview/scalars#language)) | [**\[CustomFieldValueTranslation!\]!**](#customfieldvaluetranslation) | A value translations.                         |

Implemented by:

* [**ImageCustomFieldValue**](https://docs.ergonode.com/graphql/overview/objects#imagecustomfieldvalue)
* [**TextareaCustomFieldValue**](https://docs.ergonode.com/graphql/overview/objects#textareacustomfieldvalue)
* [**TextareaRTECustomFieldValue**](https://docs.ergonode.com/graphql/overview/objects#textareartecustomfieldvalue)
* [**TextCustomFieldValue**](https://docs.ergonode.com/graphql/overview/objects#textcustomfieldvalue)

### CustomFieldValueTranslation

Represents a translated custom field value for language.

Fields:

| language | [**Language!**](https://docs.ergonode.com/graphql/overview/scalars#language) | A language of a translation. |
| -------- | ---------------------------------------------------------------------------- | ---------------------------- |

Implemented by:

* [**ImageCustomFieldValueTranslation**](https://docs.ergonode.com/graphql/overview/objects#imagecustomfieldvaluetranslation)
* [**TextareaCustomFieldValueTranslation**](https://docs.ergonode.com/graphql/overview/objects#textareacustomfieldvaluetranslation)
* [**TextareaRTECustomFieldValueTranslation**](https://docs.ergonode.com/graphql/overview/objects#textareartecustomfieldvaluetranslation)
* [**TextCustomFieldValueTranslation**](https://docs.ergonode.com/graphql/overview/objects#textcustomfieldvaluetranslation)

### OptionAttribute

An attribute with a predefined set of values(options).

Implements:

* [**Attribute**](#attribute)

Fields:

| optionList (after: [**String**](https://docs.ergonode.com/graphql/overview/scalars#string), first: [**Int**](https://docs.ergonode.com/graphql/overview/scalars#int)) | [**OptionConnection!**](#optionconnection) | <p>A list of options of an <code>Attribute</code>.<br><code>first</code> argument cannot be lesser than 0 and higher than 200. The default value is 50.</p> |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------- |
| customFields                                                                                                                                                          | [**\[CustomField!\]!**](#customfield)      | Configured attribute custom fields.                                                                                                                         |

Implemented by:

* [**MultiSelectAttribute**](https://docs.ergonode.com/graphql/overview/objects#multiselectattribute)
* [**SelectAttribute**](https://docs.ergonode.com/graphql/overview/objects#selectattribute)

### Product

Fields:

| sku                                                                                                                                                                                                                                                                         | [**Sku!**](https://docs.ergonode.com/graphql/overview/scalars#sku)                                                | sku                                                                                                                                              |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------ |
| categoryList (after: [**String**](https://docs.ergonode.com/graphql/overview/scalars#string), first: [**Int**](https://docs.ergonode.com/graphql/overview/scalars#int))                                                                                                     | [**CategoryConnection!**](https://docs.ergonode.com/graphql/overview/objects#categoryconnection)                  | <p>A list of categories <code>Product</code> belongs to.<br><code>first</code> argument cannot be lesser than 0 and its default value is 50.</p> |
| template                                                                                                                                                                                                                                                                    | [**Template!**](https://docs.ergonode.com/graphql/overview/objects#template)                                      | Template of `Product`.                                                                                                                           |
| attributeList (after: [**String**](https://docs.ergonode.com/graphql/overview/scalars#string), first: [**Int**](https://docs.ergonode.com/graphql/overview/scalars#int), codes: [**\[AttributeCode!\]**](https://docs.ergonode.com/graphql/overview/scalars#attributecode)) | [**AttributeValueConnection!**](https://docs.ergonode.com/graphql/overview/objects#attributevalueconnection)      | <p>A list of <code>Attribute</code> values.<br><code>first</code> argument cannot be lesser than 0 and its default value is 50.</p>              |
| status                                                                                                                                                                                                                                                                      | [**\[ProductStatusTranslation!\]!**](https://docs.ergonode.com/graphql/overview/objects#productstatustranslation) | Status of `Product`.                                                                                                                             |
| createdAt                                                                                                                                                                                                                                                                   | [**DateTime!**](https://docs.ergonode.com/graphql/overview/scalars#datetime)                                      | Creation date.                                                                                                                                   |
| editedAt                                                                                                                                                                                                                                                                    | [**DateTime**](https://docs.ergonode.com/graphql/overview/scalars#datetime)                                       | Last edition date.                                                                                                                               |

Implemented by:

* [**GroupingProduct**](https://docs.ergonode.com/graphql/overview/objects#groupingproduct)
* [**SimpleProduct**](https://docs.ergonode.com/graphql/overview/objects#simpleproduct)
* [**VariableProduct**](https://docs.ergonode.com/graphql/overview/objects#variableproduct)
