{"action":"created","comment":{"url":"https://api.github.com/repos/puppetlabs/puppetdb/pulls/comments/55216415","id":55216415,"diff_hunk":"@@ -0,0 +1,403 @@\n+---\n+title: \"PuppetDB 3.2: PQL query tutorial\"\n+layout: default\n+canonical: \"/puppetdb/latest/api/query/tutorial-pql.html\"\n+---\n+\n+[lists]: ./v4/pql.html#lists\n+[curl]: ./curl.html\n+[config_jetty]: ../../configure.html#jetty-http-settings\n+[resources]: ./v4/resources.html\n+[pql]: ./v4/pql.html\n+\n+> **Experimental Feature**: PQL is experimental, and it may be altered or removed in\n+> a future release.\n+\n+This page walks through the construction of several types of PuppetDB\n+PQL queries. We use the **version 4 API** in all examples.\n+\n+Consult the [PQL reference guide][pql] for more information about the language.\n+\n+## How to query\n+\n+Queries are performed by issuing an HTTP GET or POST request to an endpoint URL\n+and specifying a `query` URL parameter (in the GET case) or a JSON-valued\n+payload in the POST case, which contains the query to execute. Results are\n+always returned in `application/json` form.\n+\n+Queries are usually issued from code, but you can easily issue them from the command line by using curl.\n+\n+### Querying with curl\n+\n+[See the curl tips page for more information about constructing curl commands.][curl]\n+\n+**Without SSL:**\n+\n+    curl -X GET http://puppetdb.example.com:8080/pdb/query/v4 \\\n+      --data-urlencode 'query=<PQL query>'\n+\n+    curl -X POST http://puppetdb.example.com:8080/pdb/query/v4 \\\n+      -H 'Content-Type:application/json'\n+      -d '{\"query\":\"<PQL query>\"}'\n+\n+This requires that PuppetDB be [configured to accept non-SSL connections][config_jetty]. By default, it will only accept unencrypted traffic from `localhost`.\n+\n+**With SSL:**\n+\n+    curl -X GET https://puppetdb.example.com:8081/pdb/query/v4 \\\n+      --tlsv1 \\\n+      --cacert /etc/puppetlabs/puppet/ssl/certs/ca.pem \\\n+      --cert /etc/puppetlabs/puppet/ssl/certs/thisnode.pem \\\n+      --key /etc/puppetlabs/puppet/ssl/private_keys/thisnode.pem \\\n+      --data-urlencode 'query=<PQL query>'\n+\n+This requires that you specify a certificate (issued by the same CA PuppetDB trusts), a private key, and a CA certificate.\n+\n+## Resources Walkthrough\n+\n+### Our first query\n+\n+Let's start by taking a look at a simple resource query.\n+\n+    resources {}\n+\n+Executing that query will return all resources for all nodes, however it is rare\n+that you will want all this information. In this case, we use filters to reduce the\n+results.\n+\n+Now suppose we want to find the user \"nick\" on every node. We can use this query:\n+\n+    resources { type = \"User\" and title = \"nick\" }\n+\n+This query has two `\"=\"` clauses, both of which must be true.\n+\n+The `\"=\"` operator follows a specific structure:\n+\n+`<attribute to compare> = <value>`\n+\n+In this case, the attributes are \"type\" and \"title\", and the values are \"User\"\n+and \"nick\".\n+\n+The `\"and\"` operator also has a well-defined structure:\n+\n+`<query clause> and <query clause>`\n+\n+The query clauses can be any legal query (including another `\"and\"`). At least\n+one clause must be specified, and all the clauses must be true for the\n+`\"and\"` clause to be true. An `\"or\"` operator is also available, which looks\n+just like the `\"and\"` operator, except that, as you'd expect, it's true if\n+*any* specified clause is true.\n+\n+If we execute this query, we get results that look something like this:\n+\n+    [{\n+      \"parameters\" : {\n+        \"comment\" : \"Nick Lewis\",\n+        \"uid\" : \"1115\",\n+        \"shell\" : \"/bin/bash\",\n+        \"managehome\" : false,\n+        \"gid\" : \"allstaff\",\n+        \"home\" : \"/home/nick\",\n+        \"groups\" : \"developers\",\n+        \"ensure\" : \"present\"\n+      },\n+      \"line\" : 111,\n+      \"file\" : \"/etc/puppetlabs/code/environments/production/manifests/user.pp\",\n+      \"exported\" : false,\n+      \"tags\" : [ \"firewall\", \"default\", \"node\", \"nick\", \"role::base\", \"users\", \"virtual\", \"user\", \"account\", \"base\", \"role::firewall::office\", \"role\", \"role::firewall\", \"class\", \"account::user\", \"office\", \"virtual::users\", \"allstaff\" ],\n+      \"title\" : \"nick\",\n+      \"type\" : \"User\",\n+      \"resource\" : \"0ae7e1230e4d540caa451d0ade2424f316bfbf39\",\n+      \"certname\" : \"foo.example.com\"\n+    }]\n+\n+Our results are an array of \"resources\", where each resource is an object with\n+a particular set of keys.\n+\n+* `parameters`: this field is itself an object, containing all the parameters and values of the resource\n+* `line`: the line the resource was declared on\n+* `file`: the file the resource was specified in\n+* `exported`: true if the resource was exported by this node, or false otherwise\n+* `tags`: all the tags on the resource\n+* `title`: the resource title\n+* `type`: the resource type\n+* `resources`: this is an internal identifier for the resource used by PuppetDB\n+* `certname`: the node that the resource came from\n+\n+There will be an entry in the list for every resource. A resource is specific\n+to a single node, so if the resource is on 100 nodes, there will be 100 copies\n+of the resource (each with at least a different certname field).\n+\n+### Excluding results\n+\n+We know this instance of the user \"nick\" is defined on line 111 of\n+`/etc/puppetlabs/code/environments/production/manifests/user.pp`. What if\n+we want to check whether or not we define the same resource somewhere else?\n+After all, if we're repeating ourselves, something may be wrong! Fortunately,\n+there's an operator to help us:\n+\n+    resources {\n+      type = \"User\" and\n+      title = \"nick\" and\n+      !(file = \"/etc/puppetlabs/code/environments/production/manifests/user.pp\" and line = 111)\n+    }\n+\n+The `!` operator wraps another clause, and returns results for which the","path":"documentation/api/query/tutorial-pql.markdown","position":145,"original_position":145,"commit_id":"000558e31e5a152b0518afd4f0599d69079e8796","original_commit_id":"82c1762f20f413f88c0806d0280dffe5ebdd866e","user":{"login":"kbarber","id":80595,"avatar_url":"https://avatars.githubusercontent.com/u/80595?v=3","gravatar_id":"","url":"https://api.github.com/users/kbarber","html_url":"https://github.com/kbarber","followers_url":"https://api.github.com/users/kbarber/followers","following_url":"https://api.github.com/users/kbarber/following{/other_user}","gists_url":"https://api.github.com/users/kbarber/gists{/gist_id}","starred_url":"https://api.github.com/users/kbarber/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kbarber/subscriptions","organizations_url":"https://api.github.com/users/kbarber/orgs","repos_url":"https://api.github.com/users/kbarber/repos","events_url":"https://api.github.com/users/kbarber/events{/privacy}","received_events_url":"https://api.github.com/users/kbarber/received_events","type":"User","site_admin":false},"body":"I've got backtick crazy now, just for you :-)","created_at":"2016-03-07T15:13:58Z","updated_at":"2016-03-07T15:13:58Z","html_url":"https://github.com/puppetlabs/puppetdb/pull/1879#discussion_r55216415","pull_request_url":"https://api.github.com/repos/puppetlabs/puppetdb/pulls/1879","_links":{"self":{"href":"https://api.github.com/repos/puppetlabs/puppetdb/pulls/comments/55216415"},"html":{"href":"https://github.com/puppetlabs/puppetdb/pull/1879#discussion_r55216415"},"pull_request":{"href":"https://api.github.com/repos/puppetlabs/puppetdb/pulls/1879"}}},"pull_request":{"url":"https://api.github.com/repos/puppetlabs/puppetdb/pulls/1879","id":61426056,"html_url":"https://github.com/puppetlabs/puppetdb/pull/1879","diff_url":"https://github.com/puppetlabs/puppetdb/pull/1879.diff","patch_url":"https://github.com/puppetlabs/puppetdb/pull/1879.patch","issue_url":"https://api.github.com/repos/puppetlabs/puppetdb/issues/1879","number":1879,"state":"open","locked":false,"title":"(PDB-2366) PQL tutorial documentation","user":{"login":"kbarber","id":80595,"avatar_url":"https://avatars.githubusercontent.com/u/80595?v=3","gravatar_id":"","url":"https://api.github.com/users/kbarber","html_url":"https://github.com/kbarber","followers_url":"https://api.github.com/users/kbarber/followers","following_url":"https://api.github.com/users/kbarber/following{/other_user}","gists_url":"https://api.github.com/users/kbarber/gists{/gist_id}","starred_url":"https://api.github.com/users/kbarber/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kbarber/subscriptions","organizations_url":"https://api.github.com/users/kbarber/orgs","repos_url":"https://api.github.com/users/kbarber/repos","events_url":"https://api.github.com/users/kbarber/events{/privacy}","received_events_url":"https://api.github.com/users/kbarber/received_events","type":"User","site_admin":false},"body":"This commit defines a new PQL specific tutorial.\r\n\r\nSigned-off-by: Ken Barber <ken@bob.sh>","created_at":"2016-03-02T16:25:15Z","updated_at":"2016-03-07T15:13:58Z","closed_at":null,"merged_at":null,"merge_commit_sha":"9fd48fccace7ec5a561d846aedd752f1cd232d2b","assignee":null,"milestone":{"url":"https://api.github.com/repos/puppetlabs/puppetdb/milestones/11","html_url":"https://github.com/puppetlabs/puppetdb/milestones/4.0.0%20(master)","labels_url":"https://api.github.com/repos/puppetlabs/puppetdb/milestones/11/labels","id":1341713,"number":11,"title":"4.0.0 (master)","description":"","creator":{"login":"kbarber","id":80595,"avatar_url":"https://avatars.githubusercontent.com/u/80595?v=3","gravatar_id":"","url":"https://api.github.com/users/kbarber","html_url":"https://github.com/kbarber","followers_url":"https://api.github.com/users/kbarber/followers","following_url":"https://api.github.com/users/kbarber/following{/other_user}","gists_url":"https://api.github.com/users/kbarber/gists{/gist_id}","starred_url":"https://api.github.com/users/kbarber/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kbarber/subscriptions","organizations_url":"https://api.github.com/users/kbarber/orgs","repos_url":"https://api.github.com/users/kbarber/repos","events_url":"https://api.github.com/users/kbarber/events{/privacy}","received_events_url":"https://api.github.com/users/kbarber/received_events","type":"User","site_admin":false},"open_issues":4,"closed_issues":133,"state":"open","created_at":"2015-10-07T01:07:44Z","updated_at":"2016-03-02T16:34:33Z","due_on":null,"closed_at":null},"commits_url":"https://api.github.com/repos/puppetlabs/puppetdb/pulls/1879/commits","review_comments_url":"https://api.github.com/repos/puppetlabs/puppetdb/pulls/1879/comments","review_comment_url":"https://api.github.com/repos/puppetlabs/puppetdb/pulls/comments{/number}","comments_url":"https://api.github.com/repos/puppetlabs/puppetdb/issues/1879/comments","statuses_url":"https://api.github.com/repos/puppetlabs/puppetdb/statuses/000558e31e5a152b0518afd4f0599d69079e8796","head":{"label":"kbarber:ticket/master/pdb-2366-pql-tutorial","ref":"ticket/master/pdb-2366-pql-tutorial","sha":"000558e31e5a152b0518afd4f0599d69079e8796","user":{"login":"kbarber","id":80595,"avatar_url":"https://avatars.githubusercontent.com/u/80595?v=3","gravatar_id":"","url":"https://api.github.com/users/kbarber","html_url":"https://github.com/kbarber","followers_url":"https://api.github.com/users/kbarber/followers","following_url":"https://api.github.com/users/kbarber/following{/other_user}","gists_url":"https://api.github.com/users/kbarber/gists{/gist_id}","starred_url":"https://api.github.com/users/kbarber/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kbarber/subscriptions","organizations_url":"https://api.github.com/users/kbarber/orgs","repos_url":"https://api.github.com/users/kbarber/repos","events_url":"https://api.github.com/users/kbarber/events{/privacy}","received_events_url":"https://api.github.com/users/kbarber/received_events","type":"User","site_admin":false},"repo":{"id":4444970,"name":"puppetdb","full_name":"kbarber/puppetdb","owner":{"login":"kbarber","id":80595,"avatar_url":"https://avatars.githubusercontent.com/u/80595?v=3","gravatar_id":"","url":"https://api.github.com/users/kbarber","html_url":"https://github.com/kbarber","followers_url":"https://api.github.com/users/kbarber/followers","following_url":"https://api.github.com/users/kbarber/following{/other_user}","gists_url":"https://api.github.com/users/kbarber/gists{/gist_id}","starred_url":"https://api.github.com/users/kbarber/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kbarber/subscriptions","organizations_url":"https://api.github.com/users/kbarber/orgs","repos_url":"https://api.github.com/users/kbarber/repos","events_url":"https://api.github.com/users/kbarber/events{/privacy}","received_events_url":"https://api.github.com/users/kbarber/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/kbarber/puppetdb","description":"Centralized Puppet Storage","fork":true,"url":"https://api.github.com/repos/kbarber/puppetdb","forks_url":"https://api.github.com/repos/kbarber/puppetdb/forks","keys_url":"https://api.github.com/repos/kbarber/puppetdb/keys{/key_id}","collaborators_url":"https://api.github.com/repos/kbarber/puppetdb/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/kbarber/puppetdb/teams","hooks_url":"https://api.github.com/repos/kbarber/puppetdb/hooks","issue_events_url":"https://api.github.com/repos/kbarber/puppetdb/issues/events{/number}","events_url":"https://api.github.com/repos/kbarber/puppetdb/events","assignees_url":"https://api.github.com/repos/kbarber/puppetdb/assignees{/user}","branches_url":"https://api.github.com/repos/kbarber/puppetdb/branches{/branch}","tags_url":"https://api.github.com/repos/kbarber/puppetdb/tags","blobs_url":"https://api.github.com/repos/kbarber/puppetdb/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/kbarber/puppetdb/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/kbarber/puppetdb/git/refs{/sha}","trees_url":"https://api.github.com/repos/kbarber/puppetdb/git/trees{/sha}","statuses_url":"https://api.github.com/repos/kbarber/puppetdb/statuses/{sha}","languages_url":"https://api.github.com/repos/kbarber/puppetdb/languages","stargazers_url":"https://api.github.com/repos/kbarber/puppetdb/stargazers","contributors_url":"https://api.github.com/repos/kbarber/puppetdb/contributors","subscribers_url":"https://api.github.com/repos/kbarber/puppetdb/subscribers","subscription_url":"https://api.github.com/repos/kbarber/puppetdb/subscription","commits_url":"https://api.github.com/repos/kbarber/puppetdb/commits{/sha}","git_commits_url":"https://api.github.com/repos/kbarber/puppetdb/git/commits{/sha}","comments_url":"https://api.github.com/repos/kbarber/puppetdb/comments{/number}","issue_comment_url":"https://api.github.com/repos/kbarber/puppetdb/issues/comments{/number}","contents_url":"https://api.github.com/repos/kbarber/puppetdb/contents/{+path}","compare_url":"https://api.github.com/repos/kbarber/puppetdb/compare/{base}...{head}","merges_url":"https://api.github.com/repos/kbarber/puppetdb/merges","archive_url":"https://api.github.com/repos/kbarber/puppetdb/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/kbarber/puppetdb/downloads","issues_url":"https://api.github.com/repos/kbarber/puppetdb/issues{/number}","pulls_url":"https://api.github.com/repos/kbarber/puppetdb/pulls{/number}","milestones_url":"https://api.github.com/repos/kbarber/puppetdb/milestones{/number}","notifications_url":"https://api.github.com/repos/kbarber/puppetdb/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/kbarber/puppetdb/labels{/name}","releases_url":"https://api.github.com/repos/kbarber/puppetdb/releases{/id}","deployments_url":"https://api.github.com/repos/kbarber/puppetdb/deployments","created_at":"2012-05-25T12:17:05Z","updated_at":"2015-05-05T11:09:30Z","pushed_at":"2016-03-07T15:06:53Z","git_url":"git://github.com/kbarber/puppetdb.git","ssh_url":"git@github.com:kbarber/puppetdb.git","clone_url":"https://github.com/kbarber/puppetdb.git","svn_url":"https://github.com/kbarber/puppetdb","homepage":"http://docs.puppetlabs.com/puppetdb","size":16287,"stargazers_count":1,"watchers_count":1,"language":"Clojure","has_issues":false,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":1,"default_branch":"master"}},"base":{"label":"puppetlabs:master","ref":"master","sha":"dbc5f62542e86901ec41da6bbdb4d478af95e303","user":{"login":"puppetlabs","id":234268,"avatar_url":"https://avatars.githubusercontent.com/u/234268?v=3","gravatar_id":"","url":"https://api.github.com/users/puppetlabs","html_url":"https://github.com/puppetlabs","followers_url":"https://api.github.com/users/puppetlabs/followers","following_url":"https://api.github.com/users/puppetlabs/following{/other_user}","gists_url":"https://api.github.com/users/puppetlabs/gists{/gist_id}","starred_url":"https://api.github.com/users/puppetlabs/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/puppetlabs/subscriptions","organizations_url":"https://api.github.com/users/puppetlabs/orgs","repos_url":"https://api.github.com/users/puppetlabs/repos","events_url":"https://api.github.com/users/puppetlabs/events{/privacy}","received_events_url":"https://api.github.com/users/puppetlabs/received_events","type":"Organization","site_admin":false},"repo":{"id":2193032,"name":"puppetdb","full_name":"puppetlabs/puppetdb","owner":{"login":"puppetlabs","id":234268,"avatar_url":"https://avatars.githubusercontent.com/u/234268?v=3","gravatar_id":"","url":"https://api.github.com/users/puppetlabs","html_url":"https://github.com/puppetlabs","followers_url":"https://api.github.com/users/puppetlabs/followers","following_url":"https://api.github.com/users/puppetlabs/following{/other_user}","gists_url":"https://api.github.com/users/puppetlabs/gists{/gist_id}","starred_url":"https://api.github.com/users/puppetlabs/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/puppetlabs/subscriptions","organizations_url":"https://api.github.com/users/puppetlabs/orgs","repos_url":"https://api.github.com/users/puppetlabs/repos","events_url":"https://api.github.com/users/puppetlabs/events{/privacy}","received_events_url":"https://api.github.com/users/puppetlabs/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/puppetlabs/puppetdb","description":"Centralized Puppet Storage","fork":false,"url":"https://api.github.com/repos/puppetlabs/puppetdb","forks_url":"https://api.github.com/repos/puppetlabs/puppetdb/forks","keys_url":"https://api.github.com/repos/puppetlabs/puppetdb/keys{/key_id}","collaborators_url":"https://api.github.com/repos/puppetlabs/puppetdb/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/puppetlabs/puppetdb/teams","hooks_url":"https://api.github.com/repos/puppetlabs/puppetdb/hooks","issue_events_url":"https://api.github.com/repos/puppetlabs/puppetdb/issues/events{/number}","events_url":"https://api.github.com/repos/puppetlabs/puppetdb/events","assignees_url":"https://api.github.com/repos/puppetlabs/puppetdb/assignees{/user}","branches_url":"https://api.github.com/repos/puppetlabs/puppetdb/branches{/branch}","tags_url":"https://api.github.com/repos/puppetlabs/puppetdb/tags","blobs_url":"https://api.github.com/repos/puppetlabs/puppetdb/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/puppetlabs/puppetdb/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/puppetlabs/puppetdb/git/refs{/sha}","trees_url":"https://api.github.com/repos/puppetlabs/puppetdb/git/trees{/sha}","statuses_url":"https://api.github.com/repos/puppetlabs/puppetdb/statuses/{sha}","languages_url":"https://api.github.com/repos/puppetlabs/puppetdb/languages","stargazers_url":"https://api.github.com/repos/puppetlabs/puppetdb/stargazers","contributors_url":"https://api.github.com/repos/puppetlabs/puppetdb/contributors","subscribers_url":"https://api.github.com/repos/puppetlabs/puppetdb/subscribers","subscription_url":"https://api.github.com/repos/puppetlabs/puppetdb/subscription","commits_url":"https://api.github.com/repos/puppetlabs/puppetdb/commits{/sha}","git_commits_url":"https://api.github.com/repos/puppetlabs/puppetdb/git/commits{/sha}","comments_url":"https://api.github.com/repos/puppetlabs/puppetdb/comments{/number}","issue_comment_url":"https://api.github.com/repos/puppetlabs/puppetdb/issues/comments{/number}","contents_url":"https://api.github.com/repos/puppetlabs/puppetdb/contents/{+path}","compare_url":"https://api.github.com/repos/puppetlabs/puppetdb/compare/{base}...{head}","merges_url":"https://api.github.com/repos/puppetlabs/puppetdb/merges","archive_url":"https://api.github.com/repos/puppetlabs/puppetdb/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/puppetlabs/puppetdb/downloads","issues_url":"https://api.github.com/repos/puppetlabs/puppetdb/issues{/number}","pulls_url":"https://api.github.com/repos/puppetlabs/puppetdb/pulls{/number}","milestones_url":"https://api.github.com/repos/puppetlabs/puppetdb/milestones{/number}","notifications_url":"https://api.github.com/repos/puppetlabs/puppetdb/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/puppetlabs/puppetdb/labels{/name}","releases_url":"https://api.github.com/repos/puppetlabs/puppetdb/releases{/id}","deployments_url":"https://api.github.com/repos/puppetlabs/puppetdb/deployments","created_at":"2011-08-11T18:54:46Z","updated_at":"2016-02-25T21:04:33Z","pushed_at":"2016-03-07T15:06:54Z","git_url":"git://github.com/puppetlabs/puppetdb.git","ssh_url":"git@github.com:puppetlabs/puppetdb.git","clone_url":"https://github.com/puppetlabs/puppetdb.git","svn_url":"https://github.com/puppetlabs/puppetdb","homepage":"http://docs.puppetlabs.com/puppetdb","size":19564,"stargazers_count":184,"watchers_count":184,"language":"Clojure","has_issues":false,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":146,"mirror_url":null,"open_issues_count":5,"forks":146,"open_issues":5,"watchers":184,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/puppetlabs/puppetdb/pulls/1879"},"html":{"href":"https://github.com/puppetlabs/puppetdb/pull/1879"},"issue":{"href":"https://api.github.com/repos/puppetlabs/puppetdb/issues/1879"},"comments":{"href":"https://api.github.com/repos/puppetlabs/puppetdb/issues/1879/comments"},"review_comments":{"href":"https://api.github.com/repos/puppetlabs/puppetdb/pulls/1879/comments"},"review_comment":{"href":"https://api.github.com/repos/puppetlabs/puppetdb/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/puppetlabs/puppetdb/pulls/1879/commits"},"statuses":{"href":"https://api.github.com/repos/puppetlabs/puppetdb/statuses/000558e31e5a152b0518afd4f0599d69079e8796"}}}}