Assets API
This document outlines the API endpoints and structures for managing assets within projects.
Create a New Asset
You can create a new asset using a POST request.
Endpoint
POST: https://{telmai_endpoint}/api/backend/{tenant}/configuration/projects/{projectId}/assets
Request Body
The request body defines the properties of the new asset, using DELTALAKE (Databricks) as an example.
{
"name": "MyDeltaLakeAsset",
"description": "a test asset for Delta Lake",
"type": "DELTALAKE",
"options": {
"id_attributes": ["order_id", "item_id"],
"separator": ",",
"sample_fraction": 10,
"skip_investigator": "false",
"delta_only": "false",
"timestamp_attribute": "event_timestamp",
"limit": 500,
"filter": {"region":["NA","EU"]},
"segments": {"category":["electronics","clothing"]},
"only_light_scan": "true",
"resolve_wildcards_to_folders": "true"
},
"payload": {
"catalog": "main_catalog",
"schema": "sales_data",
"table": "orders"
},
"connection_id": 4567
}
Fields:
name(string): A user-defined name for the asset.description(string, optional): A description for the asset.type(string): The type of the asset (same as connection types, e.g.,DELTALAKE,REDSHIFT,GCP,BIGQUERY,SNOWFLAKE, etc.). This determines the structure of thepayloadfield.options(object, optional): A set of optional configuration settings for the asset.id_attributes(array of strings, optional): Attributes to be used as identifiers.separator(string, optional): Separator character for delimited files.sample_fraction(integer, optional): Fraction of data to sample (e.g., 25 for 25%).skip_investigator(string, optional): "true" to skip investigator, "false" otherwise.delta_only(string, optional): "true" to process only delta changes, "false" otherwise.timestamp_attribute(string, optional): The attribute to use for timestamp.limit(integer, optional): Maximum number of records to process.filter(object, optional): A map for filtering data, where keys are attributes and values are arrays of allowed values.segments(object, optional): A map for defining data segments, where keys are attributes and values are arrays of segment values.only_light_scan(string, optional): "true" for light scan only (supported forSNOWFLAKE,DELTALAKE,BIGQUERY).resolve_wildcards_to_folders(string, optional): "true" to resolve wildcards to folders.
payload(object): The asset-specific configuration. The format of this object depends on thetypeof the asset. Refer to the "Asset Payload Formats by Type" section below for examples.connection_id(integer): The ID of the connection associated with this asset.
Response
The response confirms the creation of the asset and provides its details, including a unique id.
Fields:
id(integer): The unique identifier of the newly created asset.project_id(integer): The ID of the project the asset belongs to.name(string): The name of the asset.description(string): The description of the asset.type(string): The type of the asset.options(object): The configuration options for the asset.payload(object): The asset-specific configuration.created_by(string): The email of the user who created the asset.created_at(string): The timestamp when the asset was created in ISO format (UTC).connection_id(integer): The ID of the associated connection.db_type(string): The database type, derived from the asset's connection.
Update Asset
You can update an existing asset using a PUT request.
Endpoint
PUT: https://{telmai_endpoint}/api/backend/{tenant}/configuration/projects/{projectId}/assets/{assetId}
Request Body
The request body defines the properties to update for the asset, using DELTALAKE (Databricks) as an example. All fields are optional, and only those provided will be updated.
Fields:
name(string, optional): A new user-defined name for the asset.description(string, optional): A new description for the asset.type(string, optional): The new type of the asset. If changed, thepayloadstructure must conform to the new type.options(object, optional): New configuration settings for the asset.payload(object, optional): New asset-specific configuration. The format of this object depends on thetypeof the asset.connection_id(integer, optional): The ID of a different connection to associate with this asset.
Response
The response confirms the update of the asset and provides its latest details.
Fields: (Same as Create Asset response, reflecting updated values)
List Assets
You can retrieve a list of assets.
Endpoints
Retrieve All: Please use this endpoint to retrieve all assets you have access to
GET: https://{telmai_endpoint}/api/backend/{tenant}/configuration/assets?with_attributes=true&with_schedules=true&with_lineage=trueProject-scoped: Please use this endpoint to retrieve all assets you have access to in a given project
GET: https://{telmai_endpoint}/api/backend/{tenant}/configuration/projects/{projectId}/assets?with_attributes=true&with_schedules=true&with_lineage=true
Query Parameters
with_attributes(boolean, optional): Iftrue, includes a list of attributes for each asset.with_schedules(boolean, optional): Iftrue, includes scheduled upload information for each asset.with_lineage(boolean, optional): Iftrue, includes parent and child asset IDs for lineage tracking.
Request
This API endpoint uses a GET method and does not require a request body.
Response
The response is an array of asset objects.
Fields:
All fields from the
Create Assetresponse.attributes(array, optional): A list of attributes associated with the asset. Included ifwith_attributes=true.scheduled_upload(object, optional): Details about any scheduled uploads for the asset. Included ifwith_schedules=true.parents(array of strings, optional): List of IDs of parent assets for lineage. Included ifwith_lineage=true.children(array of strings, optional): List of IDs of child assets for lineage. Included ifwith_lineage=true.
Get Asset
You can retrieve the details of a specific asset using a GET request.
Endpoint
GET: https://{telmai_endpoint}/api/backend/{tenant}/configuration/projects/{projectId}/assets/{assetId}
Request
This API endpoint uses a GET method and does not require a request body.
Response
The response provides the full details of the requested asset.
Fields: (Same as List Assets response for a single asset)
Delete Asset
You can delete an existing asset using a DELETE request.
Endpoint
DELETE: https://{telmai_endpoint}/api/backend/{tenant}/configuration/projects/{projectId}/assets/{assetId}
Request
This API endpoint uses a DELETE method and does not require a request body.
Response
The response confirms the deletion of the asset.
Move Assets from Project to Project
You can move assets between projects using a POST request.
Endpoint
POST: https://{telmai_endpoint}/api/backend/{tenant}/configuration/projects/{targetProjectId}/assets/move
Request Body
The request body specifies the source project, the assets to move, and an optional target connection.
Fields:
source_project_id(integer): The ID of the project from which the assets will be moved.source_asset_ids(array of strings): A list of asset IDs to move.target_connection_id(integer, optional): The ID of a connection in the target project to associate with the moved assets. If connections used by sources areGLOBAL, this may not be defined, and existing global connections will be preserved. Note: Only connection of the same type can be used
Response
The response confirms the successful movement of assets.
Note: The user should be a PROJECT_EDITOR in both the source and destination projects to perform this operation.
Asset Payload Formats by Type
The payload structure for assets varies depending on the asset type.
GCP,S3,AZURE:BIGQUERY:SNOWFLAKE,REDSHIFT:DELTALAKE:GENERIC_JDBC:HIVE_ICEBERG:
Last updated