Skip to content
Datablau DAMData governance documentation

Lineage and graph APIs ​

Use SQLINK_BASE_URL=https://<host>/sqlink for lineage and GRAPH_BASE_URL=https://<host>/graph for cross-object graphs. Lineage explains origins, transformations, and dependencies. A graph can also contain standards or asset associations; not every edge represents computational lineage.

Method and complete pathInputsResult
POST /sqlink/item/searchItemsBody itemName, folderId, String modelId, String typeId, currentPage, pageSizecontent, totalItems
POST /sqlink/lineageGraph/queryBody String id, queryType, direction, depth, hasTempnodes, relationships
POST /sqlink/lineageGraph/getTransformQuery Boolean isGraph, default true; graph conditions bodystartIds, endId, transforms, lineageId, etc.
POST /sqlink/lineageGraph/getImpactBody id, direction, depth, resourceTypesImpact objects with identity, type, namespace, direction

Map source system, source, schema, table/field, and SQLink node ID explicitly. Numeric metadata IDs do not substitute for node IDs.

Assess a field change before release ​

  1. Locate the corresponding SQLink node and confirm recent harvesting and parsing.
  2. Query downstream with FORWARD, explicit depth, and type constraints.
  3. Read transformations and verify expressions and connecting nodes.
  4. Generate an impact list for business owner review.
  5. Reharvest, parse, and verify key paths after the change.

Example impact body with a placeholder ID:

json
{
  "id": "example-sqlink-node-id",
  "queryType": "COLUMN",
  "direction": "FORWARD",
  "depth": 3,
  "resourceTypes": ["TABLE", "COLUMN", "REPORT"],
  "hasTemp": false
}

Common direction values are FORWARD, BACKWARD, and ALL; types can include SCHEMA, TABLE, COLUMN, REPORT, REPORT_COLUMN, and FILE. Actual enums may be narrower. Confirm the deployed contract, especially differences from the legacy SQLink reference.

Missing downstream results may reflect incomplete harvesting, parsing, depth, filters, or permissions rather than no impact.

Optional graph and unified asset access ​

Confirm these deployment-dependent capabilities. Path v1/v2 labels are API names, not product release claims. If unavailable, use the appropriate business service without assuming automatic fallback.

Method and complete pathInputsResult
POST /graph/graph/v2/nodes/searchkeyword, typeId, page, sizecontent, total; confirm page origin
POST /graph/graph/v2/relations/querytypeId, String objectId, sourceSystem, layers, scopenodes, relations, lastUpdateTime, truncated
POST /graph/asset-access/v1/discovery/searchquery, typeIds, limit, cursor, scopeitems, nextCursor, hasMore
POST /graph/asset-access/v1/context/resolveArray assetKeys, profileresults; inspect each item

Pass the complete returned assetKey unchanged:

json
{
  "assetKeys": [{
    "sourceSystem": "<sourceSystem from search result>",
    "typeId": 123,
    "objectId": "<objectId from search result>"
  }]
}

Replace all placeholders, including type ID. Valid profile, scope, and scope types are not fully enumerated; obtain confirmed values. truncated=true means an incomplete relationship set. Follow nextCursor rather than constructing tokens. Retain available sourceVersion and sourceUpdatedAt for freshness.

DIG boundaries ​

Reading graphs is separate from publishing a DIG space MCP. Use context publishing to expose a governed, accepted business scope. Direct graph queries do not grant space documents, approvals, or knowledge access. The source guide checked definitions without parsing, modifying graphs, rebuilding projections, or publishing; validate business output with known deployment samples.

Parser plugin call chain ​

New job formats use SQLink Parser SPI plugins rather than ordinary REST controllers. REST handles upload, parsing, and queries; the plugin produces LineageContainer, steps, and relationships.

Method and complete pathPurpose
POST /sqlink/lineage/getLineageParseEnginesInstalled typeName, descriptions, plugin information
POST /sqlink/lineage/uploadLineageFileForm lineageEngine, objectType, file, folderId, defaultSchema, parse
POST /sqlink/lineage/parseLineagelineageIds, status, onlyFailed, incrementalParsing
POST /sqlink/task/getTaskParseDetailProgress, errors, missing tables
POST /sqlink/lineage/getLineageTableByPageParsed tables and state
POST /sqlink/lineage/getLineageFile and parsing details
POST /sqlink/lineageGraph/getTransformTransformation logic
POST /sqlink/lineageGraph/getImpactImpact
PluginManifestInput
WhaleTunneltype=WHALETUNNEL, loadClass=com.datablau.sqlink.plugin.seatunnel.WhaleTunnelLineageParser, build=1.0.0, .jsonwhaletunnel.job_config, exportData source/transform/sink; datasource_name, source_table_name, result_table_name
Apache SeaTunneltype=SEATUNNEL, loadClass=com.datablau.sqlink.plugin.seatunnel.SeatunnelLineageParser, build=1.0.0, .jsonseatunnel.job_config, plugin_name, input/output, table_path, SQL, CTEs, aliases, transformations

Depend on SPI and standard output objects rather than copying JAR implementation. Report unsupported tasks clearly instead of creating misleading partial lineage. Supply default schema explicitly or use the supported DEFAULT_SCHEMA.

Query a complete table path ​

POST /sqlink/llm/getLineageOfTables requires namespace, schema, and table:

json
{
  "namespace": "<catalog-or-source>",
  "schema": "sales",
  "table": "customer",
  "direction": "ALL"
}

Use supported FORWARD, BACKWARD, or ALL. Retain full paths, node types, and source systems. A table name alone is ambiguous across sources and schemas.