# Mixin Schemas

## Mixin Schemas

Emporix Commerce Engine provides an extensibility mechanism that allows you to customize the platform adjusting it to the customers needs. The mixin schemas concept allows you to easily extend the data model so that you can boost default objects with customer-specific fields.

{% hint style="info" %}

* Looking for code tutorials? Check out [Schema Service](https://app.gitbook.com/s/d4POTWomuSS7d3dnh4Dg/api-guides/utilities/schema/schema).
* Looking for API reference? Check out the [Schema Service](https://app.gitbook.com/s/d4POTWomuSS7d3dnh4Dg/api-guides/utilities/schema) in the Emporix API Reference.
  {% endhint %}

## Purpose

To meet customer-specific requirements, it is sometimes necessary to extend the default entities and provide additional information. The mixin schemas feature offers a simple and centralized way of adding customized fields to different objects that provide more industry-specific context.\
The customized fields are displayed in the Management Dashboard and can be managed from there.

### Overview video

{% embed url="<https://www.youtube.com/embed/qV_ZfFc9MMg?si=NElVFjmTY7VbnE-z&rel=0&showinfo=0&autohide=1>" %}

The diagram shows in a nutshell how creating a schema works:

<figure><img src="https://3057647601-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbTY7EwZtYYQYC6GOcdTj%2Fuploads%2Fgit-blob-6ee1979be56dd6ebb07339d279b7f923b7307ab3%2Fmixin_schemas_process.svg?alt=media" alt=""><figcaption></figcaption></figure>

## Features

Mixin schemas come with a few features that make the management of customized schemas easier:

| Feature                                                    | Description                                                                                                                                                                                                           |
| ---------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Management Dashboard support for all relevant entities** | Manage the additional fields easily ensuring that the data is consistent.                                                                                                                                             |
| **Supported entities**                                     | Define and generate data schemas for the following entities: cart, category, classification, company, coupon, customer, customer address, custom entity, order, price list, product, quote, return, site, and vendor. |
| **Management Dashboard supported types**                   | Add fields of the following types: array, boolean, date, date\_time, decimal, enum, number, object, text, and time.                                                                                                   |
| **Upload of json files to create schemas**                 | Define a schema with customized fields by uploading a json file that defines the data model you need. The json file is validated during the upload reducing the errors number.                                        |
| **Different versions per entity**                          | Extend a basic schema by individual fields per entity and maintain valid versions of their schemas.                                                                                                                   |
| **Unassign mixin schema**                                  | Control which mixin schemas are assigned to the entities to ensure consistency. With unassign feature, the backend users can define which version is the current one for which object.                                |
| **Localization**                                           | Provide translations for the custom specific sections, descriptive fields and define if a field itself should be translated into multiple languages.                                                                  |

{% hint style="info" %}
To learn about the service and see how it works, see the following documentation:

* Management Dashboard User Guide — [Mixin Schema Guide](https://developer.emporix.io/ce/management-dashboard/settings/mixin-schemas)
* Developer Guide — [Schema Service Tutorial](https://app.gitbook.com/s/d4POTWomuSS7d3dnh4Dg/api-guides/utilities/schema/schema)
* API Reference — [Schema Service](https://app.gitbook.com/s/d4POTWomuSS7d3dnh4Dg/api-guides/utilities/schema)
  {% endhint %}
