)]}'
{
  "log": [
    {
      "commit": "53da3166e747d6bc77a3f36d038883cd8177650e",
      "tree": "9a669bb23316d2e97d36e8e7f615735a7125dfe0",
      "parents": [
        "ee049ec2db3921e8a013fc0a9fd167e8c7950f7f"
      ],
      "author": {
        "name": "Jamie Hannaford",
        "email": "jamie.hannaford@rackspace.com",
        "time": "Wed Oct 22 17:03:12 2014 +0200"
      },
      "committer": {
        "name": "Jamie Hannaford",
        "email": "jamie.hannaford@rackspace.com",
        "time": "Wed Oct 22 17:10:27 2014 +0200"
      },
      "message": "Update Keystone v3 to use new util location\n"
    },
    {
      "commit": "6adb125438b157557c78d61b1801d1e020627011",
      "tree": "17b64ae4ded81ff21a33b86360912178607f9eac",
      "parents": [
        "60ab6c816277cf7841941ea2290fc8595063c071"
      ],
      "author": {
        "name": "Jamie Hannaford",
        "email": "jamie.hannaford@rackspace.com",
        "time": "Wed Oct 22 15:25:44 2014 +0200"
      },
      "committer": {
        "name": "Jamie Hannaford",
        "email": "jamie.hannaford@rackspace.com",
        "time": "Wed Oct 22 17:10:27 2014 +0200"
      },
      "message": "Update Keystone v3 usage\n"
    },
    {
      "commit": "ea8c7f3d42b2fda90df52af52bb729e0d1892175",
      "tree": "994113f4bd2233148f808df48ef4d666b63a2ca9",
      "parents": [
        "407cfa397f6740cad1988fc8f4645074790babe1"
      ],
      "author": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Wed Oct 22 09:23:04 2014 -0400"
      },
      "committer": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Wed Oct 22 09:25:29 2014 -0400"
      },
      "message": ":fire: :fire: :fire:\n"
    },
    {
      "commit": "d7f73e938b0d9d39343ec2da56ad9c58e2e7152f",
      "tree": "102b9a60208edb07d4d51c3b3fdafbe77dc9aba1",
      "parents": [
        "77857dcfb852cc8e46e0a4d521b7ef3ee2649937"
      ],
      "author": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Wed Oct 22 09:11:49 2014 -0400"
      },
      "committer": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Wed Oct 22 09:11:49 2014 -0400"
      },
      "message": "More .Provider references in OS identity v3.\n"
    },
    {
      "commit": "77857dcfb852cc8e46e0a4d521b7ef3ee2649937",
      "tree": "63dd806aea024e3496c2623476c81cbe7553c94d",
      "parents": [
        "55bbaafada72e0bc2af6121f8d1faa6e8e1eb752"
      ],
      "author": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Wed Oct 22 09:09:02 2014 -0400"
      },
      "committer": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Wed Oct 22 09:09:02 2014 -0400"
      },
      "message": "Remove the `.Provider.` bit.\n"
    },
    {
      "commit": "72e4d2caef9446c4ac5e5eb059929da38773b9c9",
      "tree": "5ad61fca7c9b114522573a0d5e031081ec6f40f2",
      "parents": [
        "b8b16f82c085caf37ee4dfa14da67a911164a76c"
      ],
      "author": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Mon Oct 20 10:27:30 2014 -0400"
      },
      "committer": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Mon Oct 20 10:27:30 2014 -0400"
      },
      "message": "Rename Result.Headers to Result.Header.\n\nThis way, it\u0027s consistent with http.Header in the response.\n"
    },
    {
      "commit": "b8b16f82c085caf37ee4dfa14da67a911164a76c",
      "tree": "a6ce8e626441276a19e137398e04512d3e3153de",
      "parents": [
        "d3dc254a81133743620b6cecf3cfad828af2c2df"
      ],
      "author": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Mon Oct 20 10:19:49 2014 -0400"
      },
      "committer": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Mon Oct 20 10:19:49 2014 -0400"
      },
      "message": "Base a pagination.PageResult on gophercloud.Result.\n"
    },
    {
      "commit": "d3dc254a81133743620b6cecf3cfad828af2c2df",
      "tree": "7055f2e56838e2c691acfddafd566f9dcb930f62",
      "parents": [
        "af26287550ad1380f52164349e47fafbfd7a5f89"
      ],
      "author": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Mon Oct 20 10:10:48 2014 -0400"
      },
      "committer": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Mon Oct 20 10:10:48 2014 -0400"
      },
      "message": "Rename Result.Resp to Result.Body.\n"
    },
    {
      "commit": "f548aade84cd5fb8fe61035647808cef21d63845",
      "tree": "d96701ca189532920f9a2616cc17c4ac765124a2",
      "parents": [
        "eab6a70c1a5be83ab55abe79dc013df9eb39af51"
      ],
      "author": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Mon Oct 20 08:35:34 2014 -0400"
      },
      "committer": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Mon Oct 20 08:35:34 2014 -0400"
      },
      "message": "Rename gophercloud.CommonResult references.\n"
    },
    {
      "commit": "4cb20af80916f81904e94ab2669dc1f3b45799e6",
      "tree": "f69ffc65adfd51cf31af09d28d73c964fdbabc2e",
      "parents": [
        "34b4796e22cba548d927d64c682589a68175718f",
        "56d97a642b6a67930451f6d8a3abe35488988a91"
      ],
      "author": {
        "name": "jrperritt",
        "email": "jrperritt@gmail.com",
        "time": "Mon Oct 13 14:09:28 2014 -0500"
      },
      "committer": {
        "name": "jrperritt",
        "email": "jrperritt@gmail.com",
        "time": "Mon Oct 13 14:09:28 2014 -0500"
      },
      "message": "Merge pull request #229 from smashwilson/rackspace-say-hello\n\n[wip] Rackspace client and Identity service"
    },
    {
      "commit": "07a25bf452d6b8f7ed7ab9d0be2eae6fe18ccd65",
      "tree": "e8010f23a665cc626b88388583ac61d35a823869",
      "parents": [
        "ce942a8b131dd72ec2db64afe05da07018c7016f"
      ],
      "author": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Mon Oct 13 12:00:32 2014 -0400"
      },
      "committer": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Mon Oct 13 12:00:32 2014 -0400"
      },
      "message": "Use the inherited fixtures in identity v2.\n"
    },
    {
      "commit": "fc4191f5622f53d03041b73308d02d3e67590683",
      "tree": "379ba367e64b5795907238027ba5e4798dd2c593",
      "parents": [
        "c72e362e54695d0a183a3deed5ac4415e983d2f3"
      ],
      "author": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Fri Oct 10 15:05:27 2014 -0400"
      },
      "committer": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Fri Oct 10 15:05:27 2014 -0400"
      },
      "message": "Use a method to change the CreatePage function.\n"
    },
    {
      "commit": "c72e362e54695d0a183a3deed5ac4415e983d2f3",
      "tree": "22b11a71c09bfd8f05823e15837cbf97f7de9bcf",
      "parents": [
        "c38c4a5f539c14ac059fb7058c1a1d8eb0327193"
      ],
      "author": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Fri Oct 10 14:44:19 2014 -0400"
      },
      "committer": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Fri Oct 10 14:44:57 2014 -0400"
      },
      "message": "Refactor tokens to use build tag fixtures.\n"
    },
    {
      "commit": "55f89b885e67357677fa16f3d8a580f4baadbec8",
      "tree": "c982a9f514e9382f47118a89b2399fc00dc6e8cc",
      "parents": [
        "f4d63637536e3e9d432d05ed696fc5dedc4671a0"
      ],
      "author": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Fri Oct 10 14:06:30 2014 -0400"
      },
      "committer": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Fri Oct 10 14:06:30 2014 -0400"
      },
      "message": "Refactor os/identity/v2/tenants fixtures.\n"
    },
    {
      "commit": "59886a7aa4e96b3c18ddf4336a90fc8fb0e4acfa",
      "tree": "e9d4dc4d4f5b2d66d510a0bdf09385372afe1840",
      "parents": [
        "5bc7ba800783859aaceea4f3e06ba64ebdc5d991"
      ],
      "author": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Thu Oct 09 13:57:53 2014 -0400"
      },
      "committer": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Thu Oct 09 13:57:53 2014 -0400"
      },
      "message": "Override the List call without reimplementing.\n"
    },
    {
      "commit": "a253adf7847f3890a93b13fe4fe488cdfdf24339",
      "tree": "a83007229734da86bf8611192f245f9f87b595a7",
      "parents": [
        "a581acd81fbde2dc072872e0fb971c1aa2289696"
      ],
      "author": {
        "name": "Jamie Hannaford",
        "email": "jamie.hannaford@rackspace.com",
        "time": "Wed Oct 08 17:14:24 2014 +0200"
      },
      "committer": {
        "name": "Jamie Hannaford",
        "email": "jamie.hannaford@rackspace.com",
        "time": "Wed Oct 08 17:14:24 2014 +0200"
      },
      "message": "Removing unnecessary conditionals from identity service\n"
    },
    {
      "commit": "2239724a1cc57a48ab0faf7e8363eeb4d7b66d82",
      "tree": "1229ce3e99d26616c0b3510623239923d4465a14",
      "parents": [
        "40095f009dd6c3ccc5c4e8b1bcb6b8c7185c6987"
      ],
      "author": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Tue Oct 07 16:10:21 2014 -0400"
      },
      "committer": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Tue Oct 07 16:10:21 2014 -0400"
      },
      "message": "Override request body generation for API keys.\n"
    },
    {
      "commit": "40095f009dd6c3ccc5c4e8b1bcb6b8c7185c6987",
      "tree": "785f4d04d4c0637f683ea9975de5dfa7e3b2939a",
      "parents": [
        "54b03824e2d571fe9344f609983cc4ce414741fd"
      ],
      "author": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Tue Oct 07 15:46:40 2014 -0400"
      },
      "committer": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Tue Oct 07 15:46:40 2014 -0400"
      },
      "message": "Apply the OptsBuilder interface to tokens.Create()\n"
    },
    {
      "commit": "d2d49c492246acfff7dad12be7cc4ae7b3324278",
      "tree": "2f670316cb53ef970493b25e834989d6f5d442ad",
      "parents": [
        "1cf4d5fba3faa39b83aa1123bfe675ff16dc895d"
      ],
      "author": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Tue Oct 07 14:16:36 2014 -0400"
      },
      "committer": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Tue Oct 07 14:16:36 2014 -0400"
      },
      "message": "Export and rename the CreateURL function.\n"
    },
    {
      "commit": "1cf4d5fba3faa39b83aa1123bfe675ff16dc895d",
      "tree": "eed83e77e25a1ad327d9651046b3198981bc4c62",
      "parents": [
        "130a6e2a852bea56c351ab3fd3649bd2d7ab21ea"
      ],
      "author": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Tue Oct 07 14:16:18 2014 -0400"
      },
      "committer": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Tue Oct 07 14:16:18 2014 -0400"
      },
      "message": "Remove APIKey authentication from openstack/.\n"
    },
    {
      "commit": "5c0161c353af2730f5a4cb8b740d9f0834a9230b",
      "tree": "401d871e8ca63f751e79596027f40a1f7a88d771",
      "parents": [
        "405f310d58e919d676897a86afbceb227a3aa981"
      ],
      "author": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Tue Oct 07 10:42:34 2014 -0400"
      },
      "committer": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Tue Oct 07 10:42:34 2014 -0400"
      },
      "message": "Let\u0027s expose it in openstack/ instead.\n\nI can\u0027t move endpoint location into a method on anything in identity v3, so for symmetry\nI\u0027m keeping them in the openstack/ provider directory. I will export them, though, so I\ncan call them in rackspace/.\n"
    },
    {
      "commit": "405f310d58e919d676897a86afbceb227a3aa981",
      "tree": "8f87ad0cb9b4903cadc340bcb6d77e9281c288ba",
      "parents": [
        "a844064988727fb391e308c3564c20462ad7416b"
      ],
      "author": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Tue Oct 07 10:21:46 2014 -0400"
      },
      "committer": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Tue Oct 07 10:21:46 2014 -0400"
      },
      "message": "Turn v2 EndpointURL into a ServiceCatalog method.\n"
    },
    {
      "commit": "a844064988727fb391e308c3564c20462ad7416b",
      "tree": "cd79d6069aa2e6193e958fbdecb495ab988df9c1",
      "parents": [
        "c388f65bc86aad2b50adef1f77a6e6322b0fa333"
      ],
      "author": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Tue Oct 07 09:55:58 2014 -0400"
      },
      "committer": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Tue Oct 07 09:57:17 2014 -0400"
      },
      "message": "Move NormalizeURL to the root package.\n"
    },
    {
      "commit": "f25ae3782f99fa33f4af54042e64bae722d01ab1",
      "tree": "16fe1a2c29097841878048d95fe234b17150283c",
      "parents": [
        "f2f6c0a6aa5d29eafcfd0c7e515c26e7e5ff81b2",
        "541fa55b8cf33935a907cffc90e3a79c51a5791a"
      ],
      "author": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Mon Oct 06 14:40:29 2014 -0400"
      },
      "committer": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Mon Oct 06 14:40:29 2014 -0400"
      },
      "message": "Merge remote-tracking branch \u0027upstream/v0.2.0\u0027 into update-identity-v2\n\nConflicts:\n\topenstack/common/extensions/requests.go\n\topenstack/identity/v3/tokens/results.go\n\topenstack/networking/v2/extensions/delegate_test.go\n"
    },
    {
      "commit": "fbedc67504022a0299e42df3d65bfcec0f74e651",
      "tree": "d3da5a4043916ea71f39f61d2b14feb5e5c806eb",
      "parents": [
        "05e4107d0400f47222f0f16463b597197c20c301"
      ],
      "author": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Fri Oct 03 16:34:22 2014 -0400"
      },
      "committer": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Fri Oct 03 16:34:22 2014 -0400"
      },
      "message": "Override the ExtractExtensions function.\n\nIt turns out that identity changes the response body structure.\n"
    },
    {
      "commit": "f4aee1ed14c90bae1d5d990fd62d80ee9b8c72fd",
      "tree": "4174997ed0b79694f91b7c9bd8f1f35094b8ae12",
      "parents": [
        "739a6ccdb33c2634144aaad840b2a594ecb6aec3"
      ],
      "author": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Fri Oct 03 15:25:13 2014 -0400"
      },
      "committer": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Fri Oct 03 15:25:13 2014 -0400"
      },
      "message": "Acceptance test for tenants2.List.\n"
    },
    {
      "commit": "9a1ac66afc5f486fe1fd7234e76121cc87b20402",
      "tree": "d751c821aa77de83c44229fd6d294d70a2af4ecb",
      "parents": [
        "9d085a8a2988d546d116050209833b83bb9538db"
      ],
      "author": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Fri Oct 03 13:06:27 2014 -0400"
      },
      "committer": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Fri Oct 03 13:06:27 2014 -0400"
      },
      "message": "Remove the original, flat v2 code.\n"
    },
    {
      "commit": "9d085a8a2988d546d116050209833b83bb9538db",
      "tree": "f7a3e7a8b5d9913bfaebedbfbbc4bc83e9892f59",
      "parents": [
        "27d29e27240facb6686e50a645be2306b2567b2a"
      ],
      "author": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Fri Oct 03 13:05:03 2014 -0400"
      },
      "committer": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Fri Oct 03 13:05:03 2014 -0400"
      },
      "message": "Unit test the tenants List call.\n"
    },
    {
      "commit": "27d29e27240facb6686e50a645be2306b2567b2a",
      "tree": "9195e45e20ee99c12012be2e7eecba12d3980a87",
      "parents": [
        "29f2317cb4b7815d822711453c6dff6398e26a54"
      ],
      "author": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Fri Oct 03 11:57:14 2014 -0400"
      },
      "committer": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Fri Oct 03 11:57:14 2014 -0400"
      },
      "message": "Test token creation failure conditions.\n"
    },
    {
      "commit": "29f2317cb4b7815d822711453c6dff6398e26a54",
      "tree": "78f0f9967da436ed480b80b8bee549aa979cb372",
      "parents": [
        "aa197a96192c87486105254644ff56347e7dde07"
      ],
      "author": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Fri Oct 03 11:45:06 2014 -0400"
      },
      "committer": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Fri Oct 03 11:45:06 2014 -0400"
      },
      "message": "TenantName and TenantID tests.\n"
    },
    {
      "commit": "aa197a96192c87486105254644ff56347e7dde07",
      "tree": "3be3c84be83fbef9b7f3d7e8b1fd15ec0afb5515",
      "parents": [
        "ab48bbcdffece16bd980be87e548f843279807b3"
      ],
      "author": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Fri Oct 03 11:38:08 2014 -0400"
      },
      "committer": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Fri Oct 03 11:38:08 2014 -0400"
      },
      "message": "Happy-path unit tests for token creation.\n"
    },
    {
      "commit": "ab48bbcdffece16bd980be87e548f843279807b3",
      "tree": "0d3fb31fa60cdb8d78cb39c9a58ccdc1c904b894",
      "parents": [
        "318666f0f55269e7798976c6f7942d9b290d4d8c"
      ],
      "author": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Fri Oct 03 09:57:03 2014 -0400"
      },
      "committer": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Fri Oct 03 09:57:03 2014 -0400"
      },
      "message": "Move the ServiceCatalog into the token resource.\n"
    },
    {
      "commit": "ad13c4297a6a3a5db4fa7ab9259131b58cd6a47d",
      "tree": "a046cfc83de0f74546d5b65b65680b75fb4710f4",
      "parents": [
        "8e1fc8d8606c9264b920b56b22e4691b8af58499"
      ],
      "author": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Fri Oct 03 08:35:46 2014 -0400"
      },
      "committer": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Fri Oct 03 08:35:46 2014 -0400"
      },
      "message": "Delegate identity v2 extensions to common.\n"
    },
    {
      "commit": "1f11051119514c0c2e2d70ff69afc16c228a15e7",
      "tree": "eec0bc18eed392ee2beedd5d555e9e04db594c98",
      "parents": [
        "a6b083178893c5d35429d2a11de48f1dc1a7cd73"
      ],
      "author": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Thu Oct 02 15:43:47 2014 -0400"
      },
      "committer": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Thu Oct 02 15:43:47 2014 -0400"
      },
      "message": "Completely untested code for tokens and tenants.\n"
    },
    {
      "commit": "a6b083178893c5d35429d2a11de48f1dc1a7cd73",
      "tree": "b828049f0aae8ab42d14a1c9a3916b7afd29a818",
      "parents": [
        "a5cffc9c6e7481cf8f246eed23f7ce4829a896c5"
      ],
      "author": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Thu Oct 02 15:27:45 2014 -0400"
      },
      "committer": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Thu Oct 02 15:27:45 2014 -0400"
      },
      "message": "Move RFC3339Milli to the root package.\n"
    },
    {
      "commit": "884b5cf599a3bd196fb9aa0091f5c4e832c55a68",
      "tree": "ba0c3b8fd2d015e577ca413bc0a7ad2ce1983c64",
      "parents": [
        "81ab83a9f2f6cc4a62bbbb19d2aedc4f609560a2"
      ],
      "author": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Thu Oct 02 11:08:58 2014 -0400"
      },
      "committer": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Thu Oct 02 11:08:58 2014 -0400"
      },
      "message": "Comment the `header` field.\n"
    },
    {
      "commit": "81ab83a9f2f6cc4a62bbbb19d2aedc4f609560a2",
      "tree": "befffe470a465273f8e2a2ac72d8c2c65f86b089",
      "parents": [
        "15f5b1237e4a39488255455993ebbf31786c787b"
      ],
      "author": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Thu Oct 02 11:06:23 2014 -0400"
      },
      "committer": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Thu Oct 02 11:06:23 2014 -0400"
      },
      "message": "Trailing `s` :fire:\n"
    },
    {
      "commit": "55f2433f1a7484b6a3723ad01191d27fc7520065",
      "tree": "cfc915eace66132f497c9c84661522f8c5b1c271",
      "parents": [
        "63b2a298cf7e43d14a4645917c8c10ff010b8ad3"
      ],
      "author": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Thu Oct 02 09:37:05 2014 -0400"
      },
      "committer": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Thu Oct 02 09:37:05 2014 -0400"
      },
      "message": "Missed a return. Thank you unit testing\n"
    },
    {
      "commit": "63b2a298cf7e43d14a4645917c8c10ff010b8ad3",
      "tree": "7c3b0b95feb0f78be78a2aad3ea04d79729f2bde",
      "parents": [
        "3f59ade74bcfe8e33aa08ebc6a325324e7353a09"
      ],
      "author": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Thu Oct 02 09:29:06 2014 -0400"
      },
      "committer": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Thu Oct 02 09:29:06 2014 -0400"
      },
      "message": "Provide expires_at in test fixtures.\n"
    },
    {
      "commit": "3f59ade74bcfe8e33aa08ebc6a325324e7353a09",
      "tree": "347b9105b45f1ccbce662447babdbd769aba49bd",
      "parents": [
        "f8d546a515756a261c8d6a8f151fd123054d3f8e"
      ],
      "author": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Thu Oct 02 09:22:23 2014 -0400"
      },
      "committer": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Thu Oct 02 09:22:23 2014 -0400"
      },
      "message": "Update identity v3 tests.\n"
    },
    {
      "commit": "f8d546a515756a261c8d6a8f151fd123054d3f8e",
      "tree": "e95ac9051ca339c24a959d26dd313427ea6925c8",
      "parents": [
        "74e2bb8462be3535d0ce41c4d8bf8c628826642f"
      ],
      "author": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Tue Sep 30 17:43:25 2014 -0400"
      },
      "committer": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Tue Sep 30 17:43:25 2014 -0400"
      },
      "message": "Rework token creation to use Result structs and Extract.\n"
    },
    {
      "commit": "74e2bb8462be3535d0ce41c4d8bf8c628826642f",
      "tree": "aaf0b1857ea0ff6b5de08c418a93934bd56184f9",
      "parents": [
        "1e1b7336bddff19d75aef4758b33d391081f77da"
      ],
      "author": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Tue Sep 30 17:08:48 2014 -0400"
      },
      "committer": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Tue Sep 30 17:08:48 2014 -0400"
      },
      "message": "Use XyzResult structs and Extract methods.\n"
    },
    {
      "commit": "1e1b7336bddff19d75aef4758b33d391081f77da",
      "tree": "84c1b305e155802169174fac1a418424311239df",
      "parents": [
        "b18fc106bf4b9989b27f5210c656e0f38cfeb481"
      ],
      "author": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Tue Sep 30 16:38:11 2014 -0400"
      },
      "committer": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Tue Sep 30 16:38:11 2014 -0400"
      },
      "message": "getXyzUrl -\u003e xyzUrl\n"
    },
    {
      "commit": "b18fc106bf4b9989b27f5210c656e0f38cfeb481",
      "tree": "ac8fd01e8086b45c2327f4d8fe30adda12ecf5d4",
      "parents": [
        "83ac13d3c4de8bcbd933b6912f84551486e61730"
      ],
      "author": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Tue Sep 30 15:26:01 2014 -0400"
      },
      "committer": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Tue Sep 30 15:26:01 2014 -0400"
      },
      "message": "Use the global MaybeString function.\n"
    },
    {
      "commit": "fc55c8260b6c2073e5ecb448f3863b8aeb02b85f",
      "tree": "7996af6d607935f18ecd32f7db0d052e10d24f7e",
      "parents": [
        "d27e0ff565e45fb6a3bdf49687f2088db7fc3c31"
      ],
      "author": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Thu Sep 25 13:18:16 2014 -0400"
      },
      "committer": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Thu Sep 25 13:18:16 2014 -0400"
      },
      "message": "LinkedPageBase follows a LinkPath element.\n"
    },
    {
      "commit": "cd95a0c9154d011610dbed0d56bb2eb3390bf232",
      "tree": "97785003d330be1af87071cf5d17d31d1f56102e",
      "parents": [
        "7049af4c36bdbfeb38ab4cb1a41bb5d28ed23b6c"
      ],
      "author": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Tue Sep 16 13:07:31 2014 -0400"
      },
      "committer": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Tue Sep 16 13:07:31 2014 -0400"
      },
      "message": "Adjust callers again.\n"
    },
    {
      "commit": "3c8cc77770c9e8798c0dee7a17f9f93145db52db",
      "tree": "6ec582caa65ddf573ff6262098657c8b723bb568",
      "parents": [
        "c8e68871919567d3a36145a3acf58d9cb636b6cc"
      ],
      "author": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Tue Sep 16 11:40:49 2014 -0400"
      },
      "committer": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Tue Sep 16 11:40:49 2014 -0400"
      },
      "message": "Change identity endpoints and services.\n"
    },
    {
      "commit": "ab6be617dbe22e66124bda2381fb09725b09d51b",
      "tree": "36c538923f7123d8a96e983945b3fdd0e2f18261",
      "parents": [
        "5a25f5482718530716918b56d1b6d4b716179c95"
      ],
      "author": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Mon Sep 15 15:51:22 2014 -0400"
      },
      "committer": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Mon Sep 15 15:51:22 2014 -0400"
      },
      "message": "Adjust callers to match.\n"
    },
    {
      "commit": "152d75a1a694e9d1387493a9a13a52b7d3a8c5af",
      "tree": "8808dfc265bc368d6e50c3c25c1dffb6919eb21c",
      "parents": [
        "4bf4fac974d521f2ddf63c30cd07bd79f37d355d"
      ],
      "author": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Mon Sep 15 09:35:03 2014 -0400"
      },
      "committer": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Mon Sep 15 10:11:07 2014 -0400"
      },
      "message": "Remove the closures from the New.*Pager calls.\n"
    },
    {
      "commit": "6b35e50127d2165e4ee304ba4dccd122697e8a35",
      "tree": "b2c5edbc8fe40a3621230b85e5bd768f89b8951f",
      "parents": [
        "566613ec83571bf1089c3e9c563f80f63b22a951"
      ],
      "author": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Fri Sep 12 15:15:23 2014 -0400"
      },
      "committer": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Mon Sep 15 10:11:07 2014 -0400"
      },
      "message": "Add an error return to the EachPage closure.\n\nBecause the Extract functions, at the very least, have an error parameter, and it\u0027s\nkind of a pain to capture it outside the closure.\n"
    },
    {
      "commit": "6269f2541b3fc4a1a524fd513ba80225ed5a6a16",
      "tree": "836fb43fe59ce7832b7b240ae5bad1068ba958b0",
      "parents": [
        "bddac13953144d485a90e4f9cba9d2bb9ed37f70"
      ],
      "author": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Fri Sep 12 14:33:56 2014 -0400"
      },
      "committer": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Mon Sep 15 10:11:07 2014 -0400"
      },
      "message": "Repaginate the identity/3/endpoints resource.\n"
    },
    {
      "commit": "bddac13953144d485a90e4f9cba9d2bb9ed37f70",
      "tree": "f56309610e78bd780e62bd40cad0586693079d06",
      "parents": [
        "583dc733f5e4657df30fe768ae8110aa67ed177d"
      ],
      "author": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Fri Sep 12 14:20:16 2014 -0400"
      },
      "committer": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Mon Sep 15 10:11:07 2014 -0400"
      },
      "message": "Use the new pagination in identity/3/services.\n"
    },
    {
      "commit": "d8aef1baae4434f93a62ae082df1b34bf186af53",
      "tree": "69e771918a65cfc71d8171813f94f14c0e6e31e8",
      "parents": [
        "3cab6339e3bbfbf75a71f954ec417eed52dbe866"
      ],
      "author": {
        "name": "Jon Perritt",
        "email": "jrperritt@gmail.com",
        "time": "Thu Sep 11 17:50:04 2014 -0500"
      },
      "committer": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Mon Sep 15 10:02:18 2014 -0400"
      },
      "message": "remove Content-Type expectation from Get token test\n"
    },
    {
      "commit": "efac18b3ce3aa8a349ed3eeaf8bb1c9fde58d309",
      "tree": "e4a3c4876f815ef2804bfab4c1a32c2b47f66c58",
      "parents": [
        "05a5c0fdbaf96507275e6c0343febc0582796038"
      ],
      "author": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Wed Sep 10 14:44:42 2014 -0400"
      },
      "committer": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Wed Sep 10 14:44:42 2014 -0400"
      },
      "message": "Rename \"Interface\" to \"Availability\".\n\nInterface is what the identity v3 docs call it, but that collides with an\nimportant concept from Go-the-language. Renaming it to \"Availability\" because\nthat\u0027s more descriptive.\n"
    },
    {
      "commit": "5266e49cf3097f1ee9062a1731fa137a5ac4d0a6",
      "tree": "db2f3b7537aa69177f5d2ef359b7ec5fa9332afc",
      "parents": [
        "51b4f1cc734aa37edc55f329c2fc2de3797e10f2"
      ],
      "author": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Tue Sep 09 15:44:30 2014 -0400"
      },
      "committer": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Tue Sep 09 15:44:30 2014 -0400"
      },
      "message": "Rename `Info` to `Get`.\n"
    },
    {
      "commit": "0747d7edfc3a078f0b061ba9332f2cd09fdaf10e",
      "tree": "634e91715a58a1957d1f37bbca2a1b535c2890f4",
      "parents": [
        "7083d022c1b2241038ddc2547b1100c3c039519a"
      ],
      "author": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Tue Sep 09 14:27:35 2014 -0400"
      },
      "committer": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Tue Sep 09 14:27:35 2014 -0400"
      },
      "message": "Move the Interface type and its consts.\n"
    },
    {
      "commit": "11c98288b35a4cac8260bf5ec2c3dc0f3f321372",
      "tree": "956ab7f29958de8dae8751e4ffd1b795b88989b6",
      "parents": [
        "986854a94c39e5d50b93e8d29ede44630127d2e2"
      ],
      "author": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Mon Sep 08 16:05:10 2014 -0400"
      },
      "committer": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Mon Sep 08 16:05:10 2014 -0400"
      },
      "message": "Use v2 identity in AuthenticatedClient.\n"
    },
    {
      "commit": "31844f2cb62f8110e9cd7bc11cc2b7037e88f1c7",
      "tree": "49efbd5486844e0d529a763c14f2064cab7a7b8d",
      "parents": [
        "9c6c9e6ddd69fa72a3555b5f6e02c8eefa35dfe2"
      ],
      "author": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Mon Sep 08 15:32:58 2014 -0400"
      },
      "committer": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Mon Sep 08 15:32:58 2014 -0400"
      },
      "message": "Package name now matches directory name :lipstick:\n"
    },
    {
      "commit": "9c6c9e6ddd69fa72a3555b5f6e02c8eefa35dfe2",
      "tree": "6f7268c0a224046978707dba7d431f9003d04ec7",
      "parents": [
        "2ebb21c024e8bccb1026db370275a1bfe105b466"
      ],
      "author": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Mon Sep 08 15:27:38 2014 -0400"
      },
      "committer": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Mon Sep 08 15:27:38 2014 -0400"
      },
      "message": "Use a ServiceClient in identity v2, as well.\n"
    },
    {
      "commit": "2ebb21c024e8bccb1026db370275a1bfe105b466",
      "tree": "d412e8f170201babef3d62d122d5980fae7732b2",
      "parents": [
        "12b3b6cbdfca3c4530e36ee575ade7559d34949c"
      ],
      "author": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Mon Sep 08 15:01:32 2014 -0400"
      },
      "committer": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Mon Sep 08 15:01:32 2014 -0400"
      },
      "message": "Finish the identity.AuthOptions removal. :fire:\n"
    },
    {
      "commit": "12b3b6cbdfca3c4530e36ee575ade7559d34949c",
      "tree": "50282ab1cfe905df5434577db9099fa974da2b0b",
      "parents": [
        "b110fc956da1fb8d6468d9d766dfee0c10ee7ffa"
      ],
      "author": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Mon Sep 08 14:54:38 2014 -0400"
      },
      "committer": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Mon Sep 08 14:54:38 2014 -0400"
      },
      "message": "v2 is now golint clean :lipstick:\n"
    },
    {
      "commit": "b110fc956da1fb8d6468d9d766dfee0c10ee7ffa",
      "tree": "e6af3f7fe27a164c46b6a24b89e8b1d6f014750a",
      "parents": [
        "612df9ea5757350dd3e2d847c8905c0c16a9bcfd"
      ],
      "author": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Mon Sep 08 13:54:59 2014 -0400"
      },
      "committer": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Mon Sep 08 13:57:33 2014 -0400"
      },
      "message": "Use a Concat method to aggregate Collection pages.\n"
    },
    {
      "commit": "0555c644358f7037b44db78541756305c3b5a239",
      "tree": "7eba4c03de11577fa6b6490dc81e82f7e72aa545",
      "parents": [
        "700d13a087c13c2411b6f8e024d54c39859cd87c"
      ],
      "author": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Fri Sep 05 16:57:17 2014 -0400"
      },
      "committer": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Fri Sep 05 16:57:17 2014 -0400"
      },
      "message": "Acceptance test that simulates walking to an endpoint.\n"
    },
    {
      "commit": "700d13a087c13c2411b6f8e024d54c39859cd87c",
      "tree": "53724dc442bb0f47d13a07b085ae347d6e75035c",
      "parents": [
        "8df23c8c6fd26ab64f11d9cebc2b97a14a381b6b"
      ],
      "author": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Fri Sep 05 14:24:16 2014 -0400"
      },
      "committer": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Fri Sep 05 14:24:16 2014 -0400"
      },
      "message": "EndpointList is now a link-paginated collection.\n"
    },
    {
      "commit": "8df23c8c6fd26ab64f11d9cebc2b97a14a381b6b",
      "tree": "0e096ee612251cd3f205b94dcc0bb30e982ddac7",
      "parents": [
        "dd7188d1b605cca7cfb9b740b7da0bbb256f06ec"
      ],
      "author": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Fri Sep 05 14:18:20 2014 -0400"
      },
      "committer": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Fri Sep 05 14:18:20 2014 -0400"
      },
      "message": "Turns out /endpoints *is* paginated with links.\n"
    },
    {
      "commit": "74b12ce55fde57a28166e8e72e8c5298f9af7664",
      "tree": "76a829ded10b8d10759a0ab841ecf9fa118f74e1",
      "parents": [
        "64f441571da25123ca9e49ba972eea7ade7fc81c"
      ],
      "author": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Fri Sep 05 13:46:53 2014 -0400"
      },
      "committer": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Fri Sep 05 13:46:53 2014 -0400"
      },
      "message": "Take out a stale reference before I start on Endpoints.\n"
    },
    {
      "commit": "64f441571da25123ca9e49ba972eea7ade7fc81c",
      "tree": "64a35ba8c7220354b3ded040133b90882b4ce2c2",
      "parents": [
        "64d67b2326f7e746d82f5b9b3a30818c1b2df5de"
      ],
      "author": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Fri Sep 05 13:45:03 2014 -0400"
      },
      "committer": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Fri Sep 05 13:45:03 2014 -0400"
      },
      "message": "ServiceList is now a LinkCollection.\n"
    },
    {
      "commit": "70db2ab2c552a334878c837809985734697f972d",
      "tree": "883aedbec372bd3edca3fac1938a4e5a5718d74a",
      "parents": [
        "f04a74c17142f3ba4a7f49acefc7a324449c210d"
      ],
      "author": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Thu Sep 04 11:18:32 2014 -0400"
      },
      "committer": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Thu Sep 04 11:18:32 2014 -0400"
      },
      "message": "Implement endpoints.Delete().\n"
    },
    {
      "commit": "f04a74c17142f3ba4a7f49acefc7a324449c210d",
      "tree": "9d37a9252930c05082748ff207410f5c809f436e",
      "parents": [
        "1cc96dc013f8feece96bc32d1502b12f089ba2bf"
      ],
      "author": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Thu Sep 04 11:16:20 2014 -0400"
      },
      "committer": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Thu Sep 04 11:16:20 2014 -0400"
      },
      "message": "Implement endpoint.Update().\n"
    },
    {
      "commit": "1cc96dc013f8feece96bc32d1502b12f089ba2bf",
      "tree": "7644445483a2505655aeb945905db495fd3964df",
      "parents": [
        "32c0e8d5e047ac6c60a82d747bbee280000042d2"
      ],
      "author": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Thu Sep 04 10:53:22 2014 -0400"
      },
      "committer": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Thu Sep 04 10:53:22 2014 -0400"
      },
      "message": "Initialize useful errors.\n"
    },
    {
      "commit": "32c0e8d5e047ac6c60a82d747bbee280000042d2",
      "tree": "2d6e3d0a9641443833fd025561980332c3705090",
      "parents": [
        "989ce54bd542055fc541a1cc372e44660fd113e9"
      ],
      "author": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Thu Sep 04 10:53:08 2014 -0400"
      },
      "committer": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Thu Sep 04 10:53:08 2014 -0400"
      },
      "message": "Implement endpoints.List().\n\nMinus pagination and all that.\n"
    },
    {
      "commit": "989ce54bd542055fc541a1cc372e44660fd113e9",
      "tree": "1e53920467071cfa81869983cfdf6ce2f3b7ef5a",
      "parents": [
        "bdfc330977a3939a55fc49d45ae13998ef3fbb27"
      ],
      "author": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Thu Sep 04 10:52:49 2014 -0400"
      },
      "committer": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Thu Sep 04 10:52:49 2014 -0400"
      },
      "message": "Implement endpoints.Create.\n"
    },
    {
      "commit": "bdfc330977a3939a55fc49d45ae13998ef3fbb27",
      "tree": "e8445dc415cdb893802226aed1957038bf764942",
      "parents": [
        "0a997f88a61be2de839f09ab8240e0202c331aa7"
      ],
      "author": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Thu Sep 04 10:16:28 2014 -0400"
      },
      "committer": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Thu Sep 04 10:16:28 2014 -0400"
      },
      "message": "Unit tests for Endpoint CRUD operations.\n"
    },
    {
      "commit": "0a997f88a61be2de839f09ab8240e0202c331aa7",
      "tree": "c950ce7e5ccbcf880ed4cdf4cd46d228fe799799",
      "parents": [
        "d24786d79dc4e80704bb5c8eebf8ce5be2c7c9c0"
      ],
      "author": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Wed Sep 03 15:50:52 2014 -0400"
      },
      "committer": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Wed Sep 03 15:50:52 2014 -0400"
      },
      "message": "Generate Endpoint service URLs.\n"
    },
    {
      "commit": "d24786d79dc4e80704bb5c8eebf8ce5be2c7c9c0",
      "tree": "48714659bd8a16a6e85b9dc742b13d6eaf43d92a",
      "parents": [
        "d1b721333f6faace7a6f4c8b3a4180dd5463b39e"
      ],
      "author": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Wed Sep 03 15:38:00 2014 -0400"
      },
      "committer": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Wed Sep 03 15:38:00 2014 -0400"
      },
      "message": "Delete services, too.\n"
    },
    {
      "commit": "d1b721333f6faace7a6f4c8b3a4180dd5463b39e",
      "tree": "7f18e6e5fb631aba66af359f2afe1541b1dc61cc",
      "parents": [
        "b11299722dbc9c81ee2ba66823b78035d5d1aee5"
      ],
      "author": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Wed Sep 03 15:26:26 2014 -0400"
      },
      "committer": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Wed Sep 03 15:26:26 2014 -0400"
      },
      "message": "Update existing Services.\n"
    },
    {
      "commit": "b11299722dbc9c81ee2ba66823b78035d5d1aee5",
      "tree": "56e488043cbb6eae9306b1143a85c73540ea059b",
      "parents": [
        "fd794d59ee5abe5490b41940d0146744483466e4"
      ],
      "author": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Wed Sep 03 14:45:21 2014 -0400"
      },
      "committer": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Wed Sep 03 14:45:21 2014 -0400"
      },
      "message": "Implement and test the Service Info call.\n"
    },
    {
      "commit": "2f5dd1f53c2ada5e0a4d2990b6cfd3b3a12f8c12",
      "tree": "ac71b63216009120c9b1555b4fda5c9b2e9e3a6a",
      "parents": [
        "ed6a1d851f3e39482e45894513186a796be60d55"
      ],
      "author": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Wed Sep 03 14:01:37 2014 -0400"
      },
      "committer": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Wed Sep 03 14:01:37 2014 -0400"
      },
      "message": "List the services available from an endpoint.\n"
    },
    {
      "commit": "a87ee06ff02f989a03278cbe0fa77c0ea7e8e587",
      "tree": "878a5fbc2978649c328c382358d2071d9709edb8",
      "parents": [
        "c6372fea62a04099a9f07ab9fadbaf9bb290e927"
      ],
      "author": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Wed Sep 03 11:26:06 2014 -0400"
      },
      "committer": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Wed Sep 03 11:26:06 2014 -0400"
      },
      "message": "Use general (Provider|Service)Client structs.\n"
    },
    {
      "commit": "49f0f5622f82fc02a3bb2a8b51cdee1ebd4b4f0c",
      "tree": "ffc518ac3f0eeccd2d6c27017e77eedb704922bc",
      "parents": [
        "c25ae6093a3e44cb4e427f11c31deef2397d4edb"
      ],
      "author": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Wed Sep 03 08:58:20 2014 -0400"
      },
      "committer": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Wed Sep 03 08:58:20 2014 -0400"
      },
      "message": "Remove some fields from ProviderClient.\n"
    },
    {
      "commit": "001cfa5ea395ceec1725a9edc5ae2e1095068f31",
      "tree": "83dc48da57fb5089f7a876e564aa248e92ef354c",
      "parents": [
        "33c85f4e5e10d0e97cc6d39a1a5c3a92f415ea7c"
      ],
      "author": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Tue Sep 02 14:23:23 2014 -0400"
      },
      "committer": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Tue Sep 02 14:23:23 2014 -0400"
      },
      "message": "Fix tests.\n"
    },
    {
      "commit": "ccd020bcada931a04bed29b0dac16187f8994d9c",
      "tree": "710da477ee38b818ee7c90c6a4a1161dce383aa3",
      "parents": [
        "6e8700398781b13892f4323c181a3eb833e41ef0"
      ],
      "author": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Tue Sep 02 10:40:54 2014 -0400"
      },
      "committer": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Tue Sep 02 10:40:54 2014 -0400"
      },
      "message": "Shuffle around authentication methods.\n\nI\u0027d like to be able to explicitly authenticated with a certain version.\n"
    },
    {
      "commit": "6e8700398781b13892f4323c181a3eb833e41ef0",
      "tree": "ae72f755fda0d195c6acb4014090dd2ad3dcb041",
      "parents": [
        "773e6c37c9bd5de127ee992543555be38a4f8696"
      ],
      "author": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Tue Sep 02 08:38:27 2014 -0400"
      },
      "committer": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Tue Sep 02 08:38:27 2014 -0400"
      },
      "message": "Generate a URL for a specific Service resource.\n"
    },
    {
      "commit": "b73b7f8044b3dd6caaf3dd8419a10fa9abe96f52",
      "tree": "47d9aede688bcd33c5c957804b88a227d24d35be",
      "parents": [
        "4dee1b874cd37250e84f94447a6e29827697fba8"
      ],
      "author": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Fri Aug 29 15:38:06 2014 -0400"
      },
      "committer": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Fri Aug 29 15:38:06 2014 -0400"
      },
      "message": "Implement and test service creation.\n"
    },
    {
      "commit": "4dee1b874cd37250e84f94447a6e29827697fba8",
      "tree": "a285b2c21cb10b3fa1926e98e00e02a5cc9aece0",
      "parents": [
        "aef9dc55a6149257cd7f73d99dacc2f81f823059"
      ],
      "author": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Fri Aug 29 14:56:45 2014 -0400"
      },
      "committer": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Fri Aug 29 14:56:45 2014 -0400"
      },
      "message": "Use version negotiation in openstack.NewClient().\n"
    },
    {
      "commit": "054514387c1bafa462a061ce044a3a3b89920394",
      "tree": "95cb85293ccce614ee40f2e4478d2a762f47637e",
      "parents": [
        "131b7752b9d2f582c00c5053bca59cd7cb7d9b6a"
      ],
      "author": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Fri Aug 29 13:24:07 2014 -0400"
      },
      "committer": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Fri Aug 29 13:24:07 2014 -0400"
      },
      "message": "Oops, wrong package name.\n"
    },
    {
      "commit": "131b7752b9d2f582c00c5053bca59cd7cb7d9b6a",
      "tree": "72772de2b9a808578c5727c32b4dcef3838d27a9",
      "parents": [
        "6425a415dfe6dfaccea141f65add74479067b775"
      ],
      "author": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Fri Aug 29 12:53:55 2014 -0400"
      },
      "committer": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Fri Aug 29 12:56:33 2014 -0400"
      },
      "message": "Authentication at the identity client level.\n"
    },
    {
      "commit": "6425a415dfe6dfaccea141f65add74479067b775",
      "tree": "a79ed08c0eb05477e7b77a74223eff059ad5d7d1",
      "parents": [
        "89466cc335beb561cc88c0ef997d3de996e76a47"
      ],
      "author": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Fri Aug 29 12:30:35 2014 -0400"
      },
      "committer": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Fri Aug 29 12:56:33 2014 -0400"
      },
      "message": "Clarify ServiceClient and ProviderClient.\n"
    },
    {
      "commit": "89466cc335beb561cc88c0ef997d3de996e76a47",
      "tree": "bf43c27773a702ed3a55a46a641a74e19d822c0e",
      "parents": [
        "0ab4d61b15e62be8a2cad48baf2e9ee4ed10b4ff"
      ],
      "author": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Fri Aug 29 11:27:39 2014 -0400"
      },
      "committer": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Fri Aug 29 12:56:33 2014 -0400"
      },
      "message": "Rename ServiceClient to ProviderClient.\n\nRather than store state within service-level Clients, we really want that\nat the provider level. Service-level clients should be stateless.\n"
    },
    {
      "commit": "0ab4d61b15e62be8a2cad48baf2e9ee4ed10b4ff",
      "tree": "ff53f4c7a14404af79daa00f9cf8faa806e5051f",
      "parents": [
        "46d913f1d885ccda04a9711c7c6c2d5452b2f53e"
      ],
      "author": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Fri Aug 29 11:10:13 2014 -0400"
      },
      "committer": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Fri Aug 29 12:56:33 2014 -0400"
      },
      "message": "Move setup() and teardown() into testhelper, too.\n"
    },
    {
      "commit": "46d913f1d885ccda04a9711c7c6c2d5452b2f53e",
      "tree": "a25154a254e0959076f1676abfd921c92d38f066",
      "parents": [
        "e058e34e6cd08566755f088eec54a7107a19b7ce"
      ],
      "author": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Fri Aug 29 11:00:11 2014 -0400"
      },
      "committer": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Fri Aug 29 12:56:33 2014 -0400"
      },
      "message": "And all of the rest of the token operations.\n\nPlus tests for each.\n"
    },
    {
      "commit": "e058e34e6cd08566755f088eec54a7107a19b7ce",
      "tree": "a9a42dd30baa784148d4d3221cb43accba04badd",
      "parents": [
        "4a52e2aa29f8454d0cdc0cecf5ad18f9e42a807d"
      ],
      "author": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Fri Aug 29 10:31:41 2014 -0400"
      },
      "committer": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Fri Aug 29 12:56:33 2014 -0400"
      },
      "message": "Parse token expiration from the response.\n"
    },
    {
      "commit": "4a52e2aa29f8454d0cdc0cecf5ad18f9e42a807d",
      "tree": "fbbf9967eafe8020ffce829533e73f6fed1c9ace",
      "parents": [
        "aed3db4c369cae11c45b47fa5fbe0a8fb4e2139a"
      ],
      "author": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Fri Aug 29 09:28:00 2014 -0400"
      },
      "committer": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Fri Aug 29 12:56:33 2014 -0400"
      },
      "message": "Extract the new token from headers.\n"
    },
    {
      "commit": "aed3db4c369cae11c45b47fa5fbe0a8fb4e2139a",
      "tree": "a936d8b8cae815b9471e8f2e3335b1751fe0b375",
      "parents": [
        "a8855ffc82aa64652e8f5e3e89f12bb4efe4dbe7"
      ],
      "author": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Fri Aug 29 08:59:56 2014 -0400"
      },
      "committer": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Fri Aug 29 12:56:33 2014 -0400"
      },
      "message": "Test the rest of the failure cases for Create.\n"
    },
    {
      "commit": "a8855ffc82aa64652e8f5e3e89f12bb4efe4dbe7",
      "tree": "fadd09bdad8a5110a89b23f22a6fddfadbc983b0",
      "parents": [
        "1fde61654dc0f4e9f4c801cb09194109b4e20d1b"
      ],
      "author": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Fri Aug 29 08:26:29 2014 -0400"
      },
      "committer": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Fri Aug 29 12:56:33 2014 -0400"
      },
      "message": "First batch of failure cases.\n"
    },
    {
      "commit": "1fde61654dc0f4e9f4c801cb09194109b4e20d1b",
      "tree": "c1c7d3215d3bea6f8650d7531bc33cfb9904970b",
      "parents": [
        "053fcb0dba390019e5b8138cb68cc5df91a64834"
      ],
      "author": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Fri Aug 29 08:13:06 2014 -0400"
      },
      "committer": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Fri Aug 29 12:56:33 2014 -0400"
      },
      "message": "Unit tests for various Scopes.\n"
    },
    {
      "commit": "053fcb0dba390019e5b8138cb68cc5df91a64834",
      "tree": "7b11f7b68bbe373e8b4f8ac117c9125e3ef56952",
      "parents": [
        "d8da9e4184dd2d49afaa81ac939cdd21c4d54b5f"
      ],
      "author": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Fri Aug 29 08:04:35 2014 -0400"
      },
      "committer": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Fri Aug 29 12:56:33 2014 -0400"
      },
      "message": "Test Create with only a TokenID.\n"
    },
    {
      "commit": "d8da9e4184dd2d49afaa81ac939cdd21c4d54b5f",
      "tree": "06ca0b02373ec29f1629c8916ed85fedce789914",
      "parents": [
        "417d922b7a5969e890f04f2bfa9f5b99743785e6"
      ],
      "author": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Fri Aug 29 08:01:06 2014 -0400"
      },
      "committer": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Fri Aug 29 12:56:33 2014 -0400"
      },
      "message": "Test Username+DomainName+Password.\n"
    },
    {
      "commit": "417d922b7a5969e890f04f2bfa9f5b99743785e6",
      "tree": "c36f5a44643a6af1405b40ce8d65aee614445f8f",
      "parents": [
        "cde68123e4431d9cb5b08cbee34cdaece2b216ac"
      ],
      "author": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Fri Aug 29 07:58:35 2014 -0400"
      },
      "committer": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Fri Aug 29 12:56:33 2014 -0400"
      },
      "message": "Test Username+DomainID+Password auth.\n"
    },
    {
      "commit": "cde68123e4431d9cb5b08cbee34cdaece2b216ac",
      "tree": "5397b57005ec2553b68d7e3aa6dfdd1b830882a6",
      "parents": [
        "9e3f715811502b520f552551f0196ddbf7455dfb"
      ],
      "author": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Thu Aug 28 16:15:43 2014 -0400"
      },
      "committer": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Fri Aug 29 12:56:33 2014 -0400"
      },
      "message": "Tests and bug fixes for UserID + Password.\n"
    }
  ],
  "next": "b482d545488e56f0cd84959254fcdae2971e3181"
}
