Skip to content

Defining Dependencies ​

Dependencies declare connections between projects, specifying which services consume particular APIs or message channels.


Direction & Connection Types ​

A dependency is directional, connecting a Consumer (dependent project) to a Producer (upstream dependency).

Synchronous Connections (HTTP / REST / SOAP / GraphQL) ​

  • The consumer project declares a dependency on the producer project.
  • In the graph, the link points from consumer to producer.

Asynchronous Connections (Event-Driven / AsyncAPI) ​

  • The project publishing or hosting the AsyncAPI specification serves as the producer or broker node.
  • Event publishers and subscribers each link to that central project as consumers.

Granular Endpoint & Channel Selection ​

When adding a dependency, consumers can select the specific paths, methods, or message channels they consume rather than linking to the whole specification.

  • Selective Monitoring: If an upstream spec changes, diid evaluates breaking changes against the endpoints your project uses. Unrelated endpoint changes will not trigger approval requests for your service.
  • Spec Support: Path and channel selection is supported for OpenAPI, AsyncAPI, and SOAP. For GraphQL, dependencies map to the overall schema.

NOTE

Managing dependency links requires Admin permissions on the consumer project or Organization Admin rights.


Safety Rules ​

  1. Specification Required: A project must have a published specification before it can accept incoming dependencies.
  2. Deletion Protection: Specifications with active incoming dependencies cannot be deleted until consumer links are removed.
  3. Circular Dependencies: Direct circular links (Project A $\rightarrow$ Project B $\rightarrow$ Project A) are prevented to maintain clean architectural boundaries.