> ## Documentation Index
> Fetch the complete documentation index at: https://docs.domino.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Get the project dependency graph

> Get the graph of dependencies between projects, as one node per project with the projects it depends on. The graph covers the non-archived projects the caller can access plus every searchable or public project; projects the caller cannot see are absent from it.

By default the response is the whole graph for the caller. Supply both `ownerUsername` and `projectName` to narrow it to one project and everything connected to it, which is the form to use when deciding what an archive or an ownership transfer would affect. If that project does not exist or the caller cannot see it, `nodes` is empty. It takes both to name a project, so sending only one of the two is not an error: it is ignored, and the whole graph is returned as though neither had been sent.

Projects here are identified by owner username and project name rather than by project ID, because that is the identity this graph is built on.

This endpoint is served only while the `frontend.enableProjectDependencyGraph` central config setting is on; it responds 400 when an administrator has turned it off.



## OpenAPI

````yaml /api-specs/cloud/public-api.json get /api/projects/v1/dependency-graph
openapi: 3.0.3
info:
  title: Domino Public API
  description: Reference for Domino's public REST API endpoints.
  version: 7.0.0
  x-catalog-key: nucleus
servers:
  - url: https://mycluster.domino.tech
    description: >-
      Replace 'mycluster.domino.tech' with your Domino cluster hostname. For
      Domino Cloud customers, that is `your-subdomain`.domino.tech (e.g.,
      acme.domino.tech). For self-hosted deployments, it is the hostname you
      reach the Domino UI at.
security: []
tags:
  - name: Projects
  - name: Project templates
  - name: Workspaces
  - name: Jobs
  - name: HPC Jobs
  - name: Environments
  - name: Hardware Tiers
  - name: Datasets
  - name: Data Sources
  - name: GenAI
  - name: AI Systems
  - name: MLflow experiments and runs
  - name: MLflow models
  - name: MLflow artifacts
  - name: MLflow traces
  - name: Apps
  - name: App versions
  - name: App instances
  - name: Model APIs
  - name: Registered models
  - name: Model deployment
  - name: Extensions
  - name: Cost and billing
  - name: Users and organizations
  - name: Service accounts
  - name: Personal Access Tokens
  - name: Personal Access Tokens (admin)
  - name: Audit Trail
  - name: Custom metrics
  - name: PPM
  - name: Model Monitoring models
  - name: Model Monitoring drift and quality
  - name: Model Monitoring settings
  - name: Model Monitoring authentication
  - name: Governance bundles
  - name: Governance policies
  - name: Governance evidence and results
  - name: Governance operations
  - name: NetApp Volumes
  - name: NetApp Volumes snapshots
  - name: NetApp Volumes filesystems
  - name: NetApp Volumes transfers
  - name: Tags
  - name: Properties
externalDocs:
  description: OpenAPI
  url: https://swagger.io/resources/open-api/
paths:
  /api/projects/v1/dependency-graph:
    get:
      tags:
        - Projects
      summary: Get the project dependency graph
      description: >-
        Get the graph of dependencies between projects, as one node per project
        with the projects it depends on. The graph covers the non-archived
        projects the caller can access plus every searchable or public project;
        projects the caller cannot see are absent from it.


        By default the response is the whole graph for the caller. Supply both
        `ownerUsername` and `projectName` to narrow it to one project and
        everything connected to it, which is the form to use when deciding what
        an archive or an ownership transfer would affect. If that project does
        not exist or the caller cannot see it, `nodes` is empty. It takes both
        to name a project, so sending only one of the two is not an error: it is
        ignored, and the whole graph is returned as though neither had been
        sent.


        Projects here are identified by owner username and project name rather
        than by project ID, because that is the identity this graph is built on.


        This endpoint is served only while the
        `frontend.enableProjectDependencyGraph` central config setting is on; it
        responds 400 when an administrator has turned it off.
      operationId: getProjectDependencyGraph
      parameters:
        - description: >-
            Username of the owner of the project to centre the graph on. Only
            takes effect when projectName is sent as well; on its own it is
            ignored and the whole graph is returned.
          in: query
          name: ownerUsername
          required: false
          schema:
            type: string
        - description: >-
            Name of the project to centre the graph on. Only takes effect when
            ownerUsername is sent as well; on its own it is ignored and the
            whole graph is returned.
          in: query
          name: projectName
          required: false
          schema:
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProjectDependencyGraphEnvelopeV1'
          description: Success
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '500':
          $ref: '#/components/responses/500'
      security:
        - DominoApiKey: []
        - BearerAuthentication: []
