|
|
Line 38: |
Line 38: |
|
| |
|
| * '''Logout''' - This will log out the user from our application. | | * '''Logout''' - This will log out the user from our application. |
|
| |
| =Endpoints=
| |
| Below are the endpoints implemented in the flask backend
| |
|
| |
| All the endpoints except the home and login are protected
| |
|
| |
| == Authentication ==
| |
| === Login ===
| |
| '/auth/login'
| |
|
| |
| Visiting this endpoint will take the user to github login page, once authenticated the user will be redirected to '''/index''' page
| |
|
| |
| === Logout ===
| |
| '/auth/logout'
| |
|
| |
| To terminate the current session, user can visit this endpoint
| |
|
| |
| ==View Current User ==
| |
| The below endpoint returns the login name of the currently authenticated user
| |
|
| |
| '/api/graphql/current-user-login'
| |
|
| |
| <syntaxhighlight lang="python">
| |
| {
| |
| "viewer": {
| |
| "login": "omjain2001"
| |
| }
| |
| }</syntaxhighlight>
| |
|
| |
| == Comments ==
| |
|
| |
| === User Gists ===
| |
| This query returns the comments in gists of the authenticated user.
| |
|
| |
| ==== GraphQL Endpoint ====
| |
| '/api/graphql/user-gist-comments/'
| |
|
| |
| <syntaxhighlight lang="python">
| |
| {
| |
| [
| |
| {
| |
| "user": {
| |
| "gistComments": {
| |
| "nodes": [],
| |
| "pageInfo": {
| |
| "endCursor": null,
| |
| "hasNextPage": false
| |
| },
| |
| "totalCount": 0
| |
| },
| |
| "login": "omjain2001"
| |
| }
| |
| }
| |
| ]
| |
| }</syntaxhighlight>
| |
|
| |
| ==== REST Endpoint ====
| |
| '/api/rest/user-gist-comments/'
| |
|
| |
| <syntaxhighlight lang="python">
| |
| {
| |
| [
| |
| {
| |
| "login": "omjain2001",
| |
| "pageInfo": {
| |
| "hasNextPage": false,
| |
| "totalCount": 0
| |
| },
| |
| "user": {
| |
| "gistComments": {
| |
| "nodes": []
| |
| }
| |
| }
| |
| }
| |
| ]
| |
| }</syntaxhighlight>
| |
|
| |
|
| |
| === User Commits ===
| |
| This query returns the comments in all commits of the authenticated user.
| |
|
| |
| ==== GraphQL Endpoint ====
| |
| '/api/graphql/user-commit-comments/'
| |
|
| |
| <syntaxhighlight lang="python">
| |
| {
| |
| [
| |
| {
| |
| "user": {
| |
| "commitComments": {
| |
| "nodes": [],
| |
| "pageInfo": {
| |
| "endCursor": null,
| |
| "hasNextPage": false
| |
| },
| |
| "totalCount": 0
| |
| },
| |
| "login": "omjain2001"
| |
| }
| |
| }
| |
| ]
| |
|
| |
| }</syntaxhighlight>
| |
|
| |
| ==== REST Endpoint ====
| |
| '/api/rest/user-commit-comments/'
| |
|
| |
| <syntaxhighlight lang="python">
| |
| {
| |
| [
| |
| {
| |
| "login": "omjain2001",
| |
| "pageInfo": {
| |
| "hasNextPage": false,
| |
| "totalCount": 0
| |
| },
| |
| "user": {
| |
| "commitComments": {
| |
| "nodes": []
| |
| }
| |
| }
| |
| }
| |
| ]
| |
| }</syntaxhighlight>
| |
|
| |
|
| |
| === User Issues ===
| |
|
| |
| This query returns the comments in issues and pull requests of all public repositories of the authenticated user.
| |
|
| |
| ==== GraphQL Endpoint ====
| |
| '/api/graphql/user-issue-comments'
| |
|
| |
| <syntaxhighlight lang="python">
| |
| {
| |
| [
| |
| {
| |
| "user": {
| |
| "issueComments": {
| |
| "nodes": [],
| |
| "pageInfo": {
| |
| "endCursor": null,
| |
| "hasNextPage": false
| |
| },
| |
| "totalCount": 0
| |
| },
| |
| "login": "omjain2001"
| |
| }
| |
| }
| |
| ]
| |
|
| |
| }</syntaxhighlight>
| |
|
| |
| ====REST Endpoint ====
| |
| '/api/rest/user-issue-comments'
| |
|
| |
| <syntaxhighlight lang="python">
| |
| {
| |
| [
| |
| {
| |
| "login": "omjain2001",
| |
| "pageInfo": {
| |
| "hasNextPage": false,
| |
| "totalCount": 7
| |
| },
| |
| "user": {
| |
| "issueComments": {
| |
| "nodes": [
| |
| {
| |
| "created_at": "2021-08-31T12:46:01Z"
| |
| },
| |
| {
| |
| "created_at": "2021-08-31T12:46:02Z"
| |
| },
| |
| {
| |
| "created_at": "2021-08-31T13:38:09Z"
| |
| }
| |
| ]
| |
| }
| |
| }
| |
| }
| |
| ]
| |
| }</syntaxhighlight>
| |
|
| |
| == Contributions ==
| |
|
| |
| === User Gists ===
| |
| This query returns the gists of the authenticated user.
| |
|
| |
| ==== GraphQL Endpoint ====
| |
| '/api/graphql/user-gists/<username>'
| |
|
| |
| ==== REST Endpoint ====
| |
| '/api/rest/user-gists/<username>'
| |
| <syntaxhighlight lang="python">
| |
| {
| |
| [
| |
| {
| |
| "comments": 0,
| |
| "comments_url": "https://api.github.com/gists/c3432f34dc2917bd03aa5a0b2a7e0816/comments",
| |
| "commits_url": "https://api.github.com/gists/c3432f34dc2917bd03aa5a0b2a7e0816/commits",
| |
| "created_at": "2022-12-07T15:11:12Z",
| |
| "description": "Advent of Code (Day 6)",
| |
| "files": {
| |
| "main.go": {
| |
| "filename": "main.go",
| |
| "language": "Go",
| |
| "raw_url": "https://gist.githubusercontent.com/kenoir/c3432f34dc2917bd03aa5a0b2a7e0816/raw/4e167f92cf844dfadf95d9a7aa4ab596d102b3af/main.go",
| |
| "size": 1251,
| |
| "type": "text/plain"
| |
| }
| |
| }
| |
| .......
| |
| ]
| |
| }</syntaxhighlight>
| |
|
| |
| === User Issues ===
| |
|
| |
| This query returns the issues of the authenticated user.
| |
|
| |
| ==== GraphQL Endpoint ====
| |
| '/api/graphql/user-issues/<username>'
| |
|
| |
| <syntaxhighlight lang="python">
| |
| {
| |
| [
| |
| {
| |
| "createdAt": "2019-09-07T11:39:21Z"
| |
| },
| |
| {
| |
| "createdAt": "2020-06-08T12:25:17Z"
| |
| },
| |
| {
| |
| "createdAt": "2020-06-12T12:05:17Z"
| |
| },
| |
| {
| |
| "createdAt": "2020-06-23T08:13:02Z"
| |
| },
| |
| {
| |
| "createdAt": "2020-06-28T10:27:58Z"
| |
| }
| |
|
| |
| ]
| |
| }</syntaxhighlight>
| |
|
| |
| ====REST Endpoint ====
| |
| '/api/rest/user-issues/<username>'
| |
|
| |
|
| |
| === User Pull Requests ===
| |
|
| |
| This query returns the pull requests of the authenticated user. For the REST query, we can only fetch pull requests for a particular repository for the authenticated user.
| |
|
| |
| ==== GraphQL Endpoint ====
| |
| '/api/graphql/user-pull-requests/<username>'
| |
|
| |
| ==== REST Endpoint ====
| |
| '/api/rest/user-pull-requests/<username>/<repo>'
| |
|
| |
|
| |
| === User Repositories ===
| |
|
| |
| This query returns the repositories of the authenticated user.
| |
|
| |
| ==== GraphQL Endpoint ====
| |
| '/api/graphql/user-repositories/<username>'
| |
|
| |
| ==== REST Endpoint ====
| |
| '/api/rest/user-repositories/<username>'
| |
|
| |
| <syntaxhighlight lang="python">
| |
| {
| |
| "allow_forking": true,
| |
| "archive_url": "https://api.github.com/repos/omjain2001/Covid-19/{archive_format}{/ref}",
| |
| "archived": false,
| |
| "assignees_url": "https://api.github.com/repos/omjain2001/Covid-19/assignees{/user}",
| |
| "blobs_url": "https://api.github.com/repos/omjain2001/Covid-19/git/blobs{/sha}",
| |
| "branches_url": "https://api.github.com/repos/omjain2001/Covid-19/branches{/branch}",
| |
| "clone_url": "https://github.com/omjain2001/Covid-19.git",
| |
| "collaborators_url": "https://api.github.com/repos/omjain2001/Covid-19/collaborators{/collaborator}",
| |
| "comments_url": "https://api.github.com/repos/omjain2001/Covid-19/comments{/number}",
| |
| "commits_url": "https://api.github.com/repos/omjain2001/Covid-19/commits{/sha}",
| |
| "compare_url": "https://api.github.com/repos/omjain2001/Covid-19/compare/{base}...{head}",
| |
| "contents_url": "https://api.github.com/repos/omjain2001/Covid-19/contents/{+path}",
| |
| "contributors_url": "https://api.github.com/repos/omjain2001/Covid-19/contributors",
| |
| "created_at": "2020-05-08T16:12:28Z",
| |
| "default_branch": "master",
| |
| "deployments_url": "https://api.github.com/repos/omjain2001/Covid-19/deployments",
| |
| "description": "Website For COVID-19",
| |
| "disabled": false,
| |
| "downloads_url": "https://api.github.com/repos/omjain2001/Covid-19/downloads",
| |
| "events_url": "https://api.github.com/repos/omjain2001/Covid-19/events",
| |
| "fork": false,
| |
| "forks": 1,
| |
| "forks_count": 1,
| |
| "forks_url": "https://api.github.com/repos/omjain2001/Covid-19/forks",
| |
| "full_name": "omjain2001/Covid-19",
| |
| "git_commits_url": "https://api.github.com/repos/omjain2001/Covid-19/git/commits{/sha}",
| |
| "git_refs_url": "https://api.github.com/repos/omjain2001/Covid-19/git/refs{/sha}",
| |
| "git_tags_url": "https://api.github.com/repos/omjain2001/Covid-19/git/tags{/sha}",
| |
| "git_url": "git://github.com/omjain2001/Covid-19.git",
| |
| "has_discussions": false,
| |
| "has_downloads": true,
| |
| "has_issues": true,
| |
| "has_pages": true,
| |
| "has_projects": true,
| |
| "has_wiki": true,
| |
| "homepage": null,
| |
| "hooks_url": "https://api.github.com/repos/omjain2001/Covid-19/hooks",
| |
| "html_url": "https://github.com/omjain2001/Covid-19",
| |
| "id": 262369559,
| |
| "is_template": false,
| |
| "issue_comment_url": "https://api.github.com/repos/omjain2001/Covid-19/issues/comments{/number}",
| |
| "issue_events_url": "https://api.github.com/repos/omjain2001/Covid-19/issues/events{/number}",
| |
| "issues_url": "https://api.github.com/repos/omjain2001/Covid-19/issues{/number}",
| |
| "keys_url": "https://api.github.com/repos/omjain2001/Covid-19/keys{/key_id}",
| |
| "labels_url": "https://api.github.com/repos/omjain2001/Covid-19/labels{/name}",
| |
| "language": "HTML",
| |
| "languages_url": "https://api.github.com/repos/omjain2001/Covid-19/languages",
| |
| "license": null,
| |
| "merges_url": "https://api.github.com/repos/omjain2001/Covid-19/merges",
| |
| "milestones_url": "https://api.github.com/repos/omjain2001/Covid-19/milestones{/number}",
| |
| "mirror_url": null,
| |
| "name": "Covid-19",
| |
| "node_id": "MDEwOlJlcG9zaXRvcnkyNjIzNjk1NTk=",
| |
| "notifications_url": "https://api.github.com/repos/omjain2001/Covid-19/notifications{?since,all,participating}",
| |
| "open_issues": 0,
| |
| "open_issues_count": 0,
| |
| "owner": {
| |
| "avatar_url": "https://avatars.githubusercontent.com/u/60605251?v=4",
| |
| "events_url": "https://api.github.com/users/omjain2001/events{/privacy}",
| |
| "followers_url": "https://api.github.com/users/omjain2001/followers",
| |
| "following_url": "https://api.github.com/users/omjain2001/following{/other_user}",
| |
| "gists_url": "https://api.github.com/users/omjain2001/gists{/gist_id}",
| |
| "gravatar_id": "",
| |
| "html_url": "https://github.com/omjain2001",
| |
| "id": 60605251,
| |
| "login": "omjain2001",
| |
| "node_id": "MDQ6VXNlcjYwNjA1MjUx",
| |
| "organizations_url": "https://api.github.com/users/omjain2001/orgs",
| |
| "received_events_url": "https://api.github.com/users/omjain2001/received_events",
| |
| "repos_url": "https://api.github.com/users/omjain2001/repos",
| |
| "site_admin": false,
| |
| "starred_url": "https://api.github.com/users/omjain2001/starred{/owner}{/repo}",
| |
| "subscriptions_url": "https://api.github.com/users/omjain2001/subscriptions",
| |
| "type": "User",
| |
| "url": "https://api.github.com/users/omjain2001"
| |
| },
| |
| "permissions": {
| |
| "admin": true,
| |
| "maintain": true,
| |
| "pull": true,
| |
| "push": true,
| |
| "triage": true
| |
| },
| |
| "private": false,
| |
| "pulls_url": "https://api.github.com/repos/omjain2001/Covid-19/pulls{/number}",
| |
| "pushed_at": "2021-07-14T05:08:23Z",
| |
| "releases_url": "https://api.github.com/repos/omjain2001/Covid-19/releases{/id}",
| |
| "size": 7759,
| |
| "ssh_url": "git@github.com:omjain2001/Covid-19.git",
| |
| "stargazers_count": 0,
| |
| "stargazers_url": "https://api.github.com/repos/omjain2001/Covid-19/stargazers",
| |
| "statuses_url": "https://api.github.com/repos/omjain2001/Covid-19/statuses/{sha}",
| |
| "subscribers_url": "https://api.github.com/repos/omjain2001/Covid-19/subscribers",
| |
| "subscription_url": "https://api.github.com/repos/omjain2001/Covid-19/subscription",
| |
| "svn_url": "https://github.com/omjain2001/Covid-19",
| |
| "tags_url": "https://api.github.com/repos/omjain2001/Covid-19/tags",
| |
| "teams_url": "https://api.github.com/repos/omjain2001/Covid-19/teams",
| |
| "topics": [],
| |
| "trees_url": "https://api.github.com/repos/omjain2001/Covid-19/git/trees{/sha}",
| |
| "updated_at": "2021-07-15T06:33:18Z",
| |
| "url": "https://api.github.com/repos/omjain2001/Covid-19",
| |
| "visibility": "public",
| |
| "watchers": 0,
| |
| "watchers_count": 0,
| |
| "web_commit_signoff_required": false
| |
| }
| |
| </syntaxhighlight>
| |
|
| |
| === User Repository Discussions ===
| |
|
| |
| This query returns the repository discussions of the authenticated user. For the REST query, there is no REST query to fetch repository discussions, hence this endpoint does not return any results.
| |
|
| |
| ==== GraphQL Endpoint ====
| |
| '/api/graphql/user-repository-discussions/<username>'
| |
|
| |
| == Profiles ==
| |
|
| |
| This endpoint returns all the profile statistics (followers, gists, issues, pull requests, repositories, etc.) of the required user. The user must specify the username in this query.
| |
|
| |
| ==== GraphQL Endpoint ====
| |
| '/api/graphql/user-stats/<username>'
| |
|
| |
| <blockquote>
| |
|
| |
| </blockquote>
| |
|
| |
| ==== REST Endpoint ====
| |
| '/api/rest/user-stats/<username>'
| |
|
| |
| <syntaxhighlight lang="python">
| |
| {
| |
|
| |
| "commit_comments": 0,
| |
| "company": "omjain2001",
| |
| "created_at": "2020-02-03T10:55:04Z",
| |
| "followers": 11,
| |
| "following": 0,
| |
| "gist_comments": 0,
| |
| "gists": 0,
| |
| "github": "omjain2001",
| |
| "issue_comments": 0,
| |
| "issues": 0,
| |
| "projects": 1,
| |
| "pull_requests": 8,
| |
| "repositories": 26,
| |
| "starred_repositories": 1,
| |
| "watching": 21
| |
| }</syntaxhighlight>
| |
|
| |
| == Time Range Contributions ==
| |
|
| |
| This endpoint returns all the details of the user contributions within a specified duration. The user must specify the username, start date, and end date in this query.
| |
|
| |
| ==== GraphQL Endpoint ====
| |
| '/api/graphql/user-contributions/<username>'
| |
|
| |
| <syntaxhighlight lang="python">
| |
| {
| |
| "commit": 37,
| |
| "issue": 0,
| |
| "pr": 8,
| |
| "pr_review": 1,
| |
| "repository": 4,
| |
| "res_con": 0
| |
| }</syntaxhighlight>
| |
|
| |
|
| |
| ==== REST Endpoint ====
| |
| '/api/rest/user-contributions/<username>'
| |
|
| |
| '''Query Params'''
| |
| * start: DateTime (ISO 8601 format)
| |
| * end: DateTime (ISO 8601 format)
| |
|
| |
| <syntaxhighlight lang="python">
| |
| {
| |
| "commit": 0,
| |
| "issue": 0,
| |
| "pr": 0,
| |
| "pr_review": 6,
| |
| "repository": 30,
| |
| "res_con": 0
| |
| }</syntaxhighlight>
| |
|
| |
|
| = Implementation Details and Use of LLM = | | = Implementation Details and Use of LLM = |