Introducing the GraphQL Changelog
GitHub's GraphQL schema changes multiple times a day. We have some neat automation to automatically update our reference documentation whenever the schema is modified, but there wasn't an easy way to visualize the day-to-day additions and modifications to the schema.
We're now happy to announce the GraphQL Changelog. Every day, around 4pm PST, Hubot will automatically compose a post detailing the GraphQL additions made in the last day. We've also got an RSS feed of this changelog if you want to subscribe. To support this workflow, we're using the very awesome graphql-schema_comparator gem, which provides a diff between two schemas.
If you have any questions, feel free to contact us!
Breaking changes to projects API preview and webhook date format
As previously announced on September 1st,
the format of the created_at
and updated_at
fields in the
projects API preview and project webhook payloads
have been changed to be consistent with the standard YYYY-MM-DDTHH:MM:SSZ
ISO
8601 format used by all other APIs and webhooks.
Previously, project webhook payloads would include these fields as an integer number of seconds:
{
"action": "created",
"project_card": {
"created_at": 1503590773,
"updated_at": 1503590773
}
}
And project APIs would include these fields with milliseconds that were always zero:
{
"url": "https://api.github.com/projects/1002604",
"id": 1002604,
"created_at": "2017-08-24T15:56:15.000Z",
"updated_at": "2017-08-24T15:56:15.000Z"
}
Starting today, these fields are returned as YYYY-MM-DDTHH:MM:SSZ
formatted
strings in all projects APIs and project, card, and column webhook payloads.
If you have any questions or feedback, please let us know.
Additional endpoints available for GitHub Apps
We've begun an audit of the availability of REST API endpoints for GitHub Apps. Additional endpoints will be enabled in batches over the course of the next few months.
Recently enabled endpoints
The first batch of newly enabled endpoints, available now, include:
GET /
GET /emojis
GET /events
GET /networks/:owner/:repo/events
GET /orgs/:org/events
GET /users/:username/events
GET /users/:username/events/public
GET /users/:username/received_events
GET /users/:username/received_events/public
GET /repos/:owner/:name/community/profile
GET /repos/:owner/:repo/community/code_of_conduct
GET /repos/:owner/:repo/branches/:branch/protection
GET /repos/:owner/:repo/branches/:branch/protection/restrictions
GET /repos/:owner/:repo/branches/:branch/protection/restrictions/users
GET /repos/:owner/:repo/branches/:branch/protection/restrictions/teams
GET /repos/:owner/:repo/branches/:branch/protection/required_pull_request_reviews
GET /repos/:owner/:repo/branches/:branch/protection/enforce_admins
PUT /repos/:owner/:repo/branches/:branch/protection
DELETE /repos/:owner/:repo/branches/:branch/protection
PATCH /repos/:owner/:repo/branches/:branch/protection/required_status_checks
DELETE /repos/:owner/:repo/branches/:branch/protection/required_status_checks
POST /repos/:owner/:repo/branches/:branch/protection/required_status_checks/contexts
PUT /repos/:owner/:repo/branches/:branch/protection/required_status_checks/contexts
DELETE /repos/:owner/:repo/branches/:branch/protection/required_status_checks/contexts
DELETE /repos/:owner/:repo/branches/:branch/protection/restrictions
PUT /repos/:owner/:repo/branches/:branch/protection/restrictions/users
POST /repos/:owner/:repo/branches/:branch/protection/restrictions/users
DELETE /repos/:owner/:repo/branches/:branch/protection/restrictions/users
PUT /repos/:owner/:repo/branches/:branch/protection/restrictions/teams
POST /repos/:owner/:repo/branches/:branch/protection/restrictions/teams
DELETE /repos/:owner/:repo/branches/:branch/protection/restrictions/teams
PATCH /repos/:owner/:repo/branches/:branch/protection/required_pull_request_reviews
DELETE /repos/:owner/:repo/branches/:branch/protection/required_pull_request_reviews
POST /repos/:owner/:repo/branches/:branch/protection/enforce_admins
DELETE /repos/:owner/:repo/branches/:branch/protection/enforce_admins
Additionally, the following endpoints are now available for user-to-server requests:
POST /repos/:owner/:repo/git/trees
POST /repos/:owner/:repo/git/refs
POST /repos/:owner/:repo/git/blobs
POST /repos/:owner/:repo/git/commits
POST /repos/:owner/:repo/git/tags
PATCH /repos/:owner/:repo/git/refs/:ref
DELETE /repos/:owner/:repo/git/refs/:ref
PUT /repos/:owner/:repo/topics
PUT /repos/:owner/:repo/contents/:path
DELETE /repos/:owner/:repo/contents/:path
POST /repos/:owner/:repo/statuses/:sha
PUT /repos/:owner/:repo/branches/:branch/protection
DELETE /repos/:owner/:repo/branches/:branch/protection
PATCH /repos/:owner/:repo/branches/:branch/protection/required_status_checks
DELETE /repos/:owner/:repo/branches/:branch/protection/required_status_checks
POST /repos/:owner/:repo/branches/:branch/protection/required_status_checks/contexts
PUT /repos/:owner/:repo/branches/:branch/protection/required_status_checks/contexts
DELETE /repos/:owner/:repo/branches/:branch/protection/required_status_checks/contexts
DELETE /repos/:owner/:repo/branches/:branch/protection/restrictions
PUT /repos/:owner/:repo/branches/:branch/protection/restrictions/users
POST /repos/:owner/:repo/branches/:branch/protection/restrictions/users
DELETE /repos/:owner/:repo/branches/:branch/protection/restrictions/users
PUT /repos/:owner/:repo/branches/:branch/protection/restrictions/teams
POST /repos/:owner/:repo/branches/:branch/protection/restrictions/teams
DELETE /repos/:owner/:repo/branches/:branch/protection/restrictions/teams
PATCH /repos/:owner/:repo/branches/:branch/protection/required_pull_request_reviews
DELETE /repos/:owner/:repo/branches/:branch/protection/required_pull_request_reviews
POST /repos/:owner/:repo/branches/:branch/protection/enforce_admins
DELETE /repos/:owner/:repo/branches/:branch/protection/enforce_admins
PATCH /repos/:owner/:repo/issues/:number
How can I try it?
To access this functionality, you’ll need to provide the following custom media type in the Accept
header:
application/vnd.github.machine-man-preview+json
What about other endpoints?
Check back to the developer blog to stay updated when new batches are available. If you have specific requests or feedback, come chat with us in the Platform forum.
Weak cryptographic standards deprecation update
GitHub announced the deprecation, and eventual disablement, of our use of the below cryptographic standards in a prior post.
-
TLSv1
/TLSv1.1
- This applies to all HTTPS connections, including web, API, and Git connections to https://github.com and https://api.github.com. -
diffie-hellman-group1-sha1
- This applies to all SSH connections to github.com. -
diffie-hellman-group14-sha1
- This applies to all SSH connections to github.com.
Since publication, we have enabled diffie-hellman-group-exchange-sha256
, which will allow the majority of SSH clients to seamlessly transition away from the deprecated algorithms. As noted in the original announcement, we plan to disable TLSv1
/TLSv1.1
, diffie-hellman-group1-sha1
, and diffie-hellman-group14-sha1
on February 1, 2018.
For full details on the deprecation update, please see our GitHub Engineering blog post.
As always, if you have any questions, please get in touch.
Changes to maximum webhook timeout period
We've recently rolled out a change that modifies the maximum length of time the GitHub Platform will wait for an external server to receive a webhook payload.
Previously, from the time we opened a connection to an external server, we provided a 30 second window for the server to acknowledge the request. After that, if the server did not respond, we terminated the connection and the payload was lost.
We've now lowered the timeout window response time to 10 seconds; this is documented in our Best Practices guide. This change has been in production for several weeks as we gauged the effect it would have on integrators.
This change has no effect for webhooks on GitHub Enterprise, which are still kept at a 30 second maximum response time.
If you have any questions or feedback about this, please get in touch with us!
Protected Branches API Becomes an Official Part of API v3
We're excited to announce that the Protected Branches API has graduated from preview mode. As of today, the Protected Branches API is an official part of the GitHub API v3—stable and suitable for production use.
Breaking changes
As announced in a previous blog post, you are now required to pass the required_pull_request_reviews
object when calling the update branch protection endpoint. Passing this object was optional during the preview period.
Also as previously announced, you are no longer able to call the PATCH /repos/:owner/:repo/branches/:branch
endpoint. Please make sure you are using PUT /repos/:owner/:repo/branches/:branch/protection
instead.
Additionally, you must now be a repository administrator to list protected branches.
Preview media type no longer required
If you used the Protected Branches API during the preview period, you needed to provide a custom media type in the Accept
header:
application/vnd.github.loki-preview+json
As of today, you no longer need to pass this custom media type. Instead, we recommend that you specify v3
as the version in the Accept
header:
application/vnd.github.v3+json
Onward!
Thanks to everyone who tried out the Protected Branches API during the preview period!
If you have any questions or feedback, please get in touch with us.
Breaking changes to projects API preview and webhook date format
The format of the created_at
and updated_at
fields in the projects API preview
and project webhook payloads
is being changed to be consistent with the standard YYYY-MM-DDTHH:MM:SSZ
ISO
8601 format used by all other APIs and webhooks.
Previously project webhook payloads would include these fields as an integer number of seconds:
{
"action": "created",
"project_card": {
"created_at": 1503590773,
"updated_at": 1503590773
}
}
And project APIs would include these fields with milliseconds that were always zero:
{
"url": "https://api.github.com/projects/1002604",
"id": 1002604,
"created_at": "2017-08-24T15:56:15.000Z",
"updated_at": "2017-08-24T15:56:15.000Z"
}
Starting on Monday October 2nd, 2017 these fields will be returned as
YYYY-MM-DDTHH:MM:SSZ
formatted strings in all projects APIs and project, card,
and column webhook payloads.
You can opt-in to this change in the project APIs today by using the following
Accept
header that will enable the new format before it becomes the default:
application/vnd.github.inertia-preview.iso8601+json
We apologize for any inconvenience this causes you.
If you have any questions or feedback, please let us know.
Preview the new Nested Teams APIs
We're releasing new endpoints and changes to existing endpoints to better help you administer your organization's nested teams.
New endpoints
Changes to existing API endpoints
The List team members and Get team membership endpoints will now include both direct and child team members.
The List team repositories and Check if a team manages a repository endpoints now include both direct and inherited repositories.
You can now create a team with a parent team by passing the
parent_team_id
parameter to the Create team endpoint.You can now update a team's parent team by passing the
parent_team_id
parameter to the Edit team endpoint.Deleting a nested team through the Delete team endpoint will delete the team and all its child teams. Note: this action is only available to organization admins.
Listing a repository's collaborators through the Lists collaborators will now include child team members.
Endpoints that return team hashes will now include the
parent
field representing the parent team. Additionally, themembers_count
andrepositories_count
will include all members and repositories according to the nested structure.
To access the Nested Teams APIs during the preview period, you must provide a custom media type in the Accept
header:
application/vnd.github.hellcat-preview+json
During the preview period, we may change aspects of these API methods based on developer feedback. If we do, we will announce the changes here on the developer blog, but we will not provide any advance notice.
If you have any questions or feedback, please let us know!
Repository Invitations API is now official
The Repository Invitations API is now part of the official GitHub API. You will no longer be able to directly add a user to a repository. Instead, the user will receive an invitation, which they can accept or decline via email, notification, or API endpoint.
For details on how to use the repository invitations endpoints, please refer to the API documentation.
If you have any questions or feedback, please get in touch with us.
Helium and GitHub partner to streamline connected hardware development
Mark Phillips is Helium's Director of Customer Success.
In the coming weeks, we're excited to make it easier for IoT developers to prototype and ship connected devices as part of our new partnership with GitHub, and the GitHub Developer Program.
This means two things for the GitHub community:
You can look forward to us integrating several parts of the Helium platform and features with the GitHub API, so you'll have a smoother experience when building IoT hardware and sensors.
Starting today, all GitHub Developer Program members can access discounts on Helium products, cloud services, and ongoing support to get started.
Why Helium and GitHub?
Hardware and IoT developers already use GitHub as a core part of their workflows. Arduino and Raspberry Pi are a couple of hardware platforms that use GitHub for their open source development and community building. Similarly, the Helium Team depends on GitHub for our growing suite of open source IoT development tools.
We firmly believe that Helium, and our combination of hardware and software, is the best way for developers to protoype and deploy connected, secure hardware products. Now we're going to make it even better by removing as much friction as possible for GitHub users who are building applications with a wireless component. Our partnership will make it easier for you to access IoT development services and move faster when you're prototyping.
Helium and GitHub integration roadmap
Our current integration roadmap currently has two components, and it will likely expand as we collect your feedback.
GitHub authentication for the Helium Dashboard
We'll deliver the ability to create accounts and log in to the Helium Dashboard using your existing GitHub account. We'll also make it possible to automatically mirror your GitHub Team structure within the Helium Dashboard.
git push to deploy device configurations updates over the air
Few platforms make it possible to deploy configuration or complete software updates over the air to connected sensors. We'll offer developers the ability to git push
updates to a target repository that will then kick off an OTA deployment to devices deployed in the field.
Helium for GitHub Developer Program members
To help Developer Program members get started, we're offering all of these discounts on Helium products:
- 35% off a Helium Starter Kit until 8/31
- 25% off a Helium Starter Kit after 8/31
- 15% off all future hardware purchases
- $100 worth of Helium Dashboard credits
- 30 minute onboarding with Helium Engineering
- 10% off future support contract purchases
Just use code HELIUM-AND-GITHUB-4-IOT during checkout.
All current members of the GitHub Developer Program received an email with details about how to buy Helium products with these discounts. If you're not yet a member of the GitHub Developer Program, you can apply here.
We can't wait to see what you build with GitHub and Helium. If you have any questions about our partnership or products, find us in the Helium Community Slack, post a message on the Helium Developer Forum, or send me a note.