Catalog API Endpoints for Data Catalog
- free
- growth
- enterprise
25 minute read
This guide covers the Data Catalog API endpoints for:
- Managing data catalog events
- Managing data catalog properties
- Managing data catalog categories
- Managing custom data types
Prerequisites
- Generate a workspace-level Service Access Token in the RudderStack dashboard with the following permissions to manage Data Catalog and Tracking Plans:
- For testing or development purposes only: Generate a Personal Access Token with Read-Write role
RudderStack recommends using a workspace-level Service Access Token for authentication.
Any action authenticated by a Personal Access Token will break if the user is removed from the organization or a breaking change is made to their permissions.
Token permissions for legacy RBAC system
If you are on the legacy Permissions Management (RBAC) system, your workspace-level Service Access Token should have Admin permissions.
See this documentation for more information on generating the token.

Authentication
The Data Catalog API uses Bearer authentication in the following format:
Authorization: Bearer <SERVICE_ACCESS_TOKEN>
Base URL
Use the base URL for your API requests depending on your region:
Manage data catalog events
This section covers the API endpoints for creating and managing events in your data catalog.
Create new event
Request body
track events onlyNote the following:
- The name must be between 3 and 65 characters and should start with a letter.
- It must contain only letters, numbers, underscores, commas, spaces, dashes, and dots.
- Do not include this parameter for non-
trackevents likeidentify,page,orgroup, as it will result in an error.
Note that the description must be between 3 and 2000 characters and should start with a letter.
Note that:
- Once set, the event type cannot be updated later.
- Allowed event types are
track,identify,group,page, andscreen.
Example request
Example response
{
"name": "Product Viewed",
"description": "User viewed a product.",
"eventType": "track",
"categoryId": null,
"workspaceId": "1hitizAoFT91DD6rfFhBjiTex3e",
"createdBy": "2KDKycoVHAOLttVvzBiqw12O3Hr",
"id": "ev_2gqmsfib1Zl6n6QL0mjCi9PJbDS",
"createdAt": "2024-05-23T03:08:09.972Z",
"updatedAt": "2024-05-23T03:08:09.972Z"
}
Response codes
| Code | Description |
|---|---|
| 200 | Event is created successfully. |
| 400 | Invalid request. |
List all events
Query parameters
Order the events list by a specific field.
Allowed fields are name, createdAt, updatedAt. For example, name:asc.
Note:
- This parameter must be a positive integer.
- The API returns a maximum of 50 pages.
Example request
Example response
{
"data": [{
"id": "ev_2g60ZQeit5D54rBHUUh0oK3IxzH",
"name": "Order Placed",
"description": "User placed an order.",
"eventType": "track",
"categoryId": null,
"workspaceId": "1hitizAoFT91DD6rfFhBjiTex3e",
"createdBy": "1zirfVbEQN0zIImR235a1JivVYU",
"updatedBy": null,
"createdAt": "2024-05-06T13:39:34.294Z",
"updatedAt": "2024-05-06T13:39:34.294Z"
},
....
{
"id": "ev_2dJfRK8t0hOmmAaCTc0VvMB36e1",
"name": "Product Added to Cart",
"description": "User added product to cart.",
"eventType": "track",
"categoryId": null,
"workspaceId": "1hitizAoFT91DD6rfFhBjiTex3e",
"createdBy": "1zirfVbEQN0zIImR235a1JivVYU",
"updatedBy": "1zirfVbEQN0zIImR235a1JivVYU",
"createdAt": "2024-03-06T13:18:12.044Z",
"updatedAt": "2024-05-13T11:39:40.115Z"
},
],
"total": 3563,
"currentPage": 1,
"pageSize": 50
}
Response codes
| Code | Description |
|---|---|
| 200 | All events in the data catalog are retrieved successfully. |
The response body contains the below fields:
| Field | Type | Description |
|---|---|---|
data | Array | Contains all the events in the data catalog. |
total | Number | Total number of entries in the response. |
currentPage | Number | Current page number being viewed (starts from 1). |
pageSize | Number | Maximum number of items displayed per page. |
Get event by ID
Path parameters
Example request
Example response
{
"id": "ev_2dJfRQIZLrBhqdLoLoxywHpicLp",
"name": "Product Viewed",
"description": "User viewed a product.",
"eventType": "track",
"categoryId": null,
"workspaceId": "1hitizAoFT91DD6rfFhBjiTex3e",
"createdBy": "1zirfVbEQN0zIImR235a1JivVYU",
"updatedBy": "2KDKycoVHAOLttVvzBiqw12O3Hr",
"createdAt": "2024-03-06T13:18:12.044Z",
"updatedAt": "2024-05-22T14:57:50.265Z",
"category": null
}
Response codes
| Code | Description |
|---|---|
| 200 | All events in the data catalog are retrieved successfully. |
| 404 | Event not found for the specified event ID. |
Update event
Changes to events are applied immediately. However, it may take a couple of minutes for all dependent tracking plans to reflect these updates.
Path parameters
Request body
To update an event in the data catalog, at least one of the following parameters is required:
Note that:
- The name must be between 3 and 65 characters and should start with a letter.
- It must contain only letters, numbers, underscores, commas, spaces, dashes, and dots.
- Do not include this parameter for non-
trackevents likeidentify,page,orgroup, as it will result in an error.
Note that the description must be between 3 and 2000 characters and should start with a letter.
Example request
Example response
{
"name": "Product Viewed Again",
"description": "User revisited a product on the website.",
"categoryId": null
}
Response codes
| Code | Description |
|---|---|
| 200 | Event is updated successfully. |
| 404 | Event not found for the specified event ID. |
Delete event
You cannot delete an event that is connected to a tracking plan. Use the Delete event from tracking plan API to disconnect the event and then try deleting it.
Path parameters
Example request
Example response
{
"name": "Product Purchased",
"description": "User purchased a product on the website.",
"eventType": "track",
"categoryId": null,
"workspaceId": "1hitizAoFT91DD6rfFhBjiTex3e",
"createdBy": "2KDKycoVHAOLttVvzBiqw12O3Hr",
"updatedBy": null,
"createdAt": "2024-05-22T14:59:14.287Z",
"updatedAt": "2024-05-22T14:59:14.287Z"
}
Response codes
| Code | Description |
|---|---|
| 200 | Event is deleted from the catalog successfully. |
| 404 | Event not found for the specified event ID. |
Manage data catalog properties
This section covers the API endpoints for creating and managing properties in your data catalog.
Create new property
Request body
Note that the name must be between 1 and 65 characters.
Note that the description must be between 3 and 2000 characters and should start with a letter.
Note that:
- The data type must be either string, integer, number, object, array, boolean, null, or multi data type.
- If not explicitly set, RudderStack allows all the above data types for the property, by default.
RudderStack supports multi data type for the
typeparameter. An example is shown:{ "type": ["string", "integer", "boolean", "null"] }
Keyword validations
The API validates the data types for the various keywords defined in the propConfig parameter and gives an error if you pass an invalid value for any field.
See this FAQ for more information on the type-specific keywords supported by RudderStack.
For example, if you pass the propConfig object as follows:
{
"type": "string",
...
"propConfig": {
"maxLength": "4", // String instead of a number.
"title": 45 // Number instead of a string
}
}
Then, you will get the below error:
{
"error": "max length must be an integer, title must be a string"
}
Example request
Example response
{
"name": "amount",
"description": "Amount for the product",
"type": "number",
"propConfig": {
"multipleOf": 2
},
"workspaceId": "1hitizAoFT91DD6rfFhBjiTex3e",
"createdBy": "2KDKycoVHAOLttVvzBiqw12O3Hr",
"id": "prop_2gqpkKg1GtHWKR8JtNChoKsqhIK",
"createdAt": "2024-05-23T03:31:43.297Z",
"updatedAt": "2024-05-23T03:31:43.297Z"
}
Response codes
| Code | Description |
|---|---|
| 200 | Property is created successfully. |
| 400 | Invalid request. |
List all properties
Path parameters
Order the properties list by a specific field.
Allowed fields are name, createdAt, updatedAt. For example, name:asc.
Note:
- This parameter must be a positive integer.
- The API returns a maximum of 50 pages.
Example request
Example response
{
"data": [{
"id": "prop_2dJfRQ233WrPRpWBPqbF4PuiMc0",
"name": "affiliation",
"description": "Product affiliation",
"type": "string",
"workspaceId": "1hitizAoFT91DD6rfFhBjiTex3e",
"createdBy": "1zirfVbEQN0zIImR235a1JivVYU",
"updatedBy": null,
"createdAt": "2024-03-06T13:18:12.044Z",
"updatedAt": "2024-03-06T13:18:12.044Z"
},
...
{
"id": "prop_2bfXbQuinn4298XzqlyxmktRAX9d",
"name": "Email",
"description": "User's email",
"type": "string",
"propConfig": {},
"workspaceId": "1hitizAoFT91DD6rfFhBjiTex3e",
"createdBy": "1zirfVbEQN0zIImR235a1JivVYU",
"updatedBy": "1zirfVbEQN0zIImR235a1JivVYU",
"createdAt": "2024-01-30T09:32:57.983Z",
"updatedAt": "2024-01-30T09:33:18.885Z"
}
],
"total": 450,
"currentPage": 1,
"pageSize": 50
}
Response codes
| Code | Description |
|---|---|
| 200 | All properties in the data catalog are retrieved successfully. |
The response body contains the below fields:
| Field | Type | Description |
|---|---|---|
data | Array | Contains all the properties in the data catalog. |
total | Number | Total number of entries in the response. |
currentPage | Number | Current page number being viewed (starts from 1). |
pageSize | Number | Maximum number of items displayed per page. |
Get property by ID
Path parameters
Example request
Example response
{
"id": "prop_2bfXbQuinn4298XzqlyxmktRAX9d",
"name": "Email",
"description": "User's email",
"type": "string",
"propConfig": {},
"workspaceId": "1hitizAoFT91DD6rfFhBjiTex3e",
"createdBy": "1zirfVbEQN0zIImR235a1JivVYU",
"updatedBy": "1zirfVbEQN0zIImR235a1JivVYU",
"createdAt": "2024-01-30T09:32:57.983Z",
"updatedAt": "2024-01-30T09:33:18.885Z"
}
Response codes
| Code | Description |
|---|---|
| 200 | Property for the specified ID is retrieved successfully. |
| 404 | Property not found for the specified event ID. |
Update property
Changes to properties are applied immediately. However, it may take a couple of minutes for all dependent tracking plans to reflect these updates.
Path parameters
Request body
To update the event property in the data catalog, at least one of the following parameters is required:
Note that the name must be between 1 and 65 characters.
Note that the description must be between 3 and 2000 characters and should start with a letter.
Note that:
- The data type must be either string, integer, number, object, array, boolean, null, or multi data type.
- If not explicitly set, RudderStack allows all the above data types for the property, by default.
RudderStack supports multi data type for the
typeparameter. An example is shown:{ "type": ["string", "integer", "boolean", "null"] }
Keyword validations
The API validates the data types for the various keywords defined in the propConfig parameter and gives an error if you pass an invalid value for any field.
See this FAQ for more information on the type-specific keywords supported by RudderStack.
For example, if you pass the propConfig object as follows:
{
"type": "string",
...
"propConfig": {
"maxLength": "4", // String instead of a number.
"title": 45 // Number instead of a string
}
}
Then, you will get the below error:
{
"error": "max length must be an integer, title must be a string"
}
Example request
Example response
{
"id": "prop_2bfXbQuinn4298XzqlyxmktRAX9d",
"name": "Email",
"description": "User's email address",
"propConfig": {
"format": "email"
},
"type": "number",
"workspaceId": "1hitizAoFT91DD6rfFhBjiTex3e",
"createdBy": "1zirfVbEQN0zIImR235a1JivVYU",
"updatedBy": "2KDKycoVHAOLttVvzBiqw12O3Hr",
"createdAt": "2024-01-30T09:32:57.983Z",
"updatedAt": "2024-05-23T03:41:10.715Z"
}
Response codes
| Code | Description |
|---|---|
| 200 | Property is updated successfully. |
| 400 | Property not found for the specified event ID. |
Delete property
Path parameters
Example request
Example response
{
"name": "Email",
"description": "User's email address",
"type": "number",
"workspaceId": "1hitizAoFT91DD6rfFhBjiTex3e",
"createdBy": "1zirfVbEQN0zIImR235a1JivVYU",
"updatedBy": "2KDKycoVHAOLttVvzBiqw12O3Hr",
"createdAt": "2024-01-30T09:32:57.983Z",
"updatedAt": "2024-05-23T03:41:10.715Z"
}
Response codes
| Code | Description |
|---|---|
| 200 | Property is deleted from the catalog successfully. |
| 400 | Property not found for the specified event ID. |
Manage data catalog categories
This section covers the API endpoints for creating and managing categories in your data catalog. Go to Govern > Data Catalog > Events tab in your RudderStack dashboard to view the categories and associate them to your events.

