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
160
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
180
Launching GitHub's GraphQL API
bswinnerton
4
530
Optimizing APIs for Consumers with GraphQL
bswinnerton
2
460
Launching GitHub's Public GraphQL API
bswinnerton
2
580
GraphQL for Rubyists
bswinnerton
0
320
The Road To Code: Ruby
bswinnerton
0
120
The history of Vim
bswinnerton
0
160
Other Decks in Technology
See All in Technology
AI ネイティブな組織に Gemini Enterprise Agent Platform がなぜ必要なのか
asei
1
190
TypeScript入門 2026
recruitengineers
PRO
2
460
QAエンジニア起点で進める、SmartHRにおける信頼性向上について
kaomi_wombat
1
120
AIは実装を速くする。では、私たちは何を今作るべきか?-立場を越えてリリースに向き合ったチーム開発の実践 / 20260801 Hiromi Nakaya and Naoki Takahashi
shift_evolve
PRO
3
430
FORENSIA: ローカルLLMフォレンジックハーネス
sumeshi
2
250
メルカリのグローバルアプリで挑んだ AlloyDB 運用と課題解決の実践記
hatappi
0
230
Redmine 7.0 新機能・機能強化解説(OSC2026京都ダイジェスト版)
vividtone
1
200
トヨタ⽣産⽅式(TPS)⼊⾨
recruitengineers
PRO
2
580
攻撃と防御で学ぶAI時代のプロダクトセキュリティ演習
recruitengineers
PRO
3
810
侵入は突然に 〜 IoTマルウェアと悪用される家庭の機器 ~ / When Intrusion Strikes: IoT Malware and the Abuse of Home Devices
nttcom
0
1.5k
【CEDEC2026】グラフィックスエンジニアのためのニューラルシェーディング入門
cygames
PRO
0
110
AIが自社のTableauを操作する世界へ:Tableau MCP超入門
tbtykk
0
110
Featured
See All Featured
How to build a perfect <img>
jonoalderson
1
5.9k
Ecommerce SEO: The Keys for Success Now & Beyond - #SERPConf2024
aleyda
1
2.1k
The Illustrated Guide to Node.js - THAT Conference 2024
reverentgeek
1
420
How to make the Groovebox
asonas
2
2.3k
Building an army of robots
kneath
306
46k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
16k
SEO for Brand Visibility & Recognition
aleyda
0
4.7k
A better future with KSS
kneath
240
18k
The Cost Of JavaScript in 2023
addyosmani
55
10k
From π to Pie charts
rasagy
0
250
Into the Great Unknown - MozCon
thekraken
41
2.7k
Ten Tips & Tricks for a 🌱 transition
stuffmc
0
160
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