CARVIEW |
Statistics
- Get contributors list with additions, deletions, and commit counts
- Get the last year of commit activity data
- Get the number of additions and deletions per week
- Get the weekly commit count for the repository owner and everyone else
- Get the number of commits per hour in each day
The Repository Statistics API allows you to fetch the data that GitHub uses for visualizing different types of repository activity.
A word about caching
Computing repository statistics is an expensive operation, so we try to return cached
data whenever possible. If the data hasn't been cached when you query a repository's
statistics, you'll receive a 202
response; a background job is also fired to
start compiling these statistics. Give the job a few moments to complete, and
then submit the request again. If the job has completed, that request will receive a
200
response with the statistics in the response body.
Repository statistics are cached by the SHA of the repository's default branch, which is usually master; pushing to the default branch resets the statistics cache.
Statistics exclude some types of commits
The statistics exposed by the API match the statistics shown by different repository graphs.
To summarize:
- All statistics exclude merge commits.
- Contributor statistics also exclude empty commits.
Get contributors list with additions, deletions, and commit counts
GET /repos/:owner/:repo/stats/contributors
Response
-
total
- The Total number of commits authored by the contributor.
Weekly Hash (weeks
array):
-
w
- Start of the week, given as a Unix timestamp. -
a
- Number of additions -
d
- Number of deletions -
c
- Number of commits
Status: 200 OK
[
{
"author": {
"login": "octocat",
"id": 1,
"avatar_url": "https://github.com/images/error/octocat_happy.gif",
"gravatar_id": "",
"url": "https://api.github.com/users/octocat",
"html_url": "https://github.com/octocat",
"followers_url": "https://api.github.com/users/octocat/followers",
"following_url": "https://api.github.com/users/octocat/following{/other_user}",
"gists_url": "https://api.github.com/users/octocat/gists{/gist_id}",
"starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/octocat/subscriptions",
"organizations_url": "https://api.github.com/users/octocat/orgs",
"repos_url": "https://api.github.com/users/octocat/repos",
"events_url": "https://api.github.com/users/octocat/events{/privacy}",
"received_events_url": "https://api.github.com/users/octocat/received_events",
"type": "User",
"site_admin": false
},
"total": 135,
"weeks": [
{
"w": "1367712000",
"a": 6898,
"d": 77,
"c": 10
}
]
}
]
Get the last year of commit activity data
Returns the last year of commit activity grouped by week. The days
array
is a group of commits per day, starting on Sunday
.
GET /repos/:owner/:repo/stats/commit_activity
Response
Status: 200 OK
[
{
"days": [
0,
3,
26,
20,
39,
1,
0
],
"total": 89,
"week": 1336280400
}
]
Get the number of additions and deletions per week
GET /repos/:owner/:repo/stats/code_frequency
Response
Returns a weekly aggregate of the number of additions and deletions pushed to a repository.
Status: 200 OK
[
[
1302998400,
1124,
-435
]
]
Get the weekly commit count for the repository owner and everyone else
GET /repos/:owner/:repo/stats/participation
Response
Returns the total commit counts for the owner
and total commit counts in all
.
all
is everyone combined, including the owner
in the last 52 weeks. If you'd like to get the commit
counts for non-owners, you can subtract owner
from all
.
The array order is oldest week (index 0) to most recent week.
Status: 200 OK
{
"all": [
11,
21,
15,
2,
8,
1,
8,
23,
17,
21,
11,
10,
33,
91,
38,
34,
22,
23,
32,
3,
43,
87,
71,
18,
13,
5,
13,
16,
66,
27,
12,
45,
110,
117,
13,
8,
18,
9,
19,
26,
39,
12,
20,
31,
46,
91,
45,
10,
24,
9,
29,
7
],
"owner": [
3,
2,
3,
0,
2,
0,
5,
14,
7,
9,
1,
5,
0,
48,
19,
2,
0,
1,
10,
2,
23,
40,
35,
8,
8,
2,
10,
6,
30,
0,
2,
9,
53,
104,
3,
3,
10,
4,
7,
11,
21,
4,
4,
22,
26,
63,
11,
2,
14,
1,
10,
3
]
}
Get the number of commits per hour in each day
GET /repos/:owner/:repo/stats/punch_card
Response
Each array contains the day number, hour number, and number of commits:
-
0-6
: Sunday - Saturday -
0-23
: Hour of day - Number of commits
For example, [2, 14, 25]
indicates that there were 25 total commits, during the
2:00pm hour on Tuesdays. All times are based on the time zone of individual commits.
Status: 200 OK
[
[
0,
0,
5
],
[
0,
1,
43
],
[
0,
2,
21
]
]