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.
curl --request GET \
--url https://mycluster.domino.tech/api/projects/v1/dependency-graph \
--header 'X-Domino-Api-Key: <api-key>'import requests
url = "https://mycluster.domino.tech/api/projects/v1/dependency-graph"
headers = {"X-Domino-Api-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-Domino-Api-Key': '<api-key>'}};
fetch('https://mycluster.domino.tech/api/projects/v1/dependency-graph', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://mycluster.domino.tech/api/projects/v1/dependency-graph",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-Domino-Api-Key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://mycluster.domino.tech/api/projects/v1/dependency-graph"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-Domino-Api-Key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://mycluster.domino.tech/api/projects/v1/dependency-graph")
.header("X-Domino-Api-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://mycluster.domino.tech/api/projects/v1/dependency-graph")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-Domino-Api-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"metadata": {
"notices": [
"<string>"
],
"requestId": "<string>"
},
"nodes": [
{
"dependencies": [
{
"ownerUsername": "steve_holt",
"projectName": "my-project"
}
],
"project": {
"ownerUsername": "steve_holt",
"projectName": "my-project"
},
"projectType": "Analytic"
}
],
"selectedProject": {
"ownerUsername": "steve_holt",
"projectName": "my-project"
}
}{
"error": "<string>"
}{
"code": "UNAUTHORIZED",
"message": "Authentication is required to access this resource."
}{
"code": "FORBIDDEN",
"message": "You do not have permission to perform this action."
}{
"error": "<string>"
}{
"error": "<string>"
}Authorizations
Query Parameters
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.
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.
Was this page helpful?
curl --request GET \
--url https://mycluster.domino.tech/api/projects/v1/dependency-graph \
--header 'X-Domino-Api-Key: <api-key>'import requests
url = "https://mycluster.domino.tech/api/projects/v1/dependency-graph"
headers = {"X-Domino-Api-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-Domino-Api-Key': '<api-key>'}};
fetch('https://mycluster.domino.tech/api/projects/v1/dependency-graph', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://mycluster.domino.tech/api/projects/v1/dependency-graph",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-Domino-Api-Key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://mycluster.domino.tech/api/projects/v1/dependency-graph"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-Domino-Api-Key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://mycluster.domino.tech/api/projects/v1/dependency-graph")
.header("X-Domino-Api-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://mycluster.domino.tech/api/projects/v1/dependency-graph")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-Domino-Api-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"metadata": {
"notices": [
"<string>"
],
"requestId": "<string>"
},
"nodes": [
{
"dependencies": [
{
"ownerUsername": "steve_holt",
"projectName": "my-project"
}
],
"project": {
"ownerUsername": "steve_holt",
"projectName": "my-project"
},
"projectType": "Analytic"
}
],
"selectedProject": {
"ownerUsername": "steve_holt",
"projectName": "my-project"
}
}{
"error": "<string>"
}{
"code": "UNAUTHORIZED",
"message": "Authentication is required to access this resource."
}{
"code": "FORBIDDEN",
"message": "You do not have permission to perform this action."
}{
"error": "<string>"
}{
"error": "<string>"
}