Skip to content
This repository has been archived by the owner on Apr 14, 2024. It is now read-only.
Yuri Schimke edited this page Jul 18, 2018 · 16 revisions

Github

GraphQL Quick Start

  1. Approve agreement for prerelease https://github.com/prerelease/agreement
  2. Generate a token with (repo + user) https://github.com/settings/tokens
  3. Install githubql and authenticate with the token above
$ brew install yschimke/tap/githubql
$ okurl --authorize github --token 9999999999999999999999999999999999999999

Then experiment with queries https://graphql-explorer.githubapp.com/ and then execute from the command line. First argument is either an inline query or a file e.g. @myquery.graphql. The second argument is optional and is used as variables.

$ githubql '{ viewer { login } }'

{
  "data": {
    "viewer": {
      "login": "yschimke"
    }
  }
}
$ githubql 'query Search($q: String!) {
  search(query: $q, type: USER, first: 2) {
    edges {
      node {
        ... on User {
          name
        }
      }
    }
  }
}' '{"q": "schimke" }'

{
  "data": {
    "search": {
      "edges": [
        {
          "node": {
            "name": "Yuri Schimke"
          }
        },
        {
          "node": {
            "name": "Sascha Schimke"
          }
        }
      ]
    }
  }
}

Post a mutation

$ githubql 'mutation ExampleMutation {
  addComment(input: {
    subjectId: "MDU6SXNzdWUxNTczMzg4ODk=" 
    body: "test"
  }) {
    commentEdge {
      node {
        author {
          name
        }
        repository {
          name
        }
      }
    }
  }
}'

API List

$ okurl https://api.github.com
{
  "current_user_url": "https://api.github.com/user",
  "current_user_authorizations_html_url": "https://github.com/settings/connections/applications{/client_id}",
  "authorizations_url": "https://api.github.com/authorizations",
  "code_search_url": "https://api.github.com/search/code?q={query}{&page,per_page,sort,order}",
  "emails_url": "https://api.github.com/user/emails",
  "emojis_url": "https://api.github.com/emojis",
  "events_url": "https://api.github.com/events",
  "feeds_url": "https://api.github.com/feeds",
  "followers_url": "https://api.github.com/user/followers",
  "following_url": "https://api.github.com/user/following{/target}",
  "gists_url": "https://api.github.com/gists{/gist_id}",
  "hub_url": "https://api.github.com/hub",
  "issue_search_url": "https://api.github.com/search/issues?q={query}{&page,per_page,sort,order}",
  "issues_url": "https://api.github.com/issues",
  "keys_url": "https://api.github.com/user/keys",
  "notifications_url": "https://api.github.com/notifications",
  "organization_repositories_url": "https://api.github.com/orgs/{org}/repos{?type,page,per_page,sort}",
  "organization_url": "https://api.github.com/orgs/{org}",
  "public_gists_url": "https://api.github.com/gists/public",
  "rate_limit_url": "https://api.github.com/rate_limit",
  "repository_url": "https://api.github.com/repos/{owner}/{repo}",
  "repository_search_url": "https://api.github.com/search/repositories?q={query}{&page,per_page,sort,order}",
  "current_user_repositories_url": "https://api.github.com/user/repos{?type,page,per_page,sort}",
  "starred_url": "https://api.github.com/user/starred{/owner}{/repo}",
  "starred_gists_url": "https://api.github.com/gists/starred",
  "team_url": "https://api.github.com/teams",
  "user_url": "https://api.github.com/users/{user}",
  "user_organizations_url": "https://api.github.com/user/orgs",
  "user_repositories_url": "https://api.github.com/users/{user}/repos{?type,page,per_page,sort}",
  "user_search_url": "https://api.github.com/search/users?q={query}{&page,per_page,sort,order}"
}

Queries

$ okurl https://api.github.com/repos/yschimke/okurl/issues | jq .[].title
"call jq by default and add a raw mode"
"check running on linux"
Clone this wiki locally