Deleting Meshes

Quick decision guide

  • Keep products, remove only the mesh: use reassignment.

  • Remove everything hosted by the mesh: use cascade.

  • Mesh is already empty: use delete-only.

Option 1 — Delete mesh only

Purpose: Remove the mesh record when it has no hosted content or dependent links.

Preconditions:

  • No hosted data products and no child entity links. If present, reassign/delete them first or use cascade.

Endpoint: DELETE /data/mesh

Query parameters:

  • identifier (UUID, required): Mesh to delete

Auth:

  • Requires mesh_manage on the target mesh.

Responses:

  • 200 OK with {} on success

  • 403 Forbidden (insufficient permissions)

  • 404 Not Found (mesh doesn’t exist)

  • 409/422 depending on validation if the mesh still has children/links (delete will fail unless dependencies are cleared)

Example:

curl -X DELETE \
  'https://<host>/data/mesh?identifier=<mesh-uuid>' \
  -H 'Authorization: Bearer <token>'

Option 2 — Delete mesh and all its content (cascade)

Purpose: Retire a mesh and all hosted data products, including related compute/storage artifacts.

Endpoint: DELETE /data/mesh/cascade

Query parameters:

  • identifier (UUID, required): Mesh to delete (and cascade)

Auth:

  • Requires mesh_manage on the target mesh.

Responses:

  • 200 OK with {} on success

  • 403 Forbidden (insufficient permissions)

  • 404 Not Found (mesh doesn’t exist)

What happens:

  • Data products are deleted in dependency-safe order (children first).

  • For each product: compute jobs deleted, metadata removed, Trino/Iceberg tables dropped, streaming checkpoints cleaned up, delete events emitted.

  • Mesh is deleted and a mesh delete event is emitted.

Example:

curl -X DELETE \
  'https://<host>/data/mesh/cascade?identifier=<mesh-uuid>' \
  -H 'Authorization: Bearer <token>'

Notes:

  • Cross-mesh dependencies are not auto-resolved; confirm shared products aren’t needed elsewhere.


Option 3 — Delete mesh and reassign content to another mesh

Purpose: Merge or decommission a mesh while keeping all hosted data products online under a new mesh.

Endpoint: DELETE /data/mesh/reassign

Query parameters:

  • identifier (UUID, required): Mesh to delete

  • new_mesh_identifier (UUID, required): Destination mesh to receive all hosted data products

Auth:

  • Requires mesh_manage on the mesh being deleted.

Responses:

  • 200 OK with {} on success

  • 403 Forbidden (insufficient permissions)

  • 404 Not Found (mesh or destination mesh doesn’t exist)

What happens:

  • All hosted data products are moved to the destination mesh.

  • The original mesh is deleted and a mesh delete event is emitted.

  • Roles/policies are not auto-migrated; review access on the destination mesh.

Example:

curl -X DELETE \
  'https://<host>/data/mesh/reassign?identifier=<mesh-uuid>&new_mesh_identifier=<dest-mesh-uuid>' \
  -H 'Authorization: Bearer <token>'

Last updated