Skip to content

Instantly share code, notes, and snippets.

@jasonrudolph
Last active April 19, 2022 01:25
Show Gist options
  • Save jasonrudolph/56388a4ff51b4f721cac to your computer and use it in GitHub Desktop.
Save jasonrudolph/56388a4ff51b4f721cac to your computer and use it in GitHub Desktop.
Preview Repository Redirects in the GitHub API

Repository redirects are coming to the GitHub API, and this functionality is now available for developers to preview. Let's try it out.

First, we need a repository that has been renamed or relocated. Since jasonrudolph/jasonrudolph.github.io was previously named jasonrudolph/jasonrudolph.com, we can use it as our guinea pig. 🌍🐖

We'll use curl for all of our examples below, and we'll include the --location option to instruct curl to follow any redirects that it encounters.

The Present

Using the current production version of the GitHub API, when we attempt to access the repository by its old name, we're greeted with a 404 Not Found:

$ curl --location --include https://api.github.com/repos/jasonrudolph/jasonrudolph.com

HTTP/1.1 404 Not Found
... other response headers omitted for brevity

{
  "message": "Not Found",
  "documentation_url": "https://developer.github.com/v3"
}

Of course, if we access the respository by its current name, it succeeds as expected:

$ curl --location --include https://api.github.com/repos/jasonrudolph/jasonrudolph.github.io

HTTP/1.1 200 OK
... other response headers omitted for brevity

{
  "id": 208480,
  "name": "jasonrudolph.github.io",
  "full_name": "jasonrudolph/jasonrudolph.github.io",
  ... remaining properties omitted for brevity
}

The Future

By using a custom media type, we can try out the redirect functionality. Let's repeat that first request, but this time we'll enable repository redirects.

$ curl --location --include https://api.github.com/repos/jasonrudolph/jasonrudolph.com \
      -H 'Accept: application/vnd.github.quicksilver-preview+json'

HTTP/1.1 301 Moved Permanently
Location: https://api.github.com/repositories/208480
... other response headers omitted for brevity

HTTP/1.1 200 OK
... other response headers omitted for brevity

{
  "id": 208480,
  "name": "jasonrudolph.github.io",
  "full_name": "jasonrudolph/jasonrudolph.github.io",
  ... remaining properties omitted for brevity
}

Nice. We can see that curl first received a 301 redirect with a Location header identifying the canonical location for the renamed repository. When curl followed the redirect, it got a 200 response with the JSON representation of the repository. (For a more detailed version of this activity, check out curl's --verbose output below.)

Redirect Status Codes

Depending on the HTTP verb used in the original request, the redirect status code will either be a 301 or a 307. For the reasons described below, while GET and HEAD requests receive a 301 redirect as shown above, POST, PATCH, PUT, and DELETE requests receive a 307 redirect.

Well-behaved HTTP clients do the right thing with 301/307

In response to a 301, most HTTP clients (including curl, wget, etc.) use a GET request to follow the redirect. That's fine if the original request was a GET. But it's problematic if the original request was a POST, PATCH, DELETE, etc.

In response to a 307, HTTP clients should use the originally-specified HTTP verb to follow the redirect. And in practice, many popular HTTP clients (including curl and wget) do indeed provide this behavior.

307 is a "Temporary Redirect". Why not use 308?

If 308 Permanent Redirect graduates from its experimental state and gets adopted by common tooling, then one day 308 will be a reasonable response in all scenarios for these redirects. For now though, it's really too soon to use 308. In RESTful Web APIs, Leonard Richardson and Mike Amundsen have this to say about 308:

[308] is defined in an extension to HTTP which is still in Internet-Draft form. Even after it does become an RFC, it will probably be safer to use 307 even for permanent redirects. Clients may not understand what a 308 response code means.

An example would be nice

Let's say we want to submit a POST request to create an issue label for a repository. As long as we follow redirects, we can submit the request using the repository's old name, and we'll still be able to successfully update the repository.

$ curl --location --include https://api.github.com/repos/jasonrudolph/jasonrudolph.com/labels \
      --verbose \
      -H "Accept: application/vnd.github.quicksilver-preview+json" \
      -H "Authorization: token REDACTED" \
      -H "Content-Type: application/json" \
      -d '{
        "name": "bug",
        "color": "ff0000"
      }'

