Lineage
데이터 리니지(계보)를 추적하는 API입니다. 테이블 간 데이터 흐름을 그래프로 시각화하고, 변경 영향도를 분석합니다.
엔드포인트
GET /api/v1/lineage/{catalog}/{schema}/{table}/graph
설명: 특정 테이블의 리니지 그래프를 반환합니다. 업스트림/다운스트림 테이블 관계를 포함합니다.
응답:
{
"nodes": [{"id": "catalog.schema.table", "type": "table"}],
"edges": [{"source": "...", "target": "...", "transform": "SQL"}]
}
GET /api/v1/lineage/{catalog}/{schema}/{table}/impact
설명: 테이블 변경 시 영향을 받는 다운스트림 테이블/뷰 목록을 반환합니다.
POST /api/v1/lineage/edges
설명: 리니지 엣지(데이터 흐름)를 수동 등록합니다.
요청 본문:
| 필드 | 타입 | 필수 | 설명 |
|---|---|---|---|
| source | string | Y | 소스 테이블 (catalog.schema.table) |
| target | string | Y | 타겟 테이블 |
| transform_sql | string | N | 변환 SQL |
GET /api/v1/lineage/tables
설명: 리니지 엣지에 등록된 테이블 목록. 호출자의 SELECT grant 로 필터됩니다 (deny-by-default).
:::note admin 도 필터 대상입니다 (v1.2+)
목록과 상세는 같은 판정 함수(check_table_select)를 씁니다. realm role admin 만으로는
데이터평면 전체 열람이 되지 않으며, GEND_ADMIN_DATA_PLANE_MODE=enforce 에서는
break-glass 역할이 있어야 합니다 (ADR #2700 D2).
이전에는 목록만 is_admin 으로 전량 통과시켜, break-glass 없는 admin 에게
목록에는 보이는데 상세는 403 인 상태가 발생했습니다 — 다른 워크스페이스의 테이블
이름이 그대로 노출되는 경로였습니다 (#3093).
:::
인증
JWT Bearer 토큰이 필요합니다.
에러 코드
| 코드 | 설명 |
|---|---|
| 400 | 잘못된 테이블 이름 형식 |
| 403 | 대상 테이블에 SELECT grant 없음 (deny-by-default) |
| 404 | 테이블을 찾을 수 없음 |
| 500 | 리니지 그래프 조회 실패 |