Import
The Import API allows you to programmatically import entities into the platform, bulk-delete them, and import or delete column level lineage from raw SQL queries.
Two payload formats are supported:
JSON via
/api/v1/import- recommended for configuration entities such as test cases, test suites, connections, dynamic rules, variables, webhooks, parameters and business rules.CSV via
/api/v1/import/csv- used for catalog entities such as objects, columns, terms and their relations, as well as CSV exports of business rules.
Each JSON request is an array of wrapper objects in the form:
All entities in a single JSON request must share the same entityType. IDs (id, connectionRef, testsuiteRef, dynamicRuleRef, webhookRefs, testCaseRef) are UUIDs - if the entity already exists with the given ID it is updated, otherwise it is created.
Supported entityType values:
Entity type | JSON | CSV |
|---|---|---|
| X | X |
| X | |
| X | |
| X | |
| X | |
| X | |
| X | |
| X | X |
| X | |
| X | |
| X | |
| X | |
| X | |
| X |
Import JSON entity
Import endpoint for any JSON objects that are previously exported from the application
Request parameters
Responses
Import one or more entities of the same type as a JSON array. Each element must specify entityType and an entity payload. See the per-type sections below for the expected payload structure.
Response example:
Import CSV entity
Import endpoint for any CSV objects that are previously exported from the application
Request parameters
Responses
Used for catalog entity types (OBJECT, COLUMN, COLUMN_RELATION, COLUMN_TERM_RELATION, TERM, TERM_RELATION) as well as CSV exports of TEST_CASE and BUSINESS_RULE. The expected CSV headers match those produced by the matching export template - you can download the template for a given entity type from the catalog import UI.
Entity types
Each section below describes one entityType and which import endpoint accepts it.
JSON only (
/api/v1/import):TEST_SUITE,CONNECTION,DYNAMIC_RULE,VARIABLE,WEBHOOK,PARAMETER.CSV only (
/api/v1/import/csv):OBJECT,COLUMN,COLUMN_RELATION,COLUMN_TERM_RELATION,TERM,TERM_RELATION.Both formats:
TEST_CASE,BUSINESS_RULE. Note that CSV business rule import does not link test cases - use JSON if you needtestCaseRefs.
CSV imports expect headers that match the corresponding export template - download it from the catalog import UI before filling it in.
![]()
TEST_CASE
Import test cases. connectionRef and testsuiteRef must reference existing entities (or be included earlier in the same deployment flow). relations.schema and relations.object bind the test case to a catalog object so lineage and alerting work correctly.
Request example:
Key fields:
type-Query,Compare,QueryTotal.Compareadditionally requirescompareConnectionRefandcompareSql.dynamicRuleRef- optional UUID of the parent dynamic rule when this case was generated from one.severity-CRITICAL,WARNING,INFO.scheduleType- see Scheduling. Omit or useNOT_SCHEDULEDto inherit the test suite schedule.
TEST_SUITE
Import test suites. Referenced test cases are linked through testsuiteRef in the test case payload - a test suite import does not embed its test cases.
Request example:
Key fields:
directory- forward-slash separated folder path. Missing folders are created on import.emailThreshold- fraction of failing tests (0.0–1.0) that triggers an email notification.alertMode-ALWAYSorON_FAILURE.visibility-PUBLIC,PRIVATEorREAD_ONLY.PUBLICis viewable and editable by everyone,PRIVATEis viewable and editable only by the owner and users matchingallowedRoles,READ_ONLYis viewable by everyone but only editable by the owner and users matchingallowedRoles.allowedRoles- comma-separated role names. Used whenvisibilityisPRIVATE(controls view and edit) orREAD_ONLY(controls edit only). Ignored whenvisibilityisPUBLIC.scheduleType-NOT_SCHEDULED,SELECTED_DAYS,MONTHLY,CUSTOM,CRON. Additional fieldsscheduleDay,scheduleTime,scheduleDate,scheduleCustomare used depending on the chosen type - see Scheduling.
CONNECTION
Import database connections. Credentials are not included in the payload and must be set through the Connections UI or the secrets backend after import.
Request example:
Key fields:
type- connector identifier as shown in the Connections UI (e.g.postgresql,mssql,snowflake,bigquery). See Connections.jdbcUrlOverride- use this to supply a full JDBC URL instead of the discretedatabaseUrl/databasePort/databaseNametriple.
DYNAMIC_RULE
Import dynamic rules - SQL templates that generate test cases based on metadata.
Request example:
Key fields:
sql- may use the{schema},{object}and{column}placeholders that are substituted per generated test case.drivers- list of connector types this dynamic rule applies to. Leave empty for all.
VARIABLE
Import global variables usable in SQL via ${variableName} syntax.
Request example:
WEBHOOK
Import webhook definitions used for alerting.
Request example:
Key fields:
json- request body template. Placeholders such as{{testSuiteName}},{{failedCount}}are substituted by the alerting engine when the webhook fires.
PARAMETER
Import per-test-case parameter overrides. values[].testCaseRef must match an existing test case UUID.
Request example:
Parameter values are fully replaced on import: any existing values for the parameter that are not listed in the values array are removed.
BUSINESS_RULE
Import business rules. The testCaseRefs field links the rule to test cases by UUID - those test cases must already exist or be imported in the same deployment.
Request example:
Business rules are also importable from CSV via /api/v1/import/csv?type=BUSINESS_RULE, however CSV import does not link test cases - use the JSON endpoint if you need to set testCaseRefs.
OBJECT
CSV import only via /api/v1/import/csv?type=OBJECT. Imports catalog objects (tables and views) into the catalog. Expected CSV headers match the OBJECT export template downloadable from the catalog import UI.
COLUMN
CSV import only via /api/v1/import/csv?type=COLUMN. Imports column descriptions and metadata attached to existing catalog objects. Expected CSV headers match the COLUMN export template.
COLUMN_RELATION
CSV import only via /api/v1/import/csv?type=COLUMN_RELATION. Imports column-level lineage relations between catalog columns. For SQL-driven lineage that the platform should parse for you instead, use the Import lineage endpoint.
COLUMN_TERM_RELATION
CSV import only via /api/v1/import/csv?type=COLUMN_TERM_RELATION. Imports the mapping between catalog columns and business glossary terms.
TERM
CSV import only via /api/v1/import/csv?type=TERM. Imports business glossary terms.
TERM_RELATION
CSV import only via /api/v1/import/csv?type=TERM_RELATION. Imports relations between business glossary terms (e.g. parent/child or synonym links).
Import lineage
Import column level lineage from SQL queries
Request parameters
Responses
Parses the supplied SQL queries against the named connection's metadata and creates column level lineage relations where source and destination columns can be resolved. Queries that reference objects unknown to the platform are skipped unless smart relations are enabled in lineage settings.
Request example:
Response example:
When you omit batchId, a UUID is generated, persisted as the batch handle, and returned in the response. Pass that same id to a later call to replace the batch, or to the delete endpoint below to remove it. Re-importing under an existing batchId replaces the batch: relations that reappear in the payload are reported as updated, and relations no longer present are removed and counted in deleted.
Delete lineage batch
Delete all lineage relations imported under a batchId
Request parameters
Responses
Removes every lineage relation imported under the given batchId. Relations the batch created that retain no other references are deleted; relations that other batches still reference keep the relation row but lose the references this batch contributed. The call is idempotent - an unknown batchId returns deleted: 0.
Request example:
Response example:
Delete entities
Delete any imported entity by the reference id(s)
Request parameters
Responses
Bulk-deletes entities by UUID. The endpoint resolves the entity type from the UUID automatically, so IDs from different types can be mixed in a single request.
Request example:
Response example: