http://developer.github.com/GitHub API Changes2015-03-09T00:00:00Ztechnoweeniehttps://github.com/technoweenietag:developer.github.com,2015-03-09:/changes/2015-03-09-licenses-api/Licenses API2015-03-09T00:00:00Z2015-03-09T00:00:00Zbenbalterhttps://github.com/technoweenie<p>We’re introducing a new <a href="/v3/licenses">license API</a> preview to support <a href="https://github.com/blog/1964-license-usage-on-github-com">open source license usage on GitHub.com</a>.</p>
<p>To access the API during the preview period, you must provide a custom <a href="/v3/media">media type</a> in the <code>Accept</code> header:</p>
<pre><code>application/vnd.github.drax-preview+json
</code></pre>
<p>This will then expose two new API endpoints. You can get a list of all known licenses:</p>
<pre><code>GET /licenses
</code></pre>
<p>Or get information about a particular license:</p>
<pre><code>GET /licenses/mit
</code></pre>
<p>When the preview media type is passed, the repository api will also return information about a repository’s license file when you get an individual repository:</p>
<pre><code>GET /repos/github/hubot
</code></pre>
<p>For more information, see the <a href="/v3/licenses/">licenses API documentation</a>, and if you have any questions or feedback, please <a href="https://github.com/contact?form%5Bsubject%5D=Licenses+API">let us know</a>.</p>
tag:developer.github.com,2015-02-24:/changes/2015-02-24-more-time-to-prepare-for-the-breaking-changes-to-organization-permissions/More time to prepare for the breaking changes to organization permissions2015-02-24T00:00:00Z2015-02-24T00:00:00Zjakeboxerhttps://github.com/technoweenie<p>After listening to your feedback on the upcoming <a href="/changes/2014-12-08-organization-permissions-api-preview/">breaking changes to organization permissions</a>, we’re giving developers more time to update their applications. We’ll announce an updated timeline for these changes in the coming weeks.</p>
<p>In the meantime, if your application relies on any of the affected functionality described in our <a href="/changes/2014-12-08-organization-permissions-api-preview/">previous blog post</a>, please <strong>update your code</strong> to account for these changes. If you have any questions or feedback, please <a href="https://github.com/contact?form%5Bsubject%5D=Organization+Permissions+API">get in touch with us</a>!</p>
tag:developer.github.com,2015-02-19:/changes/2015-02-20-migration-period-removing-authorizations-token/Breaking changes to Authorizations API responses on April 202015-02-19T00:00:00Z2015-02-19T00:00:00Zptoomey3https://github.com/technoweenie<p>A couple weeks ago we <a href="/changes/2015-02-03-removing-authorizations-token-update/">extended the preview period</a> of several API changes related to managing OAuth application authorizations. Today, we’re finalizing these changes. This new functionality is now stable and suitable for production use. If your application relies on any of the affected functionality (described below), be sure to <strong>update your code before April 20</strong> to account for these changes.</p>
<h3 id="breaking-changes-coming-on-april-20">Breaking changes coming on April 20</h3>
<p>If your application uses any of the following APIs, then you may be affected by this change:</p>
<ul>
<li>The <a href="/v3/oauth_authorizations/#list-your-authorizations">List your authorizations</a> API</li>
<li>The <a href="/v3/oauth_authorizations/#get-a-single-authorization">Get a single authorization</a> API</li>
<li>The <a href="/v3/oauth_authorizations/#get-or-create-an-authorization-for-a-specific-app">Get-or-create an authorization for a specific app</a> API (<code>token</code> is still returned for “create”)</li>
<li>The <a href="/v3/oauth_authorizations/#get-or-create-an-authorization-for-a-specific-app-and-fingerprint">Get-or-create an authorization for a specific app and fingerprint</a> API (<code>token</code> is still returned for “create”)</li>
<li>The <a href="/v3/oauth_authorizations/#update-an-existing-authorization">Update an existing authorization</a> API</li>
</ul>
<p>If your application uses these APIs, we urge you to update your application as soon as possible. (Read <a href="/changes/2014-12-08-removing-authorizations-token/">the December announcement</a> for more details on the changes.)</p>
<p>Starting today, we’re offering a migration period allowing applications to opt in to these changes (as described below). On April 20, these changes will become official parts of the GitHub API v3. At that time, these changes will apply to all API consumers.</p>
<h3 id="migration-period">Migration period</h3>
<p>During the migration period, you can opt-in to these changes using the following custom media type in the <code>Accept</code> header:</p>
<pre><code>application/vnd.github.mirage-preview+json
</code></pre>
<p>We want to make these updates as smooth as possible for everyone, and we hope that the migration period gives you flexibility to adopt these changes on your own schedule. If you have any questions or feedback, please <a href="https://github.com/contact?form%5Bsubject%5D=Removing+authorizations+token">get in touch with us</a>!</p>
tag:developer.github.com,2015-02-18:/changes/2015-02-18-new-releases-api-methods/New Releases API methods2015-02-18T00:00:00Z2015-02-18T00:00:00Zpengwynnhttps://github.com/technoweenie<p>We’ve added two new methods to the <a href="/v3/repos/releases/">Releases API</a>. You can now get the <a href="/v3/repos/releases/#get-the-latest-release">latest published release</a> for a repository.</p>
<pre><code>GET /repos/:owner/:repo/releases/latest
</code></pre>
<p>You can also get a <a href="/v3/repos/releases/#get-a-release-by-tag-name">release by tag name</a>.</p>
<pre><code>GET /repos/:owner/:repo/releases/tags/:tag
</code></pre>
<p>If you have any questions or feedback, please <a href="https://github.com/contact?form%5Bsubject%5D=New+Releases+API+methods">get in touch</a>.</p>
tag:developer.github.com,2015-02-03:/changes/2015-02-03-removing-authorizations-token-update/Removing token attribute from Authorizations API responses (Update)2015-02-03T00:00:00Z2015-02-03T00:00:00Zptoomey3https://github.com/technoweenie<p>In December, we <a href="/changes/2014-12-08-removing-authorizations-token/">released a preview</a> of several API changes related to managing OAuth application authorizations. As part of those changes we introduced several new response attributes (<code>token_last_eight</code>, <code>hashed_token</code>, and <code>fingerprint</code>) to the Authorizations API. We have decided to modify <code>hashed_token</code> to return the SHA-256 hex digest of the associated token instead of Base64. Given that Base64 has several common variants (original, URL safe, etc) we decided that returning the value as hex is less ambiguous and will be more useful for developers.</p>
<h3 id="extended-preview-period">Extended preview period</h3>
<p>Because of the change to <code>hashed_token</code>, we are extending the preview period by two weeks. If no additional changes are made during this extended preview period we will announce the end of the preview and beginning of the eight week migration period on February 17. The migration period will allow applications to opt in to these changes before they become an official part of the GitHub API v3.</p>
<p>If you have any questions or feedback, please <a href="https://github.com/contact?form%5Bsubject%5D=Removing+authorizations+token">drop us a line</a>!</p>
tag:developer.github.com,2015-01-19:/changes/2015-01-19-an-integrators-guide-to-organization-application-policies/An integrator's guide to organization application policies2015-01-19T00:00:00Z2015-01-19T00:00:00Zpengwynnhttps://github.com/technoweenie<p>As we <a href="https://github.com/blog/1941-organization-approved-applications">announced over on the GitHub blog</a>, organization admins can now
control how third-party applications access their organization data. Allowing
admins to approve or deny applications will ultimately result in deeper trust
and increase overall adoption of integrations within organizations on GitHub.</p>
<p>As an integrator, here’s what you need to know about organization application
policies and how this feature could impact your application.</p>
<h3 id="guiding-principles">Guiding principles</h3>
<p>We’ve tried to strike the right balance between organization privacy and the
user experience for integrators and end users. Organizations should be able to
prevent applications they do not trust from accessing their organization data
without creating a multitude of new edge cases for integrators.</p>
<p>With that goal in mind, the feature works like this: <strong>if an organization’s
application policy prevents an application from accessing its resources, the
API behaves as if the authenticating user is not a member of the
organization</strong>. Specifically, this means an application authenticating on
behalf of a user using OAuth will have:</p>
<ul>
<li>
<strong>Read-only access to public resources.</strong> Organization-owned public
repositories, issues, and other resources will be visible via the API and
show up in resource listings, but mutating methods (<code>POST</code>, <code>PATCH</code>, <code>PUT</code>,
and <code>DELETE</code>) will return status <code>403</code>.</li>
<li>
<strong>No access to private resources.</strong> Organization-owned private repositories,
issues, and other resources will not be visible via the API and will not
show up in resource <a href="/v3/issues/#list-issues">listings</a> that co-mingle public and private
resources. Hooks for these private repositories are muted and will not be
delivered as long as the application is restricted by the organization.</li>
</ul>
<p>Since applications should already handle the scenario where a user loses access
to organization resources, this reduces the work integrators need to do.</p>
<h3 id="checking-organization-access">Checking organization access</h3>
<p>As organization admins adopt application whitelists and restrict third-party
application access to organization resources, your application may lose access
to those resources. If an organization member is not aware of the new access
policy, they may wonder why their private repositories or other resources no
longer work or show up in your application.</p>
<p>There are a couple ways to help troubleshoot access for your end users.</p>
<ul>
<li>
<p><strong>Via the GitHub UI.</strong> The simplest way to help end users understand how
organization access policies affect their access to your application is to
provide a link to <a href="https://help.github.com/articles/requesting-organization-approval-for-your-authorized-applications/">their authorization details</a>
under their GitHub account settings as <a href="/v3/oauth/#directing-users-to-review-their-access-for-an-application">described in the OAuth
documentation</a>.</p>
</li>
<li>
<p><strong>Via the API.</strong> For an even better user experience, <a href="/guides/discovering-resources-for-a-user/">use the
API</a> to list which user organizations your application
can access, and provide users with the link mentioned above to request
access from their organization admins.</p>
</li>
</ul>
<h3 id="listing-accessible-organization-resources">Listing accessible organization resources</h3>
<p>In addition to checking access to a user’s organizations, you’ll want to ensure
you’re discovering their accessible resources in the most efficient way. Recent
changes to the <a href="/v3/repos/#list-your-repositories">Respositories API</a> might reduce the API calls
your application needs to make to find a user’s repositories across all of
their organization mememberships.</p>
<h3 id="ensuring-uninterrupted-ssh-access">Ensuring uninterrupted SSH access</h3>
<p>Since applications should already handle the scenario where a user loses access
to organization resources (e.g., when a user leaves an organization), this
reduces the work integrators need to do. Keys created by OAuth applications (or
those created before GitHub started tracking that information) will not have
access to repositories owned by organizations that restrict third-party
applications. If your application uses keys <strong>created before February 24,
2014</strong>, you <a href="/changes/2014-12-12-replace-older-ssh-keys-created-by-your-application/">should replace those older keys</a> to ensure things keep
running smoothly for your application.</p>
<h3 id="were-here-to-help">We’re here to help</h3>
<p>This is a big feature, and we’re sure it will impact many of our integrators as
organizations adopt third-party application restrictions. We also think it
provides a huge net benefit for integrators as organizations choose to use
OAuth integrations with more confidence.</p>
<p>If you have any questions or feedback, please <a href="https://github.com/contact?form%5Bsubject%5D=Organization+Access+Policies+help+for+integrators">get in touch</a>.</p>
tag:developer.github.com,2015-01-08:/changes/2015-01-08-discovering-resources-for-a-user/New guide: Discovering resources for a user2015-01-08T00:00:00Z2015-01-08T00:00:00Zjasonrudolphhttps://github.com/technoweenie<p>Is your application taking advantage of the recommended workflow for discovering a user’s repositories and organizations? With the <a href="/changes/2014-12-08-organization-permissions-api-preview/">recent improvements to the API</a>, the process is simpler than ever. In our newest guide, we show you how to <a href="/guides/discovering-resources-for-a-user/">reliably identify the resources that your app can access for a given user</a>.</p>
<p>If you have any questions or feedback, we’d love to <a href="https://github.com/contact?form%5Bsubject%5D=API+v3:+Discovering+resources+for+a+user">hear from you</a>.</p>
tag:developer.github.com,2015-01-07:/changes/2015-01-07-prepare-for-organization-permissions-changes/Prepare for upcoming organization permissions changes2015-01-07T00:00:00Z2015-01-07T00:00:00Zjakeboxerhttps://github.com/technoweenie<p>Last month, we <a href="/changes/2014-12-08-organization-permissions-api-preview/">released a preview</a> of several API changes related to managing organization members and repositories. Today, we’re finalizing these changes. This new functionality is now stable and suitable for production use. If your application relies on any of the affected functionality (described below), be sure to <strong>update your code before February 24</strong> to account for these changes.</p>
<h3 id="breaking-changes-coming-on-february-24">Breaking changes coming on February 24</h3>
<p>If your application uses any of the following APIs, then you are affected by this change:</p>
<ul>
<li>APIs for managing your organization’s admins through the Owners team</li>
<li>The <a href="/v3/repos/#list-your-repositories">List your repositories</a> API</li>
<li>The <a href="/v3/orgs/#list-your-organizations">List your organizations</a> API</li>
<li>The <a href="/v3/orgs/#list-user-organizations">List user organizations</a> API</li>
</ul>
<p>If your application uses these APIs, we urge you to update your application as soon as possible. (Read <a href="/changes/2014-12-08-organization-permissions-api-preview/">last month’s announcement</a> for more details on the changes.)</p>
<p>Starting today, we’re offering a migration period allowing applications to opt in to these changes (as described below). On February 24, these changes will become official parts of the GitHub API v3. At that time, these changes will apply to all API consumers.</p>
<h3 id="migration-period">Migration period</h3>
<p>During the migration period, you can opt-in to these changes using the following custom media type in the <code>Accept</code> header:</p>
<pre><code>application/vnd.github.moondragon+json
</code></pre>
<p>We want to make these updates as smooth as possible for everyone, and we hope that the migration period gives you flexibility to adopt these changes on your own schedule. If you have any questions or feedback, please <a href="https://github.com/contact?form%5Bsubject%5D=Organization+Permissions+API">get in touch with us</a>!</p>
tag:developer.github.com,2014-12-12:/changes/2014-12-12-replace-older-ssh-keys-created-by-your-application/Replace older SSH keys created by your application2014-12-12T00:00:00Z2014-12-12T00:00:00Zjasonrudolphhttps://github.com/technoweenie<p>Back in February, we <a href="/changes/2014-02-24-finer-grained-scopes-for-ssh-keys/#keys-are-now-immutable">improved the security audit trail for SSH keys</a>. Soon, organizations will be able to block access for SSH keys that were created prior to those improvements. If your application relies on <a href="/guides/managing-deploy-keys/#deploy-keys">deploy keys</a> or <a href="/v3/users/keys/">user keys</a> for repository access, we recommend replacing any keys created before February 24, 2014.</p>
<p>To ensure that your application is not affected by organizations blocking access to these keys, <strong>you should replace the affected keys by January 15, 2015</strong>.</p>
<h2 id="how-should-you-replace-these-keys">How should you replace these keys?</h2>
<p>We recommend the following steps for identifying and replacing the affected keys.</p>
<h3 id="identify-the-affected-keys">1. Identify the affected keys</h3>
<p>You only need to replace keys that your application created prior to February 24, 2014. If you don’t know when your app created a given key, you can get the creation timestamp from the API. The <code>created_at</code> property is available for <a href="/v3/repos/keys/">deploy keys</a> and for <a href="/v3/users/keys/#list-your-public-keys">user keys</a>.</p>
<h3 id="inform-the-affected-users">2. Inform the affected users</h3>
<p>Once you know which keys you need to replace, we recommend that you inform the affected users.</p>
<p>For security, GitHub automatically sends an email to a user whenever a new SSH key is added to their account. Similarly, when a new deploy key is added to a repository, GitHub sends an email to the repository’s administrators. When you replace your application’s old keys with new ones, GitHub will email the affected users. To avoid surprising those users, you should alert them that you’ll be replacing your keys. You may want to include a link to this post in your message.</p>
<h3 id="add-a-new-key">3. Add a new key</h3>
<p>Use the API to add the new <a href="/v3/repos/keys/#create">deploy key</a> or <a href="/v3/users/keys/#create-a-public-key">user key</a>.</p>
<h3 id="delete-the-old-key">4. Delete the old key</h3>
<p>Once your application is using the new key, use the API to delete the old one. There’s an <a href="/v3/repos/keys/#delete">API for deleting deploy keys</a> and an <a href="/v3/users/keys/#delete-a-public-key">API for deleting user keys</a>.</p>
<h2 id="were-here-to-help">We’re here to help</h2>
<p>As always, if you have any questions or concerns, please <a href="https://github.com/contact?form%5Bsubject%5D=Replace+SSH+keys+created+by+application">get in touch</a>.</p>
tag:developer.github.com,2014-12-09:/changes/2014-12-09-new-attributes-for-stars-api/New Attributes for Starring API2014-12-09T00:00:00Z2014-12-09T00:00:00Zarfonhttps://github.com/technoweenie<p>You can now see when a user starred a repository. To receive the new response format containing the <code>starred_at</code> field, request the new media type:</p>
<pre><code>curl -H "Accept: application/vnd.github.v3.star+json" https://api.github.com/users/andrew/starred
</code></pre>
<p>Note the starred repository is now available in the repo field.</p>
<h3 id="feedback">Feedback</h3>
<p>If you have any questions or feedback about these changes, please <a href="https://github.com/contact?form%5Bsubject%5D=New+Attributes+for+Starring+API">drop us a line</a>.</p>
tag:developer.github.com,2014-12-08:/changes/2014-12-08-organization-permissions-api-preview/Preview the upcoming organization permission changes2014-12-08T00:00:00Z2014-12-08T00:00:00Zjakeboxerhttps://github.com/technoweenie<p><strong>UPDATE (2014-12-12):</strong> The <a href="/v3/orgs/#list-your-organizations">List your organizations</a> API is now included in this preview as well.</p>
<p>We have some upcoming changes that will affect the way organization members and repositories are managed. The most important changes are:</p>
<ul>
<li>The Owners team will no longer be special.</li>
<li>The <a href="/v3/repos/#list-your-repositories">List your repositories</a> API will include organization-owned repositories.</li>
<li>The <a href="/v3/orgs/#list-user-organizations">List user organizations</a> API will only include public organization memberships.</li>
<li>The <a href="/v3/orgs/#list-your-organizations">List your organizations</a> API will require <code>user</code> scope or <code>read:org</code> scope.</li>
</ul>
<h2 id="whats-happening-to-the-owners-team">What’s happening to the Owners team?</h2>
<p>Currently, members of your Owners team are administrators of your organization. Soon, your Owners team will become a totally normal team. Adding and removing Owners team members won’t change their administrator status anymore. Instead, you’ll be able to directly grant admin permissions to your organization’s members without adding them to any special teams.</p>
<p>We won’t delete your Owners team, but you’ll be able to delete or rename it yourself if you want. Organizations created after the change won’t have an Owners team.</p>
<h3 id="what-should-you-do">What should you do?</h3>
<p>In preparation for this change to the Owners team, we’re releasing a few new APIs. You’ll be able to use these APIs to manage organization admins without relying on the Owners team.</p>
<h4 id="adding-an-organization-admin">Adding an organization admin</h4>
<p>To add a new organization admin, use the new <a href="/v3/orgs/members/#add-or-update-organization-membership">Add or update organization membership</a> endpoint, specifying a role of <code>"admin"</code> in the request body. This replaces adding or inviting people to the Owners team.</p>
<h4 id="removing-an-organization-admin">Removing an organization admin</h4>
<p>To remove someone from the organization role but keep them as a member of their teams, use the new <a href="/v3/orgs/members/#add-or-update-organization-membership">Add or update organization membership</a> endpoint, specifying a role of <code>"member"</code> in the request body. This replaces removing people from the Owners team.</p>
<h4 id="listing-organization-admins">Listing organization admins</h4>
<p>To get a list of all your organization’s admins, use the <a href="/v3/orgs/members/#members-list">Organization members list</a> endpoint, specifying a role of <code>"admin"</code> in the query string. This replaces listing the members of the Owners team.</p>
<h4 id="checking-if-someone-is-an-organization-admin">Checking if someone is an organization admin</h4>
<p>To check if a given user is an organization admin, use the new <a href="/v3/orgs/members/#get-organization-membership">Get organization membership</a> endpoint. If the returned <code>"role"</code> attribute is set to <code>"admin"</code> and the returned <code>"state"</code> attribute is set to <code>"active"</code>, the user is an organization admin. This replaces checking if a user is on the Owners team.</p>
<h2 id="whats-happening-to-the-list-your-repositories-api">What’s happening to the “List your repositories” API?</h2>
<p>Currently, the <a href="/v3/repos/#list-your-repositories">List your repositories</a> API only returns repositories that are owned by users, not by organizations. If you want a list of <em>all</em> the repositories that the authenticated user has access to, you need to use multiple API methods.</p>
<p>Soon, this API will include all repositories that the authenticated user has access to (whether they’re owned by a user or by an organization).</p>
<h3 id="what-should-you-do-1">What should you do?</h3>
<p>Many apps use the <a href="/v3/repos/#list-your-repositories">List your repositories</a> API in conjunction with the <a href="/v3/orgs/#list-your-organizations">List your organizations</a> and <a href="/v3/repos/#list-organization-repositories">List organization repositories</a> APIs to build up a list of all the repositories the authenticated user has access to. If your app is doing this, you’ll be able to get rid of all the organization-related API calls and just use the <a href="/v3/repos/#list-your-repositories">List your repositories</a> API.</p>
<p>If your app uses the <a href="/v3/repos/#list-your-repositories">List your repositories</a> API for another purpose, you’ll need to update your app to handle the new organization-owned repositories we’ll be returning.</p>
<h2 id="whats-happening-to-the-list-user-organizations-api">What’s happening to the “List user organizations” API?</h2>
<p>The <a href="/v3/orgs/#list-user-organizations">List user organizations</a> API is intended provide <a href="https://help.github.com/articles/publicizing-or-concealing-organization-membership">public organization memberships</a> for any user. When you use this API to fetch <em>your own</em> organizations, this API currently returns your public and private organization memberships.</p>
<p>Soon, this API will only return public organization memberships.</p>
<h3 id="what-should-you-do-2">What should you do?</h3>
<p>If your app uses the <a href="/v3/orgs/#list-user-organizations">List user organizations</a> API to fetch all of the organization memberships (public and private) for the authenticated user, you’ll need to update your app to use the <a href="/v3/orgs/#list-your-organizations">List your organizations</a> API instead. The <a href="/v3/orgs/#list-your-organizations">List your organizations</a> API returns all organizations (public and private) that your app is authorized to access.</p>
<h2 id="whats-happening-to-the-list-your-organizations-api">What’s happening to the “List your organizations” API?</h2>
<p>OAuth requests will soon require minimum <a href="/v3/oauth/#scopes">scopes</a> in order to access the <a href="/v3/orgs/#list-your-organizations">List your organizations</a> API.</p>
<p>Currently, the API response always includes your <a href="https://help.github.com/articles/publicizing-or-concealing-organization-membership">public organization memberships</a>, regardless of the OAuth scopes associated with your request. If you have <code>user</code>, <code>read:org</code>, <code>write:org</code>, or <code>admin:org</code> scope, the response also includes your private organization memberships.</p>
<p>Soon, this API will only return organizations that your authorization allows you to operate on in some way (e.g., you can list teams with <code>read:org</code> scope, you can publicize your organization membership with <code>user</code> scope, etc.). Therefore, this API will require at least <code>user</code> or <code>read:org</code> scope. (<code>write:org</code> and <code>admin:org</code> scope implicitly include <code>read:org</code> scope.) OAuth requests with insufficient scope will receive a <code>403 Forbidden</code> response.</p>
<h3 id="what-should-you-do-3">What should you do?</h3>
<p>If you <a href="/v3/auth/#via-username-and-password">authenticate via username and password</a>, you are not affected by this change.</p>
<p>If your app only needs to fetch the user’s public organization memberships, you should use the <a href="/v3/orgs/#list-user-organizations">List user organizations</a> API instead. Since that API only returns public information, it does not require any scopes.</p>
<h2 id="preview-period">Preview period</h2>
<p>Starting <strong>today</strong>, these new APIs are available for developers to preview. We expect the preview period to last for four weeks. (Stay tuned to the developer blog for updates.) At the end of the preview period, these additions will become official components of the GitHub API.</p>
<p>While these additions are in their preview period, you’ll need to provide the following custom media type in the <code>Accept</code> header:</p>
<pre><code>application/vnd.github.moondragon-preview+json
</code></pre>
<p>During the preview period, we may change aspects of these endpoints. If we do, we will announce the changes on the developer blog, but we will not provide any advance notice.</p>
<h2 id="migration-period">Migration period</h2>
<p>At the end of the preview period, we will announce the start of a migration period. At that time, developers should update their applications to use the new APIs for managing organization admins. During this period, you will still be able to use the Owners team to manage your organization’s admins, so that you have time to update your applications to use the new APIs without breakage. We expect the migration period to last for four weeks.</p>
<p>At the end of the migration period, the Owners team will no longer be special, and you’ll no longer be able to rely on it for managing organization admins.</p>
<p>If you have any questions or feedback, please <a href="https://github.com/contact?form%5Bsubject%5D=Organization+Admin+Pre-release+Preview">get in touch with us</a>!</p>
tag:developer.github.com,2014-12-08:/changes/2014-12-08-removing-authorizations-token/Removing token attribute from Authorizations API responses2014-12-08T00:00:00Z2014-12-08T00:00:00Zptoomey3https://github.com/technoweenie<p>Since OAuth access tokens function like passwords, they should be treated with
care. Today we are making it easier to more securely work with authorizations
via the Authorizations API. We are deprecating the use use of the <code>token</code>
attribute in the majority of the <a href="/v3/oauth_authorizations/">Authorizations API</a>
responses. For the <a href="/v3/oauth_authorizations/#deprecation-notice">affected APIs</a>, the
<code>token</code> attribute will soon return an empty string. To get ready for that
change, we are giving developers a chance to
<a href="#preview-period">preview the updated API</a> starting today.</p>
<h2 id="whats-changing">What’s changing?</h2>
<p>The current <a href="/v3/oauth_authorizations/">OAuth Authorizations API</a> requires GitHub to store the full value for
each OAuth token on our servers. In order to increase the security for our
users, we are changing our architecture to store the SHA-256 digest of OAuth
tokens instead. GitHub securely hashes user passwords using bcrypt and we want
to provide comparable security for OAuth tokens as well.</p>
<p>Rest assured that this change is an entirely proactive measure from GitHub and is not associated with any security incident.</p>
<h2 id="who-is-affected">Who is affected?</h2>
<p>This change affects any code that relies on accessing the <code>token</code> attribute from
<a href="/v3/oauth_authorizations/#deprecation-notice">these OAuth Authorizations API responses</a>.
For example, our own <a href="https://mac.github.com/">GitHub for Mac</a> and
<a href="https://windows.github.com/">GitHub for Windows</a> applications relied on reading the <code>token</code>
from the <a href="/v3/oauth_authorizations/#get-or-create-an-authorization-for-a-specific-app">Get-or-create an authorization for a specific app</a> API, in order to support multiple installations of our desktop application for a single user.</p>
<h2 id="what-should-you-do">What should you do?</h2>
<p>In order to reduce the impact of removing the <code>token</code> attribute, the OAuth
Authorizations API has added a new request attribute (<code>fingerprint</code>), added
three new response attributes (<code>token_last_eight</code>, <code>hashed_token</code>, and
<code>fingerprint</code>), and added <a href="/v3/oauth_authorizations/#get-or-create-an-authorization-for-a-specific-app-and-fingerprint">one new API</a>.
While these new APIs and attributes do not replace the full functionality that
previously existed, they can be used in place of <code>token</code> for most common use cases.</p>
<ul>
<li>
<p><code>token_last_eight</code> returns the last eight characters of the associated OAuth
token. As an example, <code>token_last_eight</code> could be used to display a list of
partial token values to help a user manage their OAuth tokens.</p>
</li>
<li>
<p><code>hashed_token</code> is the base64 of the SHA-256 digest of the token.
<code>hashed_token</code> could be used to programmatically validate that a given token
matches an authorization returned by the API.</p>
</li>
<li>
<p><code>fingerprint</code> is a new optional request parameter that allows an OAuth
application to create multiple authorizations for a single user. <code>fingerprint</code>
should be a string that distinguishes the new authorization from others
for the same client ID and user.</p>
<p>For example, to differentiate installations of a desktop application across
multiple devices you might set <code>fingerprint</code> to
<code>SHA256_HEXDIGEST("GitHub for Mac - MAC_ADDRESS_OF_MACHINE")</code>. Since
<code>fingerprint</code> is not meant to be a user-facing value, you should still set
the <code>note</code> attribute to help a user differentiate between authorizations on their
<a href="https://github.com/settings/applications">OAuth applications listing on GitHub</a>.</p>
</li>
<li>
<p><a href="/v3/oauth_authorizations/#get-or-create-an-authorization-for-a-specific-app-and-fingerprint">Get-or-create an authorization for a specific app and fingerprint</a>
is a new API that is analagous to the
<a href="/v3/oauth_authorizations/#get-or-create-an-authorization-for-a-specific-app">Get-or-create an authorization for a specific app</a>
API, but adds support for the new <code>fingerprint</code> request parameter.</p>
</li>
</ul>
<h2 id="preview-period">Preview period</h2>
<p>We are making the new Authorizations API available today for developers to
preview. During this period, we may change aspects of these endpoints. If we do,
we will announce the changes on the developer blog, but we will not provide any
advance notice.</p>
<p>While these new APIs are in their preview period, you’ll need to provide the
following custom media type in the Accept header:</p>
<pre><code>application/vnd.github.mirage-preview+json
</code></pre>
<p>We expect the preview period to last 4-6 weeks. (Stay tuned to the developer blog for updates.) At the end of the preview period, these changes will become an official and stable part of GitHub API.</p>
<h2 id="migration-period">Migration period</h2>
<p>At the end of the preview period, we will announce the start of a migration period. Developers will have 8 weeks to update existing code to use the new APIs.</p>
<h2 id="why-sha-256-over-bcrypt">Why SHA-256 over bcrypt?</h2>
<p>Some users may be curious why we are not using bcrypt to hash our OAuth tokens
like we do for user passwords. Bcrypt is purposefully computationally expensive
in order to mitigate brute force attacks against low entropy passwords. However,
OAuth tokens are highly random and are not susceptible to brute force attacks.
Given that OAuth token validation occurs for each request to the API we chose
SHA-256 for performance reasons.</p>
<p>If you have any questions or feedback, please <a href="https://github.com/contact?form%5Bsubject%5D=Removing+authorizations+token">drop us a line</a>.</p>
tag:developer.github.com,2014-12-03:/changes/2014-12-03-preview-the-new-organization-webhooks-api/Preview the New Organization Webhooks API2014-12-03T00:00:00Z2014-12-03T00:00:00Zjdpacehttps://github.com/technoweenie<p>Today we’re very excited <a href="https://github.com/blog/1933-introducing-organization-webhooks">to announce Organization Webhooks</a>.
Organization Webhooks allow you to subscribe to events that happen across an
entire organization.</p>
<p>In addition to being able to subscribe to the existing repository oriented
events across an organization, we’re also adding some new events which are
exclusive to organization webhooks. The new <a href="/v3/activity/events/types/#repositoryevent"><code>repository</code>
event</a> allows you to receive webhook payloads when a new
repository is created. By subscribing to the <a href="/v3/activity/events/types/#membershipevent"><code>membership</code>
event</a>, you’ll be notified whenever a user is added or
removed from a team.</p>
<p>We’re making this new API for Organization Webhooks available today <a href="/v3/orgs/hooks/#preview-period">for
developers to preview</a>. The preview period will allow us to <a href="https://github.com/contact?form%5Bsubject%5D=Organization+Webhooks">get
your feedback</a> before declaring the Organization Webhooks API final.
We expect the preview
period to last for roughly 30-60 days.</p>
<p>As we discover opportunities to improve the API during the preview period, we
may ship changes that break clients using the preview version of the API. We
want to iterate quickly. To do so, we will announce any changes here (on the
developer blog), but we will not provide any advance notice.</p>
<p>At the end of preview period, the Organization Webhooks API will become an
official component of GitHub API v3. At that point, the new Organization
Webhooks API will be stable and suitable for production use.</p>
<p>We hope you’ll take it for a spin and <a href="https://github.com/contact?form%5Bsubject%5D=Organization+Webhooks">send us your feedback</a>.</p>
tag:developer.github.com,2014-11-25:/changes/2014-11-25-the-deployments-api-is-official/The Deployments API is official2014-11-25T00:00:00Z2014-11-25T00:00:00Zatmoshttps://github.com/technoweenie<p>We’re happy to announce that the <a href="/v3/repos/deployments">Deployments API</a> is officially part
of GitHub API v3. We now consider it stable for production use.</p>
<p>Thanks to everyone who provided feedback during the preview period. We got
some great feedback, and hope this feature helps you build the tools you
need to make GitHub the best place to ship exactly the way you want.</p>
<h3 id="preview-media-type-no-longer-needed">Preview media type no longer needed</h3>
<p>If you used the Deployments API during the preview period, you needed to
provide a custom media type in the <code>Accept</code> header:</p>
<pre><code>application/vnd.github.cannonball-preview+json
</code></pre>
<p>Now that the preview period has ended, you no longer need to pass this custom
media type.</p>
<p>Instead, we <a href="/v3/media">recommend</a> that you specify <code>v3</code> as the version in the
<code>Accept</code> header:</p>
<pre><code>application/vnd.github.v3+json
</code></pre>
<h3 id="feedback">Feedback</h3>
<p>We’ll never be done listening to you! As always, please don’t hesitate to
<a href="https://github.com/contact?form%5Bsubject%5D=Deployments+API">share your feedback</a>.</p>
tag:developer.github.com,2014-10-29:/changes/2014-10-24-status-api-limits/Status API Limits2014-10-29T00:00:00Z2014-10-29T00:00:00Zrsanheimhttps://github.com/technoweenie<p>To ensure a high level of service for all API consumers, we will soon limit the number of <a href="/v3/repos/statuses/">statuses</a>
to 1000 per commit SHA, repository, and context.</p>
<p>Beginning Monday, November 3rd, we will trim existing data sets that exceed this limit, deleting the oldest
records first. Attempts to create statuses beyond that limit will result in a <a href="https://developer.github.com/v3/#client-errors">validation error</a>.</p>
<p>If you have any feedback or questions, please don’t hesistate to <a href="https://github.com/contact?form%5Bsubject%5D=Combined+Status+API">contact</a> us.</p>
tag:developer.github.com,2014-10-21:/changes/2014-10-21-deployment-webhook-payload-changes/Deployment webhook payload changes2014-10-21T00:00:00Z2014-10-21T00:00:00Zatmoshttps://github.com/technoweenie<p>On November 4th, 2014, we will begin sending a new format for <a href="https://developer.github.com/v3/activity/events/types/#deploymentevent">deployment</a> and <a href="https://developer.github.com/v3/activity/events/types/#deploymentstatusevent">deployment status</a> payloads for webhooks. In the meantime we’ll be running in a compatability mode that will give integrators the time needed to start taking advantage of the new format. Integrators who are working with webhooks and deployments are advised to upgrade to the new payload format to avoid service interruption.</p>
<p>This change brings the payloads for these events more inline with the responses you’d receive from the API. Instead of having deployment and deployment status attributes as top-level keys, we will now nest them under <code>deployment</code> and <code>deployment_status</code> keys. Since we’re still in the <a href="https://developer.github.com/changes/2014-01-09-preview-the-new-deployments-api/">preview period</a> for the deployments API we felt it was best to correct this inconsistency now.</p>
<h2 id="deploymentevent-changes">DeploymentEvent Changes</h2>
<h4 id="old-format">Old Format</h4>
<pre><code class="language-javascript highlight"><span class="p">{</span>
<span class="s2">"id"</span><span class="p">:</span> <span class="mi">42</span><span class="p">,</span>
<span class="s2">"sha"</span><span class="p">:</span> <span class="s2">"deadbeef"</span><span class="p">,</span>
<span class="s2">"ref"</span><span class="p">:</span> <span class="s2">"master"</span><span class="p">,</span>
<span class="s2">"task"</span><span class="p">:</span> <span class="s2">"deploy"</span><span class="p">,</span>
<span class="s2">"name"</span><span class="p">:</span> <span class="s2">"my-org/our-app"</span><span class="p">,</span>
<span class="s2">"environment"</span><span class="p">:</span> <span class="s2">"production"</span><span class="p">,</span>
<span class="s2">"payload"</span><span class="p">:</span> <span class="p">{</span><span class="err">…</span><span class="p">},</span>
<span class="s2">"description"</span><span class="p">:</span> <span class="s2">"Deploying master"</span><span class="p">,</span>
<span class="s2">"repository"</span><span class="p">:</span> <span class="p">{</span><span class="err">…</span><span class="p">},</span>
<span class="s2">"sender"</span><span class="p">:</span> <span class="p">{</span><span class="err">…</span><span class="p">}</span>
<span class="p">}</span></code></pre>
<h4 id="current-format---20141022">Current Format - 2014/10/22</h4>
<pre><code class="language-javascript highlight"><span class="p">{</span>
<span class="s2">"id"</span><span class="p">:</span> <span class="mi">42</span><span class="p">,</span>
<span class="s2">"sha"</span><span class="p">:</span> <span class="s2">"deadbeef"</span><span class="p">,</span>
<span class="s2">"ref"</span><span class="p">:</span> <span class="s2">"master"</span><span class="p">,</span>
<span class="s2">"task"</span><span class="p">:</span> <span class="s2">"deploy"</span><span class="p">,</span>
<span class="s2">"name"</span><span class="p">:</span> <span class="s2">"my-org/our-app"</span><span class="p">,</span>
<span class="s2">"environment"</span><span class="p">:</span> <span class="s2">"production"</span><span class="p">,</span>
<span class="s2">"payload"</span><span class="p">:</span> <span class="p">{</span><span class="err">…</span><span class="p">},</span>
<span class="s2">"description"</span><span class="p">:</span> <span class="s2">"Deploying master"</span><span class="p">,</span>
<span class="s2">"repository"</span><span class="p">:</span> <span class="p">{</span><span class="err">…</span><span class="p">},</span>
<span class="s2">"deployment"</span><span class="p">:</span> <span class="p">{</span>
<span class="s2">"url"</span><span class="p">:</span> <span class="s2">"https://api.github.com/repos/my-org/our-app/deployments/42"</span><span class="p">,</span>
<span class="s2">"id"</span><span class="p">:</span> <span class="mi">42</span><span class="p">,</span>
<span class="s2">"sha"</span><span class="p">:</span> <span class="s2">"deadbeef"</span><span class="p">,</span>
<span class="s2">"ref"</span><span class="p">:</span> <span class="s2">"master"</span><span class="p">,</span>
<span class="s2">"task"</span><span class="p">:</span> <span class="s2">"deploy"</span><span class="p">,</span>
<span class="s2">"environment"</span><span class="p">:</span> <span class="s2">"production"</span><span class="p">,</span>
<span class="s2">"payload"</span><span class="p">:</span> <span class="p">{</span><span class="err">…</span><span class="p">},</span>
<span class="s2">"description"</span><span class="p">:</span> <span class="s2">"Deploying master"</span><span class="p">,</span>
<span class="s2">"creator"</span><span class="p">:</span> <span class="p">{</span><span class="err">…</span><span class="p">},</span>
<span class="s2">"created_at"</span><span class="p">:</span> <span class="s2">"2014-09-23T16:37:49Z"</span><span class="p">,</span>
<span class="s2">"updated_at"</span><span class="p">:</span> <span class="s2">"2014-09-23T16:37:49Z"</span><span class="p">,</span>
<span class="s2">"statuses_url"</span><span class="p">:</span> <span class="s2">"https://api.github.com/repos/my-org/our-app/deployments/42/statuses"</span>
<span class="p">},</span>
<span class="s2">"sender"</span><span class="p">:</span> <span class="p">{</span><span class="err">…</span><span class="p">}</span>
<span class="p">}</span></code></pre>
<h4 id="new-format---20141105">New Format - 2014/11/05</h4>
<pre><code class="language-javascript highlight"><span class="p">{</span>
<span class="s2">"deployment"</span><span class="p">:</span> <span class="p">{</span>
<span class="s2">"url"</span><span class="p">:</span> <span class="s2">"https://api.github.com/repos/my-org/our-app/deployments/42"</span><span class="p">,</span>
<span class="s2">"id"</span><span class="p">:</span> <span class="mi">42</span><span class="p">,</span>
<span class="s2">"sha"</span><span class="p">:</span> <span class="s2">"deadbeef"</span><span class="p">,</span>
<span class="s2">"ref"</span><span class="p">:</span> <span class="s2">"master"</span><span class="p">,</span>
<span class="s2">"task"</span><span class="p">:</span> <span class="s2">"deploy"</span><span class="p">,</span>
<span class="s2">"environment"</span><span class="p">:</span> <span class="s2">"production"</span><span class="p">,</span>
<span class="s2">"payload"</span><span class="p">:</span> <span class="p">{</span><span class="err">…</span><span class="p">},</span>
<span class="s2">"description"</span><span class="p">:</span> <span class="s2">"Deploying master"</span><span class="p">,</span>
<span class="s2">"creator"</span><span class="p">:</span> <span class="p">{</span><span class="err">…</span><span class="p">},</span>
<span class="s2">"created_at"</span><span class="p">:</span> <span class="s2">"2014-09-23T16:37:49Z"</span><span class="p">,</span>
<span class="s2">"updated_at"</span><span class="p">:</span> <span class="s2">"2014-09-23T16:37:49Z"</span><span class="p">,</span>
<span class="s2">"statuses_url"</span><span class="p">:</span> <span class="s2">"https://api.github.com/repos/my-org/our-app/deployments/42/statuses"</span>
<span class="p">},</span>
<span class="s2">"repository"</span><span class="p">:</span> <span class="p">{</span><span class="err">…</span><span class="p">},</span>
<span class="s2">"sender"</span><span class="p">:</span> <span class="p">{</span><span class="err">…</span><span class="p">}</span>
<span class="p">}</span></code></pre>
<h2 id="deploymentstatusevent-changes">DeploymentStatusEvent Changes</h2>
<h4 id="old-format-1">Old Format</h4>
<pre><code class="language-javascript highlight"><span class="p">{</span>
<span class="s2">"id"</span><span class="p">:</span> <span class="mi">2600</span><span class="p">,</span>
<span class="s2">"state"</span><span class="p">:</span> <span class="s2">"success"</span><span class="p">,</span>
<span class="s2">"deployment"</span><span class="p">:</span> <span class="p">{</span><span class="err">…</span><span class="p">},</span>
<span class="s2">"target_url"</span><span class="p">:</span> <span class="s2">"https://gist.github.com/deadbeef"</span><span class="p">,</span>
<span class="s2">"description"</span><span class="p">:</span> <span class="s2">"Deployment was successful"</span><span class="p">,</span>
<span class="s2">"repository"</span><span class="p">:</span> <span class="p">{</span><span class="err">…</span><span class="p">},</span>
<span class="s2">"sender"</span><span class="p">:</span> <span class="p">{</span><span class="err">…</span><span class="p">}</span>
<span class="p">}</span></code></pre>
<h4 id="current-format---20141022-1">Current Format - 2014/10/22</h4>
<pre><code class="language-javascript highlight"><span class="p">{</span>
<span class="s2">"id"</span><span class="p">:</span> <span class="mi">2600</span><span class="p">,</span>
<span class="s2">"state"</span><span class="p">:</span> <span class="s2">"success"</span><span class="p">,</span>
<span class="s2">"target_url"</span><span class="p">:</span> <span class="s2">"https://gist.github.com/deadbeef"</span><span class="p">,</span>
<span class="s2">"description"</span><span class="p">:</span> <span class="s2">"Deployment was successful"</span><span class="p">,</span>
<span class="s2">"repository"</span><span class="p">:</span> <span class="p">{</span><span class="err">…</span><span class="p">},</span>
<span class="s2">"deployment_status"</span><span class="p">:</span> <span class="p">{</span>
<span class="s2">"url"</span><span class="p">:</span> <span class="s2">"https://api.github.com/repos/my-org/our-app/deployments/42/statuses2600"</span><span class="p">,</span>
<span class="s2">"id"</span><span class="p">:</span> <span class="mi">2600</span><span class="p">,</span>
<span class="s2">"state"</span><span class="p">:</span> <span class="s2">"success"</span><span class="p">,</span>
<span class="s2">"creator"</span><span class="p">:</span> <span class="p">{</span><span class="err">…</span><span class="p">},</span>
<span class="s2">"target_url"</span><span class="p">:</span> <span class="s2">"https://gist.github.com/deadbeef"</span><span class="p">,</span>
<span class="s2">"description"</span><span class="p">:</span> <span class="s2">"Deployment was successful"</span><span class="p">,</span>
<span class="s2">"created_at"</span><span class="p">:</span> <span class="s2">"2014-09-23T16:45:49Z"</span><span class="p">,</span>
<span class="s2">"updated_at"</span><span class="p">:</span> <span class="s2">"2014-09-23T16:45:49Z"</span><span class="p">,</span>
<span class="s2">"deployment_url"</span><span class="p">:</span> <span class="s2">"https://api.github.com/repos/my-org/our-app/deployments/42"</span><span class="p">,</span>
<span class="s2">"repository_url"</span><span class="p">:</span> <span class="s2">"https://api.github.com/repos/my-org/our-app"</span>
<span class="p">},</span>
<span class="s2">"deployment"</span><span class="p">:</span> <span class="p">{</span><span class="err">…</span><span class="p">},</span>
<span class="s2">"sender"</span><span class="p">:</span> <span class="p">{</span><span class="err">…</span><span class="p">}</span>
<span class="p">}</span></code></pre>
<h4 id="new-format---20141105-1">New Format - 2014/11/05</h4>
<pre><code class="language-javascript highlight"><span class="p">{</span>
<span class="s2">"deployment_status"</span><span class="p">:</span> <span class="p">{</span>
<span class="s2">"url"</span><span class="p">:</span> <span class="s2">"https://api.github.com/repos/my-org/our-app/deployments/42/statuses2600"</span><span class="p">,</span>
<span class="s2">"id"</span><span class="p">:</span> <span class="mi">2600</span><span class="p">,</span>
<span class="s2">"state"</span><span class="p">:</span> <span class="s2">"success"</span><span class="p">,</span>
<span class="s2">"creator"</span><span class="p">:</span> <span class="p">{</span><span class="err">…</span><span class="p">},</span>
<span class="s2">"target_url"</span><span class="p">:</span> <span class="s2">"https://gist.github.com/deadbeef"</span><span class="p">,</span>
<span class="s2">"description"</span><span class="p">:</span> <span class="s2">"Deployment was successful"</span><span class="p">,</span>
<span class="s2">"created_at"</span><span class="p">:</span> <span class="s2">"2014-09-23T16:45:49Z"</span><span class="p">,</span>
<span class="s2">"updated_at"</span><span class="p">:</span> <span class="s2">"2014-09-23T16:45:49Z"</span><span class="p">,</span>
<span class="s2">"deployment_url"</span><span class="p">:</span> <span class="s2">"https://api.github.com/repos/my-org/our-app/deployments/42"</span><span class="p">,</span>
<span class="s2">"repository_url"</span><span class="p">:</span> <span class="s2">"https://api.github.com/repos/my-org/our-app"</span>
<span class="p">},</span>
<span class="s2">"deployment"</span><span class="p">:</span> <span class="p">{</span><span class="err">…</span><span class="p">},</span>
<span class="s2">"repository"</span><span class="p">:</span> <span class="p">{</span><span class="err">…</span><span class="p">},</span>
<span class="s2">"sender"</span><span class="p">:</span> <span class="p">{</span><span class="err">…</span><span class="p">}</span>
<span class="p">}</span></code></pre>
<p>If you have any questions or feedback, please <a href="https://github.com/contact?form%5Bsubject%5D=Deployments+API">get in touch</a>.</p>
tag:developer.github.com,2014-10-16:/changes/2014-10-16-removed-ssl-version-3-support-from-webhooks-and-services/Removed SSLv3 support from webhooks and services2014-10-16T00:00:00Z2014-10-16T00:00:00Zkdaiglehttps://github.com/technoweenie<p>This morning, we <a href="https://github.com/github/github-services/pull/949">removed support</a> for the <code>ssl_version</code> webhook configuration
option and made <code>TLS 1.X</code> the default cryptographic protocol to address the <a href="https://www.openssl.org/~bodo/ssl-poodle.pdf">POODLE exploit</a>.
You should no longer set or rely on the <code>ssl_version</code> configuration option.</p>
<p>If you have any questions or feedback, please <a href="https://github.com/contact?form%5Bsubject%5D=Removed+SSLv3+support+from+webhooks+and+services">drop us a line</a>.</p>
tag:developer.github.com,2014-10-06:/changes/2014-10-06-new-attributes-for-issue-events-api/New Attributes for Issue Events API2014-10-06T00:00:00Z2014-10-06T00:00:00Zjdpacehttps://github.com/technoweenie<p>We’ve made it easier to track changes to issues. The Issue Events API now provides more context for several event types:</p>
<ul>
<li>
<code>assigned</code> and <code>unassigned</code> events now include an <code>assignee</code> object so you can see just who was assigned or unassigned.</li>
<li>
<code>labeled</code> and <code>unlabeled</code> events include a <code>label</code> object.</li>
<li>
<code>milestoned</code> and <code>demilesoned</code> events include a <code>milestone</code> object.</li>
<li>
<code>renamed</code> events include a <code>rename</code> object with the title before and after the rename.</li>
</ul>
<p>Check out the <a href="/v3/issues/events/">Issue Events API documentation</a> for a full list of supported events. If you have
any questions or feedback, please <a href="https://github.com/contact?form%5Bsubject%5D=New+Attrs+for+Issue+Events+API">drop us a line</a>.</p>
tag:developer.github.com,2014-09-23:/changes/2014-09-23-one-more-week-before-the-add-team-member-api-breaking-change/One more week before the "Add team member" API breaking change2014-09-23T00:00:00Z2014-09-23T00:00:00Zjakeboxerhttps://github.com/technoweenie<p><strong>UPDATE (2014-09-30):</strong> In response to feedback from developers, we’re delaying the breaking change to the <a href="/v3/orgs/teams/#add-team-member">“Add team member” API</a> until Monday, <strong>October 6, 2014</strong>. The change will go into effect for all requests on that date.</p>
<p>Starting October 6, if you use <a href="/v3/orgs/teams/#add-team-member">the “Add team member” API</a> to add a user to a team and that user isn’t already on another team in your organization, the request will fail. To avoid this, be sure to use the <a href="/v3/orgs/teams/#add-team-membership">“Add team membership” API</a>.</p>
<h3 id="the-organization-and-team-membership-apis-are-now-official">The Organization and Team Membership APIs are now official</h3>
<p>As promised in <a href="/changes/2014-09-16-finalizing-the-organization-and-team-membership-apis/">our blog post earlier this month</a>, the <a href="/changes/2014-08-28-accepting-organization-invitations-from-the-api/">Organization Membership</a> and <a href="/changes/2014-08-05-team-memberships-api/">Team Membership</a> APIs are now an official part of the GitHub API! The preview media type is no longer required to access them.</p>
<p>If you have any questions or feedback, please <a href="https://github.com/contact?form%5Bsubject%5D=Organization+and+Team+Membership+APIs">get in touch with us</a>!</p>
tag:developer.github.com,2014-09-16:/changes/2014-09-16-finalizing-the-organization-and-team-membership-apis/Finalizing the Organization and Team Membership APIs2014-09-16T00:00:00Z2014-09-16T00:00:00Zjakeboxerhttps://github.com/technoweenie<p>For the past few weeks, the new <a href="/changes/2014-08-28-accepting-organization-invitations-from-the-api/">Organization Membership</a> and <a href="/changes/2014-08-05-team-memberships-api/">Team Membership</a> APIs have been available for early access via a preview media type. As of today, these APIs are stable and suitable for production use.</p>
<h3 id="preview-period-ends-on-september-23">Preview period ends on September 23</h3>
<p>On September 23, 2014, these APIs will become official parts of the GitHub API v3. At that time, the preview media type will no longer be required to access these APIs.</p>
<h3 id="reminder-breaking-change-to-legacy-endpoint">Reminder: Breaking change to legacy endpoint</h3>
<p>The <a href="/v3/orgs/teams/#add-team-member">breaking change to the “Add team member” endpoint</a> will also go into effect for all requests on <strong>September 23, 2014</strong>. At that time, if you use the <a href="/v3/orgs/teams/#add-team-member">add team member</a> endpoint to add a user to a team and that user isn’t already on another team in your organization, the request will fail. To avoid this, be sure to use the <a href="/v3/orgs/teams/#add-team-membership">add team membership</a> endpoint.</p>
<h3 id="addition-to-the-organization-membership-api">Addition to the Organization Membership API</h3>
<p>Thanks to your feedback, we’ve updated the Organization Membership API to provide direct access to basic information about the organization whenever you fetch a <a href="/v3/orgs/members/#list-your-organization-memberships">list of memberships</a> or a <a href="/v3/orgs/members/#get-your-organization-membership">single membership</a>.</p>
<p>If you have any questions or feedback, please <a href="https://github.com/contact?form%5Bsubject%5D=Organization+and+Team+Membership+APIs">get in touch with us</a>!</p>
tag:developer.github.com,2014-09-12:/changes/2014-09-12-changing-organization-feeds/Changing organization feeds in the Feeds API2014-09-12T00:00:00Z2014-09-12T00:00:00Zmastahyetihttps://github.com/technoweenie<p>We have deprecated the <code>current_user_organization_url</code> attribute and the
<code>current_user_organization.href</code> attribute in the <a href="/v3/activity/feeds/">Feeds API</a>. If you make
use of these attributes, you’ll want to update your code to use the new
<code>current_user_organization_urls</code> attribute instead.</p>
<h3 id="changes-to-the-deprecated-attributes">Changes to the deprecated attributes</h3>
<p>Previously, the deprecated attributes returned URI template. For example:</p>
<pre><code class="language-javascript highlight"><span class="s2">"current_user_organization_url"</span><span class="err">:</span>
<span class="s2">"https://github.com/organizations/{org}/mastahyeti.private.atom?token=abc123"</span></code></pre>
<p>The template included a deprecated authentication token. Our new tokens are
valid only for a concrete feed URL (not for a URI template). Because the
deprecated attributes were templates and did not specify a concrete URL, the API
could not provide a token that could be used for organization feeds.</p>
<p>Starting today, the API returns empty values for the deprecated attributes.</p>
<h3 id="new-attribute-for-organization-feeds">New attribute for organization feeds</h3>
<p>In order to preserve the functionality of this API, we have added a new
attribute that lists specific Atom feed urls for each of the user’s
organizations.</p>
<pre><code class="language-javascript highlight"><span class="s2">"current_user_organization_urls"</span><span class="err">:</span> <span class="p">[</span>
<span class="s2">"https://github.com/organizations/github/mastahyeti.private.atom?token=abc123"</span>
<span class="s2">"https://github.com/organizations/requests/mastahyeti.private.atom?token=token=def456"</span>
<span class="p">]</span></code></pre>
<p>Check out the updated <a href="/v3/activity/feeds/">Feeds API documentation</a> for the new fields. If you
have any questions or feedback, please <a href="https://github.com/contact?form%5Bsubject%5D=Changing+organization+feeds+in+the+Feeds+API">get drop us a line</a>.</p>
tag:developer.github.com,2014-09-05:/changes/2014-09-05-removing-gravatar-id/Removing Gravatar ID from user payloads2014-09-05T00:00:00Z2014-09-05T00:00:00Zmastahyetihttps://github.com/technoweenie<p>We have deprecated the <code>gravatar_id</code> attribute in the <a href="https://developer.github.com/v3/users/">user
representation</a>. Starting September 19,
the API will always provide an empty string as the value for this attribute.</p>
<p>Users have been able to upload avatars directly to GitHub for <a href="https://github.com/blog/1803-switch-your-picture-with-ease">a while
now</a>. If users
haven’t uploaded an avatar, we still try to fetch one from Gravatar, but that
happens behind the scenes on GitHub’s servers. As a result, the <code>gravatar_id</code>
attribute no longer identifies a GitHub user’s canonical avatar. Instead, API
consumers should use the <code>avatar_url</code> to fetch a user’s avatar. The <code>avatar_url</code>
attribute has always been present in the <a href="/v3/users/">v3 user representation</a>
and is the only reliable way to find a GitHub user’s avatar.</p>
<p>If you have any questions or feedback, please <a href="https://github.com/contact?form%5Bsubject%5D=Removing+Gravatar+ID">get drop us a line</a>.</p>
tag:developer.github.com,2014-08-28:/changes/2014-08-28-accepting-organization-invitations-from-the-api/Accepting organization invitations from the API2014-08-28T00:00:00Z2014-08-28T00:00:00Zjakeboxerhttps://github.com/technoweenie<p>The upcoming <a href="/changes/2014-08-05-team-memberships-api/">Team Memberships API</a> gives you the power to <a href="https://help.github.com/articles/adding-or-inviting-members-to-a-team-in-an-organization">invite</a> new GitHub users to your organization via the API. We’re expanding the API to also allow users to view their organization membership statuses and accept any invitations they’ve received.</p>
<h3 id="the-new-organization-memberships-api">The new Organization Memberships API</h3>
<p>When someone <a href="https://help.github.com/articles/adding-or-inviting-members-to-a-team-in-an-organization">invites</a> you to an organization, your membership with that organization begins in the “pending” state. The new <a href="/v3/orgs/members/#list-your-organization-memberships">list organization memberships</a> endpoint allows you to find your pending memberships. You can then change them to “active” (accepting the invitation in the process) by using the <a href="/v3/orgs/members/#edit-your-organization-membership">edit organization membership</a> endpoint.</p>
<h3 id="new-team-membership-api-response-attribute">New Team Membership API response attribute</h3>
<p>Previously, responses from the <a href="/v3/orgs/teams/#add-team-membership">add team membership</a> and <a href="/v3/orgs/teams/#get-team-membership">get team membership</a> endpoints included a “status” attribute, which could either be “active” or “pending”. We’ve renamed this attribute from “status” to “state” for better consistency with our other API calls.</p>
<p>To give you time to update your apps, we’ll keep the legacy “status” attribute around alongside the new “state” attribute until <strong>September 4th, 2014</strong>.</p>
<h3 id="preview-period">Preview period</h3>
<p>The new Organization Memberships API is available for developers to preview alongside the <a href="/changes/2014-08-05-team-memberships-api/">Team Memberships API</a>. During this period, we may change aspects of these endpoints. If we do, we will announce the changes on the developer blog, but we will not provide any advance notice.</p>
<p>While these new APIs are in their preview period, you’ll need to provide the following custom media type in the <code>Accept</code> header:</p>
<pre><code>application/vnd.github.the-wasp-preview+json
</code></pre>
<p>We expect the preview period to last 30-60 days. At the end of the preview period, the Team and Organization Memberships APIs will become official components of GitHub API v3.</p>
<p>If you have any questions or feedback, please <a href="https://github.com/contact?form%5Bsubject%5D=Team+Memberships+API">get in touch with us</a>!</p>
tag:developer.github.com,2014-08-15:/changes/2014-08-15-deployments-api-changes/New features for the Deployments API preview2014-08-15T00:00:00Z2014-08-15T00:00:00Zatmoshttps://github.com/technoweenie<p>We’ve added two new features to the <a href="https://developer.github.com/changes/2014-01-09-preview-the-new-deployments-api/">Deployments API preview</a>: the ability to query deployments and a new <code>task</code> attribute for different types of deployment tasks.</p>
<h2 id="api-changes">API changes</h2>
<p>You can now search for deployments via query parameters to the <a href="https://developer.github.com/v3/repos/deployments/#list-deployments">listing endpoint</a>. You can filter on <code>sha</code>, <code>ref</code>, <code>task</code>, and <code>environment</code>. This makes it easier to answer questions like “when was the last time someone deployed to staging?”</p>
<pre class="terminal">
$ curl -H "Authorization: token [yours]" \
https://api.github.com/repos/octocat/my-repo/deployments?environment=staging
</pre>
<h2 id="new-attribute">New attribute</h2>
<p>We’ve also added a <code>task</code> attribute to the deployment resource. The <code>task</code> attribute allows you to specify tasks other than just pushing code. Popular deployment tools like <a href="http://capistranorb.com/">capistrano</a> and <a href="http://www.fabfile.org/">fabric</a> support named tasks to do things like running schema migrations. We hope this attribute will give integrators the flexibility they need to provide custom functionality.</p>
<p>If you have any questions or feedback, please <a href="https://github.com/contact?form%5Bsubject%5D=Deployments+API">get in touch</a>.</p>
tag:developer.github.com,2014-08-05:/changes/2014-08-05-team-memberships-api/We're changing the way you add new members to your organization2014-08-05T00:00:00Z2014-08-05T00:00:00Zjakeboxerhttps://github.com/technoweenie<p>Today, we’re announcing a change to the way organization owners add new members to their organization.</p>
<p>Previously, if you were an organization owner, you could use the <a href="/v3/orgs/teams/#add-team-member">add team member</a> endpoint to add any GitHub user to any team on your organization without any sort of approval from them. Now, we’re increasing user security by sending <a href="https://help.github.com/articles/adding-or-inviting-members-to-a-team-in-an-organization">invitations</a> to users when they’re added to teams on organizations that they aren’t yet a part of.</p>
<p>With this change, if you use the <a href="/v3/orgs/teams/#add-team-member">add team member</a> endpoint to add a user to a team and that user isn’t already on another team in your organization, the request will fail.</p>
<h3 id="the-new-team-memberships-api">The new Team Memberships API</h3>
<p>You should change all your <a href="/v3/orgs/teams/#add-team-member">add team member</a> requests to use the new <a href="/v3/orgs/teams/#add-team-membership">add team membership</a> endpoint. This new endpoint works exactly the same as the old one, with one important change: if the membership being added is for a user who is unaffiliated with the team’s organization, that user will be sent an invitation via email.</p>
<p>Unlike the <a href="/v3/orgs/teams/#add-team-member">add team member</a> endpoint, a successful request to the <a href="/v3/orgs/teams/#add-team-membership">add team membership</a> endpoint does <em>not</em> guarantee that the user is now a member of the team. If you’re trying to migrate to the new endpoint and need to know when a user has been successfully added (not just invited) to a team, please check out <a href="/v3/activity/events/types/#teamaddevent">TeamAddEvent</a>.</p>
<h3 id="preview-period">Preview period</h3>
<p>We’re making the new Team Memberships API (and the breaking changes to the <a href="/v3/orgs/teams/#add-team-member">add team member</a> API) available today for developers to preview. During this period, we may change aspects of these endpoints. If we do, we will announce the changes on the developer blog, but we will not provide any advance notice.</p>
<p>While these new APIs are in their preview period, you’ll need to provide the following custom media type in the <code>Accept</code> header:</p>
<pre><code>application/vnd.github.the-wasp-preview+json
</code></pre>
<p>We expect the preview period to last 30-60 days. At the end of the preview period, the Team Memberships API will become an official component of GitHub API v3, as will the <a href="/v3/orgs/teams/#add-team-member">add team member</a> API’s breaking changes.</p>
<p>If you have any questions or feedback, please <a href="https://github.com/contact?form%5Bsubject%5D=Team+Memberships+API">get in touch with us</a>!</p>
tag:developer.github.com,2014-07-28:/changes/2014-07-28-assignee-and-label-actions-for-issue-events/New assigned/labeled actions for issue and pull request events2014-07-28T00:00:00Z2014-07-28T00:00:00Zjdpacehttps://github.com/technoweenie<p>As part of the <a href="https://github.com/blog/1866-the-new-github-issues">new GitHub Issues</a>, we’ve added new actions to the issues and pull requests webhook events: “labeled”, “unlabeled”, “assigned”, and “unassigned”. The payload will also include the respective assignee or label for these new actions.</p>
<p>If you already have a <a href="/webhooks/">webhook</a> subscribed to the <code>issues</code> or <code>pull_request</code> events, you’ll start seeing these new actions immediately. The new events can also be fetched from the <a href="/v3/issues/events/">issue events API</a>.</p>
<p>For more information, be sure to check out our documentation for the <a href="/v3/activity/events/types/#issuesevent">IssuesEvent</a> or <a href="/v3/activity/events/types/#pullrequestevent">PullRequestEvent</a>. If you have any questions or feedback, please <a href="https://github.com/contact?form%5Bsubject%5D=New+Assigned+and+Labeled+Actions+for+Issues+and+Pull+Request+Events">drop us a line</a>.</p>
tag:developer.github.com,2014-07-09:/changes/2014-07-09-status-contexts-are-official/The Combined Status API is official2014-07-09T00:00:00Z2014-07-09T00:00:00Zbhugahttps://github.com/technoweenie<p>We’re happy to announce that the <a href="/v3/repos/statuses/#get-the-combined-status-for-a-specific-ref">Combined Status API</a> is officially part
of the GitHub API v3. We now consider it stable for production use.</p>
<p>Thanks to everyone who provided feedback during the comment period. We got
some great feedback, and hope this feature helps you build the tools you
need to make GitHub the best place to ship exactly the way you want.</p>
<h3 id="preview-media-type-no-longer-needed">Preview media type no longer needed</h3>
<p>If you used the Combined Status API during the preview period, you needed to
provide a custom media type in the <code>Accept</code> header:</p>
<pre><code>application/vnd.github.she-hulk-preview+json
</code></pre>
<p>Now that the preview period has ended, you no longer need to pass this custom
media type.</p>
<p>Instead, we <a href="/v3/media">recommend</a> that you specify <code>v3</code> as the version in the
<code>Accept</code> header:</p>
<pre><code>application/vnd.github.v3+json
</code></pre>
<h3 id="feedback">Feedback</h3>
<p>We’ll never be done listening to you! As always, please don’t hesitate to
<a href="https://github.com/contact?form%5Bsubject%5D=Combined+Status+API">share your feedback</a>.</p>
tag:developer.github.com,2014-07-07:/changes/2014-07-07-example-webhook-payloads/New example webhook payloads2014-07-07T00:00:00Z2014-07-07T00:00:00Zkdaiglehttps://github.com/technoweenie<p>Today, we’ve added example <a href="https://github.com/blog/1778-webhooks-level-up">webhook</a> payloads to the <a href="/v3/activity/events/types/">event types</a> page.
Alongside existing descriptions for each event, we now include an <a href="/v3/activity/events/types/#issuesevent">example payload</a>
so that you can quickly see the data provided by the event. You can learn more about how webhooks
work with our <a href="/webhooks/">Webhooks Guide</a>.</p>
<p>If you have any questions or feedback, please <a href="https://github.com/contact?form%5Bsubject%5D=Example+webhook+payloads">get in touch</a>.</p>
tag:developer.github.com,2014-06-23:/changes/2014-06-23-the-github-enterprise-api-documentation-has-a-new-home/The GitHub Enterprise API documentation has a new home!2014-06-23T00:00:00Z2014-06-23T00:00:00Zgjtorikianhttps://github.com/technoweenie<p><a href="https://enterprise.github.com">GitHub Enterprise</a> offers the same set of APIs as GitHub.com, as well as its own set of Enterprise-specific functionality.</p>
<p>The GitHub Enterprise API has been documented on <a href="https://enterprise.github.com/help">the Enterprise Help site</a> for some time. We’ve now <a href="https://developer.github.com/v3/enterprise/">moved the resources to this site</a> to be hosted alongside the rest of the GitHub API documentation.</p>
<p>Is there an API workflow you’re particularly interested in? <a href="https://github.com/contact?form%5Bsubject%5D=Suggestion+for+an+Enterprise+Guide">Let us know</a> and we’ll do our best to <a href="https://developer.github.com/guides/">write a guide</a>!</p>
tag:developer.github.com,2014-06-19:/changes/2014-06-19-combined-status-api-pagination/Pagination in the Combined Status API2014-06-19T00:00:00Z2014-06-19T00:00:00Zbhugahttps://github.com/technoweenie<p>We’re getting close to bringing the <a href="/v3/repos/statuses/#get-the-combined-status-for-a-specific-ref">Combined Status API</a> out of preview
mode, and have just a couple of small changes to make before it’s :sparkles:.</p>
<p>First, we’re now <a href="/v3/#pagination">paginating</a> combined status API calls. The combined status
<code>state</code> field will always take all statuses into account, but we’ll now only
return 100 embedded statuses at a time.</p>
<p>Second, we’re adding a <code>total_count</code> field, mirroring the Search API. This
count represents the number of contexts submitted for the given commit.</p>
<p>As always, we’re interested in <a href="https://github.com/contact?form%5Bsubject%5D=Combined+Status+API">hearing your feedback</a>.</p>