components:
  schemas:
    ProjectDependencyGraphEnvelopeV1:
      properties:
        metadata:
          $ref: '#/components/schemas/MetadataV1'
        nodes:
          description: One entry per project in the graph.
          items:
            $ref: '#/components/schemas/ProjectDependencyNodeV1'
          type: array
        selectedProject:
          $ref: '#/components/schemas/ProjectReferenceV1'
      required:
        - nodes
        - metadata
      type: object
    MetadataV1:
      properties:
        notices:
          description: Notices relating to the request
          items:
            type: string
          type: array
        requestId:
          type: string
      required:
        - requestId
        - notices
      type: object
    ProjectDependencyNodeV1:
      properties:
        dependencies:
          description: >-
            Projects this project depends on. Every entry is also a node in the
            graph.
          items:
            $ref: '#/components/schemas/ProjectReferenceV1'
          type: array
        project:
          $ref: '#/components/schemas/ProjectReferenceV1'
        projectType:
          $ref: '#/components/schemas/ProjectDependencyTypeV1'
      required:
        - project
        - projectType
        - dependencies
      type: object
    ProjectReferenceV1:
      properties:
        ownerUsername:
          description: Username of the owner of the project
          example: steve_holt
          type: string
        projectName:
          description: Name of the project
          example: my-project
          type: string
      required:
        - ownerUsername
        - projectName
      type: object
    ErrorV1:
      properties:
        code:
          description: Machine-readable error code.
          example: NOT_FOUND
          type: string
        message:
          description: Human-readable description of the error.
          example: The requested HPC Job could not be found.
          type: string
      required:
        - message
      type: object
    ProjectDependencyTypeV1:
      description: How the project is used within the graph.
      enum:
        - Analytic
        - DataSet
        - Template
      type: string
  responses:
    '400':
      content:
        application/json:
          schema:
            properties:
              error:
                type: string
            type: object
      description: Bad Request
    '401':
      content:
        application/json:
          example:
            code: UNAUTHORIZED
            message: Authentication is required to access this resource.
          schema:
            $ref: '#/components/schemas/ErrorV1'
      description: Unauthorized - authentication is required or has failed.
    '403':
      content:
        application/json:
          example:
            code: FORBIDDEN
            message: You do not have permission to perform this action.
          schema:
            $ref: '#/components/schemas/ErrorV1'
      description: Forbidden - the caller lacks permission to perform this action.
    '404':
      content:
        application/json:
          schema:
            properties:
              error:
                type: string
            type: object
      description: Not Found
    '500':
      content:
        application/json:
          schema:
            properties:
              error:
                type: string
            type: object
      description: Internal Server Error
  securitySchemes:
    DominoApiKey:
      type: apiKey
      in: header
      name: X-Domino-Api-Key
    BearerAuthentication:
      type: apiKey
      name: Authorization
      in: header

````

## Related topics

- [Manage Projects](https://docs.domino.ai/cloud/platform-capabilities/core-concepts/projects/manage-projects.md)
- [Get the dependencies and forks of a project](https://docs.domino.ai/api-reference/projects/get-the-dependencies-and-forks-of-a-project.md)
- [Projects](https://docs.domino.ai/cloud/platform-capabilities/core-concepts/projects/index.md)
- [Get goals in this project](https://docs.domino.ai/api-reference/projects/get-goals-in-this-project.md)
