How to build a directed acyclic graph (DAG) of jobs?

Hello!

Apologies if this has already been asked/answered before …

I have a DAG. It’s a list of jobs (nodes) and dependencies (edges) that I would like to have built in Jenkins. Ideally, any node that has all its dependencies completed would be launched immediately and concurrently alongside other jobs in the graph. The job is done when all the builds in the graph are completed.

Does Jenkins support this natively or via some kind of plugin? If not, what APIs might I use to write my own plugin to launch non-blocking builds and get notifications/callbacks upon their completion?

Thanks!