{"action":"created","comment":{"url":"https://api.github.com/repos/istio/istio.github.io/pulls/comments/141198396","pull_request_review_id":65371282,"id":141198396,"diff_hunk":"@@ -50,357 +47,222 @@ known as [*adapters*](./mixer.html#adapters).\n <figure><img src=\"./img/mixer-config/machine.svg\" alt=\"Attribute Machine\" title=\"Attribute Machine\" />\n <figcaption>Attribute Machine</figcaption></figure>\n \n-Mixer's configuration has two central responsibilities:\n+Mixer's configuration has the following central responsibilities:\n \n - Describe which adapters are being used and how they operate.\n-- Describe how to map request attributes into adapter parameters.\n+- Describe how to map request attributes into adapter inputs.\n+- Describe when a particular adapter is called with specific inputs.\n \n-Configuration is expressed using a YAML format built around five core\n-abstractions:\n+Configuration is based on  *adapters* and *templates*.\n+- **Adapter** encapsulate the logic necessary to interface Mixer with a specific infrastructure backend.\n+- **Template** defines the schema for specifying request mapping from attributes to adapter inputs. A template also defines the structure of the adapter inputs.\n+An adapter may support multiple templates.\n \n-|Concept                     |Description\n-|----------------------------|-----------\n-|[Adapters](#adapters)       | Low-level operationally-focused configuration for individual mixer adapters.\n-|[Aspects](#aspects)         | High-level intent-focused configuration for individual mixer adapters.\n-|[Descriptors](#descriptors) | Description of parameters used with individual aspects.\n-|[Scopes](#scopes)           | Mechanism to select which aspects and descriptors to use based on a request's attributes.\n-|[Manifests](#manifests)     | Description of various static characteristics of an Istio deployment.\n \n-The following sections explain these concepts in detail.\n+Configuration is expressed using a YAML format built around the following abstractions that are later explained in detail.\n \n-### Adapters\n+|Concept                     |Description\n+|----------------------------|-----------\n+|[Handlers](#handlers)       | A handler is an instance of an adapter. The adapter constructor parameters are specified as handler configuration.\n+|[Instances](#instances)     | A (request) instance is the result of applying request attributes to the template mapping. The mapping is specified as an instance configuration.\n+|[Rules](#rules)             | A rule defines when a particular handler is invoked using a specific template configuration.\n \n-[Adapters](./mixer.html#adapters) are the foundational work horses that the Istio mixer is built around. Adapters\n-encapsulate the logic necessary to interface Mixer with specific external infrastructure backends such as [Prometheus](https://prometheus.io),\n-[New Relic](https://newrelic.com), or [Stackdriver](https://cloud.google.com/logging). Individual adapters\n-generally need to be provided some basic operational parameters in order to do their work. For example, a logging adapter may need\n+Configuration resources are expressed in Kubernetes resource syntax:\n+```yaml\n+apiVersion: config.istio.io/v1alpha2\n+kind: rule, adapter kind, or template kind\n+metadata:\n+  name: shortname\n+  namespace: istio-system\n+spec:\n+  # kind specific configuration.\n+``` \n+- **apiVersion** - It is a constant for an Istio release.\n+- **kind** - Adapters and templates are assigned unique \"kinds\".\n+- **name** - It is the shortname of the configuration resource.\n+- **namespace** - The configuration resource is applied to services in this namespace. \n+- **spec** - The `kind` specific configuration.\n+\n+### Handlers\n+\n+[Adapters](./mixer.html#adapters) encapsulate the logic necessary to interface Mixer with specific external infrastructure\n+backends such as [Prometheus](https://prometheus.io), [New Relic](https://newrelic.com), or [Stackdriver](https://cloud.google.com/logging).\n+Individual adapters generally need to be provided operational parameters in order to do their work. For example, a logging adapter may need\n to know the IP address and port where it's log data should be pumped.\n \n-Mixer can use a suite of adapters, and each requires separate configuration parameters.\n-Here's an example showing how to configure an adapter:\n+Here is an example showing how to configure an adapter of kind = `listchecker`. The listchecker adapter checks the input value against a list.\n+If the adapter is configured for a whitelist, it returns success if the input value is found in the list.\n \n ```yaml\n-adapters:\n-  - name: myListChecker     # user-defined name for this block of config\n-    kind: lists             # kind of aspect this adapter can be used with\n-    impl: ipListChecker     # name of the particular adapter component to use\n-    params:\n-      publisherUrl: https://mylistserver:912\n-      refreshInterval: 60s\n+apiVersion: config.istio.io/v1alpha2\n+kind: listchecker\n+metadata:\n+  name: staticversion\n+  namespace: istio-system\n+spec:\n+  providerUrl: http://white_list_registry/\n+  blacklist: false\n ```\n \n-The `name` field gives a name to the block of adapter configuration so it can be referenced from elsewhere. The\n-`kind` field indicates the [aspect kind](#aspects) that this configuration applies to.\n-The `impl` field gives the name of the adapter being configured. Finally, the `params` section is where the\n-actual adapter-specific configuration parameters are specified. In this case, this is configuring the URL the \n-adapter should use in its queries and defines the interval at which it should refresh its local caches.\n+`{metadata.name}.{kind}.{metadata.namespace}` is the fully qualified name of a handler. The fully qualified name of the above handler is \n+`staticversion.listchecker.istio-system` and it must be unique.\n+An adapter defines the schema of the `spec` section as a proto message.\n \n-For each available adapter implementation, you can define any number of independent configuration blocks. This allows the \n-same adapter\n-to be used multiple times within a single deployment. Depending on the situation, such as which service is involved, one\n-configuration block will be used versus another. For example, here are two more configuration blocks that can coexist\n-with the previous one:\n+Spec typically includes connection information necessary to connect to an external systems. It may also include configuration to process the request instance\n+delivered to it by Mixer. \n \n-```yaml\n-adapters:\n-  - name: mySecondaryListChecker\n-    kind: lists\n-    impl: ipListChecker\n-    params:\n-      publisherUrl: https://mysecondlistserver:912\n-      refreshInterval: 3600s\n-  - name: myTernaryListChecker\n-    kind: lists\n-    impl: genericListChecker\n-    params:\n-      listEntries:\n-        \"400\"\n-        \"401\"\n-        \"402\"\n-```\n-\n-And yet one more:\n+Some adapters implement functionality that goes beyond connecting Mixer to a backend.\n+For example `prometheus` adapter consumes metrics observations and aggregates them as distributions or counters in a configurable way.\n \n ```yaml\n-adapters:\n-  - name: myMetricsCollector\n-    kind: metrics\n-    impl: prometheus\n+apiVersion: config.istio.io/v1alpha2\n+kind: prometheus\n+metadata:\n+  name: handler\n+  namespace: istio-system\n+spec:\n+  metrics:\n+  - name: request_count\n+    instance_name: requestcount.metric.istio-system\n+    kind: COUNTER\n+    label_names:\n+    - destination_service\n+    - destination_version\n+    - response_code\n+  - name: request_duration\n+    instance_name: requestduration.metric.istio-system\n+    kind: DISTRIBUTION\n+    label_names:\n+    - destination_service\n+    - destination_version\n+    - response_code\n+    buckets:\n+      explicit_buckets:\n+        bounds: [0.005, 0.01, 0.025, 0.05, 0.1, 0.25, 0.5, 1, 2.5, 5, 10]\n ```\n \n-This configures an adapter that reports data to the Prometheus system. This adapter doesn't\n-require any custom parameters and so doesn't have a `params` stanza.\n-\n Each adapter defines its own particular format of configuration data. The exhaustive set of\n adapters and their specific configuration formats can be found [here]({{home}}/docs/reference/config/mixer/adapters/).\n \n-### Aspects\n+### Instances\n+\n+Instance configuration specifies the request mapping from attributes to adapter inputs. An adapter consumes a set of instance types.\n+The prometheus adapter from the previous section consumes instances from the metrics template.\n \n-Aspects define high-level configuration (what is sometimes called intent-based configuration),\n-independent of the particular implementation details of a specific adapter type. Whereas adapters focus\n-on *how* to do something, aspects focus on *what* to do.\n+```go\n+// Metric represents a single piece of data to report.\n+type MetricInstanceParam struct {\n+  // The expression for the value being reported.\n+  Value                       string            \n+  // The unique identity of the particular metric to report.\n+  // Maps from a dimension name to an expression.\n+  Dimensions                  map[string]string \n \n-Let's look at the definition of an aspect:\n+\n+  MonitoredResourceType       string            \n+  MonitoredResourceDimensions map[string]string \n+}\n+```\n+The following is an example of a metrics instance configuration that produces the `requestduration` metric.\n \n ```yaml\n-aspects:\n-- kind: lists               # the aspect's kind\n-  adapter: myListChecker    # the adapter to use to implement this aspect \n-  params:\n-    blacklist: true\n-    checkExpression: source.ip\n+apiVersion: config.istio.io/v1alpha2\n+kind: metric\n+metadata:\n+  name: requestduration\n+  namespace: istio-system\n+spec:\n+  value: response.duration | \"0ms\"\n+  dimensions:\n+    destination_service: destination.service | \"unknown\"\n+    destination_version: destination.labels[\"version\"] | \"unknown\"\n+    response_code: response.code | 200\n+  monitored_resource_type: '\"UNSPECIFIED\"'\n ```\n+Note that all the dimensions expected in the handler configuration are specified in the mapping.\n \n-The `kind` field distinguishes the behavior of the aspect being defined. The supported kinds\n-of aspects are shown in the following table.\n-\n-|Kind             |Description\n-|-----------------|-----------\n-|quotas           |Enforce quotas and rate limits.\n-|metrics          |Produce metrics.\n-|lists            |Enforce simple whitelist- or blacklist-based access control.\n-|access-logs      |Produces fixed-format access logs for every request.\n-|application-logs |Produces flexible application logs for every request.\n-|attributes       |Produces supplementary attributes for every request.\n-|denials          |Systematically produces a predictable error code.\n-\n-In the example above, the aspect declaration specifies the `lists` kind which indicates\n-we're configuring an aspect whose purpose is to enable the use of whitelists or\n-blacklists as a simple form of access control.\n-\n-The `adapter` field indicates the block of adapter configuration to associate with this\n-aspect. Aspects are always associated with specific adapters in this way, since an\n-adapter is responsible for actually carrying out the work represented by an aspect's\n-configuration. In this particular case, the specific adapter chosen determines the\n-list to use in order to perform the aspect's list checking function.\n-\n-By separating aspect configuration from adapter configuration, it makes it possible to \n-easily change the adapter used to implement a particular aspect's behavior without having\n-to change the aspect itself. Additionally, many aspects can reference the same adapter\n-configuration.\n-\n-The `params` stanza is where you enter kind-specific configuration parameters. In\n-the case of the `lists` kind, the configuration parameters specify whether the list\n-is a blacklist (entries on the list lead to denials) as opposed to a whitelist\n-(entries not on the list lead to denials). The `checkExpression` field indicates the\n-attribute to use at request time to get the symbol to check against the associated\n-adapter's list\n-\n-Here's another aspect, this time it is a `metrics` aspect:\n+Each template defines its own particular format of configuration data. The exhaustive set of\n+templates and their specific configuration formats can be found [here]({{home}}/docs/reference/config/mixer/template/).\n+\n+### Rules\n+\n+Rules specify when a particular handler is invoked with a specific instance configuration.\n+Consider an example where you want to deliver the `requestduration` metric to the prometheus handler if\n+ destination service is `service1` and `x-user` request header has a specific value.\n \n ```yaml\n-aspects:\n-- kind: metrics\n-  adapter: myMetricsCollector\n-  params:\n-    metrics:\n-    - descriptorName: request_count\n-      value: \"1\"\n-      labels:\n-        source: source.name\n-        destination: destination.name\n-        service: api.name\n-        responseCode: response.code\n+apiVersion: config.istio.io/v1alpha2\n+kind: rule\n+metadata:\n+  name: promhttp\n+  namespace: istio-system\n+spec:\n+  match: destination.service == \"service1.ns.svc.cluster.local\" && request.headers[\"x-user\"] == \"user1\"\n+  actions:\n+  - handler: handler.prometheus\n+    instances:\n+    - requestduration.metric.istio-system\n ```\n+A rule contains a `match` predicate expression and a list of actions to perform if the predicate is true. \n+An action specifies the list of instances to be delivered to a handler. \n+A rules must use the fully qualified names of handlers and instances.\n+If the rule, handlers, and instances are all in the same namespace, the namespace suffix can be elided from the fully qualified name as seen in `handler.prometheus`.\n \n-This defines an aspect that produces metrics which are sent to the myMetricsCollector adapter,\n-which was defined previously. The `metrics` stanza defines the set of metrics that are \n-generated during request processing for this aspect. The `descriptorName` field specifies\n-the name of a *descriptor* which is a separate configuration block, described [below](#descriptors), which declares\n-the kind of metric this is. The `value` field and the four label fields describe which attributes to use\n-at request time in order to produce the metric.\n+The match predicate is an [expression]({{home}}/docs/reference/config/mixer/expression-language.html) using the Mixer expression language.\n \n-Each aspect kind defines its own particular format of configuration\n-data.\n-    \n #### Attribute expressions\n \n Mixer features a number of independent [request processing phases](./mixer.html#request-phases).\n-The *Attribute Processing* phase is responsible for ingesting a set of attributes and producing the adapter parameters \n+The *Attribute Processing* phase is responsible for ingesting a set of attributes and producing template instances\n necessary to invoke individual adapters. The phase operates by evaluating a series of *attribute expressions*.\n \n-We've already seen a few simple attribute expressions in the previous examples. Specifically:\n+We've already seen a few simple attribute expressions in the previous examples:","path":"_docs/concepts/policy-and-control/mixer-config.md","position":315,"original_position":315,"commit_id":"887fde56fc7a8cd5ee6168694972eec8f23f24a6","original_commit_id":"887fde56fc7a8cd5ee6168694972eec8f23f24a6","user":{"login":"Rachael-Graham","id":29711887,"avatar_url":"https://avatars0.githubusercontent.com/u/29711887?v=4","gravatar_id":"","url":"https://api.github.com/users/Rachael-Graham","html_url":"https://github.com/Rachael-Graham","followers_url":"https://api.github.com/users/Rachael-Graham/followers","following_url":"https://api.github.com/users/Rachael-Graham/following{/other_user}","gists_url":"https://api.github.com/users/Rachael-Graham/gists{/gist_id}","starred_url":"https://api.github.com/users/Rachael-Graham/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Rachael-Graham/subscriptions","organizations_url":"https://api.github.com/users/Rachael-Graham/orgs","repos_url":"https://api.github.com/users/Rachael-Graham/repos","events_url":"https://api.github.com/users/Rachael-Graham/events{/privacy}","received_events_url":"https://api.github.com/users/Rachael-Graham/received_events","type":"User","site_admin":false},"body":"You've (according to the Istio styleguide, you instead of we)","created_at":"2017-09-26T22:08:54Z","updated_at":"2017-09-26T22:11:07Z","html_url":"https://github.com/istio/istio.github.io/pull/527#discussion_r141198396","pull_request_url":"https://api.github.com/repos/istio/istio.github.io/pulls/527","author_association":"CONTRIBUTOR","_links":{"self":{"href":"https://api.github.com/repos/istio/istio.github.io/pulls/comments/141198396"},"html":{"href":"https://github.com/istio/istio.github.io/pull/527#discussion_r141198396"},"pull_request":{"href":"https://api.github.com/repos/istio/istio.github.io/pulls/527"}}},"pull_request":{"url":"https://api.github.com/repos/istio/istio.github.io/pulls/527","id":143003208,"html_url":"https://github.com/istio/istio.github.io/pull/527","diff_url":"https://github.com/istio/istio.github.io/pull/527.diff","patch_url":"https://github.com/istio/istio.github.io/pull/527.patch","issue_url":"https://api.github.com/repos/istio/istio.github.io/issues/527","number":527,"state":"open","locked":false,"title":"Update mixer-config.md","user":{"login":"mandarjog","id":800375,"avatar_url":"https://avatars2.githubusercontent.com/u/800375?v=4","gravatar_id":"","url":"https://api.github.com/users/mandarjog","html_url":"https://github.com/mandarjog","followers_url":"https://api.github.com/users/mandarjog/followers","following_url":"https://api.github.com/users/mandarjog/following{/other_user}","gists_url":"https://api.github.com/users/mandarjog/gists{/gist_id}","starred_url":"https://api.github.com/users/mandarjog/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mandarjog/subscriptions","organizations_url":"https://api.github.com/users/mandarjog/orgs","repos_url":"https://api.github.com/users/mandarjog/repos","events_url":"https://api.github.com/users/mandarjog/events{/privacy}","received_events_url":"https://api.github.com/users/mandarjog/received_events","type":"User","site_admin":false},"body":"1. Update mixer config to explain handler / instance / rule triad\r\n2. Remove aspect related verbiage and examples.","created_at":"2017-09-25T22:57:30Z","updated_at":"2017-09-26T22:11:07Z","closed_at":null,"merged_at":null,"merge_commit_sha":"cdd743beda1f707a66049377b8ed98efda2543de","assignee":null,"assignees":[],"requested_reviewers":[{"login":"guptasu","id":11448595,"avatar_url":"https://avatars3.githubusercontent.com/u/11448595?v=4","gravatar_id":"","url":"https://api.github.com/users/guptasu","html_url":"https://github.com/guptasu","followers_url":"https://api.github.com/users/guptasu/followers","following_url":"https://api.github.com/users/guptasu/following{/other_user}","gists_url":"https://api.github.com/users/guptasu/gists{/gist_id}","starred_url":"https://api.github.com/users/guptasu/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/guptasu/subscriptions","organizations_url":"https://api.github.com/users/guptasu/orgs","repos_url":"https://api.github.com/users/guptasu/repos","events_url":"https://api.github.com/users/guptasu/events{/privacy}","received_events_url":"https://api.github.com/users/guptasu/received_events","type":"User","site_admin":false}],"milestone":null,"commits_url":"https://api.github.com/repos/istio/istio.github.io/pulls/527/commits","review_comments_url":"https://api.github.com/repos/istio/istio.github.io/pulls/527/comments","review_comment_url":"https://api.github.com/repos/istio/istio.github.io/pulls/comments{/number}","comments_url":"https://api.github.com/repos/istio/istio.github.io/issues/527/comments","statuses_url":"https://api.github.com/repos/istio/istio.github.io/statuses/887fde56fc7a8cd5ee6168694972eec8f23f24a6","head":{"label":"mandarjog:mixer_cfg","ref":"mixer_cfg","sha":"887fde56fc7a8cd5ee6168694972eec8f23f24a6","user":{"login":"mandarjog","id":800375,"avatar_url":"https://avatars2.githubusercontent.com/u/800375?v=4","gravatar_id":"","url":"https://api.github.com/users/mandarjog","html_url":"https://github.com/mandarjog","followers_url":"https://api.github.com/users/mandarjog/followers","following_url":"https://api.github.com/users/mandarjog/following{/other_user}","gists_url":"https://api.github.com/users/mandarjog/gists{/gist_id}","starred_url":"https://api.github.com/users/mandarjog/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mandarjog/subscriptions","organizations_url":"https://api.github.com/users/mandarjog/orgs","repos_url":"https://api.github.com/users/mandarjog/repos","events_url":"https://api.github.com/users/mandarjog/events{/privacy}","received_events_url":"https://api.github.com/users/mandarjog/received_events","type":"User","site_admin":false},"repo":{"id":90090063,"name":"mandarjog.github.io","full_name":"mandarjog/mandarjog.github.io","owner":{"login":"mandarjog","id":800375,"avatar_url":"https://avatars2.githubusercontent.com/u/800375?v=4","gravatar_id":"","url":"https://api.github.com/users/mandarjog","html_url":"https://github.com/mandarjog","followers_url":"https://api.github.com/users/mandarjog/followers","following_url":"https://api.github.com/users/mandarjog/following{/other_user}","gists_url":"https://api.github.com/users/mandarjog/gists{/gist_id}","starred_url":"https://api.github.com/users/mandarjog/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mandarjog/subscriptions","organizations_url":"https://api.github.com/users/mandarjog/orgs","repos_url":"https://api.github.com/users/mandarjog/repos","events_url":"https://api.github.com/users/mandarjog/events{/privacy}","received_events_url":"https://api.github.com/users/mandarjog/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/mandarjog/mandarjog.github.io","description":"Source for the istio.io site","fork":true,"url":"https://api.github.com/repos/mandarjog/mandarjog.github.io","forks_url":"https://api.github.com/repos/mandarjog/mandarjog.github.io/forks","keys_url":"https://api.github.com/repos/mandarjog/mandarjog.github.io/keys{/key_id}","collaborators_url":"https://api.github.com/repos/mandarjog/mandarjog.github.io/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/mandarjog/mandarjog.github.io/teams","hooks_url":"https://api.github.com/repos/mandarjog/mandarjog.github.io/hooks","issue_events_url":"https://api.github.com/repos/mandarjog/mandarjog.github.io/issues/events{/number}","events_url":"https://api.github.com/repos/mandarjog/mandarjog.github.io/events","assignees_url":"https://api.github.com/repos/mandarjog/mandarjog.github.io/assignees{/user}","branches_url":"https://api.github.com/repos/mandarjog/mandarjog.github.io/branches{/branch}","tags_url":"https://api.github.com/repos/mandarjog/mandarjog.github.io/tags","blobs_url":"https://api.github.com/repos/mandarjog/mandarjog.github.io/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/mandarjog/mandarjog.github.io/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/mandarjog/mandarjog.github.io/git/refs{/sha}","trees_url":"https://api.github.com/repos/mandarjog/mandarjog.github.io/git/trees{/sha}","statuses_url":"https://api.github.com/repos/mandarjog/mandarjog.github.io/statuses/{sha}","languages_url":"https://api.github.com/repos/mandarjog/mandarjog.github.io/languages","stargazers_url":"https://api.github.com/repos/mandarjog/mandarjog.github.io/stargazers","contributors_url":"https://api.github.com/repos/mandarjog/mandarjog.github.io/contributors","subscribers_url":"https://api.github.com/repos/mandarjog/mandarjog.github.io/subscribers","subscription_url":"https://api.github.com/repos/mandarjog/mandarjog.github.io/subscription","commits_url":"https://api.github.com/repos/mandarjog/mandarjog.github.io/commits{/sha}","git_commits_url":"https://api.github.com/repos/mandarjog/mandarjog.github.io/git/commits{/sha}","comments_url":"https://api.github.com/repos/mandarjog/mandarjog.github.io/comments{/number}","issue_comment_url":"https://api.github.com/repos/mandarjog/mandarjog.github.io/issues/comments{/number}","contents_url":"https://api.github.com/repos/mandarjog/mandarjog.github.io/contents/{+path}","compare_url":"https://api.github.com/repos/mandarjog/mandarjog.github.io/compare/{base}...{head}","merges_url":"https://api.github.com/repos/mandarjog/mandarjog.github.io/merges","archive_url":"https://api.github.com/repos/mandarjog/mandarjog.github.io/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/mandarjog/mandarjog.github.io/downloads","issues_url":"https://api.github.com/repos/mandarjog/mandarjog.github.io/issues{/number}","pulls_url":"https://api.github.com/repos/mandarjog/mandarjog.github.io/pulls{/number}","milestones_url":"https://api.github.com/repos/mandarjog/mandarjog.github.io/milestones{/number}","notifications_url":"https://api.github.com/repos/mandarjog/mandarjog.github.io/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/mandarjog/mandarjog.github.io/labels{/name}","releases_url":"https://api.github.com/repos/mandarjog/mandarjog.github.io/releases{/id}","deployments_url":"https://api.github.com/repos/mandarjog/mandarjog.github.io/deployments","created_at":"2017-05-03T00:09:38Z","updated_at":"2017-05-08T22:43:52Z","pushed_at":"2017-09-25T23:52:25Z","git_url":"git://github.com/mandarjog/mandarjog.github.io.git","ssh_url":"git@github.com:mandarjog/mandarjog.github.io.git","clone_url":"https://github.com/mandarjog/mandarjog.github.io.git","svn_url":"https://github.com/mandarjog/mandarjog.github.io","homepage":"http://istio.io","size":12710,"stargazers_count":0,"watchers_count":0,"language":"JavaScript","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"istio:master","ref":"master","sha":"8cb6c168724a78dadb47b152fa13ed7d00a042d7","user":{"login":"istio","id":23534644,"avatar_url":"https://avatars1.githubusercontent.com/u/23534644?v=4","gravatar_id":"","url":"https://api.github.com/users/istio","html_url":"https://github.com/istio","followers_url":"https://api.github.com/users/istio/followers","following_url":"https://api.github.com/users/istio/following{/other_user}","gists_url":"https://api.github.com/users/istio/gists{/gist_id}","starred_url":"https://api.github.com/users/istio/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/istio/subscriptions","organizations_url":"https://api.github.com/users/istio/orgs","repos_url":"https://api.github.com/users/istio/repos","events_url":"https://api.github.com/users/istio/events{/privacy}","received_events_url":"https://api.github.com/users/istio/received_events","type":"Organization","site_admin":false},"repo":{"id":82706976,"name":"istio.github.io","full_name":"istio/istio.github.io","owner":{"login":"istio","id":23534644,"avatar_url":"https://avatars1.githubusercontent.com/u/23534644?v=4","gravatar_id":"","url":"https://api.github.com/users/istio","html_url":"https://github.com/istio","followers_url":"https://api.github.com/users/istio/followers","following_url":"https://api.github.com/users/istio/following{/other_user}","gists_url":"https://api.github.com/users/istio/gists{/gist_id}","starred_url":"https://api.github.com/users/istio/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/istio/subscriptions","organizations_url":"https://api.github.com/users/istio/orgs","repos_url":"https://api.github.com/users/istio/repos","events_url":"https://api.github.com/users/istio/events{/privacy}","received_events_url":"https://api.github.com/users/istio/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/istio/istio.github.io","description":"Source for the istio.io site","fork":false,"url":"https://api.github.com/repos/istio/istio.github.io","forks_url":"https://api.github.com/repos/istio/istio.github.io/forks","keys_url":"https://api.github.com/repos/istio/istio.github.io/keys{/key_id}","collaborators_url":"https://api.github.com/repos/istio/istio.github.io/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/istio/istio.github.io/teams","hooks_url":"https://api.github.com/repos/istio/istio.github.io/hooks","issue_events_url":"https://api.github.com/repos/istio/istio.github.io/issues/events{/number}","events_url":"https://api.github.com/repos/istio/istio.github.io/events","assignees_url":"https://api.github.com/repos/istio/istio.github.io/assignees{/user}","branches_url":"https://api.github.com/repos/istio/istio.github.io/branches{/branch}","tags_url":"https://api.github.com/repos/istio/istio.github.io/tags","blobs_url":"https://api.github.com/repos/istio/istio.github.io/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/istio/istio.github.io/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/istio/istio.github.io/git/refs{/sha}","trees_url":"https://api.github.com/repos/istio/istio.github.io/git/trees{/sha}","statuses_url":"https://api.github.com/repos/istio/istio.github.io/statuses/{sha}","languages_url":"https://api.github.com/repos/istio/istio.github.io/languages","stargazers_url":"https://api.github.com/repos/istio/istio.github.io/stargazers","contributors_url":"https://api.github.com/repos/istio/istio.github.io/contributors","subscribers_url":"https://api.github.com/repos/istio/istio.github.io/subscribers","subscription_url":"https://api.github.com/repos/istio/istio.github.io/subscription","commits_url":"https://api.github.com/repos/istio/istio.github.io/commits{/sha}","git_commits_url":"https://api.github.com/repos/istio/istio.github.io/git/commits{/sha}","comments_url":"https://api.github.com/repos/istio/istio.github.io/comments{/number}","issue_comment_url":"https://api.github.com/repos/istio/istio.github.io/issues/comments{/number}","contents_url":"https://api.github.com/repos/istio/istio.github.io/contents/{+path}","compare_url":"https://api.github.com/repos/istio/istio.github.io/compare/{base}...{head}","merges_url":"https://api.github.com/repos/istio/istio.github.io/merges","archive_url":"https://api.github.com/repos/istio/istio.github.io/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/istio/istio.github.io/downloads","issues_url":"https://api.github.com/repos/istio/istio.github.io/issues{/number}","pulls_url":"https://api.github.com/repos/istio/istio.github.io/pulls{/number}","milestones_url":"https://api.github.com/repos/istio/istio.github.io/milestones{/number}","notifications_url":"https://api.github.com/repos/istio/istio.github.io/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/istio/istio.github.io/labels{/name}","releases_url":"https://api.github.com/repos/istio/istio.github.io/releases{/id}","deployments_url":"https://api.github.com/repos/istio/istio.github.io/deployments","created_at":"2017-02-21T17:19:49Z","updated_at":"2017-09-10T14:29:51Z","pushed_at":"2017-09-26T22:07:16Z","git_url":"git://github.com/istio/istio.github.io.git","ssh_url":"git@github.com:istio/istio.github.io.git","clone_url":"https://github.com/istio/istio.github.io.git","svn_url":"https://github.com/istio/istio.github.io","homepage":"https://istio.io/","size":15150,"stargazers_count":21,"watchers_count":21,"language":"JavaScript","has_issues":true,"has_projects":false,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":69,"mirror_url":null,"open_issues_count":42,"forks":69,"open_issues":42,"watchers":21,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/istio/istio.github.io/pulls/527"},"html":{"href":"https://github.com/istio/istio.github.io/pull/527"},"issue":{"href":"https://api.github.com/repos/istio/istio.github.io/issues/527"},"comments":{"href":"https://api.github.com/repos/istio/istio.github.io/issues/527/comments"},"review_comments":{"href":"https://api.github.com/repos/istio/istio.github.io/pulls/527/comments"},"review_comment":{"href":"https://api.github.com/repos/istio/istio.github.io/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/istio/istio.github.io/pulls/527/commits"},"statuses":{"href":"https://api.github.com/repos/istio/istio.github.io/statuses/887fde56fc7a8cd5ee6168694972eec8f23f24a6"}},"author_association":"CONTRIBUTOR"}}
{"actor":{"display_login":"Rachael-Graham"}}