Data Catalog
Browse entities, inspect fields, and manage data classes in your organization's data catalog. The catalog is the schema layer that powers datasets and workflow steps.
Quick Navigation
- What is the Data Catalog?
- Core Concepts
- How-To Guides
- List entities
- Get an entity by ID
- Batch lookup entities
- Get adjacent entities
- List data fields
- Get fields for an entity
- Get a single field
- Create a field on an entity
- Update a field
- Batch lookup fields by entity
- Update a field's data class
- Update field metadata
- Get field settings
- Update field settings
- List data classes
- Get a data class by ID
- Error responses
What is the Data Catalog?
The Data Catalog is the schema layer that describes the structure of your connected data sources. When you connect an integration (for example Salesforce or a database), Streamline discovers the tables, objects, or collections from that source and stores them as entities. Each entity contains data fields — the individual columns or properties — and every field can be tagged with a data class that describes the kind of data it holds (for example "Email Address" or "Phone Number").
You do not create catalog entries by hand. Catalog entities and fields are populated automatically when an integration syncs. Use the catalog APIs to browse what was discovered, inspect field details, and classify fields with data classes.
The catalog feeds into the rest of Streamline: datasets reference catalog entities and fields, and workflow steps such as Data Search and Deliver Data rely on the catalog to know which fields are available, searchable, and writable.
Core Concepts
Entities
An entity represents a single table, object, or collection discovered from a connected data source. Each entity has a display label, an optional descriptor, and a nativeIdentifier that matches the name at the source (for example a Salesforce object API name or a database table name). Entities belong to an integration and carry dataTags derived from their fields.
| name | type | description |
|---|---|---|
id | string (UUID) | Stable identifier for the entity. |
label | string | Display label (for example "Contacts"). |
descriptor | string | Longer description of the entity. |
nativeIdentifier | string | Original name at the source (for example Contact or accounts). |
organizationId | string (UUID) | Owning organization. |
integrationId | string (UUID) | Integration that discovered this entity. |
dataTags | array of string | Tags associated with this entity. |
createable | boolean | Whether new records can be added to this entity. |
hidden | boolean | When true, the entity is hidden from default listings. Default false. |
isFileEntity | boolean | When true, the entity represents a file-based source. Default false. |
createdAt | string (date-time) | When the entity was first cataloged. |
The JSON below shows a typical entity response.
{
"id": "e1b2c3d4-e5f6-7890-1234-567890abcdef",
"label": "Contacts",
"descriptor": "People associated with accounts",
"nativeIdentifier": "Contact",
"organizationId": "a1b2c3d4-e5f6-7890-1234-567890abcdef",
"integrationId": "i1b2c3d4-e5f6-7890-1234-567890abcdef",
"dataTags": ["pii", "crm"],
"createable": true,
"hidden": false,
"isFileEntity": false,
"createdAt": "2025-01-10T08:00:00Z"
}Data fields
A data field is a single column or property on an entity. Fields describe the data type (scalarType), whether the field can be searched, created, or updated at the source, and which data class (if any) has been assigned. Fields also carry an optional defaultValue and fieldMetadata for richer configuration such as picklist labels and values.
| name | type | description |
|---|---|---|
id | string (UUID) | Stable identifier for the field. |
entityId | string (UUID) | Entity this field belongs to. |
label | string | Display label (for example "Email Address"). |
descriptor | string | Longer description of the field. |
nativeIdentifier | string | Original name at the source (for example email_address). |
locator | string | Expression used to locate this field in the source data. |
scalarType | string | Data type (for example STRING, INTEGER, BOOLEAN, DATE). |
collectionType | string (enum) | ORDERED_LIST, UNORDERED_LIST, or null for scalar fields. |
searchable | boolean | Whether this field can be used in search filters. |
sortable | boolean | Whether this field can be used for sorting. |
createable | boolean | Whether a value can be provided when creating a record. |
updateable | boolean | Whether an existing value can be updated. |
nullable | boolean | Whether the field can be null. |
required | boolean | Whether the field must be provided in an insertion request. |
isPrimaryKey | boolean | Whether the field is part of the entity's primary key. |
hidden | boolean | Whether the field is hidden from default listings. |
isManaged | boolean | true when the field was added through the API rather than discovered at the source. |
dataClassId | string | ID of the assigned data class, if any. |
dataClassName | string | Name of the assigned data class. |
isDataClassOverridden | boolean | true when the data class was manually overridden from the auto-classified value. |
originalDataClassId | string | Original data class ID before an override. |
defaultValue | object | Default value configuration (see below). |
fieldMetadata | object | Extended metadata such as picklist labels and values. |
caseSensitivityCapability | string (enum) | How the source handles case sensitivity for searches on this field. |
organizationId | string (UUID) | Owning organization. |
createdAt | string (date-time) | When the field was first cataloged. |
Default values
The defaultValue object describes how a field is populated when no explicit value is given.
| name | type | description |
|---|---|---|
type | string | One of UNKNOWN, LITERAL, CURRENT_DATE, CURRENT_TIMESTAMP, or RANDOM_UUID. |
value | any | Evaluated value when static evaluation is possible. |
defaultExpression | string | Original expression that evaluates to the default value. |
Case sensitivity
The caseSensitivityCapability enum indicates how the source handles case when searching this field.
CASE_INSENSITIVE— searches ignore case with no performance penalty.CASE_INSENSITIVE_SLOW— case-insensitive searches are supported but may be slower.CASE_SENSITIVE_ONLY— searches are always case-sensitive.UNKNOWN— case behavior is not known.
Collection type
The collectionType enum indicates whether the field holds a single value or a collection.
ORDERED_LIST— the field contains an ordered list of values.UNORDERED_LIST— the field contains an unordered set of values.null— the field is a standard scalar (non-collection) field.
Data classes
A data class is a label that describes the kind of data a field holds — for example "Email Address," "Phone Number," or "Currency." When an integration syncs, Streamline auto-classifies fields using a machine-learning model. You can override the assigned class on any field if the automatic classification is not correct.
Data classes help with governance and presentation: workflow steps and the product UI use data classes to format values, apply validation, and flag sensitive data.
| name | type | description |
|---|---|---|
id | string | Stable identifier for the data class. |
name | string | Display name (for example "Email Address"). |
description | string | Longer explanation of what the class represents. |
category | string | Grouping category (for example "Contact Info"). |
version | string | Version of the data class definition. |
organizationId | string (UUID) | Owning organization. |
createdAt | string (date-time) | When the data class was created. |
updatedAt | string (date-time) | When the data class was last updated. |
How-To Guides
Let's explore common scenarios for working with the Data Catalog.
List entities
Use list entities to retrieve a paginated list of entities for your organization. You can filter by integration, label, or native identifier.
GET /v1/data-catalog/entity
| name | type | required | constraints | description |
|---|---|---|---|---|
integrationId | string (query) | no | UUID | Filter entities by integration. |
label | string (query) | no | — | Filter entities by label (fuzzy match). |
nativeIdentifier | string (query) | no | — | Filter entities by native identifier (exact match). |
showHidden | boolean (query) | no | default false | When true, include hidden entities in results. |
pageSize | integer (query) | no | 1–1000, default 10 | Number of items per page. |
pageNumber | integer (query) | no | 1-based, default 1 | Page number to return. |
sortFields | string (query) | no | default id | Field to sort results by. |
sortDirection | string (query) | no | ASC or DESC, default ASC | Sort direction. |
The response below shows a single-page result with one entity.
{
"content": [
{
"id": "e1b2c3d4-e5f6-7890-1234-567890abcdef",
"label": "Contacts",
"descriptor": "People associated with accounts",
"nativeIdentifier": "Contact",
"organizationId": "a1b2c3d4-e5f6-7890-1234-567890abcdef",
"integrationId": "i1b2c3d4-e5f6-7890-1234-567890abcdef",
"dataTags": ["pii", "crm"],
"createable": true,
"hidden": false,
"isFileEntity": false,
"createdAt": "2025-01-10T08:00:00Z"
}
],
"page": {
"size": 1,
"pageSize": 10,
"pageNumber": 1,
"totalElements": 1,
"totalPages": 1
}
}Get an entity by ID
Use get entity to retrieve a single entity.
GET /v1/data-catalog/entity/{entityId}
| name | type | required | constraints | description |
|---|---|---|---|---|
entityId | string (path) | yes | UUID | Entity to retrieve. |
{
"id": "e1b2c3d4-e5f6-7890-1234-567890abcdef",
"label": "Contacts",
"descriptor": "People associated with accounts",
"nativeIdentifier": "Contact",
"organizationId": "a1b2c3d4-e5f6-7890-1234-567890abcdef",
"integrationId": "i1b2c3d4-e5f6-7890-1234-567890abcdef",
"dataTags": ["pii", "crm"],
"createable": true,
"hidden": false,
"isFileEntity": false,
"createdAt": "2025-01-10T08:00:00Z"
}Batch lookup entities
Use batch lookup entities to retrieve multiple entities at once. Send an array of entity IDs in the request body and receive a map keyed by entity ID.
POST /v1/data-catalog/entity/batch
The request body is a JSON array of UUID strings.
["e1b2c3d4-e5f6-7890-1234-567890abcdef", "e2b2c3d4-e5f6-7890-1234-567890abcdef"]{
"e1b2c3d4-e5f6-7890-1234-567890abcdef": {
"id": "e1b2c3d4-e5f6-7890-1234-567890abcdef",
"label": "Contacts",
"descriptor": "People associated with accounts",
"nativeIdentifier": "Contact",
"organizationId": "a1b2c3d4-e5f6-7890-1234-567890abcdef",
"integrationId": "i1b2c3d4-e5f6-7890-1234-567890abcdef",
"dataTags": ["pii", "crm"],
"createable": true,
"createdAt": "2025-01-10T08:00:00Z"
},
"e2b2c3d4-e5f6-7890-1234-567890abcdef": {
"id": "e2b2c3d4-e5f6-7890-1234-567890abcdef",
"label": "Accounts",
"descriptor": "Company or organization records",
"nativeIdentifier": "Account",
"organizationId": "a1b2c3d4-e5f6-7890-1234-567890abcdef",
"integrationId": "i1b2c3d4-e5f6-7890-1234-567890abcdef",
"dataTags": ["crm"],
"createable": true,
"createdAt": "2025-01-12T09:30:00Z"
}
}A few things to note:
- The response is a map, not an array. Each key is the entity ID you requested.
- If an ID does not match any entity, that key will be absent from the response.
Get adjacent entities
Use get adjacent entities to discover which entities are connected to a given entity through relationships. This is useful when building traversal routes for datasets.
GET /v1/data-catalog/entity/{entityId}/adjacent
| name | type | required | constraints | description |
|---|---|---|---|---|
entityId | string (path) | yes | UUID | Entity whose adjacent connections you want to find. |
The response is an array of adjacent nodes, each containing the target entity ID and the relationships that connect the two entities. Field IDs in the response are normalized to the queried entity's perspective: sourceFieldId is the field on the queried entity, and targetFieldId is the field on the adjacent entity.
[
{
"targetEntityId": "e2b2c3d4-e5f6-7890-1234-567890abcdef",
"relationships": [
{
"linkId": "l1b2c3d4-e5f6-7890-1234-567890abcdef",
"linkRelationship": [
{
"sourceFieldId": "f1b2c3d4-e5f6-7890-1234-567890abcdef",
"targetFieldId": "f5b2c3d4-e5f6-7890-1234-567890abcdef"
}
]
}
]
}
]List data fields
Use list data fields to retrieve a paginated list of fields across all entities. You can filter by entity or label.
GET /v1/data-catalog/data-fields
| name | type | required | constraints | description |
|---|---|---|---|---|
entityId | string (query) | no | UUID | Filter fields by entity. |
label | string (query) | no | — | Filter fields by label text. |
showHiddenFields | boolean (query) | no | default false | When true, include hidden fields in results. |
pageSize | integer (query) | no | 1–1000, default 50 | Number of items per page. |
pageNumber | integer (query) | no | 1-based, default 1 | Page number to return. |
sortFields | string (query) | no | default id | Field to sort results by. |
sortDirection | string (query) | no | ASC or DESC, default ASC | Sort direction. |
The response below shows a single field.
{
"content": [
{
"id": "f1b2c3d4-e5f6-7890-1234-567890abcdef",
"entityId": "e1b2c3d4-e5f6-7890-1234-567890abcdef",
"label": "Email Address",
"descriptor": "Primary email for the contact",
"nativeIdentifier": "email",
"locator": "email",
"scalarType": "STRING",
"collectionType": null,
"searchable": true,
"sortable": true,
"createable": true,
"updateable": true,
"nullable": true,
"required": false,
"isPrimaryKey": false,
"hidden": false,
"isManaged": false,
"dataClassId": "dc-email-001",
"dataClassName": "Email Address",
"isDataClassOverridden": false,
"organizationId": "a1b2c3d4-e5f6-7890-1234-567890abcdef",
"createdAt": "2025-01-10T08:00:00Z"
}
],
"page": {
"size": 1,
"pageSize": 50,
"pageNumber": 1,
"totalElements": 1,
"totalPages": 1
}
}Get fields for an entity
Use get entity fields to retrieve all fields that belong to a specific entity. Unlike the paginated list above, this returns the full array for the entity.
GET /v1/data-catalog/entity/{entityId}/data-fields
| name | type | required | constraints | description |
|---|---|---|---|---|
entityId | string (path) | yes | UUID | Entity whose fields to retrieve. |
showHiddenFields | boolean (query) | no | default false | When true, include hidden fields in results. |
[
{
"id": "f1b2c3d4-e5f6-7890-1234-567890abcdef",
"entityId": "e1b2c3d4-e5f6-7890-1234-567890abcdef",
"label": "Email Address",
"nativeIdentifier": "email",
"scalarType": "STRING",
"searchable": true,
"sortable": true,
"createable": true,
"updateable": true,
"nullable": true,
"required": false,
"isPrimaryKey": false,
"hidden": false,
"isManaged": false,
"dataClassId": "dc-email-001",
"dataClassName": "Email Address",
"isDataClassOverridden": false,
"organizationId": "a1b2c3d4-e5f6-7890-1234-567890abcdef",
"createdAt": "2025-01-10T08:00:00Z"
},
{
"id": "f2b2c3d4-e5f6-7890-1234-567890abcdef",
"entityId": "e1b2c3d4-e5f6-7890-1234-567890abcdef",
"label": "First Name",
"nativeIdentifier": "first_name",
"scalarType": "STRING",
"searchable": true,
"sortable": true,
"createable": true,
"updateable": true,
"nullable": true,
"required": false,
"isPrimaryKey": false,
"hidden": false,
"isManaged": false,
"organizationId": "a1b2c3d4-e5f6-7890-1234-567890abcdef",
"createdAt": "2025-01-10T08:00:00Z"
}
]This endpoint returns a plain array — not a paginated envelope. Use it when you need every field for a known entity.
Get a single field
Use get field to retrieve one field by its entity and field IDs.
GET /v1/data-catalog/entity/{entityId}/data-fields/{fieldId}
| name | type | required | constraints | description |
|---|---|---|---|---|
entityId | string (path) | yes | UUID | Entity that owns the field. |
fieldId | string (path) | yes | UUID | Field to retrieve. |
{
"id": "f1b2c3d4-e5f6-7890-1234-567890abcdef",
"entityId": "e1b2c3d4-e5f6-7890-1234-567890abcdef",
"label": "Email Address",
"descriptor": "Primary email for the contact",
"nativeIdentifier": "email",
"locator": "email",
"scalarType": "STRING",
"collectionType": null,
"searchable": true,
"sortable": true,
"createable": true,
"updateable": true,
"nullable": true,
"required": false,
"isPrimaryKey": false,
"hidden": false,
"isManaged": false,
"dataClassId": "dc-email-001",
"dataClassName": "Email Address",
"isDataClassOverridden": false,
"caseSensitivityCapability": "CASE_INSENSITIVE",
"organizationId": "a1b2c3d4-e5f6-7890-1234-567890abcdef",
"createdAt": "2025-01-10T08:00:00Z"
}Create a field on an entity
Use create entity field to add a field to an entity. Fields created through the API are intended for use in workflows when the source does not provide a needed column natively.
POST /v1/data-catalog/entity/{entityId}/data-fields
| name | type | required | constraints | description |
|---|---|---|---|---|
entityId | string (path) | yes | UUID | Entity to add the field to. |
Send a field object in the request body. At minimum, provide label and scalarType.
{
"label": "Preferred Language",
"descriptor": "Language preference for communications",
"scalarType": "STRING",
"createable": true,
"updateable": true,
"nullable": true
}The response returns the created field with its generated id.
{
"id": "f3b2c3d4-e5f6-7890-1234-567890abcdef",
"entityId": "e1b2c3d4-e5f6-7890-1234-567890abcdef",
"label": "Preferred Language",
"descriptor": "Language preference for communications",
"scalarType": "STRING",
"searchable": false,
"createable": true,
"updateable": true,
"nullable": true,
"isManaged": false,
"organizationId": "a1b2c3d4-e5f6-7890-1234-567890abcdef",
"createdAt": "2025-06-15T14:00:00Z"
}The API always sets
searchabletofalseanddiscoveredValuesto an empty array on created fields, regardless of what you send in the request body.
Update a field
Use update field to replace a field's definition. This is a full replacement (PUT), so include all properties you want to retain.
PUT /v1/data-catalog/entity/{entityId}/data-fields/{fieldId}
| name | type | required | constraints | description |
|---|---|---|---|---|
entityId | string (path) | yes | UUID | Entity that owns the field. |
fieldId | string (path) | yes | UUID | Field to update. |
{
"label": "Preferred Language",
"descriptor": "Updated description — language for outbound emails",
"scalarType": "STRING",
"createable": true,
"updateable": true,
"nullable": true
}The response returns the updated field.
Validation rules:
- You cannot update a managed field. Attempting to do so returns a
400with codeDATA-CAT-ILLEGAL-UPDATE. - You cannot set
isManagedtotrueon an update request.
Batch lookup fields by entity
Use batch lookup fields to retrieve fields grouped by entity ID for multiple entities at once. Send an array of entity IDs and receive a map where each key is an entity ID and each value is the array of fields for that entity.
POST /v1/data-catalog/data-fields/batch
| name | type | required | constraints | description |
|---|---|---|---|---|
showHiddenFields | boolean (query) | no | default false | When true, include hidden fields in results. |
["e1b2c3d4-e5f6-7890-1234-567890abcdef", "e2b2c3d4-e5f6-7890-1234-567890abcdef"]{
"e1b2c3d4-e5f6-7890-1234-567890abcdef": [
{
"id": "f1b2c3d4-e5f6-7890-1234-567890abcdef",
"entityId": "e1b2c3d4-e5f6-7890-1234-567890abcdef",
"label": "Email Address",
"nativeIdentifier": "email",
"scalarType": "STRING",
"searchable": true,
"isManaged": false,
"organizationId": "a1b2c3d4-e5f6-7890-1234-567890abcdef"
}
],
"e2b2c3d4-e5f6-7890-1234-567890abcdef": [
{
"id": "f4b2c3d4-e5f6-7890-1234-567890abcdef",
"entityId": "e2b2c3d4-e5f6-7890-1234-567890abcdef",
"label": "Account Name",
"nativeIdentifier": "name",
"scalarType": "STRING",
"searchable": true,
"isManaged": false,
"organizationId": "a1b2c3d4-e5f6-7890-1234-567890abcdef"
}
]
}Update a field's data class
Use update data class on field to override the auto-classified data class for a specific field. After this call, the field's isDataClassOverridden will be true and originalDataClassId will preserve the previous value.
PUT /v1/data-catalog/entity/{entityId}/data-fields/{fieldId}/data-class-id
| name | type | required | constraints | description |
|---|---|---|---|---|
entityId | string (path) | yes | UUID | Entity that owns the field. |
fieldId | string (path) | yes | UUID | Field to reclassify. |
{
"dataClassId": "dc-phone-001"
}The response returns the updated field with the new dataClassId, isDataClassOverridden set to true, and the previous class preserved in originalDataClassId.
{
"id": "f1b2c3d4-e5f6-7890-1234-567890abcdef",
"entityId": "e1b2c3d4-e5f6-7890-1234-567890abcdef",
"label": "Phone",
"nativeIdentifier": "phone",
"scalarType": "STRING",
"dataClassId": "dc-phone-001",
"dataClassName": "Phone Number",
"isDataClassOverridden": true,
"originalDataClassId": "dc-text-001",
"isManaged": false,
"organizationId": "a1b2c3d4-e5f6-7890-1234-567890abcdef",
"createdAt": "2025-01-10T08:00:00Z"
}Update field metadata
Use update field metadata to set or replace extended metadata on a field — for example, picklist labels and values.
POST /v1/data-catalog/entity/{entityId}/data-fields/{fieldId}/metadata
| name | type | required | constraints | description |
|---|---|---|---|---|
entityId | string (path) | yes | UUID | Entity that owns the field. |
fieldId | string (path) | yes | UUID | Field to update metadata on. |
The request body is a fieldMetadata object. The labelsAndValuesConfig property is required. The example below sets up a picklist with two options.
{
"labelsAndValuesConfig": {
"expandable": false,
"labelAndValues": [
{
"label": "Active",
"value": "active",
"valueManaged": true
},
{
"label": "Inactive",
"value": "inactive",
"valueManaged": true
}
]
}
}A few things to note:
labelsAndValuesConfigis required in the metadata object. Within it,expandableandlabelAndValuesare both required.- Each item in
labelAndValuesrequireslabel,value, andvalueManaged. - You can include a
translationsmap on each item for multi-language support. - The metadata object also supports
dateTimeOffsetConfig(for datetime fields) withstoreStrategyanddefaultOffset.
The response returns the full updated field, including the new fieldMetadata.
Get field settings
Use get field settings to retrieve all effective settings for a data field. The effective value is either a user-provided override or the default derived from field metadata.
GET /v1/data-catalog/entity/{entityId}/data-fields/{fieldId}/settings
| name | type | required | constraints | description |
|---|---|---|---|---|
entityId | string (path) | yes | UUID | Entity that owns the field. |
fieldId | string (path) | yes | UUID | Field to get settings for. |
The response is a map of setting type to effective value. Settings that are not applicable to the field's type are omitted. Currently supported setting types are datetime-strategy (for DATETIME fields) and collection-field (for STRING scalar fields).
{
"datetime-strategy": {
"storeStrategy": "UTC_ONLY",
"defaultOffset": "+00:00",
"allowedStrategies": ["UTC_ONLY", "DYNAMIC_OFFSET"]
}
}Update field settings
Use update field settings to apply multiple settings to a data field in a single request.
PATCH /v1/data-catalog/entity/{entityId}/data-fields/{fieldId}/settings
| name | type | required | constraints | description |
|---|---|---|---|---|
entityId | string (path) | yes | UUID | Entity that owns the field. |
fieldId | string (path) | yes | UUID | Field to update settings for. |
The request body is a map of setting type to configuration. Only settings included in the payload are modified. Set a key to null to remove a previously saved override (reverts to default from metadata).
{
"datetime-strategy": {
"storeStrategy": "DYNAMIC_OFFSET",
"defaultOffset": "-05:00"
}
}{
"collection-field": {
"delimiter": ","
}
}A few things to note:
- All changes are applied atomically. If any setting fails validation, the entire transaction rolls back.
datetime-strategycontrols how datetime values with timezone offsets are stored. Applicable only to DATETIME fields.storeStrategymust beUTC_ONLYorDYNAMIC_OFFSET.defaultOffsetmust match the format+HH:MMor-HH:MM.collection-fieldmarks a STRING scalar field as containing delimited collection data.delimitermust be exactly one character.- A
403response indicates the setting is not applicable to the field's type.
List data classes
Use list data classes to retrieve all data classes available in your organization. These are the classification labels you can assign to fields.
GET /v1/data-catalog/data-class
| name | type | required | constraints | description |
|---|---|---|---|---|
pageSize | integer (query) | no | 1–100, default 50 | Number of items per page. |
pageNumber | integer (query) | no | 1-based, default 1 | Page number to return. |
sortFields | string (query) | no | default id | Field to sort by. |
sortDirection | string (query) | no | ASC or DESC, default ASC | Sort direction. |
{
"content": [
{
"id": "dc-email-001",
"name": "Email Address",
"description": "An email address field",
"category": "Contact Info",
"version": "1.0",
"organizationId": "a1b2c3d4-e5f6-7890-1234-567890abcdef",
"createdAt": "2025-01-01T00:00:00Z",
"updatedAt": "2025-01-01T00:00:00Z"
},
{
"id": "dc-phone-001",
"name": "Phone Number",
"description": "A phone number field",
"category": "Contact Info",
"version": "1.0",
"organizationId": "a1b2c3d4-e5f6-7890-1234-567890abcdef",
"createdAt": "2025-01-01T00:00:00Z",
"updatedAt": "2025-01-01T00:00:00Z"
}
],
"page": {
"size": 2,
"pageSize": 50,
"pageNumber": 1,
"totalElements": 2,
"totalPages": 1
}
}Get a data class by ID
Use get data class to retrieve a single data class.
GET /v1/data-catalog/data-class/{id}
| name | type | required | constraints | description |
|---|---|---|---|---|
id | string (path) | yes | — | Data class to retrieve. |
{
"id": "dc-email-001",
"name": "Email Address",
"description": "An email address field",
"category": "Contact Info",
"version": "1.0",
"organizationId": "a1b2c3d4-e5f6-7890-1234-567890abcdef",
"createdAt": "2025-01-01T00:00:00Z",
"updatedAt": "2025-01-01T00:00:00Z"
}Error responses
Errors use an ErrorEnvelope shape with a top-level message, a traceId for support, and an errors array with per-error details. Each error in the array has a code, title, and detail.
When an entity or field does not exist, you will receive a 404:
{
"message": "No entity found with the specified ID",
"traceId": "abc12345def67890",
"errors": [
{
"code": "DATA-CAT-RESOURCE-NOT-FOUND",
"title": "Resource Not Found",
"detail": "No entity found with the specified ID"
}
]
}When a field update violates a validation rule (for example, trying to update a managed field), you will receive a 400:
{
"message": "Will not update field with ID: f1b2c3d4-... Field is managed.",
"traceId": "abc12345def67890",
"errors": [
{
"code": "DATA-CAT-ILLEGAL-UPDATE",
"title": "Illegal Update Exception",
"detail": "Will not update field with ID: f1b2c3d4-... Field is managed."
}
]
}When a request body fails validation, you will receive a 400:
{
"message": "Request body failed validation",
"traceId": "abc12345def67890",
"errors": [
{
"code": "DATA-CAT-VALIDATION-FAILED",
"title": "Validation Failed",
"detail": "Request body failed validation"
}
]
}Updated about 5 hours ago
