{"action":"created","comment":{"url":"https://api.github.com/repos/firstandthird/docker-compose-to-api/pulls/comments/171350222","pull_request_review_id":100178325,"id":171350222,"diff_hunk":"@@ -0,0 +1,195 @@\n+'use strict';\n+const yaml = require('js-yaml');\n+\n+/**\n+ * This library is responsible for generating an engine spec compatible with Docker Engine v1.36\n+ * from a docker-compose formatted YAML file (version 3).\n+ */\n+\n+function isNumeric(value) {\n+  return !isNaN(parseFloat(value)) && isFinite(value);\n+}\n+\n+function dockerComposeToApi(input) {\n+  if (typeof input === \"string\") {\n+    input = yaml.safeLoad(input);\n+  }\n+\n+  const name = Object.keys(input)[0];\n+  let containerName = name;\n+  if ('container_name' in input[name]) {\n+    containerName = input[name]['container_name'];\n+  }\n+\n+  let spec = {\n+    Name: containerName,\n+    TaskTemplate: {\n+      ContainerSpec: {\n+        Image: input[name]['image']\n+      }\n+    }\n+  };\n+\n+  if ('command' in input[name]) {\n+    if (Array.isArray(input[name]['command'])) {\n+      spec.TaskTemplate.ContainerSpec['Command'] = input[name]['command'];\n+    } else {\n+      spec.TaskTemplate.ContainerSpec['Command'] = [ input[name]['command'] ];\n+    }\n+  }\n+\n+  if ('environment' in input[name]) {\n+    spec.TaskTemplate.ContainerSpec['Env'] = [];\n+\n+    // Convert { test: 1 } to 'test=1' format.\n+    for (var key in input[name]['environment']) {\n+      spec.TaskTemplate.ContainerSpec['Env'].push(key + \"=\" + input[name]['environment'][key]);\n+    }\n+  }\n+\n+  if ('labels' in input[name]) {\n+    spec.TaskTemplate.ContainerSpec['Labels'] = {};\n+    // Labels can come in both array and dictionary format.\n+    if (isNumeric(Object.keys(input[name]['labels'])[0])) {\n+      // Array format\n+      for (var i = 0; i < input[name]['labels'].length; i++) {\n+        const parts = input[name]['labels'][i].split(\"=\");\n+        if (parts.length == 2) {\n+          spec.TaskTemplate.ContainerSpec['Labels'][parts[0]] = parts[1];\n+        }\n+      }\n+    } else {\n+      // Dictionary format\n+      spec.TaskTemplate.ContainerSpec['Labels'] = input[name]['labels'];\n+    }\n+  }\n+\n+  if ('configs' in input[name]) {\n+    spec.TaskTemplate.ContainerSpec['Configs'] = [];\n+    for (var key in input[name]['configs']) {\n+      if ('file' in input[name]['configs'][key]) {\n+        spec.TaskTemplate.ContainerSpec['Configs'].push({\n+          ConfigID: key,\n+          ConfigName: key,\n+          File: input[name]['configs'][key].file\n+        });\n+      }\n+    }\n+  }\n+\n+  if ('secrets' in input[name]) {\n+    spec.TaskTemplate.ContainerSpec['Secrets'] = [];\n+    for (var key in input[name]['secrets']) {\n+      if ('file' in input[name]['secrets'][key]) {\n+        spec.TaskTemplate.ContainerSpec['Secrets'].push({\n+          SecretID: key,\n+          SecretName: key,\n+          File: input[name]['secrets'][key].file\n+        });\n+      }\n+    }\n+  }\n+\n+  if ('volumes' in input[name] && input[name]['volumes'].length > 0) {\n+    spec.TaskTemplate.ContainerSpec['Mounts'] = [];\n+    for (var i = 0; i < input[name]['volumes'].length; i++) {\n+      if (typeof input[name]['volumes'][i] === 'string') {\n+        // Short syntax\n+        var sourcePath = input[name]['volumes'][i].split(':');\n+        var volume = {\n+          Type: 'volume',\n+          Source: sourcePath[0]\n+        };\n+        if (sourcePath.length > 2) {\n+          if (sourcePath[2] == 'ro') {\n+            volume['ReadOnly'] = true;\n+          }\n+        }\n+        if (sourcePath.length > 1) {\n+          volume['Target'] = sourcePath[1];\n+        }\n+        spec.TaskTemplate.ContainerSpec['Mounts'].push(volume);\n+      } else {\n+        // Long syntax\n+        var volume = {\n+          Type: input[name]['volumes'][i]['type']\n+        };\n+        if ('source' in input[name]['volumes'][i]) volume['Source'] = input[name]['volumes'][i]['source'];\n+        if ('target' in input[name]['volumes'][i]) volume['Target'] = input[name]['volumes'][i]['target'];\n+        if ('read_only' in input[name]['volumes'][i]) volume['ReadOnly'] = input[name]['volumes'][i]['read_only'];\n+        if ('bind' in input[name]['volumes'][i] && 'propagation' in input[name]['volumes'][i]['bind']) {\n+          volume['BindOptions'] = {\n+            Propagation: input[name]['volumes'][i]['bind']['propagation']\n+          };\n+        }\n+        if ('volume' in input[name]['volumes'][i] && 'nocopy' in input[name]['volumes'][i]['volume']) {\n+          volume['VolumeOptions'] = {\n+            NoCopy: input[name]['volumes'][i]['volume']['nocopy']\n+          };\n+        }\n+        if ('tmpfs' in input[name]['volumes'][i] && 'size' in input[name]['volumes'][i]['tmpfs']) {\n+          volume['TmpfsOptions'] = {\n+            SizeBytes: input[name]['volumes'][i]['tmpfs']['size']\n+          };\n+        }\n+        spec.TaskTemplate.ContainerSpec['Mounts'].push(volume);\n+      }\n+    }\n+  }\n+\n+  if ('ports' in input[name] && input[name]['ports'].length > 0) {\n+    spec.TaskTemplate.EndpointSpec = spec.TaskTemplate.EndpointSpec || {};\n+    spec.TaskTemplate.EndpointSpec['Ports'] = [];\n+    for (var i = 0; i < input[name]['ports'].length; i++) {\n+      if (typeof input[name]['ports'][i] === 'string' || isNumeric(input[name]['ports'][i])) {\n+        // Short syntax\n+        var portSplit = input[name]['ports'][i].toString().split(':'); // 8080:80 -> [8080, 80]\n+        var protocolSplit = input[name]['ports'][i].toString().split('/'); // 8080:80/udp -> [8080:80, udp]\n+        var port = {\n+          Protocol: 'tcp',\n+        };\n+        // Check to see if the port is in HOST:CONTAINER format or CONTAINER format.\n+        if (portSplit.length > 1) {\n+          port['PublishedPort'] = portSplit[0];\n+          port['TargetPort'] = portSplit[1];\n+        } else {\n+          port['TargetPort'] = portSplit[0];\n+        }\n+        // Check to see if a protocol was provided.\n+        if (protocolSplit.length > 1) {\n+          port['Protocol'] = protocolSplit[1];\n+          port['TargetPort'] = port[\"TargetPort\"].split(\"/\")[0];\n+        }\n+        spec.TaskTemplate.EndpointSpec['Ports'].push(port);\n+      } else {\n+        // Long syntax\n+        var port = {};\n+        if ('protocol' in input[name]['ports'][i]) port['Protocol'] = input[name]['ports'][i]['protocol'];\n+        if ('target' in input[name]['ports'][i]) port['TargetPort'] = input[name]['ports'][i]['target'];\n+        if ('published' in input[name]['ports'][i]) port['PublishedPort'] = input[name]['ports'][i]['published'];\n+        if ('mode' in input[name]['ports'][i]) port['PublishMode'] = input[name]['ports'][i]['mode'];\n+\n+        spec.TaskTemplate.EndpointSpec['Ports'].push(port);\n+      }\n+    }\n+  }\n+\n+  if ('restart' in input[name]) {\n+    var policy = \"none\";\n+    switch (input[name]['restart']) {\n+      case 'on-failure':\n+        policy = 'on-failure';\n+        break;\n+      case 'always':\n+        policy = 'any';\n+        break;\n+      default:\n+        policy = \"none\";\n+    }\n+    spec.TaskTemplate['RestartPolicy'] = policy;\n+  }\n+","path":"lib/index.js","position":191,"original_position":191,"commit_id":"bd00d1c2778c934428f5c5ce1ac1efba13e99ad0","original_commit_id":"bd00d1c2778c934428f5c5ce1ac1efba13e99ad0","user":{"login":"ecwillis","id":492500,"avatar_url":"https://avatars0.githubusercontent.com/u/492500?v=4","gravatar_id":"","url":"https://api.github.com/users/ecwillis","html_url":"https://github.com/ecwillis","followers_url":"https://api.github.com/users/ecwillis/followers","following_url":"https://api.github.com/users/ecwillis/following{/other_user}","gists_url":"https://api.github.com/users/ecwillis/gists{/gist_id}","starred_url":"https://api.github.com/users/ecwillis/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ecwillis/subscriptions","organizations_url":"https://api.github.com/users/ecwillis/orgs","repos_url":"https://api.github.com/users/ecwillis/repos","events_url":"https://api.github.com/users/ecwillis/events{/privacy}","received_events_url":"https://api.github.com/users/ecwillis/received_events","type":"User","site_admin":false},"body":"Seems to be missing `networks`.","created_at":"2018-02-28T19:01:24Z","updated_at":"2018-02-28T19:05:24Z","html_url":"https://github.com/firstandthird/docker-compose-to-api/pull/1#discussion_r171350222","pull_request_url":"https://api.github.com/repos/firstandthird/docker-compose-to-api/pulls/1","author_association":"NONE","_links":{"self":{"href":"https://api.github.com/repos/firstandthird/docker-compose-to-api/pulls/comments/171350222"},"html":{"href":"https://github.com/firstandthird/docker-compose-to-api/pull/1#discussion_r171350222"},"pull_request":{"href":"https://api.github.com/repos/firstandthird/docker-compose-to-api/pulls/1"}}},"pull_request":{"url":"https://api.github.com/repos/firstandthird/docker-compose-to-api/pulls/1","id":171822137,"html_url":"https://github.com/firstandthird/docker-compose-to-api/pull/1","diff_url":"https://github.com/firstandthird/docker-compose-to-api/pull/1.diff","patch_url":"https://github.com/firstandthird/docker-compose-to-api/pull/1.patch","issue_url":"https://api.github.com/repos/firstandthird/docker-compose-to-api/issues/1","number":1,"state":"open","locked":false,"title":"Initial Module Buildout","user":{"login":"dannyvink","id":2053980,"avatar_url":"https://avatars0.githubusercontent.com/u/2053980?v=4","gravatar_id":"","url":"https://api.github.com/users/dannyvink","html_url":"https://github.com/dannyvink","followers_url":"https://api.github.com/users/dannyvink/followers","following_url":"https://api.github.com/users/dannyvink/following{/other_user}","gists_url":"https://api.github.com/users/dannyvink/gists{/gist_id}","starred_url":"https://api.github.com/users/dannyvink/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dannyvink/subscriptions","organizations_url":"https://api.github.com/users/dannyvink/orgs","repos_url":"https://api.github.com/users/dannyvink/repos","events_url":"https://api.github.com/users/dannyvink/events{/privacy}","received_events_url":"https://api.github.com/users/dannyvink/received_events","type":"User","site_admin":false},"body":"This exposes the function `dockerComposeToApi(yaml|object)` that returns an object that is properly formatted for triggering `createService`","created_at":"2018-02-28T00:12:58Z","updated_at":"2018-02-28T19:05:24Z","closed_at":null,"merged_at":null,"merge_commit_sha":"59f8abd85dbc21ab8510a5761b5cc7e37c0ec6cd","assignee":{"login":"jgallen23","id":27936,"avatar_url":"https://avatars0.githubusercontent.com/u/27936?v=4","gravatar_id":"","url":"https://api.github.com/users/jgallen23","html_url":"https://github.com/jgallen23","followers_url":"https://api.github.com/users/jgallen23/followers","following_url":"https://api.github.com/users/jgallen23/following{/other_user}","gists_url":"https://api.github.com/users/jgallen23/gists{/gist_id}","starred_url":"https://api.github.com/users/jgallen23/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jgallen23/subscriptions","organizations_url":"https://api.github.com/users/jgallen23/orgs","repos_url":"https://api.github.com/users/jgallen23/repos","events_url":"https://api.github.com/users/jgallen23/events{/privacy}","received_events_url":"https://api.github.com/users/jgallen23/received_events","type":"User","site_admin":false},"assignees":[{"login":"jgallen23","id":27936,"avatar_url":"https://avatars0.githubusercontent.com/u/27936?v=4","gravatar_id":"","url":"https://api.github.com/users/jgallen23","html_url":"https://github.com/jgallen23","followers_url":"https://api.github.com/users/jgallen23/followers","following_url":"https://api.github.com/users/jgallen23/following{/other_user}","gists_url":"https://api.github.com/users/jgallen23/gists{/gist_id}","starred_url":"https://api.github.com/users/jgallen23/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jgallen23/subscriptions","organizations_url":"https://api.github.com/users/jgallen23/orgs","repos_url":"https://api.github.com/users/jgallen23/repos","events_url":"https://api.github.com/users/jgallen23/events{/privacy}","received_events_url":"https://api.github.com/users/jgallen23/received_events","type":"User","site_admin":false}],"requested_reviewers":[{"login":"jgallen23","id":27936,"avatar_url":"https://avatars0.githubusercontent.com/u/27936?v=4","gravatar_id":"","url":"https://api.github.com/users/jgallen23","html_url":"https://github.com/jgallen23","followers_url":"https://api.github.com/users/jgallen23/followers","following_url":"https://api.github.com/users/jgallen23/following{/other_user}","gists_url":"https://api.github.com/users/jgallen23/gists{/gist_id}","starred_url":"https://api.github.com/users/jgallen23/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jgallen23/subscriptions","organizations_url":"https://api.github.com/users/jgallen23/orgs","repos_url":"https://api.github.com/users/jgallen23/repos","events_url":"https://api.github.com/users/jgallen23/events{/privacy}","received_events_url":"https://api.github.com/users/jgallen23/received_events","type":"User","site_admin":false}],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/firstandthird/docker-compose-to-api/pulls/1/commits","review_comments_url":"https://api.github.com/repos/firstandthird/docker-compose-to-api/pulls/1/comments","review_comment_url":"https://api.github.com/repos/firstandthird/docker-compose-to-api/pulls/comments{/number}","comments_url":"https://api.github.com/repos/firstandthird/docker-compose-to-api/issues/1/comments","statuses_url":"https://api.github.com/repos/firstandthird/docker-compose-to-api/statuses/bd00d1c2778c934428f5c5ce1ac1efba13e99ad0","head":{"label":"firstandthird:initial-module","ref":"initial-module","sha":"bd00d1c2778c934428f5c5ce1ac1efba13e99ad0","user":{"login":"firstandthird","id":4642413,"avatar_url":"https://avatars1.githubusercontent.com/u/4642413?v=4","gravatar_id":"","url":"https://api.github.com/users/firstandthird","html_url":"https://github.com/firstandthird","followers_url":"https://api.github.com/users/firstandthird/followers","following_url":"https://api.github.com/users/firstandthird/following{/other_user}","gists_url":"https://api.github.com/users/firstandthird/gists{/gist_id}","starred_url":"https://api.github.com/users/firstandthird/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/firstandthird/subscriptions","organizations_url":"https://api.github.com/users/firstandthird/orgs","repos_url":"https://api.github.com/users/firstandthird/repos","events_url":"https://api.github.com/users/firstandthird/events{/privacy}","received_events_url":"https://api.github.com/users/firstandthird/received_events","type":"Organization","site_admin":false},"repo":{"id":122786561,"name":"docker-compose-to-api","full_name":"firstandthird/docker-compose-to-api","owner":{"login":"firstandthird","id":4642413,"avatar_url":"https://avatars1.githubusercontent.com/u/4642413?v=4","gravatar_id":"","url":"https://api.github.com/users/firstandthird","html_url":"https://github.com/firstandthird","followers_url":"https://api.github.com/users/firstandthird/followers","following_url":"https://api.github.com/users/firstandthird/following{/other_user}","gists_url":"https://api.github.com/users/firstandthird/gists{/gist_id}","starred_url":"https://api.github.com/users/firstandthird/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/firstandthird/subscriptions","organizations_url":"https://api.github.com/users/firstandthird/orgs","repos_url":"https://api.github.com/users/firstandthird/repos","events_url":"https://api.github.com/users/firstandthird/events{/privacy}","received_events_url":"https://api.github.com/users/firstandthird/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/firstandthird/docker-compose-to-api","description":null,"fork":false,"url":"https://api.github.com/repos/firstandthird/docker-compose-to-api","forks_url":"https://api.github.com/repos/firstandthird/docker-compose-to-api/forks","keys_url":"https://api.github.com/repos/firstandthird/docker-compose-to-api/keys{/key_id}","collaborators_url":"https://api.github.com/repos/firstandthird/docker-compose-to-api/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/firstandthird/docker-compose-to-api/teams","hooks_url":"https://api.github.com/repos/firstandthird/docker-compose-to-api/hooks","issue_events_url":"https://api.github.com/repos/firstandthird/docker-compose-to-api/issues/events{/number}","events_url":"https://api.github.com/repos/firstandthird/docker-compose-to-api/events","assignees_url":"https://api.github.com/repos/firstandthird/docker-compose-to-api/assignees{/user}","branches_url":"https://api.github.com/repos/firstandthird/docker-compose-to-api/branches{/branch}","tags_url":"https://api.github.com/repos/firstandthird/docker-compose-to-api/tags","blobs_url":"https://api.github.com/repos/firstandthird/docker-compose-to-api/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/firstandthird/docker-compose-to-api/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/firstandthird/docker-compose-to-api/git/refs{/sha}","trees_url":"https://api.github.com/repos/firstandthird/docker-compose-to-api/git/trees{/sha}","statuses_url":"https://api.github.com/repos/firstandthird/docker-compose-to-api/statuses/{sha}","languages_url":"https://api.github.com/repos/firstandthird/docker-compose-to-api/languages","stargazers_url":"https://api.github.com/repos/firstandthird/docker-compose-to-api/stargazers","contributors_url":"https://api.github.com/repos/firstandthird/docker-compose-to-api/contributors","subscribers_url":"https://api.github.com/repos/firstandthird/docker-compose-to-api/subscribers","subscription_url":"https://api.github.com/repos/firstandthird/docker-compose-to-api/subscription","commits_url":"https://api.github.com/repos/firstandthird/docker-compose-to-api/commits{/sha}","git_commits_url":"https://api.github.com/repos/firstandthird/docker-compose-to-api/git/commits{/sha}","comments_url":"https://api.github.com/repos/firstandthird/docker-compose-to-api/comments{/number}","issue_comment_url":"https://api.github.com/repos/firstandthird/docker-compose-to-api/issues/comments{/number}","contents_url":"https://api.github.com/repos/firstandthird/docker-compose-to-api/contents/{+path}","compare_url":"https://api.github.com/repos/firstandthird/docker-compose-to-api/compare/{base}...{head}","merges_url":"https://api.github.com/repos/firstandthird/docker-compose-to-api/merges","archive_url":"https://api.github.com/repos/firstandthird/docker-compose-to-api/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/firstandthird/docker-compose-to-api/downloads","issues_url":"https://api.github.com/repos/firstandthird/docker-compose-to-api/issues{/number}","pulls_url":"https://api.github.com/repos/firstandthird/docker-compose-to-api/pulls{/number}","milestones_url":"https://api.github.com/repos/firstandthird/docker-compose-to-api/milestones{/number}","notifications_url":"https://api.github.com/repos/firstandthird/docker-compose-to-api/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/firstandthird/docker-compose-to-api/labels{/name}","releases_url":"https://api.github.com/repos/firstandthird/docker-compose-to-api/releases{/id}","deployments_url":"https://api.github.com/repos/firstandthird/docker-compose-to-api/deployments","created_at":"2018-02-24T22:44:28Z","updated_at":"2018-02-24T22:44:28Z","pushed_at":"2018-02-28T00:12:59Z","git_url":"git://github.com/firstandthird/docker-compose-to-api.git","ssh_url":"git@github.com:firstandthird/docker-compose-to-api.git","clone_url":"https://github.com/firstandthird/docker-compose-to-api.git","svn_url":"https://github.com/firstandthird/docker-compose-to-api","homepage":null,"size":33,"stargazers_count":0,"watchers_count":0,"language":null,"has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"open_issues_count":1,"license":null,"forks":0,"open_issues":1,"watchers":0,"default_branch":"master"}},"base":{"label":"firstandthird:master","ref":"master","sha":"50c9a2623e26474beea2cfdd66fd57e187fed91d","user":{"login":"firstandthird","id":4642413,"avatar_url":"https://avatars1.githubusercontent.com/u/4642413?v=4","gravatar_id":"","url":"https://api.github.com/users/firstandthird","html_url":"https://github.com/firstandthird","followers_url":"https://api.github.com/users/firstandthird/followers","following_url":"https://api.github.com/users/firstandthird/following{/other_user}","gists_url":"https://api.github.com/users/firstandthird/gists{/gist_id}","starred_url":"https://api.github.com/users/firstandthird/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/firstandthird/subscriptions","organizations_url":"https://api.github.com/users/firstandthird/orgs","repos_url":"https://api.github.com/users/firstandthird/repos","events_url":"https://api.github.com/users/firstandthird/events{/privacy}","received_events_url":"https://api.github.com/users/firstandthird/received_events","type":"Organization","site_admin":false},"repo":{"id":122786561,"name":"docker-compose-to-api","full_name":"firstandthird/docker-compose-to-api","owner":{"login":"firstandthird","id":4642413,"avatar_url":"https://avatars1.githubusercontent.com/u/4642413?v=4","gravatar_id":"","url":"https://api.github.com/users/firstandthird","html_url":"https://github.com/firstandthird","followers_url":"https://api.github.com/users/firstandthird/followers","following_url":"https://api.github.com/users/firstandthird/following{/other_user}","gists_url":"https://api.github.com/users/firstandthird/gists{/gist_id}","starred_url":"https://api.github.com/users/firstandthird/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/firstandthird/subscriptions","organizations_url":"https://api.github.com/users/firstandthird/orgs","repos_url":"https://api.github.com/users/firstandthird/repos","events_url":"https://api.github.com/users/firstandthird/events{/privacy}","received_events_url":"https://api.github.com/users/firstandthird/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/firstandthird/docker-compose-to-api","description":null,"fork":false,"url":"https://api.github.com/repos/firstandthird/docker-compose-to-api","forks_url":"https://api.github.com/repos/firstandthird/docker-compose-to-api/forks","keys_url":"https://api.github.com/repos/firstandthird/docker-compose-to-api/keys{/key_id}","collaborators_url":"https://api.github.com/repos/firstandthird/docker-compose-to-api/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/firstandthird/docker-compose-to-api/teams","hooks_url":"https://api.github.com/repos/firstandthird/docker-compose-to-api/hooks","issue_events_url":"https://api.github.com/repos/firstandthird/docker-compose-to-api/issues/events{/number}","events_url":"https://api.github.com/repos/firstandthird/docker-compose-to-api/events","assignees_url":"https://api.github.com/repos/firstandthird/docker-compose-to-api/assignees{/user}","branches_url":"https://api.github.com/repos/firstandthird/docker-compose-to-api/branches{/branch}","tags_url":"https://api.github.com/repos/firstandthird/docker-compose-to-api/tags","blobs_url":"https://api.github.com/repos/firstandthird/docker-compose-to-api/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/firstandthird/docker-compose-to-api/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/firstandthird/docker-compose-to-api/git/refs{/sha}","trees_url":"https://api.github.com/repos/firstandthird/docker-compose-to-api/git/trees{/sha}","statuses_url":"https://api.github.com/repos/firstandthird/docker-compose-to-api/statuses/{sha}","languages_url":"https://api.github.com/repos/firstandthird/docker-compose-to-api/languages","stargazers_url":"https://api.github.com/repos/firstandthird/docker-compose-to-api/stargazers","contributors_url":"https://api.github.com/repos/firstandthird/docker-compose-to-api/contributors","subscribers_url":"https://api.github.com/repos/firstandthird/docker-compose-to-api/subscribers","subscription_url":"https://api.github.com/repos/firstandthird/docker-compose-to-api/subscription","commits_url":"https://api.github.com/repos/firstandthird/docker-compose-to-api/commits{/sha}","git_commits_url":"https://api.github.com/repos/firstandthird/docker-compose-to-api/git/commits{/sha}","comments_url":"https://api.github.com/repos/firstandthird/docker-compose-to-api/comments{/number}","issue_comment_url":"https://api.github.com/repos/firstandthird/docker-compose-to-api/issues/comments{/number}","contents_url":"https://api.github.com/repos/firstandthird/docker-compose-to-api/contents/{+path}","compare_url":"https://api.github.com/repos/firstandthird/docker-compose-to-api/compare/{base}...{head}","merges_url":"https://api.github.com/repos/firstandthird/docker-compose-to-api/merges","archive_url":"https://api.github.com/repos/firstandthird/docker-compose-to-api/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/firstandthird/docker-compose-to-api/downloads","issues_url":"https://api.github.com/repos/firstandthird/docker-compose-to-api/issues{/number}","pulls_url":"https://api.github.com/repos/firstandthird/docker-compose-to-api/pulls{/number}","milestones_url":"https://api.github.com/repos/firstandthird/docker-compose-to-api/milestones{/number}","notifications_url":"https://api.github.com/repos/firstandthird/docker-compose-to-api/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/firstandthird/docker-compose-to-api/labels{/name}","releases_url":"https://api.github.com/repos/firstandthird/docker-compose-to-api/releases{/id}","deployments_url":"https://api.github.com/repos/firstandthird/docker-compose-to-api/deployments","created_at":"2018-02-24T22:44:28Z","updated_at":"2018-02-24T22:44:28Z","pushed_at":"2018-02-28T00:12:59Z","git_url":"git://github.com/firstandthird/docker-compose-to-api.git","ssh_url":"git@github.com:firstandthird/docker-compose-to-api.git","clone_url":"https://github.com/firstandthird/docker-compose-to-api.git","svn_url":"https://github.com/firstandthird/docker-compose-to-api","homepage":null,"size":33,"stargazers_count":0,"watchers_count":0,"language":null,"has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"open_issues_count":1,"license":null,"forks":0,"open_issues":1,"watchers":0,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/firstandthird/docker-compose-to-api/pulls/1"},"html":{"href":"https://github.com/firstandthird/docker-compose-to-api/pull/1"},"issue":{"href":"https://api.github.com/repos/firstandthird/docker-compose-to-api/issues/1"},"comments":{"href":"https://api.github.com/repos/firstandthird/docker-compose-to-api/issues/1/comments"},"review_comments":{"href":"https://api.github.com/repos/firstandthird/docker-compose-to-api/pulls/1/comments"},"review_comment":{"href":"https://api.github.com/repos/firstandthird/docker-compose-to-api/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/firstandthird/docker-compose-to-api/pulls/1/commits"},"statuses":{"href":"https://api.github.com/repos/firstandthird/docker-compose-to-api/statuses/bd00d1c2778c934428f5c5ce1ac1efba13e99ad0"}},"author_association":"NONE"}}
{"actor":{"display_login":"ecwillis"}}