Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
GitHub GraphQL API
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Brooks Swinnerton
September 13, 2016
Technology
140
4
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
GitHub GraphQL API
Brooks Swinnerton
September 13, 2016
More Decks by Brooks Swinnerton
See All by Brooks Swinnerton
Building GitHub Integrations with Webhooks and REST
bswinnerton
1
170
Launching GitHub's GraphQL API
bswinnerton
4
520
Optimizing APIs for Consumers with GraphQL
bswinnerton
2
450
Launching GitHub's Public GraphQL API
bswinnerton
2
570
GraphQL for Rubyists
bswinnerton
0
310
The Road To Code: Ruby
bswinnerton
0
110
The history of Vim
bswinnerton
0
150
Other Decks in Technology
See All in Technology
【Gen-AX】20260530開催_JJUG CCC 2026 Spring
genax
0
420
「コーディング」しない人のための Claude Code 入門 ChatGPT の次の一歩 — 業務に組み込む 育成・共有・自動化
rfdnxbro
2
1.2k
Dynamic Workersについて
yusukebe
2
590
Claude Code×Terraform IaC テンプレート駆動開発
itouhi
1
340
2026.06.13_AI時代に事業会社が「SIer出身エンジニア」を求める理由 / Why Businesses Seek Engineers with a System Integrator Background in the AI Era
jumtech
0
520
React、まだ楽しくて草
uhyo
7
4.1k
Mastering Ruby Box
tagomoris
3
150
個人最適 から 全体最適 へ AI情報共有会・AIギルド・AI-DLC で進める カンリーの組織展開
rfdnxbro
0
1.6k
LLMを「主役」にしないための 3つの原則
techtekt
PRO
0
120
さきさん文庫の書籍ができるまで
sakiengineer
0
370
生成 AI × MCP で切り拓く次世代 SRE!自律型運用への挑戦と開発者体験の進化
_awache
0
150
Oracle AI Database@Google Cloud:サービス概要のご紹介
oracle4engineer
PRO
6
1.5k
Featured
See All Featured
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
11
940
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
More Than Pixels: Becoming A User Experience Designer
marktimemedia
3
430
The Art of Programming - Codeland 2020
erikaheidi
57
14k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.7k
Game over? The fight for quality and originality in the time of robots
wayneb77
1
190
Un-Boring Meetings
codingconduct
0
310
How to optimise 3,500 product descriptions for ecommerce in one day using ChatGPT
katarinadahlin
PRO
1
3.6k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
62k
Build your cross-platform service in a week with App Engine
jlugia
234
18k
Principles of Awesome APIs and How to Build Them.
keavy
128
17k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
250
1.3M
Transcript
GitHub GraphQL API Brooks Swinnerton
Hi, I’m Brooks
I work at !
Today I want to talk about our API
March 11, 2008
April 8, 2011
today’s REST API
is endpoint driven
is verb driven
None
/repos/:owner/:name/projects ʦʒʒʪ verb ʦʒʒʒʒʒʒʒʒʒʒʒʒʒʒʒʒʒʒʒʒʒʪ endpoint GET
[ { "owner_url": "https://api.github.com/repos/bswinnerton/weekend-project", "url": "https://api.github.com/repos/bswinnerton/weekend-project/projects/1", "id": 166, "name": "The
Website", "body": "The main website powering my weekend hack project.", "number": 1, "creator": { "login": "bswinnerton", "id": 934497, "avatar_url": "https://avatars2.githubusercontent.com/u/934497?v=3", "gravatar_id": "", "url": "https://api.github.com/users/bswinnerton", "html_url": "https://github.com/bswinnerton", "followers_url": "https://api.github.com/users/bswinnerton/followers", "following_url": "https://api.github.com/users/bswinnerton/following{/ other_user}", "gists_url": "https://api.github.com/users/bswinnerton/gists{/gist_id}", "starred_url": "https://api.github.com/users/bswinnerton/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/bswinnerton/subscriptions", "organizations_url": "https://api.github.com/users/bswinnerton/orgs", "repos_url": "https://api.github.com/users/bswinnerton/repos", "events_url": "https://api.github.com/users/bswinnerton/events{/privacy}", "received_events_url": "https://api.github.com/users/bswinnerton/ received_events", "type": "User", "site_admin": true }, "created_at": "2016-09-13T05:25:42Z", "updated_at": "2016-09-13T05:36:56Z" } ]
/repos/:owner/:name/projects/:number/columns ʦʒʒʪ verb ʦʒʒʒʒʒʒʒʒʒʒʒʒʒʒʒʒʒʒʒʒʒʒʒʒʒʒʒʒʒʪ endpoint GET
[ { "project_url": "https://api.github.com/repos/bswinnerton/weekend-project/projects/1", "id": 522, "name": "Up Next", "created_at":
"2016-09-13T05:25:48Z", "updated_at": "2016-09-13T05:31:05Z" }, { "project_url": "https://api.github.com/repos/bswinnerton/weekend-project/projects/1", "id": 523, "name": "In Flight", "created_at": "2016-09-13T05:25:52Z", "updated_at": "2016-09-13T05:34:30Z" }, { "project_url": "https://api.github.com/repos/bswinnerton/weekend-project/projects/1", "id": 524, "name": "Awaiting Review", "created_at": "2016-09-13T05:26:01Z", "updated_at": "2016-09-13T05:36:56Z" }, { "project_url": "https://api.github.com/repos/bswinnerton/weekend-project/projects/1", "id": 525, "name": "Done", "created_at": "2016-09-13T05:26:05Z", "updated_at": "2016-09-13T05:35:39Z" } ]
/repos/:owner/:name/projects/columns/:id/cards ʦʒʒʪ verb ʦʒʒʒʒʒʒʒʒʒʒʒʒʒʒʒʒʒʒʒʒʒʒʒʒʒʒʒʒʒʪ endpoint GET
[ { "column_url": "https://api.github.com/repos/bswinnerton/weekend-project/projects/ columns/525", "id": 2408, "note": null, "created_at":
"2016-09-13T05:34:27Z", "updated_at": "2016-09-13T05:34:27Z", "content_url": "https://api.github.com/repos/bswinnerton/weekend-project/issues/2" }, { "column_url": "https://api.github.com/repos/bswinnerton/weekend-project/projects/ columns/525", "id": 2410, "note": "Find cofounders", "created_at": "2016-09-13T05:35:09Z", "updated_at": "2016-09-13T05:35:09Z" }, { "column_url": "https://api.github.com/repos/bswinnerton/weekend-project/projects/ columns/525", "id": 2409, "note": "Buy domain name", "created_at": "2016-09-13T05:34:43Z", "updated_at": "2016-09-13T05:34:43Z" }, { "column_url": "https://api.github.com/repos/bswinnerton/weekend-project/projects/ columns/525", "id": 2402, "note": "Set up Slack", "created_at": "2016-09-13T05:26:20Z", "updated_at": "2016-09-13T05:26:20Z" } ]
this can be painful
each request counts against a rate limit
data you don’t need
which brings us to tomorrow
September 14, 2016
built on GraphQL
what is GraphQL?
a query language
created by Facebook
query { viewer { name } }
query { viewer { name } } { "data": {
"viewer": { "name": "Brooks" } } }
it’s introspectable
it’s typed
let’s take it for a spin
!
why GraphQL?
you get the data you need
in one request
you get the data you need
when new UI features are released
we use GraphQL in production
early access
we want your feedback
which schemas do you need?
where can we offer better tooling?
what’s confusing about the GraphQL API?
Learn more Check out tomorrow’s talk: Updating our Platform to
help integrators ship http://githubengineering.com https://developer.github.com https://platform.github.community
https://developer.github.com
https://platform.github.community
Come find us
Q&A
FIN