{"action":"created","comment":{"url":"https://api.github.com/repos/appc/spec/pulls/comments/25109014","id":25109014,"diff_hunk":"@@ -512,32 +534,32 @@ JSON Schema for the Image Manifest (app image manifest, ACI manifest), conformin\n \n * **acKind** (string, required) must be set to \"ImageManifest\"\n * **acVersion** (string, required) represents the version of the schema specification that the manifest implements (string, must be in [semver](http://semver.org/) format)\n-* **name** (string, required) used as a human readable index to the container image. (string, restricted to the AC Name formatting)\n+* **name** (string, required) used as a human readable index to the App Container Image. (string, restricted to the AC Name formatting)\n * **labels** (list of objects, optional) used during image discovery and dependency resolution. The listed objects must have two key-value pairs: *name* is restricted to the AC Name formatting and *value* is an arbitrary string. Label names must be unique within the list, and (to avoid confusion with the image's name) cannot be \"name\". Several well-known labels are defined:\n     * **version** when combined with \"name\", this should be unique for every build of an app (on a given \"os\"/\"arch\" combination).\n     * **os**, **arch** can together be considered to describe the syscall ABI this image requires. **arch** is meaningful only if **os** is provided. If one or both values are not provided, the image is assumed to be OS- and/or architecture-independent. Currently supported combinations are listed in the [`types.ValidOSArch`](schema/types/labels.go) variable, which can be updated by an implementation that supports other combinations. The combinations whitelisted by default are (in format `os/arch`): `linux/amd64`, `linux/i386`, `freebsd/amd64`, `freebsd/i386`, `freebsd/arm`, `darwin/x86_64`, `darwin/i386`.\n * **app** (object, optional) if present, defines the default parameters that can be used to execute this image as an application.\n     * **exec** (list of strings, required) executable to launch and any flags (must be non-empty; the executable must be an absolute path within the app rootfs; ACE can append or override)\n-    * **user**, **group** (string, required) indicates either the UID/GID or the username/group name the app should run as inside the container (freeform string). If the user or group field begins with a \"/\", the owner and group of the file found at that absolute path inside the rootfs is used as the UID/GID of the process.\n+    * **user**, **group** (string, required) indicates either the UID/GID or the username/group name the app should run as (freeform string). If the user or group field begins with a \"/\", the owner and group of the file found at that absolute path inside the rootfs is used as the UID/GID of the process.\n     * **eventHandlers** (list of objects, optional) allows the app to have several hooks based on lifecycle events. For example, you may want to execute a script before the main process starts up to download a dataset or backup onto the filesystem. An eventHandler is a simple object with two fields - an **exec** (array of strings, ACE can append or override), and a **name** (there may be only one eventHandler of a given name), which must be one of:\n         * **pre-start** - executed and must exit before the long running main **exec** binary is launched\n         * **post-stop** - executed if the main **exec** process is killed. This can be used to cleanup resources in the case of clean application shutdown, but cannot be relied upon in the face of machine failure.\n     * **workingDirectory** (string, optional) working directory of the launched application, relative to the application image's root (must be an absolute path, defaults to \"/\", ACE can override). If the directory does not exist in the application's assembled rootfs (including any dependent images and mounted volumes), the ACE must fail execution.\n     * **environment** (list of objects, optional) represents the app's environment variables (ACE can append). The listed objects must have two key-value pairs: **name** and **value**. The **name** must consist solely of letters, digits, and underscores '_' as outlined in [IEEE Std 1003.1-2001](http://pubs.opengroup.org/onlinepubs/009695399/basedefs/xbd_chap08.html). The **value** is an arbitrary string.\n-    * **isolators** (list of objects, optional) well-known isolation steps that should be applied to the app. The listed objects should have two key-value pairs: **name** is restricted to the [AC Name](#ac-name-type) formatting and **value** can be a freeform string. Any isolators specified in the Image Manifest can be overridden at runtime via the Container Runtime Manifest. The executor can either ignore isolator keys it does not understand or error. In practice this means there might be certain isolators (for example, an AppArmor policy) that an executor doesn't understand so it will simply skip that entry.\n-    * **mountPoints** (list of objects, optional) locations where a container is expecting external data to be mounted. The listed objects should contain three key-value pairs: the **name** indicates an executor-defined label to look up a mount point, and the **path** stipulates where it should actually be mounted inside the rootfs. The name is restricted to the AC Name Type formatting. **readOnly\" should be a boolean indicating whether or not the mount point should be read-only (defaults to \"false\" if unsupplied).\n-    * **ports** (list of objects, optional) are protocols and port numbers that the container will be listening on once started. All of the keys in the listed objects are restricted to the AC Name formatting. This information is primarily to help the user find ports that are not well known. It could also optionally be used to limit the inbound connections to the container via firewall rules to only ports that are explicitly exposed.\n-        * **socketActivated** (boolean, optional) if set to true, the application expects to be [socket activated](http://www.freedesktop.org/software/systemd/man/sd_listen_fds.html) on these ports. The ACE must pass file descriptors using the [socket activation protocol](http://www.freedesktop.org/software/systemd/man/sd_listen_fds.html) that are listening on these ports when starting this container. If multiple apps in the same container are using socket activation then the ACE must match the sockets to the correct apps using getsockopt() and getsockname().\n+    * **isolators** (list of objects, optional) well-known isolation steps that should be applied to the app. The listed objects should have two key-value pairs: **name** is restricted to the [AC Name](#ac-name-type) formatting and **value** can be a freeform string. Any isolators specified in the Image Manifest can be overridden at runtime via the Pod Manifest. The executor can either ignore isolator keys it does not understand or error. In practice this means there might be certain isolators (for example, an AppArmor policy) that an executor doesn't understand so it will simply skip that entry.\n+    * **mountPoints** (list of objects, optional) locations where an app is expecting external data to be mounted. The listed objects should contain three key-value pairs: the **name** indicates an executor-defined label to look up a mount point, and the **path** stipulates where it should actually be mounted inside the rootfs. The name is restricted to the AC Name Type formatting. **readOnly\" should be a boolean indicating whether or not the mount point should be read-only (defaults to \"false\" if unsupplied).\n+    * **ports** (list of objects, optional) are protocols and port numbers that the app will be listening on once started. All of the keys in the listed objects are restricted to the AC Name formatting. This information is primarily to help the user find ports that are not well known. It could also optionally be used to limit the inbound connections to the app via firewall rules to only ports that are explicitly exposed.\n+        * **socketActivated** (boolean, optional) if set to true, the application expects to be [socket activated](http://www.freedesktop.org/software/systemd/man/sd_listen_fds.html) on these ports. The ACE must pass file descriptors using the [socket activation protocol](http://www.freedesktop.org/software/systemd/man/sd_listen_fds.html) that are listening on these ports when starting this app. If multiple apps in the same pod are using socket activation then the ACE must match the sockets to the correct apps using getsockopt() and getsockname().\n * **dependencies** (list of objects, optional) dependent application images that need to be placed down into the rootfs before the files from this image (if any). The ordering is significant. See [Dependency Matching](#dependency-matching) for how dependencies should be retrieved.\n-    * **app** (string, required) name of the dependent app container image.\n+    * **app** (string, required) name of the dependent App Container Image.\n     * **imageID** (string, optional) content hash of the dependency. If provided, the retrieved dependency must match the hash. This can be used to produce deterministic, repeatable builds of an App Image that has dependencies.\n     * **labels** (list of objects, optional) a list of the very same form as the aforementioned label objects in the top level ImageManifest. See [Dependency Matching](#dependency-matching) for how these are used.\n-* **pathWhitelist** (list of strings, optional) complete whitelist of paths that should exist in the rootfs after assembly (i.e. unpacking the files in this image and overlaying its dependencies, in order). Paths that end in slash will ensure the directory is present but empty. This field is only required if the app has dependencies and you wish to remove files from the rootfs before running the container; an empty value means that all files in this image and any dependencies will be available in the rootfs.\n+* **pathWhitelist** (list of strings, optional) complete whitelist of paths that should exist in the rootfs after assembly (i.e. unpacking the files in this image and overlaying its dependencies, in order). Paths that end in slash will ensure the directory is present but empty. This field is only required if the app has dependencies and you wish to remove files from the rootfs before running the app; an empty value means that all files in this image and any dependencies will be available in the rootfs.\n * **annotations** (list of objects, optional) any extra metadata you wish to add to the image. Each object has two key-value pairs: the *name* is restricted to the [AC Name](#ac-name-type) formatting and *value* is an arbitrary string. Annotation names must be unique within the list. Annotations can be used by systems outside of the ACE (ACE can override). If you are defining new annotations, please consider submitting them to the specification. If you intend for your field to remain special to your application please be a good citizen and prefix an appropriate namespace to your key names. Recognized annotations include:\n-    * **created** date on which this container was built (string, must be in [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) format)\n-    * **authors** contact details of the people or organization responsible for the containers (freeform string)\n-    * **homepage** URL to find more information on the container (string, must be a URL with scheme HTTP or HTTPS)\n-    * **documentation** URL to get documentation on this container (string, must be a URL with scheme HTTP or HTTPS)\n+    * **created** date on which the image was built (string, must be in [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) format)\n+    * **authors** contact details of the people or organization responsible for the image (freeform string)\n+    * **homepage** URL to find more information on the imgae (string, must be a URL with scheme HTTP or HTTPS)","path":"SPEC.md","position":380,"original_position":380,"commit_id":"4f540be9b35287b7834d98036c9ba29d99c18367","original_commit_id":"4f540be9b35287b7834d98036c9ba29d99c18367","user":{"login":"jonboulle","id":2601015,"avatar_url":"https://avatars.githubusercontent.com/u/2601015?v=3","gravatar_id":"","url":"https://api.github.com/users/jonboulle","html_url":"https://github.com/jonboulle","followers_url":"https://api.github.com/users/jonboulle/followers","following_url":"https://api.github.com/users/jonboulle/following{/other_user}","gists_url":"https://api.github.com/users/jonboulle/gists{/gist_id}","starred_url":"https://api.github.com/users/jonboulle/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jonboulle/subscriptions","organizations_url":"https://api.github.com/users/jonboulle/orgs","repos_url":"https://api.github.com/users/jonboulle/repos","events_url":"https://api.github.com/users/jonboulle/events{/privacy}","received_events_url":"https://api.github.com/users/jonboulle/received_events","type":"User","site_admin":false},"body":"thnaks","created_at":"2015-02-20T22:31:55Z","updated_at":"2015-02-20T22:31:55Z","html_url":"https://github.com/appc/spec/pull/207#discussion_r25109014","pull_request_url":"https://api.github.com/repos/appc/spec/pulls/207","_links":{"self":{"href":"https://api.github.com/repos/appc/spec/pulls/comments/25109014"},"html":{"href":"https://github.com/appc/spec/pull/207#discussion_r25109014"},"pull_request":{"href":"https://api.github.com/repos/appc/spec/pulls/207"}}},"pull_request":{"url":"https://api.github.com/repos/appc/spec/pulls/207","id":29495532,"html_url":"https://github.com/appc/spec/pull/207","diff_url":"https://github.com/appc/spec/pull/207.diff","patch_url":"https://github.com/appc/spec/pull/207.patch","issue_url":"https://api.github.com/repos/appc/spec/issues/207","number":207,"state":"open","locked":false,"title":"spec: introduce Pods, remove CRMs","user":{"login":"jonboulle","id":2601015,"avatar_url":"https://avatars.githubusercontent.com/u/2601015?v=3","gravatar_id":"","url":"https://api.github.com/users/jonboulle","html_url":"https://github.com/jonboulle","followers_url":"https://api.github.com/users/jonboulle/followers","following_url":"https://api.github.com/users/jonboulle/following{/other_user}","gists_url":"https://api.github.com/users/jonboulle/gists{/gist_id}","starred_url":"https://api.github.com/users/jonboulle/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jonboulle/subscriptions","organizations_url":"https://api.github.com/users/jonboulle/orgs","repos_url":"https://api.github.com/users/jonboulle/repos","events_url":"https://api.github.com/users/jonboulle/events{/privacy}","received_events_url":"https://api.github.com/users/jonboulle/received_events","type":"User","site_admin":false},"body":"Following on from #150, this is the next iteration at an attempt to introduce\nthe concept of pods.\n\nFollowing the most recent discussion on the topic, this patch attempts to\nsimplify things greatly by removing the ContainerRuntimeManifest entirely and\nsettling instead on a single PodManifest.\n\nTo achieve this, we give the PodManifest a dual purpose: it is both a\n_deployable template_ (which can be used to stamp out instances of pods) which\nbefore execution must be resolved into a final/reified version. The allowed\nreified versions are a _subset_ of the template versions; for example, app\nreferences in the reified version of a Pod Manifest MUST be deterministic and\ncontain image IDs (i.e. they cannot rely on labels and dependency matching).\n\nAn important distinction from the previous CRM model is that a reified \nPodManifest no longer _necessarily_ includes runtime information specific to\nthe executor (i.e., the UUID). It is hence possible that a fully reified pod\ncould be passed around as a deployable unit to different executors.\n\nThis patch also goes to some length to eliminate the (frustratingly ambiguous)\nword \"container\" from the spec, except for in qualified contexts (e.g. \"App\nContainer Image\").","created_at":"2015-02-18T01:51:59Z","updated_at":"2015-02-20T22:31:55Z","closed_at":null,"merged_at":null,"merge_commit_sha":"6d8cf6d4f1cca3332f6c1b7623b8a5501feda223","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/appc/spec/pulls/207/commits","review_comments_url":"https://api.github.com/repos/appc/spec/pulls/207/comments","review_comment_url":"https://api.github.com/repos/appc/spec/pulls/comments/{number}","comments_url":"https://api.github.com/repos/appc/spec/issues/207/comments","statuses_url":"https://api.github.com/repos/appc/spec/statuses/4f540be9b35287b7834d98036c9ba29d99c18367","head":{"label":"jonboulle:pods_redux","ref":"pods_redux","sha":"4f540be9b35287b7834d98036c9ba29d99c18367","user":{"login":"jonboulle","id":2601015,"avatar_url":"https://avatars.githubusercontent.com/u/2601015?v=3","gravatar_id":"","url":"https://api.github.com/users/jonboulle","html_url":"https://github.com/jonboulle","followers_url":"https://api.github.com/users/jonboulle/followers","following_url":"https://api.github.com/users/jonboulle/following{/other_user}","gists_url":"https://api.github.com/users/jonboulle/gists{/gist_id}","starred_url":"https://api.github.com/users/jonboulle/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jonboulle/subscriptions","organizations_url":"https://api.github.com/users/jonboulle/orgs","repos_url":"https://api.github.com/users/jonboulle/repos","events_url":"https://api.github.com/users/jonboulle/events{/privacy}","received_events_url":"https://api.github.com/users/jonboulle/received_events","type":"User","site_admin":false},"repo":{"id":27783943,"name":"spec","full_name":"jonboulle/spec","owner":{"login":"jonboulle","id":2601015,"avatar_url":"https://avatars.githubusercontent.com/u/2601015?v=3","gravatar_id":"","url":"https://api.github.com/users/jonboulle","html_url":"https://github.com/jonboulle","followers_url":"https://api.github.com/users/jonboulle/followers","following_url":"https://api.github.com/users/jonboulle/following{/other_user}","gists_url":"https://api.github.com/users/jonboulle/gists{/gist_id}","starred_url":"https://api.github.com/users/jonboulle/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jonboulle/subscriptions","organizations_url":"https://api.github.com/users/jonboulle/orgs","repos_url":"https://api.github.com/users/jonboulle/repos","events_url":"https://api.github.com/users/jonboulle/events{/privacy}","received_events_url":"https://api.github.com/users/jonboulle/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/jonboulle/spec","description":"App Container Specification and Tooling","fork":true,"url":"https://api.github.com/repos/jonboulle/spec","forks_url":"https://api.github.com/repos/jonboulle/spec/forks","keys_url":"https://api.github.com/repos/jonboulle/spec/keys{/key_id}","collaborators_url":"https://api.github.com/repos/jonboulle/spec/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/jonboulle/spec/teams","hooks_url":"https://api.github.com/repos/jonboulle/spec/hooks","issue_events_url":"https://api.github.com/repos/jonboulle/spec/issues/events{/number}","events_url":"https://api.github.com/repos/jonboulle/spec/events","assignees_url":"https://api.github.com/repos/jonboulle/spec/assignees{/user}","branches_url":"https://api.github.com/repos/jonboulle/spec/branches{/branch}","tags_url":"https://api.github.com/repos/jonboulle/spec/tags","blobs_url":"https://api.github.com/repos/jonboulle/spec/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/jonboulle/spec/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/jonboulle/spec/git/refs{/sha}","trees_url":"https://api.github.com/repos/jonboulle/spec/git/trees{/sha}","statuses_url":"https://api.github.com/repos/jonboulle/spec/statuses/{sha}","languages_url":"https://api.github.com/repos/jonboulle/spec/languages","stargazers_url":"https://api.github.com/repos/jonboulle/spec/stargazers","contributors_url":"https://api.github.com/repos/jonboulle/spec/contributors","subscribers_url":"https://api.github.com/repos/jonboulle/spec/subscribers","subscription_url":"https://api.github.com/repos/jonboulle/spec/subscription","commits_url":"https://api.github.com/repos/jonboulle/spec/commits{/sha}","git_commits_url":"https://api.github.com/repos/jonboulle/spec/git/commits{/sha}","comments_url":"https://api.github.com/repos/jonboulle/spec/comments{/number}","issue_comment_url":"https://api.github.com/repos/jonboulle/spec/issues/comments/{number}","contents_url":"https://api.github.com/repos/jonboulle/spec/contents/{+path}","compare_url":"https://api.github.com/repos/jonboulle/spec/compare/{base}...{head}","merges_url":"https://api.github.com/repos/jonboulle/spec/merges","archive_url":"https://api.github.com/repos/jonboulle/spec/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/jonboulle/spec/downloads","issues_url":"https://api.github.com/repos/jonboulle/spec/issues{/number}","pulls_url":"https://api.github.com/repos/jonboulle/spec/pulls{/number}","milestones_url":"https://api.github.com/repos/jonboulle/spec/milestones{/number}","notifications_url":"https://api.github.com/repos/jonboulle/spec/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/jonboulle/spec/labels{/name}","releases_url":"https://api.github.com/repos/jonboulle/spec/releases{/id}","created_at":"2014-12-09T19:48:51Z","updated_at":"2015-02-06T20:49:10Z","pushed_at":"2015-02-19T18:45:25Z","git_url":"git://github.com/jonboulle/spec.git","ssh_url":"git@github.com:jonboulle/spec.git","clone_url":"https://github.com/jonboulle/spec.git","svn_url":"https://github.com/jonboulle/spec","homepage":null,"size":982,"stargazers_count":0,"watchers_count":0,"language":"Go","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"appc:master","ref":"master","sha":"fa6d3af86db496053a2d3c907c676fd9ee1118a8","user":{"login":"appc","id":10080092,"avatar_url":"https://avatars.githubusercontent.com/u/10080092?v=3","gravatar_id":"","url":"https://api.github.com/users/appc","html_url":"https://github.com/appc","followers_url":"https://api.github.com/users/appc/followers","following_url":"https://api.github.com/users/appc/following{/other_user}","gists_url":"https://api.github.com/users/appc/gists{/gist_id}","starred_url":"https://api.github.com/users/appc/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/appc/subscriptions","organizations_url":"https://api.github.com/users/appc/orgs","repos_url":"https://api.github.com/users/appc/repos","events_url":"https://api.github.com/users/appc/events{/privacy}","received_events_url":"https://api.github.com/users/appc/received_events","type":"Organization","site_admin":false},"repo":{"id":27782596,"name":"spec","full_name":"appc/spec","owner":{"login":"appc","id":10080092,"avatar_url":"https://avatars.githubusercontent.com/u/10080092?v=3","gravatar_id":"","url":"https://api.github.com/users/appc","html_url":"https://github.com/appc","followers_url":"https://api.github.com/users/appc/followers","following_url":"https://api.github.com/users/appc/following{/other_user}","gists_url":"https://api.github.com/users/appc/gists{/gist_id}","starred_url":"https://api.github.com/users/appc/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/appc/subscriptions","organizations_url":"https://api.github.com/users/appc/orgs","repos_url":"https://api.github.com/users/appc/repos","events_url":"https://api.github.com/users/appc/events{/privacy}","received_events_url":"https://api.github.com/users/appc/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/appc/spec","description":"App Container Specification and Tooling","fork":false,"url":"https://api.github.com/repos/appc/spec","forks_url":"https://api.github.com/repos/appc/spec/forks","keys_url":"https://api.github.com/repos/appc/spec/keys{/key_id}","collaborators_url":"https://api.github.com/repos/appc/spec/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/appc/spec/teams","hooks_url":"https://api.github.com/repos/appc/spec/hooks","issue_events_url":"https://api.github.com/repos/appc/spec/issues/events{/number}","events_url":"https://api.github.com/repos/appc/spec/events","assignees_url":"https://api.github.com/repos/appc/spec/assignees{/user}","branches_url":"https://api.github.com/repos/appc/spec/branches{/branch}","tags_url":"https://api.github.com/repos/appc/spec/tags","blobs_url":"https://api.github.com/repos/appc/spec/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/appc/spec/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/appc/spec/git/refs{/sha}","trees_url":"https://api.github.com/repos/appc/spec/git/trees{/sha}","statuses_url":"https://api.github.com/repos/appc/spec/statuses/{sha}","languages_url":"https://api.github.com/repos/appc/spec/languages","stargazers_url":"https://api.github.com/repos/appc/spec/stargazers","contributors_url":"https://api.github.com/repos/appc/spec/contributors","subscribers_url":"https://api.github.com/repos/appc/spec/subscribers","subscription_url":"https://api.github.com/repos/appc/spec/subscription","commits_url":"https://api.github.com/repos/appc/spec/commits{/sha}","git_commits_url":"https://api.github.com/repos/appc/spec/git/commits{/sha}","comments_url":"https://api.github.com/repos/appc/spec/comments{/number}","issue_comment_url":"https://api.github.com/repos/appc/spec/issues/comments/{number}","contents_url":"https://api.github.com/repos/appc/spec/contents/{+path}","compare_url":"https://api.github.com/repos/appc/spec/compare/{base}...{head}","merges_url":"https://api.github.com/repos/appc/spec/merges","archive_url":"https://api.github.com/repos/appc/spec/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/appc/spec/downloads","issues_url":"https://api.github.com/repos/appc/spec/issues{/number}","pulls_url":"https://api.github.com/repos/appc/spec/pulls{/number}","milestones_url":"https://api.github.com/repos/appc/spec/milestones{/number}","notifications_url":"https://api.github.com/repos/appc/spec/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/appc/spec/labels{/name}","releases_url":"https://api.github.com/repos/appc/spec/releases{/id}","created_at":"2014-12-09T19:17:54Z","updated_at":"2015-02-19T23:23:38Z","pushed_at":"2015-02-19T18:45:24Z","git_url":"git://github.com/appc/spec.git","ssh_url":"git@github.com:appc/spec.git","clone_url":"https://github.com/appc/spec.git","svn_url":"https://github.com/appc/spec","homepage":null,"size":2760,"stargazers_count":380,"watchers_count":380,"language":"Go","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":42,"mirror_url":null,"open_issues_count":65,"forks":42,"open_issues":65,"watchers":380,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/appc/spec/pulls/207"},"html":{"href":"https://github.com/appc/spec/pull/207"},"issue":{"href":"https://api.github.com/repos/appc/spec/issues/207"},"comments":{"href":"https://api.github.com/repos/appc/spec/issues/207/comments"},"review_comments":{"href":"https://api.github.com/repos/appc/spec/pulls/207/comments"},"review_comment":{"href":"https://api.github.com/repos/appc/spec/pulls/comments/{number}"},"commits":{"href":"https://api.github.com/repos/appc/spec/pulls/207/commits"},"statuses":{"href":"https://api.github.com/repos/appc/spec/statuses/4f540be9b35287b7834d98036c9ba29d99c18367"}}}}