Create new category
Request body
Note that:
- The name must be between 3 and 65 characters and should start with a letter.
- It must contain only letters, numbers, underscores, commas, spaces, dashes, and dots.
Note that the description must be between 3 and 2000 characters and should start with a letter.
Example request
Example response
{
"name": "Onboarding",
"description": "Customer onboarding",
"icon": "star",
"workspaceId": "1hitizAoFT91DD6rfFhBjiTex3e",
"createdBy": "2KDKycoVHAOLttVvzBiqw12O3Hr",
"id": "cat_2gqs1Yzy1Vpeeewm69meqc6d8zH",
"createdAt": "2024-05-23T03:50:27.416Z",
"updatedAt": "2024-05-23T03:50:27.416Z"
}
Response codes
| Code | Description |
|---|---|
| 200 | Category is created successfully. |
| 400 | Invalid Request. |
List all categories
Path parameters
Order the categories list by a specific field.
Allowed fields are name, createdAt, updatedAt. For example, name:asc.
Note:
- This parameter must be a positive integer.
- The API returns a maximum of 50 pages.
Example request
Example response
{
"data": [{
"id": "cat_2gqs1Yzy1Vpeeewm69meqc6d8zH",
"name": "Onboarding",
"description": "Customer onboarding",
"icon": "star",
"workspaceId": "1hitizAoFT91DD6rfFhBjiTex3e",
"createdBy": "2KDKycoVHAOLttVvzBiqw12O3Hr",
"updatedBy": null,
"createdAt": "2024-05-23T03:50:27.416Z",
"updatedAt": "2024-05-23T03:50:27.416Z"
},
...
{
"id": "cat_4gs21Yzy1Vpw1m69meqc6d8zH",
"name": "Product Experience",
"description": "Enhance overall product and customer experience",
"icon": "star",
"workspaceId": "1hitizAoFT91DD6rfFhBjiTex3e",
"createdBy": "1zirfVbEQN0zIImR235a1JivVYU",
"updatedBy": null,
"createdAt": "2024-04-30T14:30:30.254Z",
"updatedAt": "2024-04-30T14:30:30.254Z"
}
],
"total": 10,
"currentPage": 1,
"pageSize": 1000
}
Response codes
| Code | Description |
|---|---|
| 200 | All the categories are fetched successfully. |
The response body contains the below fields:
| Field | Type | Description |
|---|---|---|
data | Array | Contains all the categories in the data catalog. |
total | Number | Total number of entries in the response. |
currentPage | Number | Current page number being viewed (starts from 1). |
pageSize | Number | Maximum number of items displayed per page. |
Get category by ID
Path parameters
Example request
Example response
{
"id": "cat_2gqs1Yzy1Vpeeewm69meqc6d8zH",
"name": "Onboarding",
"description": "Customer onboarding",
"icon": "star",
"workspaceId": "1hitizAoFT91DD6rfFhBjiTex3e",
"createdBy": "2KDKycoVHAOLttVvzBiqw12O3Hr",
"updatedBy": null,
"createdAt": "2024-05-23T03:50:27.416Z",
"updatedAt": "2024-05-23T03:50:27.416Z"
}
Response codes
| Code | Description |
|---|---|
| 200 | Category for the specified ID is retrieved successfully. |
| 404 | Category not found for the specified ID. |
Delete category
Path parameters
Example request
Example response
{
"name": "Onboarding",
"description": "Customer onboarding",
"icon": "star",
"workspaceId": "1hitizAoFT91DD6rfFhBjiTex3e",
"createdBy": "2KDKycoVHAOLttVvzBiqw12O3Hr",
"updatedBy": null,
"createdAt": "2024-05-23T03:50:27.416Z",
"updatedAt": "2024-05-23T03:50:27.416Z"
}
Response codes
| Code | Description |
|---|---|
| 200 | Category is deleted from the catalog successfully. |
| 400 | Category not found for the specified event ID. |
Manage custom data types
The endpoints covered in this section are in Private Beta, where we work with early users and customers to test new features and get feedback before making them generally available.
Note that these features are functional but can change as we improve them. Reach out to Customer Success to use them in your workspace.
This section covers the API endpoints for creating and managing custom data types in your data catalog.
Create custom type
Request body
The request body must not be empty. Otherwise, you will encounter an error.
Note that:
- The custom type name must be between 2 and 65 characters long.
- It must start with a capital letter and contain only letters, numbers, underscores and dashes. Spaces are not allowed.
- You cannot change the custom type name later.
Note that the description must be between 3 and 2000 characters and should start with a letter.
string, number, integer, boolean, null, array, and object.This parameter is ignored for non-object data types.
Config object
You must include the config object to create a new custom type successfully. You can also pass an empty object to accept any values.
The config object can take the below parameters depending on type (data type of the custom type) specified in the request body:
| Custom data type | Acceptable fields | ||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| String |
| ||||||||||||||
| Number / Integer |
| ||||||||||||||
| Array |
|
Keyword validations
The API validates the data types for the various keywords defined in the config parameter and gives an error if you pass an invalid value for any field.
See this FAQ for more information on the type-specific keywords supported by RudderStack.
For example, if you pass the config object as follows:
{
"type": "string",
...
"config": {
"maxLength": "4", // String instead of a number.
"title": 45 // Number instead of a string
}
}
Then, you will get the below error:
{
"error": "max length must be an integer, title must be a string"
}
Properties structure
You must include the properties array if your custom type is of the object data type. Note that the properties array must contain a list of objects, with each object containing the following details:
| Parameter | Description |
|---|---|
idRequired | Property ID. |
required | Boolean that determines if the property is required or optional. |
A sample properties array is shown below:
"properties": [
{
"id": "prop_<id1>", // Property ID
"required": true/false // Determines whether the property is required or optional
},
....
{
"id": "prop_<id2>",
"required": true/false
}
]
Example request
Example response
{
"config": {
"enum": [
"ABC",
"DEF",
"XYZ"
]
},
"rules": {
"enum": [
"ABC",
"DEF",
"XYZ"
],
"type": [
"string"
]
},
"defs": [],
"itemDefinitions": [],
"name": "StringCustomType",
"type": "string",
"dataType": "string",
"version": 1,
"description": "",
"workspaceId": "2Csl0lSTbuM3daOQB2GcDH8o",
"createdBy": "1sW1rW9Q03EobQOuJekQKnrjRem",
"id": "def_2rvoibDJPpoFKgGvNFAZHKSwWss",
"createdAt": "2025-01-21T08:43:57.515Z",
"updatedAt": "2025-01-21T08:43:57.515Z"
}
Therulesobject in the above response corresponds to the internal schema constructed based on the provided configuration and is used for validation.
Response codes
| Code | Description |
|---|---|
| 200 | Custom type is successfully created. RudderStack returns an ID for the newly created custom type in the response. |
| 400 | Bad or invalid request. Some reasons include:
|
Update custom type
Changes to custom types are applied immediately. However, it may take a couple of minutes for all dependent tracking plans to reflect these updates.
Path parameters
Request body
The request body must not be empty. Otherwise, you will encounter an error.
string, number, integer, boolean, null, array, and object.Note: This parameter is ignored for non-object data types.
Config object
You must include the config object to create a new custom type successfully. You can also pass an empty object to accept any values.
The config object can take the below parameters depending on type (data type of the custom type) specified in the request body:
| Custom data type | Acceptable fields | ||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| String |
| ||||||||||||||
| Number / Integer |
| ||||||||||||||
| Array |
|
Keyword validations
The API validates the data types for the various keywords defined in the config parameter and gives an error if you pass an invalid value for any field.
See this FAQ for more information on the type-specific keywords supported by RudderStack.
For example, if you pass the config object as follows:
{
"type": "string",
...
"config": {
"maxLength": "4", // String instead of a number.
"title": 45 // Number instead of a string
}
}
Then, you will get the below error:
{
"error": "max length must be an integer, title must be a string"
}
Properties structure
You must include the properties array if your custom type is of the object data type. Note that the properties array must contain a list of objects, with each object containing the following details:
| Parameter | Description |
|---|---|
idRequired | Property ID. |
required | Boolean that determines if the property is required or optional. |
A sample properties array is shown below:
"properties": [
{
"id": "prop_<id1>", // Property ID
"required": true/false // Determines whether the property is required or optional
},
....
{
"id": "prop_<id2>",
"required": true/false
}
]
Example request
Example response
{
"config": {
"enum": ["A", "B", "C"],
"maxLength": 15,
"minLength": 5
},
"rules": {
"enum": ["A", "B", "C"],
"maxLength": 15,
"minLength": 5,
"type": ["string"]
},
"defs": [],
"itemDefinitions": [],
"id": "def_2s1OUfwmHOEwMdoJFOKoaMr6VWS",
"name": "StringCustomType",
"type": "string",
"dataType": "string",
"version": 2,
"description": "",
"workspaceId": "29fJnntLeqmZEj0MBIFOCi6jRce",
"createdBy": "1sW1rW9Q03EobQOuJekQKnrjRem",
"createdAt": "2025-01-23T08:07:11.872Z",
"updatedBy": "1sW1rW9Q03EobQOuJekQKnrjRem",
"updatedAt": "2025-01-23T08:07:11.872Z"
}
Therulesobject in the above response corresponds to the internal schema constructed based on the provided configuration and is used for validation.
Response codes
| Code | Description |
|---|---|
| 200 | Custom type is successfully updated. |
| 400 | Bad or invalid request. Some reasons include:
|
List all custom types
Example request
Example response
{
"data": [{
"config": {
"itemTypes": ["integer", "number", "string", "object"]
},
"rules": {
"type": ["array"],
"items": {
"type": ["integer", "number", "string", "object"]
}
},
"defs": [],
"itemDefinitions": [],
"id": "def_2rvgmGLCrAYftKqBHLSxVU2hGYz",
"name": "ArrayCustomType",
"type": "array",
"dataType": "array",
"version": 1,
"description": "",
"workspaceId": "29fJnntLeqmZEj0MBIFOCi6jRce",
"createdBy": "1sW1rW9Q03EobQOuJekQKnrjRem",
"createdAt": "2025-01-21T07:38:39.327Z",
"updatedBy": null,
"updatedAt": "2025-01-21T07:38:39.327Z",
"properties": []
},
.....
{
"config": {
"enum": ["ABC", "DEF", "XYZ"]
},
"rules": {
"enum": ["ABC", "DEF", "XYZ"],
"type": ["string"]
},
"defs": [],
"itemDefinitions": [],
"id": "def_2p4Sbks9YgDTNL7tQv78L15Vxgp",
"name": "StringCustomType",
"type": "string",
"dataType": "string",
"version": 2,
"description": "",
"workspaceId": "29fJnntLeqmZEj0MBIFOCi6jRce",
"createdBy": "2m9DOlUweDGtsguECIDn7xIz0xc",
"createdAt": "2024-11-19T13:45:27.391Z",
"updatedBy": "2m9DOlUweDGtsguECIDn7xIz0xc",
"updatedAt": "2024-11-19T13:45:27.391Z",
"properties": []
}]
}
Response codes
| Code | Description |
|---|---|
| 200 | Custom types are fetched successfully. |
| 400 | Bad or invalid request. |
Get custom type by ID
Path parameters
Example request
Example response
{
"config": {
"enum": ["A", "B", "C"],
"maxLength": 15,
"minLength": 5
},
"rules": {
"enum": ["A", "B", "C"],
"maxLength": 15,
"minLength": 5,
"type": ["string"]
},
"defs": [],
"itemDefinitions": [],
"id": "def_2s1OUfwmHOEwMdoJFOKoaMr6VWS",
"name": "StringCustomType",
"type": "string",
"dataType": "string",
"version": 2,
"description": "",
"workspaceId": "29fJnntLeqmZEj0MBIFOCi6jRce",
"createdBy": "1sW1rW9Q03EobQOuJekQKnrjRem",
"createdAt": "2025-01-23T08:07:11.872Z",
"updatedBy": "1sW1rW9Q03EobQOuJekQKnrjRem",
"updatedAt": "2025-01-23T08:07:11.872Z",
"properties": []
}
Response codes
| Code | Description |
|---|---|
| 200 | Custom type fetched successfully. |
| 400 | Bad or invalid request. |
| 404 | Custom type with the specified ID was not found. |
Delete custom type
You cannot delete a custom type that is referenced by another property.
For example, if you have a property
propertyname1of data typeCustomType-1, then you cannot use this endpoint to deleteCustomType-1.
Path parameters
Example request
Example response
{
"config": {
"enum": ["ABC", "DEF", "XYZ"],
"maxLength": 10,
"minLength": 4
},
"rules": {
"enum": ["ABC", "DEF", "XYZ"],
"maxLength": 10,
"minLength": 4,
"type": ["string"]
},
"defs": [],
"itemDefinitions": [],
"name": "StringCustomType",
"type": "string",
"dataType": "string",
"version": 1,
"description": "",
"workspaceId": "29fJnntLeqmZEj0MBIFOCi6jRce",
"createdBy": "1sW1rW9Q03EobQOuJekQKnrjRem",
"createdAt": "2025-01-23T08:18:50.790Z",
"updatedBy": null,
"updatedAt": "2025-01-23T08:18:50.790Z"
}
Response codes
FAQ
How can I create a property with a schema that validates an array of enums?
The following example highlights how to create a property that is an array of enums:
Step 1: Create a new custom type of string type containing the enums
Create a new custom type of type string. Specify the config object containing enums, as shown below:
"config": {
"enum": [
"iOS",
"Android"
]
}
The corresponding request and response looks as follows:
Step 2: Create a new array custom type
Create a new custom type of type array. Specify the config object with itemTypes set to an array of CustomTypeOS (created in Step 1), as shown below:
"config": {
"itemTypes": [
"CustomTypeOS"
]
}
The corresponding request and response looks as follows:
Step 3: Create a new property of custom array type
Create a new property and set the data type to the custom array type created in the above step. The request body looks as follows:
{
"name": "NewPropertyOS", // Replace with the desired name
"description": "Sample property of array custom type",
"type": "CustomTypeArray",
"propConfig": {}
}
The corresponding request and response looks as follows:
The above property NewPropertyOS is of type CustomTypeArray, where:
CustomTypeArrayis an array ofCustomTypeOScustom type.CustomTypeOSis a string custom type containing enums (iOSandAndroid).
Alternative Step 3: Create array property and specify string custom type in property configuration
You can also create a property of array type and specify the string custom type (containing the enums) within the propConfig object, as shown:
While updating a property in the dashboard, I get errors like “invalid properties: minLength” but this rule is not visible in the rules section. How do I update such a property?
To fix issues related to updating properties where you get errors related to advanced rules but no such rules are present:
Option 1: Update property in the RudderStack dashboard
- Locate the property in the RudderStack dashboard.
- Clear the Data type.
- Add the required data type again.

Option 2: Use the Data Catalog API
You can also leverage the Update property endpoint of the Data Catalog API to update the property with the required data type and property rules.
