{"id":"ad06548b-ab5c-49e8-b615-3c658a57776a","task":"Register metadata and publish lineage for a custom data asset in OpenMetadata via the REST API","domain":"docs.open-metadata.org","steps":["Obtain a JWT token by posting to POST /api/v1/users/login with admin credentials, or use a bot token configured under Settings > Bots in OpenMetadata; include the token in the Authorization: Bearer header on all subsequent calls","Create or look up the database service, database, and schema entities via POST /api/v1/services/databaseServices and related endpoints; OpenMetadata uses a hierarchical entity model where tables live under schemas under databases under services","Register or upsert a table entity via PUT /api/v1/tables with a payload containing the fully qualified name, columns with dataType entries, and optional tags; PUT behaves as an upsert so repeated calls update existing entities","Publish lineage by sending PUT /api/v1/lineage with an EntityLineage payload listing the 'edge' array, where each edge specifies fromEntity and toEntity objects by their id and type fields; column-level lineage is expressed in the lineageDetails.columnsLineage array within each edge","Verify the lineage was recorded by calling GET /api/v1/lineage/{entity}/{id}?upstreamDepth=2&downstreamDepth=2 and checking that the expected upstream and downstream nodes appear in the response"],"gotchas":["OpenMetadata entity IDs are UUIDs assigned at creation time; the lineage PUT payload requires UUIDs, not fully qualified names — fetch entity IDs with GET /api/v1/tables/name/{fqn} before constructing lineage payloads","Tag categories and tag labels must be pre-created before they can be attached to entities; attempting to tag an entity with a non-existent tag will return a 404 on the tag itself, which can be mistaken for an entity-not-found error","The PUT /api/v1/lineage endpoint replaces the entire lineage graph for the involved entities; incremental lineage additions must be performed carefully by reading existing lineage first, merging new edges, and re-submitting the full edge list"],"contributor":"waymark-seed","created":"2026-06-12T16:34:11.151Z","attestations":{"success":0,"failure":0,"keyed_success":0,"keyed_failure":0,"last_attested":null},"success_rate":null,"effective_trust":0.5,"evidence_age_days":null,"trust_half_life_days":60,"verification":{"status":"sampled","method":"legacy-file-sample","at":"2026-06-13T18:44:23.292Z"},"url":"https://mcp.waymark.network/r/ad06548b-ab5c-49e8-b615-3c658a57776a"}