HTTP/1.1 307 Temporary Redirect
Location: https://api.github.com/repositories/208480/labels
... other response headers omitted for brevity

HTTP/1.1 201 Created
... other response headers omitted for brevity

{
  "url": "https://api.github.com/repos/jasonrudolph/jasonrudolph.github.io/labels/bug",
  "name": "bug",
  "color": "ff0000"
}

In response to our POST request, we see that curl first received a 307 redirect with a Location header identifying the canonical URL for the renamed repository's collection of labels. When curl followed the redirect, it got a 201 Created response with the JSON representation of the label. (For a more detailed version of this activity, check out curl's --verbose output below.)

$ curl --location --include https://api.github.com/repos/jasonrudolph/jasonrudolph.com \
-H 'Accept: application/vnd.github.quicksilver-preview+json' \
--verbose
* Hostname was NOT found in DNS cache
* Trying 192.30.252.137...
* Connected to api.github.com (192.30.252.137) port 443 (#0)
* TLS 1.2 connection using TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
* Server certificate: *.github.com
* Server certificate: DigiCert SHA2 High Assurance Server CA
* Server certificate: DigiCert High Assurance EV Root CA
> GET /repos/jasonrudolph/jasonrudolph.com HTTP/1.1
> User-Agent: curl/7.37.1
> Host: api.github.com
> Accept: application/vnd.github.quicksilver-preview+json
>
< HTTP/1.1 301 Moved Permanently
HTTP/1.1 301 Moved Permanently
* Server GitHub.com is not blacklisted
< Server: GitHub.com
Server: GitHub.com
< Date: Thu, 16 Apr 2015 21:36:32 GMT
Date: Thu, 16 Apr 2015 21:36:32 GMT
< Content-Type: application/json; charset=utf-8
Content-Type: application/json; charset=utf-8
< Content-Length: 166
Content-Length: 166
< Status: 301 Moved Permanently
Status: 301 Moved Permanently
< X-RateLimit-Limit: 60
X-RateLimit-Limit: 60
< X-RateLimit-Remaining: 47
X-RateLimit-Remaining: 47
< X-RateLimit-Reset: 1429222314
X-RateLimit-Reset: 1429222314
< Location: https://api.github.com/repositories/208480
Location: https://api.github.com/repositories/208480
< X-GitHub-Media-Type: github.quicksilver-preview; format=json
X-GitHub-Media-Type: github.quicksilver-preview; format=json
< X-XSS-Protection: 1; mode=block
X-XSS-Protection: 1; mode=block
< X-Frame-Options: deny
X-Frame-Options: deny
< Content-Security-Policy: default-src 'none'
Content-Security-Policy: default-src 'none'
< Access-Control-Allow-Credentials: true
Access-Control-Allow-Credentials: true
< Access-Control-Expose-Headers: ETag, Link, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval
Access-Control-Expose-Headers: ETag, Link, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval
< Access-Control-Allow-Origin: *
Access-Control-Allow-Origin: *
< X-GitHub-Request-Id: 6265A21C:09F4:573512A:55302B60
X-GitHub-Request-Id: 6265A21C:09F4:573512A:55302B60
< Strict-Transport-Security: max-age=31536000; includeSubdomains; preload
Strict-Transport-Security: max-age=31536000; includeSubdomains; preload
< X-Content-Type-Options: nosniff
X-Content-Type-Options: nosniff
< Vary: Accept-Encoding
Vary: Accept-Encoding
< X-Served-By: 173530fed4bbeb1e264b2ed22e8b5c20
X-Served-By: 173530fed4bbeb1e264b2ed22e8b5c20
<
* Ignoring the response-body
* Connection #0 to host api.github.com left intact
* Issue another request to this URL: 'https://api.github.com/repositories/208480'
* Found bundle for host api.github.com: 0x7fb960500990
* Re-using existing connection! (#0) with host api.github.com
* Connected to api.github.com (192.30.252.137) port 443 (#0)
> GET /repositories/208480 HTTP/1.1
> User-Agent: curl/7.37.1
> Host: api.github.com
> Accept: application/vnd.github.quicksilver-preview+json
>
< HTTP/1.1 200 OK
HTTP/1.1 200 OK
* Server GitHub.com is not blacklisted
< Server: GitHub.com
Server: GitHub.com
< Date: Thu, 16 Apr 2015 21:36:32 GMT
Date: Thu, 16 Apr 2015 21:36:32 GMT
< Content-Type: application/json; charset=utf-8
Content-Type: application/json; charset=utf-8
< Content-Length: 5806
Content-Length: 5806
< Status: 200 OK
Status: 200 OK
< X-RateLimit-Limit: 60
X-RateLimit-Limit: 60
< X-RateLimit-Remaining: 46
X-RateLimit-Remaining: 46
< X-RateLimit-Reset: 1429222314
X-RateLimit-Reset: 1429222314
< Cache-Control: public, max-age=60, s-maxage=60
Cache-Control: public, max-age=60, s-maxage=60
< Last-Modified: Fri, 13 Mar 2015 13:03:28 GMT
Last-Modified: Fri, 13 Mar 2015 13:03:28 GMT
< ETag: "4f9834bb7095d7fc702ea351a622bbff"
ETag: "4f9834bb7095d7fc702ea351a622bbff"
< Vary: Accept
Vary: Accept
< X-GitHub-Media-Type: github.quicksilver-preview; format=json
X-GitHub-Media-Type: github.quicksilver-preview; format=json
< X-XSS-Protection: 1; mode=block
X-XSS-Protection: 1; mode=block
< X-Frame-Options: deny
X-Frame-Options: deny
< Content-Security-Policy: default-src 'none'
Content-Security-Policy: default-src 'none'
< Access-Control-Allow-Credentials: true
Access-Control-Allow-Credentials: true
< Access-Control-Expose-Headers: ETag, Link, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval
Access-Control-Expose-Headers: ETag, Link, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval
< Access-Control-Allow-Origin: *
Access-Control-Allow-Origin: *
< X-GitHub-Request-Id: 6265A21C:09F4:573515B:55302B60
X-GitHub-Request-Id: 6265A21C:09F4:573515B:55302B60
< Strict-Transport-Security: max-age=31536000; includeSubdomains; preload
Strict-Transport-Security: max-age=31536000; includeSubdomains; preload
< X-Content-Type-Options: nosniff
X-Content-Type-Options: nosniff
< Vary: Accept-Encoding
Vary: Accept-Encoding
< X-Served-By: bd82876e9bf04990f289ba22f246ee9b
X-Served-By: bd82876e9bf04990f289ba22f246ee9b
<
{
"id": 208480,
"name": "jasonrudolph.github.io",
"full_name": "jasonrudolph/jasonrudolph.github.io",
"owner": {
"login": "jasonrudolph",
"id": 2988,
"avatar_url": "https://avatars.githubusercontent.com/u/2988?v=3",
"gravatar_id": "",
"url": "https://api.github.com/users/jasonrudolph",
"html_url": "https://github.com/jasonrudolph",
"followers_url": "https://api.github.com/users/jasonrudolph/followers",
"following_url": "https://api.github.com/users/jasonrudolph/following{/other_user}",
"gists_url": "https://api.github.com/users/jasonrudolph/gists{/gist_id}",
"starred_url": "https://api.github.com/users/jasonrudolph/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/jasonrudolph/subscriptions",
"organizations_url": "https://api.github.com/users/jasonrudolph/orgs",
"repos_url": "https://api.github.com/users/jasonrudolph/repos",
"events_url": "https://api.github.com/users/jasonrudolph/events{/privacy}",
"received_events_url": "https://api.github.com/users/jasonrudolph/received_events",
"type": "User",
"site_admin": true
},
"private": false,
"html_url": "https://github.com/jasonrudolph/jasonrudolph.github.io",
"description": "Jekyll source for my personal website & blog",
"fork": false,
"url": "https://api.github.com/repos/jasonrudolph/jasonrudolph.github.io",
"forks_url": "https://api.github.com/repos/jasonrudolph/jasonrudolph.github.io/forks",
"keys_url": "https://api.github.com/repos/jasonrudolph/jasonrudolph.github.io/keys{/key_id}",
"collaborators_url": "https://api.github.com/repos/jasonrudolph/jasonrudolph.github.io/collaborators{/collaborator}",
"teams_url": "https://api.github.com/repos/jasonrudolph/jasonrudolph.github.io/teams",
"hooks_url": "https://api.github.com/repos/jasonrudolph/jasonrudolph.github.io/hooks",
"issue_events_url": "https://api.github.com/repos/jasonrudolph/jasonrudolph.github.io/issues/events{/number}",
"events_url": "https://api.github.com/repos/jasonrudolph/jasonrudolph.github.io/events",
"assignees_url": "https://api.github.com/repos/jasonrudolph/jasonrudolph.github.io/assignees{/user}",
"branches_url": "https://api.github.com/repos/jasonrudolph/jasonrudolph.github.io/branches{/branch}",
"tags_url": "https://api.github.com/repos/jasonrudolph/jasonrudolph.github.io/tags",
"blobs_url": "https://api.github.com/repos/jasonrudolph/jasonrudolph.github.io/git/blobs{/sha}",
"git_tags_url": "https://api.github.com/repos/jasonrudolph/jasonrudolph.github.io/git/tags{/sha}",
"git_refs_url": "https://api.github.com/repos/jasonrudolph/jasonrudolph.github.io/git/refs{/sha}",
"trees_url": "https://api.github.com/repos/jasonrudolph/jasonrudolph.github.io/git/trees{/sha}",
"statuses_url": "https://api.github.com/repos/jasonrudolph/jasonrudolph.github.io/statuses/{sha}",
"languages_url": "https://api.github.com/repos/jasonrudolph/jasonrudolph.github.io/languages",
"stargazers_url": "https://api.github.com/repos/jasonrudolph/jasonrudolph.github.io/stargazers",
"contributors_url": "https://api.github.com/repos/jasonrudolph/jasonrudolph.github.io/contributors",
"subscribers_url": "https://api.github.com/repos/jasonrudolph/jasonrudolph.github.io/subscribers",
"subscription_url": "https://api.github.com/repos/jasonrudolph/jasonrudolph.github.io/subscription",
"commits_url": "https://api.github.com/repos/jasonrudolph/jasonrudolph.github.io/commits{/sha}",
"git_commits_url": "https://api.github.com/repos/jasonrudolph/jasonrudolph.github.io/git/commits{/sha}",
"comments_url": "https://api.github.com/repos/jasonrudolph/jasonrudolph.github.io/comments{/number}",
"issue_comment_url": "https://api.github.com/repos/jasonrudolph/jasonrudolph.github.io/issues/comments{/number}",
"contents_url": "https://api.github.com/repos/jasonrudolph/jasonrudolph.github.io/contents/{+path}",
"compare_url": "https://api.github.com/repos/jasonrudolph/jasonrudolph.github.io/compare/{base}...{head}",
"merges_url": "https://api.github.com/repos/jasonrudolph/jasonrudolph.github.io/merges",
"archive_url": "https://api.github.com/repos/jasonrudolph/jasonrudolph.github.io/{archive_format}{/ref}",
"downloads_url": "https://api.github.com/repos/jasonrudolph/jasonrudolph.github.io/downloads",
"issues_url": "https://api.github.com/repos/jasonrudolph/jasonrudolph.github.io/issues{/number}",
"pulls_url": "https://api.github.com/repos/jasonrudolph/jasonrudolph.github.io/pulls{/number}",
"milestones_url": "https://api.github.com/repos/jasonrudolph/jasonrudolph.github.io/milestones{/number}",
"notifications_url": "https://api.github.com/repos/jasonrudolph/jasonrudolph.github.io/notifications{?since,all,participating}",
"labels_url": "https://api.github.com/repos/jasonrudolph/jasonrudolph.github.io/labels{/name}",
"releases_url": "https://api.github.com/repos/jasonrudolph/jasonrudolph.github.io/releases{/id}",
"created_at": "2009-05-23T18:53:15Z",
"updated_at": "2015-03-13T13:03:28Z",
"pushed_at": "2015-03-13T13:03:26Z",
"git_url": "git://github.com/jasonrudolph/jasonrudolph.github.io.git",
"ssh_url": "[email protected]:jasonrudolph/jasonrudolph.github.io.git",
"clone_url": "https://github.com/jasonrudolph/jasonrudolph.github.io.git",
"svn_url": "https://github.com/jasonrudolph/jasonrudolph.github.io",
"homepage": "http://jasonrudolph.com",
"size": 83918,
"stargazers_count": 24,
"watchers_count": 24,
"language": "HTML",
"has_issues": true,
"has_downloads": true,
"has_wiki": false,
"has_pages": true,
"forks_count": 19,
"mirror_url": null,
"open_issues_count": 0,
"forks": 19,
"open_issues": 0,
"watchers": 24,
"default_branch": "master",
"master_branch": "master",
"network_count": 19,
"subscribers_count": 5
}
* Connection #0 to host api.github.com left intact
$ curl --location --include https://api.github.com/repos/jasonrudolph/jasonrudolph.com/labels \
--verbose \
-H "Accept: application/vnd.github.quicksilver-preview+json" \
-H "Authorization: token REDACTED" \
-H "Content-Type: application/json" \
-d '{
"name": "bug",
"color": "ff0000"
}'
* Hostname was NOT found in DNS cache
* Trying 192.30.252.139...
* Connected to api.github.com (192.30.252.139) port 443 (#0)
* TLS 1.2 connection using TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
* Server certificate: *.github.com
* Server certificate: DigiCert SHA2 High Assurance Server CA
* Server certificate: DigiCert High Assurance EV Root CA
> POST /repos/jasonrudolph/jasonrudolph.com/labels HTTP/1.1
> User-Agent: curl/7.37.1
> Host: api.github.com
> Accept: application/vnd.github.quicksilver-preview+json
> Authorization: token REDACTED
> Content-Type: application/json
> Content-Length: 58
>
* upload completely sent off: 58 out of 58 bytes
< HTTP/1.1 307 Temporary Redirect
HTTP/1.1 307 Temporary Redirect
* Server GitHub.com is not blacklisted
< Server: GitHub.com
Server: GitHub.com
< Date: Fri, 17 Apr 2015 13:18:41 GMT
Date: Fri, 17 Apr 2015 13:18:41 GMT
< Content-Type: application/json; charset=utf-8
Content-Type: application/json; charset=utf-8
< Content-Length: 173
Content-Length: 173
< Status: 307 Temporary Redirect
Status: 307 Temporary Redirect
< X-RateLimit-Limit: 5000
X-RateLimit-Limit: 5000
< X-RateLimit-Remaining: 4987
X-RateLimit-Remaining: 4987
< X-RateLimit-Reset: 1429276775
X-RateLimit-Reset: 1429276775
< X-OAuth-Scopes: public_repo
X-OAuth-Scopes: public_repo
< X-Accepted-OAuth-Scopes:
X-Accepted-OAuth-Scopes:
< Location: https://api.github.com/repositories/208480/labels
Location: https://api.github.com/repositories/208480/labels
< X-GitHub-Media-Type: github.quicksilver-preview; format=json
X-GitHub-Media-Type: github.quicksilver-preview; format=json
< X-XSS-Protection: 1; mode=block
X-XSS-Protection: 1; mode=block
< X-Frame-Options: deny
X-Frame-Options: deny
< Content-Security-Policy: default-src 'none'
Content-Security-Policy: default-src 'none'
< Access-Control-Allow-Credentials: true
Access-Control-Allow-Credentials: true
< Access-Control-Expose-Headers: ETag, Link, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval
Access-Control-Expose-Headers: ETag, Link, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval
< Access-Control-Allow-Origin: *
Access-Control-Allow-Origin: *
< X-GitHub-Request-Id: AE6D3641:5905:FCC8B96:55310831
X-GitHub-Request-Id: AE6D3641:5905:FCC8B96:55310831
< Strict-Transport-Security: max-age=31536000; includeSubdomains; preload
Strict-Transport-Security: max-age=31536000; includeSubdomains; preload
< X-Content-Type-Options: nosniff
X-Content-Type-Options: nosniff
< Vary: Accept-Encoding
Vary: Accept-Encoding
< X-Served-By: b0ef53392caa42315c6206737946d931
X-Served-By: b0ef53392caa42315c6206737946d931
<
* Ignoring the response-body
* Connection #0 to host api.github.com left intact
* Issue another request to this URL: 'https://api.github.com/repositories/208480/labels'
* Found bundle for host api.github.com: 0x7f9df9415000
* Re-using existing connection! (#0) with host api.github.com
* Connected to api.github.com (192.30.252.139) port 443 (#0)
> POST /repositories/208480/labels HTTP/1.1
> User-Agent: curl/7.37.1
> Host: api.github.com
> Accept: application/vnd.github.quicksilver-preview+json
> Authorization: token REDACTED
> Content-Type: application/json
> Content-Length: 58
>
* upload completely sent off: 58 out of 58 bytes
< HTTP/1.1 201 Created
HTTP/1.1 201 Created
* Server GitHub.com is not blacklisted
< Server: GitHub.com
Server: GitHub.com
< Date: Fri, 17 Apr 2015 13:18:41 GMT
Date: Fri, 17 Apr 2015 13:18:41 GMT
< Content-Type: application/json; charset=utf-8
Content-Type: application/json; charset=utf-8
< Content-Length: 129
Content-Length: 129
< Status: 201 Created
Status: 201 Created
< X-RateLimit-Limit: 5000
X-RateLimit-Limit: 5000
< X-RateLimit-Remaining: 4986
X-RateLimit-Remaining: 4986
< X-RateLimit-Reset: 1429276775
X-RateLimit-Reset: 1429276775
< Cache-Control: private, max-age=60, s-maxage=60
Cache-Control: private, max-age=60, s-maxage=60
< ETag: "9d7eaa5c45eb46f4930f43edb1b3e41d"
ETag: "9d7eaa5c45eb46f4930f43edb1b3e41d"
< X-OAuth-Scopes: public_repo
X-OAuth-Scopes: public_repo
< X-Accepted-OAuth-Scopes:
X-Accepted-OAuth-Scopes:
< Location: https://api.github.com/repos/jasonrudolph/jasonrudolph.github.io/labels/bug
Location: https://api.github.com/repos/jasonrudolph/jasonrudolph.github.io/labels/bug
< Vary: Accept, Authorization, Cookie, X-GitHub-OTP
Vary: Accept, Authorization, Cookie, X-GitHub-OTP
< X-GitHub-Media-Type: github.quicksilver-preview; format=json
X-GitHub-Media-Type: github.quicksilver-preview; format=json
< X-XSS-Protection: 1; mode=block
X-XSS-Protection: 1; mode=block
< X-Frame-Options: deny
X-Frame-Options: deny
< Content-Security-Policy: default-src 'none'
Content-Security-Policy: default-src 'none'
< Access-Control-Allow-Credentials: true
Access-Control-Allow-Credentials: true
< Access-Control-Expose-Headers: ETag, Link, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval
Access-Control-Expose-Headers: ETag, Link, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval
< Access-Control-Allow-Origin: *
Access-Control-Allow-Origin: *
< X-GitHub-Request-Id: AE6D3641:5905:FCC8C1E:55310831
X-GitHub-Request-Id: AE6D3641:5905:FCC8C1E:55310831
< Strict-Transport-Security: max-age=31536000; includeSubdomains; preload
Strict-Transport-Security: max-age=31536000; includeSubdomains; preload
< X-Content-Type-Options: nosniff
X-Content-Type-Options: nosniff
< Vary: Accept-Encoding
Vary: Accept-Encoding
< X-Served-By: 07ff1c8a09e44b62e277fae50a1b1dc4
X-Served-By: 07ff1c8a09e44b62e277fae50a1b1dc4
<
{
"url": "https://api.github.com/repos/jasonrudolph/jasonrudolph.github.io/labels/bug",
"name": "bug",
"color": "ff0000"
}
* Connection #0 to host api.github.com left intact
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment