)]}'
{
  "log": [
    {
      "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": "64d67b2326f7e746d82f5b9b3a30818c1b2df5de",
      "tree": "860eef9949d5c58b7a3ca7cd65f352fdfd8c2479",
      "parents": [
        "70db2ab2c552a334878c837809985734697f972d"
      ],
      "author": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Fri Sep 05 13:04:12 2014 -0400"
      },
      "committer": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Fri Sep 05 13:04:12 2014 -0400"
      },
      "message": "First cut at pagination.\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": "fd794d59ee5abe5490b41940d0146744483466e4",
      "tree": "76b26c2fc2ca63d4d4192bd7fb61a6ab75946319",
      "parents": [
        "2f5dd1f53c2ada5e0a4d2990b6cfd3b3a12f8c12"
      ],
      "author": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Wed Sep 03 14:30:43 2014 -0400"
      },
      "committer": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Wed Sep 03 14:30:43 2014 -0400"
      },
      "message": "Acceptance test that enumerates services.\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": "ed6a1d851f3e39482e45894513186a796be60d55",
      "tree": "1ffccb2a088fa7c2cfdb2b848f75cce9bf369d90",
      "parents": [
        "9d9fb10702ad1efd5a7570cfb96a96bd0e9d98e1"
      ],
      "author": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Wed Sep 03 12:01:00 2014 -0400"
      },
      "committer": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Wed Sep 03 12:01:00 2014 -0400"
      },
      "message": "Let\u0027s include the / in service endpoints.\n"
    },
    {
      "commit": "9d9fb10702ad1efd5a7570cfb96a96bd0e9d98e1",
      "tree": "71aa5a254041af2340cf7f7c11a04a2ac56e18b9",
      "parents": [
        "a87ee06ff02f989a03278cbe0fa77c0ea7e8e587"
      ],
      "author": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Wed Sep 03 11:26:31 2014 -0400"
      },
      "committer": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Wed Sep 03 11:26:31 2014 -0400"
      },
      "message": "Update acceptance tests to match.\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": "c6372fea62a04099a9f07ab9fadbaf9bb290e927",
      "tree": "6272e9b05041fc75b27eecf5ebc63c1df17c110b",
      "parents": [
        "49f0f5622f82fc02a3bb2a8b51cdee1ebd4b4f0c"
      ],
      "author": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Wed Sep 03 11:24:52 2014 -0400"
      },
      "committer": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Wed Sep 03 11:24:52 2014 -0400"
      },
      "message": "Trim unused fields out of (Provider|Service)Client.\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": "c25ae6093a3e44cb4e427f11c31deef2397d4edb",
      "tree": "469152950238e252a2c211e29895c8daa95b1b9f",
      "parents": [
        "001cfa5ea395ceec1725a9edc5ae2e1095068f31"
      ],
      "author": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Tue Sep 02 14:41:12 2014 -0400"
      },
      "committer": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Tue Sep 02 14:41:12 2014 -0400"
      },
      "message": "Missed an acceptance test tag.\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": "33c85f4e5e10d0e97cc6d39a1a5c3a92f415ea7c",
      "tree": "626e1a4e3155b2fabe9142e0c88a4c9f69bf0de7",
      "parents": [
        "4215691d2e2a6a603719fd7b073fc2d98343f83d"
      ],
      "author": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Tue Sep 02 14:09:14 2014 -0400"
      },
      "committer": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Tue Sep 02 14:09:14 2014 -0400"
      },
      "message": "Acceptance test for creating authenticated clients.\n"
    },
    {
      "commit": "4215691d2e2a6a603719fd7b073fc2d98343f83d",
      "tree": "2575723426d8b6033cae660ed2a07dd6a193a407",
      "parents": [
        "e646c743a9b65908fc3350b3f4466411f2901223"
      ],
      "author": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Tue Sep 02 14:08:22 2014 -0400"
      },
      "committer": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Tue Sep 02 14:08:22 2014 -0400"
      },
      "message": "Acceptance test for token generation.\n"
    },
    {
      "commit": "e646c743a9b65908fc3350b3f4466411f2901223",
      "tree": "b43f346d1f5f706459028f201250f957eb62015e",
      "parents": [
        "72f7dfb0e636cb6712db036bbb2fe2f9cf6cbd15"
      ],
      "author": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Tue Sep 02 14:06:15 2014 -0400"
      },
      "committer": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Tue Sep 02 14:06:15 2014 -0400"
      },
      "message": "Extrapolate OS_ env vars for other auth options.\n"
    },
    {
      "commit": "72f7dfb0e636cb6712db036bbb2fe2f9cf6cbd15",
      "tree": "d6df24ea3bf550c3369937a8001cc4325da0effd",
      "parents": [
        "ccd020bcada931a04bed29b0dac16187f8994d9c"
      ],
      "author": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Tue Sep 02 14:06:00 2014 -0400"
      },
      "committer": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Tue Sep 02 14:06:00 2014 -0400"
      },
      "message": "The version endpoint returns a 300.\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": "773e6c37c9bd5de127ee992543555be38a4f8696",
      "tree": "af59e9c8914f44777a1715372b36f3000e59fb10",
      "parents": [
        "b73b7f8044b3dd6caaf3dd8419a10fa9abe96f52"
      ],
      "author": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Tue Sep 02 08:38:07 2014 -0400"
      },
      "committer": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Tue Sep 02 08:38:07 2014 -0400"
      },
      "message": "Explicitly return a v3 endpoint on request.\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": "aef9dc55a6149257cd7f73d99dacc2f81f823059",
      "tree": "6a3996c998f03c867be36f1b83acc160ff389c4e",
      "parents": [
        "c43602004486ebadee780b8a5c3ba6dd46cfea57"
      ],
      "author": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Fri Aug 29 14:21:26 2014 -0400"
      },
      "committer": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Fri Aug 29 14:21:26 2014 -0400"
      },
      "message": "Don\u0027t use experimental versions.\n"
    },
    {
      "commit": "c43602004486ebadee780b8a5c3ba6dd46cfea57",
      "tree": "4c4c6ed6cfdef6df60fc5e3d0a98f8c1c14d43fb",
      "parents": [
        "054514387c1bafa462a061ce044a3a3b89920394"
      ],
      "author": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Fri Aug 29 14:14:24 2014 -0400"
      },
      "committer": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Fri Aug 29 14:14:24 2014 -0400"
      },
      "message": "Choose a version from an API base endpoint.\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"
    },
    {
      "commit": "9e3f715811502b520f552551f0196ddbf7455dfb",
      "tree": "652b66d1e88fe54a056f41a265e6c4152ed0fe52",
      "parents": [
        "b482d545488e56f0cd84959254fcdae2971e3181"
      ],
      "author": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Thu Aug 28 16:02:49 2014 -0400"
      },
      "committer": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Fri Aug 29 12:56:33 2014 -0400"
      },
      "message": "Pretty-print JSON when inconsistencies arise.\n"
    },
    {
      "commit": "b482d545488e56f0cd84959254fcdae2971e3181",
      "tree": "ecb7c77e2830fceb37abb8105dd43e068e8c9b94",
      "parents": [
        "8ba82247d6e3cfc7ad767e7abe08c7d564d14f43"
      ],
      "author": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Thu Aug 28 15:48:04 2014 -0400"
      },
      "committer": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Fri Aug 29 12:56:33 2014 -0400"
      },
      "message": "A wild test appears! It\u0027s super effective!\n"
    },
    {
      "commit": "8ba82247d6e3cfc7ad767e7abe08c7d564d14f43",
      "tree": "132daa85bf60fe9d149334009e9eed9f6958aaaa",
      "parents": [
        "dd580ce39f5ae8846ff2968c82d0bfaa5e29ccc4"
      ],
      "author": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Thu Aug 28 15:38:55 2014 -0400"
      },
      "committer": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Fri Aug 29 12:56:33 2014 -0400"
      },
      "message": "Stub out a provider-level Client for OpenStack.\n"
    },
    {
      "commit": "dd580ce39f5ae8846ff2968c82d0bfaa5e29ccc4",
      "tree": "b05512c17426113764f03960d3770a4c8294d274",
      "parents": [
        "e5550862f19bee83438c92cf569dea3ecd62f219"
      ],
      "author": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Thu Aug 28 15:37:55 2014 -0400"
      },
      "committer": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Fri Aug 29 12:56:32 2014 -0400"
      },
      "message": "Make another package for unit testing helpers.\n"
    },
    {
      "commit": "e5550862f19bee83438c92cf569dea3ecd62f219",
      "tree": "a2cb6cfb962e95fb08b369ac280dab8b86e64947",
      "parents": [
        "8a85a91873fac7d230e2e02dd7c0fa653fbac05e"
      ],
      "author": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Thu Aug 28 15:37:09 2014 -0400"
      },
      "committer": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Fri Aug 29 12:56:32 2014 -0400"
      },
      "message": "Break the import cycle :wrench:\n\nI\u0027ll have to bring in an interface if we add functionality to v3.Client for\nuse in the resource packages.\n"
    },
    {
      "commit": "8a85a91873fac7d230e2e02dd7c0fa653fbac05e",
      "tree": "a7b13a645425769b247f3e871196d40a947a0759",
      "parents": [
        "d5f2f2d50648eb849c6fe181890cef154d086629"
      ],
      "author": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Thu Aug 28 15:09:58 2014 -0400"
      },
      "committer": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Fri Aug 29 12:56:32 2014 -0400"
      },
      "message": "Authenticate by creating an identity/v3 Client.\n"
    },
    {
      "commit": "d5f2f2d50648eb849c6fe181890cef154d086629",
      "tree": "6c7f81ea05b83eb93509c5121712d19f10ded677",
      "parents": [
        "a1920080adac79141ceeba9c2b7be1163c948ba7"
      ],
      "author": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Thu Aug 28 14:28:28 2014 -0400"
      },
      "committer": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Fri Aug 29 12:56:32 2014 -0400"
      },
      "message": "Screw it exporting.\n\nOtherwise we have no way to *set* those fields.\n"
    },
    {
      "commit": "a1920080adac79141ceeba9c2b7be1163c948ba7",
      "tree": "fad1d7178e372647736e3a4c2f252f9731be1bb8",
      "parents": [
        "2a325803435e7d478629419c4ae176ef6c4afe5a"
      ],
      "author": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Thu Aug 28 14:24:17 2014 -0400"
      },
      "committer": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Fri Aug 29 12:56:32 2014 -0400"
      },
      "message": "Move the TokenCreateResult type to its own file.\n"
    },
    {
      "commit": "2a325803435e7d478629419c4ae176ef6c4afe5a",
      "tree": "0f628550f0b225dab7dcd9c1b9415dcabf37fc8e",
      "parents": [
        "b6943e00d7d7c1bab364b235f5f7551ca7c0ef50"
      ],
      "author": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Thu Aug 28 14:23:00 2014 -0400"
      },
      "committer": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Fri Aug 29 12:56:32 2014 -0400"
      },
      "message": "Move errors to their own source file.\n"
    },
    {
      "commit": "b6943e00d7d7c1bab364b235f5f7551ca7c0ef50",
      "tree": "640d86e11bdd8ae16cefdea788dc373362ac77a0",
      "parents": [
        "85d8265faaa1fbde4e7383ca5adf7e5a69407b7d"
      ],
      "author": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Thu Aug 28 14:21:41 2014 -0400"
      },
      "committer": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Fri Aug 29 12:56:32 2014 -0400"
      },
      "message": "TokenID(), not GetTokenID().\n"
    },
    {
      "commit": "85d8265faaa1fbde4e7383ca5adf7e5a69407b7d",
      "tree": "c17fbf9cb41dd39c4c52a099bfb8295e49bbc381",
      "parents": [
        "70dfe0cb511fbf88b6973cf00aefdadab2eb52e0"
      ],
      "author": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Thu Aug 28 13:57:46 2014 -0400"
      },
      "committer": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Fri Aug 29 12:56:32 2014 -0400"
      },
      "message": "The first identity v3 request.\n"
    },
    {
      "commit": "70dfe0cb511fbf88b6973cf00aefdadab2eb52e0",
      "tree": "56885a28ba8e1d19d23c85e377acbecaf59c3c32",
      "parents": [
        "dda0f995a5d0c6fb4b073f4a001553a74dd9e1b2"
      ],
      "author": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Thu Aug 28 13:57:09 2014 -0400"
      },
      "committer": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Fri Aug 29 12:56:32 2014 -0400"
      },
      "message": "gophercloud-wide authentication types.\n"
    },
    {
      "commit": "dda0f995a5d0c6fb4b073f4a001553a74dd9e1b2",
      "tree": "1104ff10e90d22fdf8b4c49a308195f73461ea4a",
      "parents": [
        "fd4fe577737cac03f96df5879f6ad4fbcfb3b600"
      ],
      "author": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Thu Aug 28 13:56:48 2014 -0400"
      },
      "committer": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Fri Aug 29 12:56:32 2014 -0400"
      },
      "message": "Package docs linter :lipstick:\n"
    },
    {
      "commit": "fd4fe577737cac03f96df5879f6ad4fbcfb3b600",
      "tree": "acde7b8c33bc7009a52d6387a10570b25013615e",
      "parents": [
        "a19be191b54dd626766b1d60a9176a4207539964",
        "8ef2153224506cd281ce07151619a320d3e94964"
      ],
      "author": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Fri Aug 29 12:49:26 2014 -0400"
      },
      "committer": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Fri Aug 29 12:49:26 2014 -0400"
      },
      "message": "Merge pull request #187 from jrperritt/v0.2.0\n\nRemove files versions \u003c 0.2.0"
    },
    {
      "commit": "8ef2153224506cd281ce07151619a320d3e94964",
      "tree": "acde7b8c33bc7009a52d6387a10570b25013615e",
      "parents": [
        "4563a983a36d3871d41c1f73804edc24c9d5c6c3"
      ],
      "author": {
        "name": "Jon Perritt",
        "email": "jrperritt@gmail.com",
        "time": "Thu Aug 28 16:44:36 2014 -0500"
      },
      "committer": {
        "name": "Jon Perritt",
        "email": "jrperritt@gmail.com",
        "time": "Fri Aug 29 11:43:06 2014 -0500"
      },
      "message": "update README for v0.2.0\n"
    },
    {
      "commit": "4563a983a36d3871d41c1f73804edc24c9d5c6c3",
      "tree": "b025ad09e95cfc7f3160d89168cab023992c0a96",
      "parents": [
        "a19be191b54dd626766b1d60a9176a4207539964"
      ],
      "author": {
        "name": "Jon Perritt",
        "email": "jrperritt@gmail.com",
        "time": "Thu Aug 28 16:20:40 2014 -0500"
      },
      "committer": {
        "name": "Jon Perritt",
        "email": "jrperritt@gmail.com",
        "time": "Fri Aug 29 11:42:49 2014 -0500"
      },
      "message": "remove unused files from previous version; they are confusing people.\n"
    },
    {
      "commit": "a19be191b54dd626766b1d60a9176a4207539964",
      "tree": "69f0b9d2f7948129d3110539bf534c7ebfdd2ca5",
      "parents": [
        "55fa818a91dc78d0e65908102627160236d54565",
        "5f4b5c2efd0a6ee4aa2387dc67f507526773ef74"
      ],
      "author": {
        "name": "Samuel A. Falvo II",
        "email": "kc5tja@arrl.net",
        "time": "Wed Aug 27 10:13:42 2014 -0700"
      },
      "committer": {
        "name": "Samuel A. Falvo II",
        "email": "kc5tja@arrl.net",
        "time": "Wed Aug 27 10:13:42 2014 -0700"
      },
      "message": "Merge pull request #184 from jrperritt/v0.2.0\n\nmove \u0027NewClient\u0027 to function"
    },
    {
      "commit": "5f4b5c2efd0a6ee4aa2387dc67f507526773ef74",
      "tree": "95fcba1cb94482f4fae887c7b8e90bc19191fcda",
      "parents": [
        "aab1fcd04f0de267e417cee2432a750d7d9134f9"
      ],
      "author": {
        "name": "Jon Perritt",
        "email": "jrperritt@gmail.com",
        "time": "Wed Aug 27 11:44:07 2014 -0500"
      },
      "committer": {
        "name": "Jon Perritt",
        "email": "jrperritt@gmail.com",
        "time": "Wed Aug 27 11:44:07 2014 -0500"
      },
      "message": "move \u0027NewClient\u0027 function to \u0027utils\u0027 directory\n"
    },
    {
      "commit": "55fa818a91dc78d0e65908102627160236d54565",
      "tree": "8802f8e55fa7e0a811883b48655418ec6817ac3c",
      "parents": [
        "a7b7e8f1a830460f662c585a4eb0ebe8b4d02eda",
        "884e0314312c1feb021688b30092e327a9503ab8"
      ],
      "author": {
        "name": "Samuel A. Falvo II",
        "email": "kc5tja@arrl.net",
        "time": "Wed Aug 27 09:35:23 2014 -0700"
      },
      "committer": {
        "name": "Samuel A. Falvo II",
        "email": "kc5tja@arrl.net",
        "time": "Wed Aug 27 09:35:23 2014 -0700"
      },
      "message": "Merge pull request #183 from jrperritt/cf-change-reader-to-interface\n\nmake object\u0027s \u0027Content\u0027 type more generic (from *bytes.Reader to io.Read..."
    },
    {
      "commit": "aab1fcd04f0de267e417cee2432a750d7d9134f9",
      "tree": "3c5ff537c52b3c3c2ebdfedc32afef1b5aca97a7",
      "parents": [
        "a7b7e8f1a830460f662c585a4eb0ebe8b4d02eda"
      ],
      "author": {
        "name": "Jon Perritt",
        "email": "jrperritt@gmail.com",
        "time": "Wed Aug 27 11:21:45 2014 -0500"
      },
      "committer": {
        "name": "Jon Perritt",
        "email": "jrperritt@gmail.com",
        "time": "Wed Aug 27 11:21:45 2014 -0500"
      },
      "message": "move \u0027NewClient\u0027 to function\n"
    },
    {
      "commit": "a7b7e8f1a830460f662c585a4eb0ebe8b4d02eda",
      "tree": "61abc5621c648bc8a03a4b03f8a425d9e8e37444",
      "parents": [
        "31cdefd69a09bab1a531c791c220dea01133f181",
        "e1ce29870134c9287636476f67fe6cbc46c4caca"
      ],
      "author": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Wed Aug 27 11:47:22 2014 -0400"
      },
      "committer": {
        "name": "Ash Wilson",
        "email": "smashwilson@gmail.com",
        "time": "Wed Aug 27 11:47:22 2014 -0400"
      },
      "message": "Merge pull request #181 from jrperritt/os-identity-endpoint-fix\n\nOs identity endpoint fix"
    },
    {
      "commit": "e1ce29870134c9287636476f67fe6cbc46c4caca",
      "tree": "61abc5621c648bc8a03a4b03f8a425d9e8e37444",
      "parents": [
        "a8c3b81914b65ccd28831ae50f26b2f5b32ba8fd"
      ],
      "author": {
        "name": "Jon Perritt",
        "email": "jrperritt@gmail.com",
        "time": "Tue Aug 19 22:25:08 2014 -0500"
      },
      "committer": {
        "name": "Jon Perritt",
        "email": "jrperritt@gmail.com",
        "time": "Tue Aug 19 22:25:08 2014 -0500"
      },
      "message": "return error if no endpoint found\n"
    },
    {
      "commit": "a8c3b81914b65ccd28831ae50f26b2f5b32ba8fd",
      "tree": "a949b65e1a0de40c4840f5e6e0cac6954ae79e35",
      "parents": [
        "6e8987896197834e4177d0d166c7e84ee779b4bb"
      ],
      "author": {
        "name": "Jon Perritt",
        "email": "jrperritt@gmail.com",
        "time": "Tue Aug 19 22:02:31 2014 -0500"
      },
      "committer": {
        "name": "Jon Perritt",
        "email": "jrperritt@gmail.com",
        "time": "Tue Aug 19 22:15:16 2014 -0500"
      },
      "message": "don\u0027t use region environment variable\n"
    },
    {
      "commit": "6e8987896197834e4177d0d166c7e84ee779b4bb",
      "tree": "ba3fe9461acbd9b9ee7d1d4e39028191f3c03bc8",
      "parents": [
        "8cff5cfe80c5f86098973d86481306c9c0c6fd47"
      ],
      "author": {
        "name": "Jon Perritt",
        "email": "jrperritt@gmail.com",
        "time": "Tue Aug 19 15:58:11 2014 -0500"
      },
      "committer": {
        "name": "Jon Perritt",
        "email": "jrperritt@gmail.com",
        "time": "Tue Aug 19 15:58:11 2014 -0500"
      },
      "message": "change name of \u0027ClientOpts\u0027 to \u0027EndpointOpts\u0027\n"
    },
    {
      "commit": "8cff5cfe80c5f86098973d86481306c9c0c6fd47",
      "tree": "49e75c4acac479acdbd5d0b7a3effb05ea742117",
      "parents": [
        "5eb55b1786752df2dca13f372cdbec7dece91faa"
      ],
      "author": {
        "name": "Jon Perritt",
        "email": "jrperritt@gmail.com",
        "time": "Tue Aug 19 15:44:39 2014 -0500"
      },
      "committer": {
        "name": "Jon Perritt",
        "email": "jrperritt@gmail.com",
        "time": "Tue Aug 19 15:44:39 2014 -0500"
      },
      "message": "add comments\n"
    },
    {
      "commit": "5eb55b1786752df2dca13f372cdbec7dece91faa",
      "tree": "cf7e3dc999315e0731f9d8403aaba867470e542b",
      "parents": [
        "31cdefd69a09bab1a531c791c220dea01133f181"
      ],
      "author": {
        "name": "Jon Perritt",
        "email": "jrperritt@gmail.com",
        "time": "Mon Aug 18 14:48:23 2014 -0500"
      },
      "committer": {
        "name": "Jon Perritt",
        "email": "jrperritt@gmail.com",
        "time": "Mon Aug 18 17:50:57 2014 -0500"
      },
      "message": "add versioning to identity; add generic \u0027client\u0027 function\n"
    },
    {
      "commit": "884e0314312c1feb021688b30092e327a9503ab8",
      "tree": "e53972236a800e522a088313ab7319be91601024",
      "parents": [
        "31cdefd69a09bab1a531c791c220dea01133f181"
      ],
      "author": {
        "name": "Jon Perritt",
        "email": "jrperritt@gmail.com",
        "time": "Thu Aug 14 17:25:38 2014 -0500"
      },
      "committer": {
        "name": "Jon Perritt",
        "email": "jrperritt@gmail.com",
        "time": "Thu Aug 14 17:25:38 2014 -0500"
      },
      "message": "make object\u0027s \u0027Content\u0027 type more generic (from *bytes.Reader to io.Reader)\n"
    },
    {
      "commit": "31cdefd69a09bab1a531c791c220dea01133f181",
      "tree": "982c806af4fa2c392e0dfd479de221637e5e4c8f",
      "parents": [
        "28cadc29c18969c75effaa65ae007242d3b886ae",
        "a7099c6a4544da569ec365dc647596d4094a9ed4"
      ],
      "author": {
        "name": "Samuel A. Falvo II",
        "email": "kc5tja@arrl.net",
        "time": "Mon Aug 11 15:36:49 2014 -0700"
      },
      "committer": {
        "name": "Samuel A. Falvo II",
        "email": "kc5tja@arrl.net",
        "time": "Mon Aug 11 15:36:49 2014 -0700"
      },
      "message": "Merge pull request #172 from jrperritt/fix-os-identity-format\n\nFix os identity format"
    },
    {
      "commit": "a7099c6a4544da569ec365dc647596d4094a9ed4",
      "tree": "982c806af4fa2c392e0dfd479de221637e5e4c8f",
      "parents": [
        "e76ade741215c61b67d4247867e9efde1e7674e9"
      ],
      "author": {
        "name": "Jon Perritt",
        "email": "jrperritt@gmail.com",
        "time": "Sun Aug 10 21:47:23 2014 -0500"
      },
      "committer": {
        "name": "Jon Perritt",
        "email": "jrperritt@gmail.com",
        "time": "Sun Aug 10 21:47:23 2014 -0500"
      },
      "message": "fix format of result of extensions query and related functions\n"
    },
    {
      "commit": "e76ade741215c61b67d4247867e9efde1e7674e9",
      "tree": "cbc54ea217aa7b97644f8c1706aeaf1709571684",
      "parents": [
        "28cadc29c18969c75effaa65ae007242d3b886ae"
      ],
      "author": {
        "name": "Jon Perritt",
        "email": "jrperritt@gmail.com",
        "time": "Fri Aug 08 20:43:58 2014 -0500"
      },
      "committer": {
        "name": "Jon Perritt",
        "email": "jrperritt@gmail.com",
        "time": "Fri Aug 08 20:43:58 2014 -0500"
      },
      "message": "testing identity extensions\n"
    },
    {
      "commit": "28cadc29c18969c75effaa65ae007242d3b886ae",
      "tree": "60fe212322bf2c6612951ddab9fe7f28fd23ab4c",
      "parents": [
        "43d8353e173ecc7cf1924c5502cc9ce69336c2a5"
      ],
      "author": {
        "name": "Samuel A. Falvo II",
        "email": "sam.falvo@rackspace.com",
        "time": "Thu Jul 31 14:35:40 2014 -0700"
      },
      "committer": {
        "name": "Samuel A. Falvo II",
        "email": "sam.falvo@rackspace.com",
        "time": "Thu Jul 31 14:35:40 2014 -0700"
      },
      "message": "Refactor storage test to use new package\n"
    },
    {
      "commit": "43d8353e173ecc7cf1924c5502cc9ce69336c2a5",
      "tree": "b11a3b12388b314312b70dde7840a5e9bc87ff1b",
      "parents": [
        "ad023dcb5ba56bc186df0a91f75822c5a6be60e4"
      ],
      "author": {
        "name": "Samuel A. Falvo II",
        "email": "sam.falvo@rackspace.com",
        "time": "Thu Jul 31 14:34:48 2014 -0700"
      },
      "committer": {
        "name": "Samuel A. Falvo II",
        "email": "sam.falvo@rackspace.com",
        "time": "Thu Jul 31 14:34:48 2014 -0700"
      },
      "message": "Refactor compute acceptance tests to prep for extensions tests\n"
    },
    {
      "commit": "ad023dcb5ba56bc186df0a91f75822c5a6be60e4",
      "tree": "70a121dec56053b26642c9518d8e56efdab4175c",
      "parents": [
        "62927459e0ae11cca5b35956256746e80b2d50b1",
        "2dd7d2f03fe637a7cf5c7b48eba8720744d3e24d"
      ],
      "author": {
        "name": "Samuel A. Falvo II",
        "email": "sam.falvo@rackspace.com",
        "time": "Mon Jun 30 16:31:20 2014 -0700"
      },
      "committer": {
        "name": "Samuel A. Falvo II",
        "email": "sam.falvo@rackspace.com",
        "time": "Mon Jun 30 16:31:20 2014 -0700"
      },
      "message": "Merge branch \u0027master\u0027 into v0.2.0\n\nConflicts:\n\tacceptance/19-list-addresses-0.1.go\n\tservers.go\n\nI really need to do this more often.\n"
    },
    {
      "commit": "2dd7d2f03fe637a7cf5c7b48eba8720744d3e24d",
      "tree": "cd5355c929eca346624191fae8e8639c1fc984ea",
      "parents": [
        "40444fbc2b10960682b34e6822eb9179216e1ae1"
      ],
      "author": {
        "name": "Samuel A. Falvo II",
        "email": "sam.falvo@rackspace.com",
        "time": "Mon Jun 30 16:18:08 2014 -0700"
      },
      "committer": {
        "name": "Samuel A. Falvo II",
        "email": "sam.falvo@rackspace.com",
        "time": "Mon Jun 30 16:18:08 2014 -0700"
      },
      "message": "go run-style acceptance tests now requires build tags\n"
    },
    {
      "commit": "40444fbc2b10960682b34e6822eb9179216e1ae1",
      "tree": "413f5b6899141b0a9f7d5bbf52cdb1bf1d444d6f",
      "parents": [
        "9f90f77dc6c3aa792eaff9e7b584109bd2d6dc1a"
      ],
      "author": {
        "name": "Samuel A. Falvo II",
        "email": "sam.falvo@rackspace.com",
        "time": "Mon Jun 30 16:00:17 2014 -0700"
      },
      "committer": {
        "name": "Samuel A. Falvo II",
        "email": "sam.falvo@rackspace.com",
        "time": "Mon Jun 30 16:00:17 2014 -0700"
      },
      "message": "Fix #168 - prevent panic when calling ServerById() on non-existent resource\n"
    },
    {
      "commit": "9f90f77dc6c3aa792eaff9e7b584109bd2d6dc1a",
      "tree": "090b65bbd3a27e0ad4dd45df7e01e5087466e216",
      "parents": [
        "5fd033b507c3d8dc9268833fdad07d16d7ccfe56"
      ],
      "author": {
        "name": "Samuel A. Falvo II",
        "email": "sam.falvo@rackspace.com",
        "time": "Mon Jun 30 15:25:32 2014 -0700"
      },
      "committer": {
        "name": "Samuel A. Falvo II",
        "email": "sam.falvo@rackspace.com",
        "time": "Mon Jun 30 15:25:32 2014 -0700"
      },
      "message": "Add negative test to acceptance test\n"
    },
    {
      "commit": "62927459e0ae11cca5b35956256746e80b2d50b1",
      "tree": "1393ea0ee5fad290388505e8fc08bd4c1a85c267",
      "parents": [
        "a7f7047e9f65cee7efc3189c5a9fb86fda90a328"
      ],
      "author": {
        "name": "Samuel A. Falvo II",
        "email": "sam.falvo@rackspace.com",
        "time": "Mon Jun 30 15:18:28 2014 -0700"
      },
      "committer": {
        "name": "Samuel A. Falvo II",
        "email": "sam.falvo@rackspace.com",
        "time": "Mon Jun 30 15:18:28 2014 -0700"
      },
      "message": "Add negative test to 0.1.x acceptance test\n"
    },
    {
      "commit": "5fd033b507c3d8dc9268833fdad07d16d7ccfe56",
      "tree": "9225f75dedbf8650dd7e73266378f80260c510c5",
      "parents": [
        "02f272d469299f0d81d2572f7549a27dbb909c76",
        "e2bc7023f2f42c0ba015bd759186b681d703d9f2"
      ],
      "author": {
        "name": "Samuel A. Falvo II",
        "email": "kc5tja@arrl.net",
        "time": "Mon Jun 16 08:31:15 2014 -0700"
      },
      "committer": {
        "name": "Samuel A. Falvo II",
        "email": "kc5tja@arrl.net",
        "time": "Mon Jun 16 08:31:15 2014 -0700"
      },
      "message": "Merge pull request #165 from zinic/master\n\nInspect response Code on Authenticate "
    },
    {
      "commit": "e2bc7023f2f42c0ba015bd759186b681d703d9f2",
      "tree": "9225f75dedbf8650dd7e73266378f80260c510c5",
      "parents": [
        "02f272d469299f0d81d2572f7549a27dbb909c76"
      ],
      "author": {
        "name": "John Hopper",
        "email": "john.hopper@rackspace.com",
        "time": "Sat Jun 14 11:30:20 2014 -0500"
      },
      "committer": {
        "name": "John Hopper",
        "email": "john.hopper@rackspace.com",
        "time": "Sun Jun 15 01:45:22 2014 -0500"
      },
      "message": "Inspect response code on authenticate for correct handling of authentication failures and unexpected status code returns.\n"
    },
    {
      "commit": "02f272d469299f0d81d2572f7549a27dbb909c76",
      "tree": "1ce5389462db1a1b45efaa87e7dd0bdd8019fee2",
      "parents": [
        "90cf7c283ec3b9464eeada7cca44b7ce89eb406e",
        "15f7ac73a3f1844f13fdcac93f1f5f355616ebd8"
      ],
      "author": {
        "name": "Samuel A. Falvo II",
        "email": "kc5tja@arrl.net",
        "time": "Sat Jun 07 15:17:02 2014 -0700"
      },
      "committer": {
        "name": "Samuel A. Falvo II",
        "email": "kc5tja@arrl.net",
        "time": "Sat Jun 07 15:17:02 2014 -0700"
      },
      "message": "Merge pull request #164 from mnaser/patch-1\n\nUpdate api_fetch.go"
    },
    {
      "commit": "15f7ac73a3f1844f13fdcac93f1f5f355616ebd8",
      "tree": "1ce5389462db1a1b45efaa87e7dd0bdd8019fee2",
      "parents": [
        "90cf7c283ec3b9464eeada7cca44b7ce89eb406e"
      ],
      "author": {
        "name": "Mohammed Naser",
        "email": "mnaser@vexxhost.com",
        "time": "Sat Jun 07 18:00:16 2014 -0400"
      },
      "committer": {
        "name": "Mohammed Naser",
        "email": "mnaser@vexxhost.com",
        "time": "Sat Jun 07 18:00:16 2014 -0400"
      },
      "message": "Update api_fetch.go\n\nThe name by default in documentation is \"nova\".\r\n\r\nhttp://docs.openstack.org/icehouse/install-guide/install/apt/content/nova-controller.html\r\n\r\nThis will allow proper selection when using packer."
    },
    {
      "commit": "90cf7c283ec3b9464eeada7cca44b7ce89eb406e",
      "tree": "e551254af588b8db1fa04e16da5401c3a4e52ac3",
      "parents": [
        "2285a429874c1365ef6c6d3ceb08b1d428e26aca",
        "3927d84a39aa8f5bd540186bae457d1931bda736"
      ],
      "author": {
        "name": "Samuel A. Falvo II",
        "email": "kc5tja@arrl.net",
        "time": "Wed Jun 04 11:31:58 2014 -0700"
      },
      "committer": {
        "name": "Samuel A. Falvo II",
        "email": "kc5tja@arrl.net",
        "time": "Wed Jun 04 11:31:58 2014 -0700"
      },
      "message": "Merge pull request #163 from sivel/access-nil-pointer\n\nPrevent panic on incorrect auth"
    },
    {
      "commit": "3927d84a39aa8f5bd540186bae457d1931bda736",
      "tree": "e551254af588b8db1fa04e16da5401c3a4e52ac3",
      "parents": [
        "2285a429874c1365ef6c6d3ceb08b1d428e26aca"
      ],
      "author": {
        "name": "Matt Martz",
        "email": "matt@sivel.net",
        "time": "Wed Jun 04 10:30:35 2014 -0500"
      },
      "committer": {
        "name": "Matt Martz",
        "email": "matt@sivel.net",
        "time": "Wed Jun 04 10:32:43 2014 -0500"
      },
      "message": "Prevent panic on incorrect auth\n"
    },
    {
      "commit": "a7f7047e9f65cee7efc3189c5a9fb86fda90a328",
      "tree": "1363f12cf223cc860d3af7efa65e4186390c37c8",
      "parents": [
        "38c6ad0de422d940f5b4d5d5db211f0b646f2207",
        "bef727e64bc0fc68abbdc1749bb81fddba26d9e0"
      ],
      "author": {
        "name": "Samuel A. Falvo II",
        "email": "kc5tja@arrl.net",
        "time": "Fri May 30 11:15:28 2014 -0700"
      },
      "committer": {
        "name": "Samuel A. Falvo II",
        "email": "kc5tja@arrl.net",
        "time": "Fri May 30 11:15:28 2014 -0700"
      },
      "message": "Merge pull request #160 from jrperritt/cf-refactor\n\nCf refactor.\r\n\r\nI\u0027m making a command decision to merge this PR.  It\u0027s baked long enough, and people are wanting to use it.  The only issues were documentation related (if memory serves), which is not going to break the success of the project.  We\u0027ll just have to chalk it up to technical debt and move on."
    },
    {
      "commit": "bef727e64bc0fc68abbdc1749bb81fddba26d9e0",
      "tree": "c3ac96c714e5417730f70bf4ace75793a09164b9",
      "parents": [
        "eb57564524a08db36ffcd7e992fb2bd988d99815"
      ],
      "author": {
        "name": "Jon Perritt",
        "email": "jrperritt@gmail.com",
        "time": "Mon May 12 22:41:55 2014 -0500"
      },
      "committer": {
        "name": "Jon Perritt",
        "email": "jrperritt@gmail.com",
        "time": "Mon May 12 22:41:55 2014 -0500"
      },
      "message": "comment types; remove ok codes\n"
    },
    {
      "commit": "38c6ad0de422d940f5b4d5d5db211f0b646f2207",
      "tree": "6eb433fec88de4d834a5af39db11aa124f2201a2",
      "parents": [
        "808bb63f2c790bb48c6e63a8abfb467a75d8d552"
      ],
      "author": {
        "name": "Samuel A. Falvo II",
        "email": "sam.falvo@rackspace.com",
        "time": "Tue May 06 18:09:46 2014 -0700"
      },
      "committer": {
        "name": "Samuel A. Falvo II",
        "email": "sam.falvo@rackspace.com",
        "time": "Tue May 06 18:09:46 2014 -0700"
      },
      "message": "Complete Flavors sub-API.\n"
    },
    {
      "commit": "eb57564524a08db36ffcd7e992fb2bd988d99815",
      "tree": "16b99917c20a31a182c0f8aff6c36ed737abd47e",
      "parents": [
        "c19adea8edcf7fb6bb683961e5b66c3894958822"
      ],
      "author": {
        "name": "Jon Perritt",
        "email": "jrperritt@gmail.com",
        "time": "Thu Apr 24 15:16:31 2014 -0500"
      },
      "committer": {
        "name": "Jon Perritt",
        "email": "jrperritt@gmail.com",
        "time": "Thu Apr 24 15:16:31 2014 -0500"
      },
      "message": "change from \u0027Get\u0027 to \u0027Extract\u0027; decrease dependence on perigee\n"
    },
    {
      "commit": "c19adea8edcf7fb6bb683961e5b66c3894958822",
      "tree": "9a00098ecbc5db3f43f086f0c26de61774a3af0b",
      "parents": [
        "b6b1d020b419d991cb506242f756a2567165fdd4"
      ],
      "author": {
        "name": "Jon Perritt",
        "email": "jrperritt@gmail.com",
        "time": "Tue Apr 15 16:56:01 2014 -0500"
      },
      "committer": {
        "name": "Jon Perritt",
        "email": "jrperritt@gmail.com",
        "time": "Tue Apr 15 16:56:01 2014 -0500"
      },
      "message": "make object and container types generic\n"
    },
    {
      "commit": "b6b1d020b419d991cb506242f756a2567165fdd4",
      "tree": "b06f0e4296b8d024b923b2ea0350b18be8bb514c",
      "parents": [
        "30558646e058fd5cccc2d153d74fbb7e523eea1d"
      ],
      "author": {
        "name": "Jon Perritt",
        "email": "jrperritt@gmail.com",
        "time": "Mon Apr 14 21:50:45 2014 -0500"
      },
      "committer": {
        "name": "Jon Perritt",
        "email": "jrperritt@gmail.com",
        "time": "Mon Apr 14 21:50:45 2014 -0500"
      },
      "message": "add versioning\n"
    },
    {
      "commit": "30558646e058fd5cccc2d153d74fbb7e523eea1d",
      "tree": "59e0f02556365c1ceea4b0732e38c708c6d33862",
      "parents": [
        "49d7a64c3b286055b8d328a0fcec0cfaa8c886ec"
      ],
      "author": {
        "name": "Jon Perritt",
        "email": "jrperritt@gmail.com",
        "time": "Mon Apr 14 17:07:12 2014 -0500"
      },
      "committer": {
        "name": "Jon Perritt",
        "email": "jrperritt@gmail.com",
        "time": "Mon Apr 14 17:07:12 2014 -0500"
      },
      "message": "go fmt\n"
    },
    {
      "commit": "49d7a64c3b286055b8d328a0fcec0cfaa8c886ec",
      "tree": "bdbb6bac85fafc74bc26f2d423a609816044f353",
      "parents": [
        "816d2a0eac005471dc869b87ebbccc10a1e27781",
        "808bb63f2c790bb48c6e63a8abfb467a75d8d552"
      ],
      "author": {
        "name": "Jon Perritt",
        "email": "jrperritt@gmail.com",
        "time": "Mon Apr 14 16:38:47 2014 -0500"
      },
      "committer": {
        "name": "Jon Perritt",
        "email": "jrperritt@gmail.com",
        "time": "Mon Apr 14 16:59:15 2014 -0500"
      },
      "message": "merging in changes from v0.2.0 branch\n"
    },
    {
      "commit": "2285a429874c1365ef6c6d3ceb08b1d428e26aca",
      "tree": "4887dbec708d2c8dc95fd180b4a0a385f4c83fb7",
      "parents": [
        "d4fc90f9556ea640e44ed334917c6815c616f1b7",
        "1800d8f5fdced0375540eb2d68e365c2b81705e2"
      ],
      "author": {
        "name": "Samuel A. Falvo II",
        "email": "kc5tja@arrl.net",
        "time": "Sun Apr 06 16:21:52 2014 -0700"
      },
      "committer": {
        "name": "Samuel A. Falvo II",
        "email": "kc5tja@arrl.net",
        "time": "Sun Apr 06 16:21:52 2014 -0700"
      },
      "message": "Merge pull request #159 from polvi/config_drive\n\nfeat(config_drive): add config drive support to the 0.1.0 API."
    },
    {
      "commit": "1800d8f5fdced0375540eb2d68e365c2b81705e2",
      "tree": "4887dbec708d2c8dc95fd180b4a0a385f4c83fb7",
      "parents": [
        "d4fc90f9556ea640e44ed334917c6815c616f1b7"
      ],
      "author": {
        "name": "Alex Polvi",
        "email": "alex@polvi.net",
        "time": "Sat Apr 05 22:21:18 2014 -0700"
      },
      "committer": {
        "name": "Alex Polvi",
        "email": "alex@polvi.net",
        "time": "Sat Apr 05 22:21:18 2014 -0700"
      },
      "message": "feat(config_drive): add config drive support\n"
    }
  ],
  "next": "816d2a0eac005471dc869b87ebbccc10a1e27781"
}
