php-github-api
php-github-api copied to clipboard
projects returning empty.
Hi
i'm trying to get all projects on our organisation or a repo but no matter which i tries out it just returns a empty array. The repo is a private one, but have both made a classic token and a fined grained one. the closes i have come is getting a "Resource not accessible by personal access token" error.
So my code looks like this
require_once __DIR__ . '/vendor/autoload.php';
$client = new \Github\Client();
$client->authenticate('github_pat_[TOKEN]', null, Github\AuthMethod::ACCESS_TOKEN);
$repositories = $client->api('organizations')->repositories('NOVA-Intergalactic');
$projects = $client->api('org_projects')->all('NOVA-Intergalactic');
// $projects = $client->api('repo')->projects()->all('NOVA-Intergalactic', 'NovaAi');
echo '<pre>';
print_r($projects);
echo '</pre>';
The $repositories command does fetch the private repos, so i belive the token does have access to the private repos.
but $projects = $client->api('org_projects')->all('NOVA-Intergalactic'); Just returns a blank array
I have also tried out $projects = $client->api('repo')->projects()->all('NOVA-Intergalactic', 'NovaAi');But that throws the error "Resource not accessible by personal access token"
So i'm a little unsure on where to proceed.
That's because org_projects uses Projects (Classic) GitHub Rest Endpoint which doesn't return ProjectsV2 and are only accessible through Graphql.
You can use graphql api to fetch list of projects like this
$query = <<<'QUERY'
query{
organization(login: "NOVA-Intergalactic") {
projects(first: 10) {
totalCount
nodes {
number
}
}
projectsV2(first: 20) {
nodes {
id
title
}
}
}
}
QUERY;
$api = $github->api('graphql')->execute($query);