Query the GitHub data source
The GitHub data source plugin for Grafana enables you to query and visualize data directly from your GitHub repositories and organizations. With this plugin, you can monitor repository activity, track issues and pull requests, analyze workflow runs, and more from within Grafana.
Query types
The data source supports the following query types, which you can select from the Query Type
dropdown in the query editor:
- Commits: Retrieve a list of commits for a branch or ref within a repository, including commit message, author, and timestamp.
- Issues: List issues in a repository, using the GitHub query syntax to filter the response.
- Contributors: Get a list of contributors to a repository.
- Tags: List created tags for a repository.
- Releases: List created releases for a repository.
- Pull requests: List pull requests for a repository, using the GitHub query syntax to filter the response.
- Labels: List labels defined in a repository.
- Repositories: List repositories for a user or organization.
- Milestones: Retrieve milestones for a repository, which can be used to group issues and pull requests.
- Packages: List packages published from a repository in an organization.
- Vulnerabilities: Query security vulnerabilities detected in a repository.
- Projects: List projects associated with a user or organization.
- Stargazers: Get a list of users who have starred a repository, including the ability to plot a total count over time.
- Workflows: List GitHub Actions workflows defined in a repository.
- Workflow usage: Retrieve usage statistics for a workflow, such as run counts and durations.
- Workflow runs: List runs for a specific workflow, including status, conclusion, and timing information.
Commits
Retrieve a list of commits for a branch or ref within a repository, including commit message, author, and timestamp. Useful for tracking code changes, deployment activity, or contributor history.
Query options
Name | Description | Required |
---|---|---|
Owner | The GitHub user or organization that owns the repository | Yes |
Repository | The name of the repository | Yes |
Ref (Branch/Tag) | The branch or tag to list commits against | Yes |
Sample queries
Show all commits to the main
branch of the grafana/grafana
repository:
- Owner:
grafana
- Repository:
grafana
- Ref:
main
Show all commits against a tag:
- Owner:
grafana
- Repository:
grafana
- Ref:
v12.0.0
Response
Name | Description |
---|---|
id | Commit ID |
author | Name of the commit author |
author_login | GitHub handle of the commit author |
author_company | Company name of the commit author |
committed_at | When the change was committed: YYYY-MM-DD HH:MM:SS |
pushed_at | When the commit was pushed: YYYY-MM-DD HH:MM:SS |
message | The commit message |
Issues
List issues in a repository using the GitHub query syntax to filter the response. Useful for tracking open bugs, feature requests, or project tasks.
Note
This query returns a maximum of 1000 results.
Query options
Name | Description | Required |
---|---|---|
Owner | A GitHub user or organization | Yes |
Repository | The name of a repository | No |
Query | Use GitHub’s query syntax to filter results | No |
Time field | The time field to filter the responses on, can be: CreatedAt , ClosedAt , or UpdatedAt | Yes |
Sample queries
Show all closed issues labeled type/bug
in the Grafana repository:
- Owner:
grafana
- Repository:
grafana
- Query:
is:closed label:type/bug
Show all issues with ‘sql expressions’ in the title:
- Owner:
grafana
- Repository:
grafana
- Query:
sql expressions in:title
Response
Name | Description |
---|---|
title | Issue title |
author | GitHub handle of the author |
author_company | Company name of the commit author |
repo | Issue repository |
number | Issue number |
closed | true or false |
created_at | When the issue was created: YYYY-MM-DD HH:MM:SS |
closed_at | When the issue was closed: YYYY-MM-DD HH:MM:SS |
updated_at | When the issue was last updated: YYYY-MM-DD HH:MM:SS |
labels | Array of labels, for example: ["type/bug", "needs more info"] |
assignees | Array of assignees, for example: ["user1", "user2"] |
Contributors
Get a list of contributors to an organization or repository.
Note
This query returns a maximum of 200 results.
Query options
Name | Description | Required |
---|---|---|
Owner | The GitHub user or organization that owns the repository | Yes |
Repository | The name of the repository | Yes |
Query | Filter for contributors by name or GitHub handle | No |
Sample queries
Show all contributors to the grafana
repository:
- Owner:
grafana
- Repository:
grafana
Search for contributors with bob
in their name or handle:
- Owner:
grafana
- Repository:
grafana
- Query:
bob
Response
Name | Description |
---|---|
name | Name of the contributor |
author | Name of the commit author |
author_login | GitHub handle of the commit author |
author_company | Company name of the commit author |
committed_at | When the commit was made: YYYY-MM-DD HH:MM:SS |
pushed_at | When the commit was pushed: YYYY-MM-DD HH:MM:SS |
message | Commit message |
Tags
List created tags for a repository.
Query options
Name | Description | Required |
---|---|---|
Owner | The GitHub user or organization that owns the repository | Yes |
Repository | The name of the repository | Yes |
Sample queries
Show all tags created for the grafana
repository within the currently selected time range:
- Owner:
grafana
- Repository:
grafana
Response
Name | Description |
---|---|
name | Name of the tag |
id | SHA for the tag |
author | Name of the user who created the tag |
author_login | GitHub handle of the user who created the tag |
author_company | Company name of the user who created the tag |
date | When the tag was created: YYYY-MM-DD HH:MM:SS |
Releases
List created releases for a repository.
Query options
Name | Description | Required |
---|---|---|
Owner | The GitHub user or organization that owns the repository | Yes |
Repository | The name of the repository | Yes |
Sample queries
Show all releases for the grafana/grafana
repository:
- Owner:
grafana
- Repository:
grafana
Response
Name | Description |
---|---|
name | Name of release |
created_by | Name of the GitHub user who created the release |
is_draft | Whether the release is a draft release: true or false |
is_prerelease | Whether the release is a pre-release: true or false |
tag | Tag name associated with the release |
url | URL for the tag associated with the release |
created_at | When the release was created: YYYY-MM-DD HH:MM:SS |
published_at | When the release was published: YYYY-MM-DD HH:MM:SS |
Pull requests
List pull requests for a repository, using the GitHub query syntax to filter the response.
Query options
Name | Description | Required |
---|---|---|
Owner | A GitHub user or organization | Yes |
Repository | The name of a repository | No |
Query | Use GitHub’s query syntax to filter results | No |
Time Field | The time field to filter the responses on, can be: CreatedAt , ClosedAt , UpdatedAt , or none | Yes |
Sample queries
Show all open pull requests authored by Renovate in the grafana/plugin-tools
repository:
- Owner:
grafana
- Repository:
grafana
- Query:
is:open author:app/renovate
- Time field:
none
Response
Name | Description |
---|---|
number | Pull request number |
title | Pull request title |
url | URL to the pull request |
additions | Total number of lines of code that have been added or altered in the pull request |
deletions | Total number of lines of code that have been removed or altered in the pull request |
repository | Repository for the pull request |
state | Can be open , closed , or merged |
author_name | Name of the GitHub user who created the pull request |
author_login | GitHub handle of the GitHub user who created the pull request |
author_email | Email address of the GitHub user who created the pull request |
author_company | Company name of the GitHub user who created the pull request |
closed | Whether the pull request is closed: true or false |
is_draft | Whether the pull request is in draft: true or false |
locked | Whether the pull request has been locked: true or false |
merged | Whether the pull request has been merged |
mergeable | Whether the pull request can be automatically merged: MERGEABLE , CONFLICTING , or UNKNOWN |
closed_at | When the pull request was closed: YYYY-MM-DD HH:MM:SS |
merged_at | When the pull request was merged: YYYY-MM-DD HH:MM:SS |
merged_by_name | Name of the GitHub user who merged the pull request |
merged_by_login | GitHub handle of the GitHub user who merged the pull request |
Labels
Get all labels defined in a repository, useful for categorizing issues and pull requests.
Query options
Name | Description | Required |
---|---|---|
Owner | The GitHub user or organization that owns the repository | Yes |
Repository | The name of the repository | Yes |
Query | Filter on text in name and description for labels | No |
Sample queries
Show all labels for the grafana/grafana
repository:
- Owner:
grafana
- Repository:
grafana
Response
Name | Description |
---|---|
name | Label name |
color | Hexadecimal number |
description | Label description |
Repositories
List repositories for a user or organization.
Note
This query returns a maximum of 1000 results.
Query options
Name | Description | Required |
---|---|---|
Owner | A GitHub user or organization | Yes |
Repository | Filter on the name of the repository | No |
Sample queries
Show all repositories for the grafana
organization:
- Organization:
grafana
Response
Name | Description |
---|---|
name | Name of the repository |
owner | Organization or user who owns the repository |
name_with_owner | Returns the owner and repository name in the format <owner>/<repository> , for example: grafana/loki |
url | URL for the repository |
forks | The number of forks for a repository |
is_mirror | Whether the repository is a mirror of another repository: true or false |
is_private | Whether the repository is private: true or false |
created_at | When the repository was created: YYYY-MM-DD HH:MM:SS |
Milestones
Retrieve milestones for a repository, which can be used to group issues and pull requests.
Query options
Name | Description | Required |
---|---|---|
Owner | The GitHub user or organization that owns the repository | Yes |
Repository | The name of the repository | Yes |
Query | Filter on text in the milestone title | No |
Sample queries
Show all milestones for the grafana/grafana
repository for v11 of Grafana:
- Owner:
grafana
- Repository:
grafana
- Query:
11.
Response
Name | Description |
---|---|
title | Milestone title |
author | GitHub handle of the user who created the milestone |
closed | Whether the milestone is closed: true or false |
state | One of OPEN or CLOSED |
created_at | When the milestone was created: YYYY-MM-DD HH:MM:SS |
closed_at | When the milestone was closed: YYYY-MM-DD HH:MM:SS |
due_at | When the milestone is due by: YYYY-MM-DD HH:MM:SS |
Note
Milestone titles can be anything and are therefore parsed as a string. This means sorting by title may appear incorrect if you have numeric milestones, for example:
12.0.0
. Transformations can be used to change the data type in this scenario.
Packages
List packages published from a repository in an organization.
Note
This query does not support querying npm, RubyGems, or NuGet packages.
Query options
Name | Description | Required |
---|---|---|
Owner | The GitHub user or organization that owns the repository | Yes |
Repository | The name of the repository | Yes |
Package type | One of: MAVEN , DOCKER , DEBIAN , or PYPI | Yes |
Names | Filter for packages using a comma-separated list of names | No |
Sample queries
Show all packages uploaded to the grafana
organization:
- Organization:
grafana
Response
Name | Description |
---|---|
name | Package name |
platform | Platform or registry where the package is published |
version | Package version |
type | Package type (e.g., MAVEN , DOCKER , DEBIAN , PYPI ) |
prerelease | Whether the package version is a prerelease: true or false |
downloads | Number of downloads for the package version |
Vulnerabilities
Query security vulnerabilities detected in a repository.
Query options
Name | Description | Required |
---|---|---|
Owner | The GitHub user or organization that owns the repository | Yes |
Repository | The name of the repository | Yes |
Sample queries
Show all security advisories for the grafana/grafana
repository:
- Owner:
grafana
- Repository:
grafana
Response
Name | Description |
---|---|
value | Custom field which allows for counting or aggregation, always returns 1 |
created_at | When the vulnerability alert was created (when the vulnerability was published on GitHub): YYYY-MM-DD HH:MM:SS |
dismissed_at | When the vulnerability alert was dismissed, if applicable: YYYY-MM-DD HH:MM:SS |
dismissed_reason | Reason the vulnerability alert was dismissed (e.g., false positive, won’t fix), if applicable |
withdrawn_at | When the advisory was withdrawn, if applicable: YYYY-MM-DD HH:MM:SS |
packageName | Name of the affected package |
advisoryDescription | Description of the vulnerability or advisory |
firstPatchedVersion | The first version of the package where the vulnerability is fixed |
vulnerableVersionRange | The range of package versions affected by the vulnerability |
cvssScore | CVSS (Common Vulnerability Scoring System) score for the vulnerability |
cvssVector | CVSS vector string describing the scoring metrics |
permalink | URL to the GitHub Security Advisory or alert |
severity | Severity level of the vulnerability (e.g., LOW , MODERATE , HIGH , CRITICAL ) |
state | State of the vulnerability alert (e.g., OPEN , FIXED , DISMISSED ) |
Projects
List projects associated with a user or organization.
Note
This query returns a maximum of 200 results.
Query options
Name | Description | Required |
---|---|---|
Project Owner | One of Organization or User | Yes |
Organization | Organization for the Project (shown when Organization was previously selected) | Yes |
User | User for the Project (shown when User was previously selected) | Yes |
Project Number | Enter a specific Project Number to query for associated items | No |
Filter | Add key value filters based on the fields for project items (shown if Project Number specified) | No |
Sample queries
Show all projects for the grafana/grafana
repository:
- Project Owner:
organization
- Organization:
grafana
Show all pull requests for the “Dashboards” project in the Grafana organization:
- Project Owner:
organization
- Organization:
grafana
- Project Number:
202
- Filter:
type equal PULL_REQUEST
Response
When no Project Number is specified
Name | Description |
---|---|
number | The project number |
title | Title of the project |
url | URL for the project |
closed | Whether the project has been closed: true or false |
public | Whether the project is public: true or false |
closed_at | When the project was closed: YYYY-MM-DD HH:MM:SS |
updated_at | When the project was last updated |
created_at | When the project was created |
short_description | The description of the project |
When a Project Number is specified
Note
GitHub Projects allow for customization of default fields and custom fields to be added. Therefore, the response can vary significantly between projects.
Name | Description |
---|---|
name | Name of the project item (issue or pull request) |
id | Unique identifier for the project item |
type | Type of the item (such as ISSUE , PULL_REQUEST ) |
status | Status of the item (such as “In development”, “Shipped”) - this can be configured on the project |
labels | Comma-separated list of labels assigned to the item |
assignees | Comma-separated list of users assigned to the item |
reviewers | Comma-separated list of reviewers (for pull requests) |
repository | Name of the repository the item belongs to |
milestone | Milestone associated with the item |
priority | Priority value or label |
archived | Whether the item is archived: true or false |
created_at | When the item was created: YYYY-MM-DD HH:MM:SS |
updated_at | When the item was last updated: YYYY-MM-DD HH:MM:SS |
closed_at | When the item was closed, if applicable: YYYY-MM-DD HH:MM:SS |
(custom fields) | Any custom defined fields will also be returned alongside their values |
Stargazers
Get a list of users who have starred a repository, including the ability to plot a total count over time.
Query options
Name | Description | Required |
---|---|---|
Owner | The GitHub user or organization that owns the repository | Yes |
Repository | The name of the repository | Yes |
Sample queries
Show all stargazers for the grafana/grafana
repository within the current time range:
- Owner:
grafana
- Repository:
grafana
Response
Name | Description |
---|---|
starred_at | When the user starred the repository: YYYY-MM-DD HH:MM:SS |
start_count | Current total of stars for the repository at the time of the event |
id | node_id - a unique identifier for the GitHub user which can be used in GitHub’s GraphQL API |
login | GitHub handle of the user who starred the repository |
git_name | Name of the GitHub user who starred the repository |
company | Company name of the GitHub user who starred the repository |
Email address of the GitHub user who starred the repository | |
url | URL to the GitHub profile for the user who starred the repository |
Workflows
List GitHub Actions workflows defined in a repository.
Query options
Name | Description | Required |
---|---|---|
owner | GitHub user or organization that owns the repository | Yes |
repository | Name of the repository | Yes |
Time Field | The time field to filter the responses on, can be: CreatedAt or UpdatedAt | Yes |
Sample queries
Show all workflows created within the grafana/grafana
repository within the current time range:
- Owner:
grafana
- Repository:
grafana
- Time Field:
CreatedAt
Response
Name | Description |
---|---|
id | Unique identifier for the workflow |
name | Name of the workflow |
path | Path to the workflow YAML file in the repository |
state | State of the workflow, can be: active , deleted , disabled_fork , disabled_inactivity , or disabled_manually |
created_at | When the workflow was created: YYYY-MM-DD HH:MM:SS |
updated_at | When the workflow was last updated: YYYY-MM-DD HH:MM:SS |
url | API URL for the workflow |
html_url | URL to the workflow file in the repository |
badge_url | URL to the workflow status badge |
Workflow usage
Retrieve usage statistics for a workflow, such as run counts and durations.
Query options
Name | Description | Required |
---|---|---|
owner | GitHub user or organization that owns the repository | Yes |
repository | Name of the repository | Yes |
Workflow | The workflow ID or file name. Use id or the filename from path from workflows queries | Yes |
Sample queries
Show usage statistics for the Levitate
detect breaking changes workflow in the grafana/grafana
repository:
- Owner:
grafana
- Repository:
grafana
- Workflow:
detect-breaking-changes-levitate.yml
Response
Name | Description |
---|---|
name | Name of the workflow (or workflow job) |
unique triggering actors | Number of unique users or actors who triggered runs of this workflow |
runs | Total number of workflow runs in the selected period |
current billing cycle cost (approx.) | Approximate cost for the current billing cycle (if applicable) |
skipped | Number (and percentage) of runs that were skipped |
successes | Number (and percentage) of successful runs |
failures | Number (and percentage) of failed runs |
cancelled | Number (and percentage) of cancelled runs |
total run duration (approx.) | Total duration of all runs (formatted as hours, minutes, seconds) |
longest run duration (approx.) | Duration of the longest single run |
average run duration (approx.) | Average duration of all runs |
p95 run duration (approx.) | 95th percentile run duration |
runs on Sunday | Number of runs started on Sunday |
runs on Monday | Number of runs started on Monday |
runs on Tuesday | Number of runs started on Tuesday |
runs on Wednesday | Number of runs started on Wednesday |
runs on Thursday | Number of runs started on Thursday |
runs on Friday | Number of runs started on Friday |
runs on Saturday | Number of runs started on Saturday |
Workflow runs
List runs for a specific workflow, including status, conclusion, and timing information.
Query options
Name | Description | Required |
---|---|---|
owner | GitHub user or organization that owns the repository | Yes |
repository | Name of the repository | Yes |
Workflow | The workflow ID or file name. Use id or the filename from path from workflows queries | Yes |
Branch | The head branch to filter on | No |
Sample queries
Show all completed runs for the Levitate
workflow in the grafana/grafana
repository:
- Owner:
grafana
- Repository:
grafana
- Workflow:
detect-breaking-changes-levitate.yml
Response
Name | Description |
---|---|
id | Unique identifier for the workflow run |
name | Name of the workflow or workflow job |
head_branch | Name of the branch the workflow run was triggered on |
head_sha | Commit SHA that triggered the workflow run |
created_at | When the workflow run was created: YYYY-MM-DD HH:MM:SS |
updated_at | When the workflow run was last updated: YYYY-MM-DD HH:MM:SS |
html_url | URL to the workflow run in the GitHub web UI |
url | API URL for the workflow run |
status | Current status of the workflow run, can be: queued , in_progress , completed , waiting , requested , or pending |
conclusion | Final conclusion of the workflow run, can be: success , failure , neutral , cancelled , skipped , timed_out , or action_required |
event | Event that triggered the workflow run (e.g., push , pull_request ) - see Events that trigger workflows |
workflow_id | Unique identifier for the workflow definition |
run_number | The run number for this workflow run in the repository |