Data Product Types
Every data product carries a type (source-aligned, aggregate, application, data consumer, ...). An organization owner configures the types under Settings → Customization → Data Product Types. The built-in types can be enabled or disabled, given an icon, ordered, and one of them is the default; their wording (label, description, examples) is fixed in every language. On top of them, the owner adds types of the organization's own, such as "Derived Data Product", with a label, description and examples per language (with translations, and AI translation when an AI model is configured). One switch decides how a type of your own behaves: Can have output ports. Checked, it is a data product that publishes data through output ports and contracts; unchecked, it only consumes data, like the built-in data consumer. The switch locks once data products use the type. The application and AI agent behaviors exist only as built-in types.
A type's id is stored on every data product of that type (the type custom property of ODPS documents) and is used by filters, saved filters and the API. It never changes once created, so relabelling a type does not touch any data product.
Behaviors
The behavior of a type decides everything the platform does differently per type; it never depends on the id, so you can add types with ids of your own.
| Behavior | Output ports and contracts | Data Product Score | Creation form | Marketplace start page |
|---|---|---|---|---|
data-product | Yes, can provide contracts | Port and contract rules apply | Data product | Listed by default |
application | Yes, can provide contracts | Port and contract rules apply | Application | Hidden by default |
data-consumer | No | Port and contract rules skipped | Data consumer | Hidden by default |
ai-agent | No | Port and contract rules skipped, AI context rule applies | AI agent | Hidden by default |
The two Power BI types (powerbi-report, powerbi-semanticmodel) are system types: they are created by the asset import, are not offered when adding a data product, and cannot be edited.
Fields of a type
| Field | Description |
|---|---|
| Id | Lowercase letters, digits and hyphens ([a-z0-9][a-z0-9-]{0,63}). Immutable once created. |
| Can have output ports | Checked, the type is a data product; unchecked, a data consumer. Fixed for built-in types (they keep their built-in behavior), locked while data products use the type. |
| Label | Fixed for the built-in types (the platform's wording in every language). For a type of your own: the value in the organization's default language plus optional translations, as in the semantic concept editor (with AI translation when an AI model is configured). A language without a translation falls back to the default language. |
| Description | One line under the label in the type picker. Fixed for built-in types; optional and translatable for your own types. |
| Examples | An italic line of examples, e.g. "Examples: reports, dashboards". Fixed for built-in types; optional and translatable for your own types. |
| Icon | Picked from the same icon set as a data product's icon. Empty uses the behavior's default icon. |
| Enabled | Offered when adding a data product or changing its type. A disabled type is still resolved for the data products that carry it and still appears in filters. |
| Marketplace start page | Whether data products of this type are listed on the marketplace start page. |
| Default | Preselected in the type picker when adding a data product, and given to data products created by importing assets (other than Power BI semantic models and reports, which become the system types). Exactly one enabled type is the default. |
The list order is the order of the type picker, the type filters and the group headers on team pages.
Built-in types
An organization without own definitions runs on the built-in list: source-aligned (default), aggregate, consumer-aligned, application, dataconsumer and ai-agent, translated into every supported language. The settings page shows this list; editing, reordering or adding a type copies it into the organization's own definitions. Restore defaults discards them again.
Data products whose type id has no definition (imported values, legacy ids) keep working: the id is shown as its own label, it behaves as a data product, and the settings page lists it as Used, not defined with a Define action that turns it into a type of your own.
Disabling a type
Clear Enabled on a type to take it out of the type picker and the edit dropdown. Existing data products keep it, and filters still list it. At least one type stays enabled. A type of your own can be deleted while no data product uses it; built-in types can only be disabled.
API
The same list is available at /api/settings/dataproduct-types as JSON or YAML, for organizations that keep configuration in git. GET returns the effective list, including the system types, a read-only behavior (data-product, application, data-consumer, ai-agent, ...) and a builtIn flag while the organization has no own definitions. PUT replaces the whole list; system types in the body are ignored, and labels, descriptions, examples and outputPorts sent for a built-in id are ignored as well.
dataProductTypes:
- id: source-aligned
labels:
en: Source-aligned Data Product
de: Quellenorientiertes Data Product
descriptions:
en: Minimally transformed data, close to the operational source.
default: true
- id: derived
labels:
en: Derived Data Product
de: Abgeleitetes Data Product
descriptions:
en: Calculated, aggregated or integrated from other data products.
examples:
en: "Examples: KPIs, balances from transactions, joined customer views"
- id: external-report
outputPorts: false
labels:
en: External Report
icon: report
showOnMarketplaceHome: false
- id: dataconsumer
enabled: false
curl -H "x-api-key: $API_KEY" -H "Accept: application/yaml" https://app.entropy-data.com/api/settings/dataproduct-types
curl -X PUT -H "x-api-key: $API_KEY" -H "Content-Type: application/yaml" --data-binary @dataproduct-types.yaml https://app.entropy-data.com/api/settings/dataproduct-types
A list that fails validation (duplicate ids, two defaults, no enabled type, a change of outputPorts on a type in use) is rejected with 422 and nothing is written.
Migrating from the customization YAML
Before this page existed, the type standard property under dataProduct.root in the customization YAML could restrict and relabel the type dropdown with an enum. That enum is deprecated. While an organization has no own type definitions it still applies: its values are the enabled types, in enum order, and the first one is the default. Its labels only apply to ids that are not built in. As soon as the organization saves a type on this page, the page's definitions win; remove the enum then.