mirror of https://github.com/istio/istio.io.git
9 lines
58 KiB
HTML
9 lines
58 KiB
HTML
<!DOCTYPE html><html lang="en" itemscope itemtype="https://schema.org/WebPage"><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><meta name="theme-color" content="#466BB0"/><meta name="title" content="Mixer"><meta name="description" content="API definitions to interact with Mixer"><meta name="og:title" content="Mixer"><meta name="og:description" content="API definitions to interact with Mixer"><meta name="og:url" content="/docs/reference/api/istio.mixer.v1.html"><meta name="og.site_name" content="Istio"><title>Istioldie 0.6 / Mixer</title><script> window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new Date; ga('create', 'UA-98480406-2', 'auto'); ga('send', 'pageview'); </script> <script async src='https://www.google-analytics.com/analytics.js'></script><link rel="alternate" type="application/rss+xml" title="Istio Blog RSS" href="/v0.6/feed.xml"><link rel="shortcut icon" href="/v0.6/favicons/favicon.ico" ><link rel="apple-touch-icon" href="/v0.6/favicons/apple-touch-icon-180x180.png" sizes="180x180"><link rel="icon" type="image/png" href="/v0.6/favicons/favicon-16x16.png" sizes="16x16"><link rel="icon" type="image/png" href="/v0.6/favicons/favicon-32x32.png" sizes="32x32"><link rel="icon" type="image/png" href="/v0.6/favicons/android-36x36.png" sizes="36x36"><link rel="icon" type="image/png" href="/v0.6/favicons/android-48x48.png" sizes="48x48"><link rel="icon" type="image/png" href="/v0.6/favicons/android-72x72.png" sizes="72x72"><link rel="icon" type="image/png" href="/v0.6/favicons/android-96x196.png" sizes="96x196"><link rel="icon" type="image/png" href="/v0.6/favicons/android-144x144.png" sizes="144x144"><link rel="icon" type="image/png" href="/v0.6/favicons/android-192x192.png" sizes="192x192"><link rel="manifest" href="/v0.6/manifest.json"><meta name="apple-mobile-web-app-title" content="Istio"><meta name="application-name" content="Istio"><link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:400,100,100italic,300,300italic,400italic,500,500italic,700,700italic,900,900italic"><link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous"><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.0.6/css/all.css"><link rel="stylesheet" href="/v0.6/css/light_theme.css" title="light"><link rel="alternate stylesheet" href="/v0.6/css/dark_theme.css" title="dark"> <script src="/v0.6/js/styleSwitcher.min.js"></script></head><body class="language-unknown theme-unknown"><header role="banner"><nav class="navbar navbar-expand-md navbar-dark fixed-top bg-dark"> <a class="navbar-brand" href="/v0.6/" style="visibility: visible"> <img class="logo" src="/v0.6/img/istio-logo.svg" alt="Istio Logo"/> <span class="brand-name">Istioldie 0.6</span> </a> <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarCollapse" aria-controls="navbarCollapse" aria-expanded="false" aria-label="Toggle navigation"> <span class="navbar-toggler-icon"></span> </button><div class="collapse navbar-collapse justify-content-end" id="navbarCollapse"><ul class="navbar-nav"><li class="nav-item"> <a class="nav-link " href="/v0.6/about/intro.html">About</a></li><li class="nav-item"> <a class="nav-link " href="/v0.6/blog/2018/traffic-mirroring.html">Blog</a></li><li class="nav-item"> <a class="nav-link active" href="/v0.6/docs/">Docs</a></li><li class="nav-item"> <a class="nav-link " href="/v0.6/help/">Help</a></li><li class="nav-item"> <a class="nav-link " href="/v0.6/community.html">Community</a></li><li class="nav-item dropdown" id="gearDropdown" style="white-space: nowrap"> <a href="" class="nav-link dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> <i style="width: 1em" class='fa fa-lg fa-cog'></i> </a><ul class="dropdown-menu" aria-labelledby="gearDropdown"><h6 class="dropdown-header">Other versions of this site</h6><li> <a href="https://istio.io">Current Release</a></li><li> <a href="https://preliminary.istio.io">Next Release</a></li><li> <a href="https://archive.istio.io">Older Releases</a></li><li class="dropdown-divider"></li><li> <i class='fa fa-check light'></i> <a href="" onclick="setActiveStyleSheet('light');return false;">Light Theme</a></li><li> <i class='fa fa-check dark'></i> <a href="" onclick="setActiveStyleSheet('dark');return false;">Dark Theme</a></li></ul></li></ul><form name="cse" id="searchbox" class="form-inline justify-content-end" role="search"> <input type="hidden" name="cx" value="013699703217164175118:iwwf17ikgf4" /> <input type="hidden" name="ie" value="utf-8" /> <input type="hidden" name="hl" value="en" /><div class="input-group"> <input name="q" class="form-control search-box" type="text" size="30" /> <button class="btn btn-search input-group-addon my-2 my-sm-0 fa fa-search" type="submit"></button></div></form></div></nav></header><div class="container-fluid"><div class="row row-offcanvas row-offcanvas-left"><div class="col-6 col-md-3 col-xl-2 sidebar-offcanvas"><nav class="sidebar"><div class="spacer"></div><div class="directory" role="tablist"><div class="card"><div class="card-header" role="tab" id="header1"> <a data-toggle="collapse" href="#collapse1" title="Concepts help you learn about the different parts of the Istio system and the abstractions it uses." role="button" aria-controls="collapse1"><div> Concepts</div></a></div><div id="collapse1" class="collapse" data-parent="#sidebar" role="tabpanel" aria-labelledby="header1"><div class="card-body"><ul class="tree"><li class="sublist"> <label class='tree-toggle'> <i class='fa fa-lg fa-caret-right'></i> <a class="" title="A broad overview of the Istio system." href="/v0.6/docs/concepts/what-is-istio">What is Istio?</a> </label><ul class="tree collapse"><li> <a title="Provides a conceptual introduction to Istio, including the problems it solves and its high-level architecture." href="/v0.6/docs/concepts/what-is-istio/overview.html">Overview</a></li><li> <a title="Describes the core principles that Istio's design adheres to." href="/v0.6/docs/concepts/what-is-istio/goals.html">Design Goals</a></li></ul></li><li class="sublist"> <label class='tree-toggle'> <i class='fa fa-lg fa-caret-right'></i> <a class="" title="Describes the various Istio features focused on traffic routing and control." href="/v0.6/docs/concepts/traffic-management">Traffic Management</a> </label><ul class="tree collapse"><li> <a title="Provides a conceptual overview of traffic management in Istio and the features it enables." href="/v0.6/docs/concepts/traffic-management/overview.html">Overview</a></li><li> <a title="Introduces Pilot, the component responsible for managing a distributed deployment of Envoy proxies in the service mesh." href="/v0.6/docs/concepts/traffic-management/pilot.html">Pilot</a></li><li> <a title="Describes how requests are routed between services in an Istio service mesh." href="/v0.6/docs/concepts/traffic-management/request-routing.html">Request Routing</a></li><li> <a title="Describes how traffic is load balanced across instances of a service in the mesh." href="/v0.6/docs/concepts/traffic-management/load-balancing.html">Discovery & Load Balancing</a></li><li> <a title="An overview of failure recovery capabilities in Envoy that can be leveraged by unmodified applications to improve robustness and prevent cascading failures." href="/v0.6/docs/concepts/traffic-management/handling-failures.html">Handling Failures</a></li><li> <a title="Introduces the idea of systematic fault injection that can be used to uncover conflicting failure recovery policies across services." href="/v0.6/docs/concepts/traffic-management/fault-injection.html">Fault Injection</a></li><li> <a title="Provides a high-level overview of the domain-specific language used by Istio to configure traffic management rules in the service mesh." href="/v0.6/docs/concepts/traffic-management/rules-configuration.html">Rules Configuration</a></li></ul></li><li class="sublist"> <label class='tree-toggle'> <i class='fa fa-lg fa-caret-right'></i> <a class="" title="Describes Istio's authorization and authentication functionality." href="/v0.6/docs/concepts/security">Security</a> </label><ul class="tree collapse"><li> <a title="Describes Istio's mutual TLS authentication architecture which provides a strong service identity and secure communication channels between services." href="/v0.6/docs/concepts/security/mutual-tls.html">Mutual TLS Authentication</a></li><li> <a title="Describes Istio RBAC which provides access control for services in Istio Mesh." href="/v0.6/docs/concepts/security/rbac.html">Istio Role-Based Access Control (RBAC)</a></li></ul></li><li class="sublist"> <label class='tree-toggle'> <i class='fa fa-lg fa-caret-right'></i> <a class="" title="Introduces the policy control mechanisms." href="/v0.6/docs/concepts/policy-and-control">Policies and Control</a> </label><ul class="tree collapse"><li> <a title="Explains the important notion of attributes, which is a central mechanism for how policies and control are applied to services within the mesh." href="/v0.6/docs/concepts/policy-and-control/attributes.html">Attributes</a></li><li> <a title="Architectural deep-dive into the design of Mixer, which provides the policy and control mechanisms within the service mesh." href="/v0.6/docs/concepts/policy-and-control/mixer.html">Mixer</a></li><li> <a title="An overview of the key concepts used to configure Mixer." href="/v0.6/docs/concepts/policy-and-control/mixer-config.html">Mixer Configuration</a></li></ul></li></ul></div></div></div><div class="card"><div class="card-header" role="tab" id="header20"> <a data-toggle="collapse" href="#collapse20" title="Setup contains instructions for installing the Istio control plane in various environments (e.g., Kubernetes, Consul, etc.), as well as instructions for installing the sidecar in the application deployment." role="button" aria-controls="collapse20"><div> Setup</div></a></div><div id="collapse20" class="collapse" data-parent="#sidebar" role="tabpanel" aria-labelledby="header20"><div class="card-body"><ul class="tree"><li class="sublist"> <label class='tree-toggle'> <i class='fa fa-lg fa-caret-right'></i> <a class="" title="Instructions for installing the Istio control plane on Kubernetes and adding VMs into the mesh." href="/v0.6/docs/setup/kubernetes">Kubernetes</a> </label><ul class="tree collapse"><li> <a title="Quick Start instructions to setup the Istio service mesh in a Kubernetes cluster." href="/v0.6/docs/setup/kubernetes/quick-start.html">Quick Start</a></li><li> <a title="Quick Start instructions to setup the Istio service using Google Kubernetes Engine (GKE)" href="/v0.6/docs/setup/kubernetes/quick-start-gke-dm.html">Quick Start with Google Kubernetes Engine</a></li><li> <a title="Instructions for the setup and configuration of Istio using the Helm package manager." href="/v0.6/docs/setup/kubernetes/helm.html">Istio Helm Chart Instructions</a></li><li> <a title="Instructions on using the included Ansible playbook to perform installation." href="/v0.6/docs/setup/kubernetes/ansible-install.html">Installing with Ansible</a></li><li> <a title="Instructions for installing the Istio sidecar in application pods automatically using the sidecar injector webhook or manually using istioctl CLI." href="/v0.6/docs/setup/kubernetes/sidecar-injection.html">Installing Istio Sidecar</a></li><li> <a title="Instructions for integrating VMs and bare metal hosts into an Istio mesh deployed on Kubernetes." href="/v0.6/docs/setup/kubernetes/mesh-expansion.html">Istio Mesh Expansion</a></li></ul></li><li class="sublist"> <label class='tree-toggle'> <i class='fa fa-lg fa-caret-right'></i> <a class="" title="Instructions for installing the Istio control plane in a Consul based environment, with or without Nomad." href="/v0.6/docs/setup/consul">Nomad & Consul</a> </label><ul class="tree collapse"><li> <a title="Quick Start instructions to setup the Istio service mesh with Docker Compose." href="/v0.6/docs/setup/consul/quick-start.html">Quick Start on Docker</a></li><li> <a title="Instructions for installing the Istio control plane in a Consul based environment, with or without Nomad." href="/v0.6/docs/setup/consul/install.html">Installation</a></li></ul></li><li class="sublist"> <label class='tree-toggle'> <i class='fa fa-lg fa-caret-right'></i> <a class="" title="Instructions for installing the Istio control plane in a Eureka based environment." href="/v0.6/docs/setup/eureka">Eureka</a> </label><ul class="tree collapse"><li> <a title="Quick Start instructions to setup the Istio service mesh with Docker Compose." href="/v0.6/docs/setup/eureka/quick-start.html">Quick Start on Docker</a></li><li> <a title="Instructions for installing the Istio control plane in an Eureka based environment." href="/v0.6/docs/setup/eureka/install.html">Installation</a></li></ul></li><li class="sublist"> <label class='tree-toggle'> <i class='fa fa-lg fa-caret-right'></i> <a class="" title="Instructions for installing the Istio control plane in Cloud Foundry." href="/v0.6/docs/setup/cloudfoundry">Cloud Foundry</a> </label><ul class="tree collapse"><li> <a title="Instructions for installing the Istio control plane in Cloud Foundry." href="/v0.6/docs/setup/cloudfoundry/install.html">Installation</a></li></ul></li><li class="sublist"> <label class='tree-toggle'> <i class='fa fa-lg fa-caret-right'></i> <a class="" title="Instructions for installing the Istio control plane in Apache Mesos." href="/v0.6/docs/setup/mesos">Mesos</a> </label><ul class="tree collapse"><li> <a title="Instructions for installing the Istio control plane in Apache Mesos." href="/v0.6/docs/setup/mesos/install.html">Installation</a></li></ul></li></ul></div></div></div><div class="card"><div class="card-header" role="tab" id="header38"> <a data-toggle="collapse" href="#collapse38" title="Tasks show you how to do a single specific targeted activity with the Istio system." role="button" aria-controls="collapse38"><div> Tasks</div></a></div><div id="collapse38" class="collapse" data-parent="#sidebar" role="tabpanel" aria-labelledby="header38"><div class="card-body"><ul class="tree"><li class="sublist"> <label class='tree-toggle'> <i class='fa fa-lg fa-caret-right'></i> <a class="" title="Describes tasks that demonstrate traffic routing features of Istio service mesh." href="/v0.6/docs/tasks/traffic-management">Traffic Management</a> </label><ul class="tree collapse"><li> <a title="This task shows you how to configure dynamic request routing based on weights and HTTP headers." href="/v0.6/docs/tasks/traffic-management/request-routing.html">Configuring Request Routing</a></li><li> <a title="This task shows how to inject delays and test the resiliency of your application." href="/v0.6/docs/tasks/traffic-management/fault-injection.html">Fault Injection</a></li><li> <a title="This task shows you how to migrate traffic from an old to new version of a service." href="/v0.6/docs/tasks/traffic-management/traffic-shifting.html">Traffic Shifting</a></li><li> <a title="This task shows you how to setup request timeouts in Envoy using Istio." href="/v0.6/docs/tasks/traffic-management/request-timeouts.html">Setting Request Timeouts</a></li><li> <a title="Describes how to configure Istio Ingress on Kubernetes." href="/v0.6/docs/tasks/traffic-management/ingress.html">Istio Ingress</a></li><li> <a title="Describes how to configure Istio to route traffic from services in the mesh to external services." href="/v0.6/docs/tasks/traffic-management/egress.html">Control Egress Traffic</a></li><li> <a title="Describes how to configure Istio to route TCP traffic from services in the mesh to external services." href="/v0.6/docs/tasks/traffic-management/egress-tcp.html">Control Egress TCP Traffic</a></li><li> <a title="This task demonstrates the circuit-breaking capability for resilient applications" href="/v0.6/docs/tasks/traffic-management/circuit-breaking.html">Circuit Breaking</a></li><li> <a title="Demonstrates Istio's traffic shadowing/mirroring capabilities" href="/v0.6/docs/tasks/traffic-management/mirroring.html">Mirroring</a></li></ul></li><li class="sublist"> <label class='tree-toggle'> <i class='fa fa-lg fa-caret-right'></i> <a class="" title="Describes tasks that demonstrate policy enforcement features." href="/v0.6/docs/tasks/policy-enforcement">Policy Enforcement</a> </label><ul class="tree collapse"><li> <a title="This task shows you how to use Istio to dynamically limit the traffic to a service." href="/v0.6/docs/tasks/policy-enforcement/rate-limiting.html">Enabling Rate Limits</a></li></ul></li><li class="sublist"> <label class='tree-toggle'> <i class='fa fa-lg fa-caret-right'></i> <a class="" title="Describes tasks that demonstrate how to collect telemetry information from the service mesh." href="/v0.6/docs/tasks/telemetry">Metrics, Logs, and Traces</a> </label><ul class="tree collapse"><li> <a title="How to configure the proxies to send tracing requests to Zipkin or Jaeger" href="/v0.6/docs/tasks/telemetry/distributed-tracing.html">Distributed Tracing</a></li><li> <a title="This task shows you how to configure Istio to collect metrics and logs." href="/v0.6/docs/tasks/telemetry/metrics-logs.html">Collecting Metrics and Logs</a></li><li> <a title="This task shows you how to configure Istio to collect metrics for TCP services." href="/v0.6/docs/tasks/telemetry/tcp-metrics.html">Collecting Metrics for TCP services</a></li><li> <a title="This task shows you how to query for Istio Metrics using Prometheus." href="/v0.6/docs/tasks/telemetry/querying-metrics.html">Querying Metrics from Prometheus</a></li><li> <a title="This task shows you how to setup and use the Istio Dashboard to monitor mesh traffic." href="/v0.6/docs/tasks/telemetry/using-istio-dashboard.html">Visualizing Metrics with Grafana</a></li><li> <a title="This task shows you how to generate a graph of services within an Istio mesh." href="/v0.6/docs/tasks/telemetry/servicegraph.html">Generating a Service Graph</a></li><li> <a title="This task shows you how to configure Istio to log to a Fluentd daemon" href="/v0.6/docs/tasks/telemetry/fluentd.html">Logging with Fluentd</a></li></ul></li><li class="sublist"> <label class='tree-toggle'> <i class='fa fa-lg fa-caret-right'></i> <a class="" title="Describes tasks that help securing the service mesh traffic." href="/v0.6/docs/tasks/security">Security</a> </label><ul class="tree collapse"><li> <a title="This task shows you how to verify and test Istio's automatic mutual TLS authentication." href="/v0.6/docs/tasks/security/mutual-tls.html">Testing Istio mutual TLS authentication</a></li><li> <a title="This task shows how to control access to a service using the Kubernetes labels." href="/v0.6/docs/tasks/security/basic-access-control.html">Setting up Basic Access Control</a></li><li> <a title="This task shows how to securely control access to a service using service accounts." href="/v0.6/docs/tasks/security/secure-access-control.html">Setting up Secure Access Control</a></li><li> <a title="This task shows how to set up role-based access control for services in Istio mesh." href="/v0.6/docs/tasks/security/role-based-access-control.html">Setting up Istio Role-Based Access Control</a></li><li> <a title="This task shows how to change mutual TLS authentication for a single service." href="/v0.6/docs/tasks/security/per-service-mtls.html">Per-service mutual TLS authentication enablement</a></li><li> <a title="This task shows how operators can plug existing certificate and key into Istio CA." href="/v0.6/docs/tasks/security/plugin-ca-cert.html">Plugging in CA certificate and key</a></li><li> <a title="This task shows how to enable Istio CA health check." href="/v0.6/docs/tasks/security/health-check.html">Enabling Istio CA health check</a></li></ul></li></ul></div></div></div><div class="card"><div class="card-header" role="tab" id="header67"> <a data-toggle="collapse" href="#collapse67" title="Guides include a variety of fully working example uses for Istio that you can experiment with." role="button" aria-controls="collapse67"><div> Guides</div></a></div><div id="collapse67" class="collapse" data-parent="#sidebar" role="tabpanel" aria-labelledby="header67"><div class="card-body"><ul class="tree"><li> <a title="This guide deploys a sample application composed of four separate microservices which will be used to demonstrate various features of the Istio service mesh." href="/v0.6/docs/guides/bookinfo.html">Bookinfo</a></li><li> <a title="This guide demonstrates how to use various traffic management capabilities of an Istio service mesh." href="/v0.6/docs/guides/intelligent-routing.html">Intelligent Routing</a></li><li> <a title="This sample demonstrates how to obtain uniform metrics, logs, traces across different services using Istio Mixer and Istio sidecar." href="/v0.6/docs/guides/telemetry.html">In-Depth Telemetry</a></li><li> <a title="This sample deploys the Bookinfo services across Kubernetes and a set of virtual machines, and illustrates how to use the Istio service mesh to control this infrastructure as a single mesh." href="/v0.6/docs/guides/integrating-vms.html">Integrating Virtual Machines</a></li></ul></div></div></div><div class="card"><div class="card-header" role="tab" id="header72"> <a data-toggle="collapse" href="#collapse72" title="The Reference section contains detailed authoritative reference material such as command-line options, configuration options, and API calling parameters." role="button" aria-controls="collapse72"><div> Reference</div></a></div><div id="collapse72" class="collapse show" data-parent="#sidebar" role="tabpanel" aria-labelledby="header72"><div class="card-body"><ul class="tree"><li class="sublist"> <label class='tree-toggle'> <i class='fa fa-lg fa-caret-down'></i> <a class="" title="Detailed information on API parameters." href="/v0.6/docs/reference/api">API</a> </label><ul class="tree"><li> <span class="current" title="API definitions to interact with Mixer">Mixer</span></li></ul></li><li class="sublist"> <label class='tree-toggle'> <i class='fa fa-lg fa-caret-right'></i> <a class="" title="Detailed information on configuration options." href="/v0.6/docs/reference/config">Configuration</a> </label><ul class="tree collapse"><li> <a title="Configuration affecting the service mesh as a whole" href="/v0.6/docs/reference/config/istio.mesh.v1alpha1.html">Service Mesh</a></li><li> <a title="Configuration state for the Mixer client library" href="/v0.6/docs/reference/config/istio.mixer.v1.config.client.html">Mixer Client</a></li><li> <a title="Describes the rules used to configure Mixer's policy and telemetry features." href="/v0.6/docs/reference/config/istio.mixer.v1.config.html">Policy and Telemetry Rules</a></li><li> <a title="Configuration affecting resource-based access control" href="/v0.6/docs/reference/config/istio.rbac.v1alpha1.html">RBAC</a></li><li> <a title="Configuration affecting traffic routing" href="/v0.6/docs/reference/config/istio.routing.v1alpha1.html">Route Rules Alpha 1</a></li><li class="sublist"> <label class='tree-toggle'> <i class='fa fa-lg fa-caret-right'></i> <a class="" title="Detailed information on configuration and API exposed by Mixer." href="/v0.6/docs/reference/config/mixer">Mixer</a> </label><ul class="tree collapse"><li> <a title="Definitions used when creating Mixer templates" href="/v0.6/docs/reference/config/mixer/istio.mixer.adapter.model.v1beta1.html">Mixer Adapter Model</a></li><li> <a title="Value types used with templates" href="/v0.6/docs/reference/config/mixer/istio.mixer.v1.config.descriptor.html">Value Type</a></li><li> <a title="Definitions used when creating Mixer templates" href="/v0.6/docs/reference/config/mixer/istio.mixer.v1.template.html">Template Metadata</a></li><li> <a title="Describes the base attribute vocabulary used for policy and control." href="/v0.6/docs/reference/config/mixer/attribute-vocabulary.html">Attribute Vocabulary</a></li><li> <a title="Mixer config expression language reference." href="/v0.6/docs/reference/config/mixer/expression-language.html">Expression Language</a></li></ul></li><li class="sublist"> <label class='tree-toggle'> <i class='fa fa-lg fa-caret-right'></i> <a class="" title="Generated documentation for Mixer's adapters." href="/v0.6/docs/reference/config/adapters">Adapters</a> </label><ul class="tree collapse"><li> <a title="Adapter for circonus.com's monitoring solution." href="/v0.6/docs/reference/config/adapters/circonus.html">Circonus</a></li><li> <a title="Adapter to deliver metrics to a dogstatsd agent for delivery to DataDog" href="/v0.6/docs/reference/config/adapters/datadog.html">Datadog</a></li><li> <a title="Adapter that always returns a precondition denial." href="/v0.6/docs/reference/config/adapters/denier.html">Denier</a></li><li> <a title="Adapter that delivers logs to a fluentd daemon." href="/v0.6/docs/reference/config/adapters/fluentd.html">Fluentd</a></li><li> <a title="Adapter that extracts information from a Kubernetes environment." href="/v0.6/docs/reference/config/adapters/kubernetesenv.html">Kubernetes Env</a></li><li> <a title="Adapter that performs whitelist or blacklist checks" href="/v0.6/docs/reference/config/adapters/list.html">List</a></li><li> <a title="Adapter for a simple in-memory quota management system." href="/v0.6/docs/reference/config/adapters/memquota.html">Memory quota</a></li><li> <a title="Adapter that implements an Open Policy Agent engine" href="/v0.6/docs/reference/config/adapters/opa.html">OPA</a></li><li> <a title="Adapter that exposes Istio metrics for ingestion by a Prometheus harvester." href="/v0.6/docs/reference/config/adapters/prometheus.html">Prometheus</a></li><li> <a title="Adapter that exposes Istio's Role-Based Access Control model." href="/v0.6/docs/reference/config/adapters/rbac.html">RBAC</a></li><li> <a title="Adapter for a Redis-based quota management system." href="/v0.6/docs/reference/config/adapters/redisquota.html">Redis Quota</a></li><li> <a title="Adapter that delivers logs and metrics to Google Service Control" href="/v0.6/docs/reference/config/adapters/servicecontrol.html">Service Control</a></li><li> <a title="Adapter to deliver logs and metrics to Papertrail and AppOptics backends" href="/v0.6/docs/reference/config/adapters/solarwinds.html">SolarWinds</a></li><li> <a title="Adapter to deliver logs and metrics to Stackdriver" href="/v0.6/docs/reference/config/adapters/stackdriver.html">Stackdriver</a></li><li> <a title="Adapter to deliver metrics to a StatsD backend" href="/v0.6/docs/reference/config/adapters/statsd.html">StatsD</a></li><li> <a title="Adapter for outputting logs and metrics locally." href="/v0.6/docs/reference/config/adapters/stdio.html">Stdio</a></li></ul></li><li class="sublist"> <label class='tree-toggle'> <i class='fa fa-lg fa-caret-right'></i> <a class="" title="Generated documentation for Mixer's Templates." href="/v0.6/docs/reference/config/template">Templates</a> </label><ul class="tree collapse"><li> <a title="A template that represents a single API key." href="/v0.6/docs/reference/config/template/apikey.html">API Key</a></li><li> <a title="A template used to represent an access control query." href="/v0.6/docs/reference/config/template/authorization.html">Authorization</a></li><li> <a title="A template that carries no data, useful for testing." href="/v0.6/docs/reference/config/template/checknothing.html">Check Nothing</a></li><li> <a title="A template that is used to control the production of Kubernetes-specific attributes." href="/v0.6/docs/reference/config/template/kubernetes.html">Kubernetes</a></li><li> <a title="A template designed to let you perform list checking operations." href="/v0.6/docs/reference/config/template/listentry.html">List Entry</a></li><li> <a title="A template that represents a single runtime log entry." href="/v0.6/docs/reference/config/template/logentry.html">Log Entry</a></li><li> <a title="A template that represents a single runtime metric." href="/v0.6/docs/reference/config/template/metric.html">Metric</a></li><li> <a title="A template that represents a quota allocation request" href="/v0.6/docs/reference/config/template/quota.html">Quota</a></li><li> <a title="A template that carries no data, useful for testing." href="/v0.6/docs/reference/config/template/reportnothing.html">Report Nothing</a></li><li> <a title="A template used by the Google Service Control adapter." href="/v0.6/docs/reference/config/template/servicecontrolreport.html">Service Control Report</a></li></ul></li></ul></li><li class="sublist"> <label class='tree-toggle'> <i class='fa fa-lg fa-caret-right'></i> <a class="" title="Describes usage and options of the Istio commands and utilities." href="/v0.6/docs/reference/commands">Commands</a> </label><ul class="tree collapse"><li> <a title="Istio Certificate Authority (CA)" href="/v0.6/docs/reference/commands/istio_ca.html">istio_ca</a></li><li> <a title="Istio control interface" href="/v0.6/docs/reference/commands/istioctl.html">istioctl</a></li><li> <a title="Utility to trigger direct calls to Mixer's API." href="/v0.6/docs/reference/commands/mixc.html">mixc</a></li><li> <a title="Mixer is Istio's abstraction on top of infrastructure backends." href="/v0.6/docs/reference/commands/mixs.html">mixs</a></li><li> <a title="Istio security per-node agent" href="/v0.6/docs/reference/commands/node_agent.html">node_agent</a></li><li> <a title="Istio Pilot agent" href="/v0.6/docs/reference/commands/pilot-agent.html">pilot-agent</a></li><li> <a title="Istio Pilot" href="/v0.6/docs/reference/commands/pilot-discovery.html">pilot-discovery</a></li><li> <a title="Kubernetes webhook for automatic Istio sidecar injection" href="/v0.6/docs/reference/commands/sidecar-injector.html">sidecar-injector</a></li></ul></li><li> <a title="How to write Istio config YAML content." href="/v0.6/docs/reference/writing-config.html">Writing Configuration</a></li></ul></div></div></div></div></nav></div><div class="col-12 col-md-9 col-lg-7 col-xl-8"><p class="d-md-none"> <label class="sidebar-toggler" data-toggle="offcanvas"> <i class="fa fa-chevron-right"></i> </label></p><main role="main"><h1>Mixer</h1><p>This package defines the Mixer API that the sidecar proxy uses to perform precondition checks, manage quotas, and report telemetry.</p><h2 id="Services">Services</h2><h3 id="Mixer">Mixer</h3><section><p>Mixer provides three core features:</p><ul><li><p><em>Precondition Checking</em>. Enables callers to verify a number of preconditions before responding to an incoming request from a service consumer. Preconditions can include whether the service consumer is properly authenticated, is on the service’s whitelist, passes ACL checks, and more.</p></li><li><p><em>Quota Management</em>. Enables services to allocate and free quota on a number of dimensions, Quotas are used as a relatively simple resource management tool to provide some fairness between service consumers when contending for limited resources. Rate limits are examples of quotas.</p></li><li><p><em>Telemetry Reporting</em>. Enables services to report logging and monitoring. In the future, it will also enable tracing and billing streams intended for both the service operator as well as for service consumers.</p></li></ul><pre id="Mixer.Check"><code class="language-proto">rpc Check(CheckRequest) returns (CheckResponse)
|
||
</code></pre><p>Checks preconditions and allocate quota before performing an operation. The preconditions enforced depend on the set of supplied attributes and the active configuration.</p><pre id="Mixer.Report"><code class="language-proto">rpc Report(ReportRequest) returns (ReportResponse)
|
||
</code></pre><p>Reports telemetry, such as logs and metrics. The reported information depends on the set of supplied attributes and the active configuration.</p></section><h2 id="Types">Types</h2><h3 id="Attributes">Attributes</h3><section><p>Attributes represents a set of typed name/value pairs. Many of Mixer’s API either consume and/or return attributes.</p><p>Istio uses attributes to control the runtime behavior of services running in the service mesh. Attributes are named and typed pieces of metadata describing ingress and egress traffic and the environment this traffic occurs in. An Istio attribute carries a specific piece of information such as the error code of an API request, the latency of an API request, or the original IP address of a TCP connection. For example:</p><pre><code>request.path: xyz/abc
|
||
request.size: 234
|
||
request.time: 12:34:56.789 04/17/2017
|
||
source.ip: 192.168.0.1
|
||
target.service: example
|
||
</code></pre><p>A given Istio deployment has a fixed vocabulary of attributes that it understands. The specific vocabulary is determined by the set of attribute producers being used in the deployment. The primary attribute producer in Istio is Envoy, although specialized Mixer adapters and services can also generate attributes.</p><p>The common baseline set of attributes available in most Istio deployments is defined <a href="/v0.6/docs/reference/config/mixer/attribute-vocabulary.html">here</a>.</p><p>Attributes are strongly typed. The supported attribute types are defined by <a href="https://github.com/istio/api/blob/master/mixer/v1/config/descriptor/value_type.proto">ValueType</a>. Each type of value is encoded into one of the so-called transport types present in this message.</p><p>Defines a map of attributes in uncompressed format. Following places may use this message: 1) Configure Istio/Proxy with static per-proxy attributes, such as source.uid. 2) Service IDL definition to extract api attributes for active requests. 3) Forward attributes from client proxy to server proxy for HTTP requests.</p><table class="message-fields"><thead><tr><th>Field</th><th>Type</th><th>Description</th></tr></thead><tbody><tr id="Attributes.attributes"><td><code>attributes</code></td><td><code>map<string,<a href="#Attributes.AttributeValue">Attributes.AttributeValue</a>></code></td><td><p>A map of attribute name to its value.</p></td></tr></tbody></table></section><h3 id="Attributes.AttributeValue">Attributes.AttributeValue</h3><section><p>Specifies one attribute value with different type.</p><table class="message-fields"><thead><tr><th>Field</th><th>Type</th><th>Description</th></tr></thead><tbody><tr id="Attributes.AttributeValue.string_value" class="oneof oneof-start"><td><code>stringValue</code></td><td><code>string (oneof)</code></td><td><p>Used for values of type STRING, DNS<em>NAME, EMAIL</em>ADDRESS, and URI</p></td></tr><tr id="Attributes.AttributeValue.int64_value" class="oneof"><td><code>int64Value</code></td><td><code>int64 (oneof)</code></td><td><p>Used for values of type INT64</p></td></tr><tr id="Attributes.AttributeValue.double_value" class="oneof"><td><code>doubleValue</code></td><td><code>double (oneof)</code></td><td><p>Used for values of type DOUBLE</p></td></tr><tr id="Attributes.AttributeValue.bool_value" class="oneof"><td><code>boolValue</code></td><td><code>bool (oneof)</code></td><td><p>Used for values of type BOOL</p></td></tr><tr id="Attributes.AttributeValue.bytes_value" class="oneof"><td><code>bytesValue</code></td><td><code>bytes (oneof)</code></td><td><p>Used for values of type BYTES</p></td></tr><tr id="Attributes.AttributeValue.timestamp_value" class="oneof"><td><code>timestampValue</code></td><td><code><a href="https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#timestamp">google.protobuf.Timestamp (oneof)</a></code></td><td><p>Used for values of type TIMESTAMP</p></td></tr><tr id="Attributes.AttributeValue.duration_value" class="oneof"><td><code>durationValue</code></td><td><code><a href="https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#duration">google.protobuf.Duration (oneof)</a></code></td><td><p>Used for values of type DURATION</p></td></tr><tr id="Attributes.AttributeValue.string_map_value" class="oneof"><td><code>stringMapValue</code></td><td><code><a href="#Attributes.StringMap">Attributes.StringMap (oneof)</a></code></td><td><p>Used for values of type STRING_MAP</p></td></tr></tbody></table></section><h3 id="Attributes.StringMap">Attributes.StringMap</h3><section><p>Defines a string map.</p><table class="message-fields"><thead><tr><th>Field</th><th>Type</th><th>Description</th></tr></thead><tbody><tr id="Attributes.StringMap.entries"><td><code>entries</code></td><td><code>map<string,string></code></td><td><p>Holds a set of name/value pairs.</p></td></tr></tbody></table></section><h3 id="CheckRequest">CheckRequest</h3><section><p>Used to get a thumbs-up/thumbs-down before performing an action.</p><table class="message-fields"><thead><tr><th>Field</th><th>Type</th><th>Description</th></tr></thead><tbody><tr id="CheckRequest.attributes"><td><code>attributes</code></td><td><code><a href="#CompressedAttributes">CompressedAttributes</a></code></td><td><p>The attributes to use for this request.</p><p>Mixer’s configuration determines how these attributes are used to establish the result returned in the response.</p></td></tr><tr id="CheckRequest.global_word_count"><td><code>globalWordCount</code></td><td><code>uint32</code></td><td><p>The number of words in the global dictionary, used with to populate the attributes. This value is used as a quick way to determine whether the client is using a dictionary that the server understands.</p></td></tr><tr id="CheckRequest.deduplication_id"><td><code>deduplicationId</code></td><td><code>string</code></td><td><p>Used for deduplicating <code>Check</code> calls in the case of failed RPCs and retries. This should be a UUID per call, where the same UUID is used for retries of the same call.</p></td></tr><tr id="CheckRequest.quotas"><td><code>quotas</code></td><td><code>map<string,<a href="#CheckRequest.QuotaParams">CheckRequest.QuotaParams</a>></code></td><td><p>The individual quotas to allocate</p></td></tr></tbody></table></section><h3 id="CheckRequest.QuotaParams">CheckRequest.QuotaParams</h3><section><p>parameters for a quota allocation</p><table class="message-fields"><thead><tr><th>Field</th><th>Type</th><th>Description</th></tr></thead><tbody><tr id="CheckRequest.QuotaParams.amount"><td><code>amount</code></td><td><code>int64</code></td><td><p>Amount of quota to allocate</p></td></tr><tr id="CheckRequest.QuotaParams.best_effort"><td><code>bestEffort</code></td><td><code>bool</code></td><td><p>When true, supports returning less quota than what was requested.</p></td></tr></tbody></table></section><h3 id="CheckResponse">CheckResponse</h3><section><p>The response generated by the Check method.</p><table class="message-fields"><thead><tr><th>Field</th><th>Type</th><th>Description</th></tr></thead><tbody><tr id="CheckResponse.precondition"><td><code>precondition</code></td><td><code><a href="#CheckResponse.PreconditionResult">CheckResponse.PreconditionResult</a></code></td><td><p>The precondition check results.</p></td></tr><tr id="CheckResponse.quotas"><td><code>quotas</code></td><td><code>map<string,<a href="#CheckResponse.QuotaResult">CheckResponse.QuotaResult</a>></code></td><td><p>The resulting quota, one entry per requested quota.</p></td></tr></tbody></table></section><h3 id="CheckResponse.PreconditionResult">CheckResponse.PreconditionResult</h3><section><p>Expresses the result of a precondition check.</p><table class="message-fields"><thead><tr><th>Field</th><th>Type</th><th>Description</th></tr></thead><tbody><tr id="CheckResponse.PreconditionResult.status"><td><code>status</code></td><td><code><a href="#google.rpc.Status">google.rpc.Status</a></code></td><td><p>A status code of OK indicates all preconditions were satisfied. Any other code indicates not all preconditions were satisfied and details describe why.</p></td></tr><tr id="CheckResponse.PreconditionResult.valid_duration"><td><code>validDuration</code></td><td><code><a href="https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#duration">google.protobuf.Duration</a></code></td><td><p>The amount of time for which this result can be considered valid.</p></td></tr><tr id="CheckResponse.PreconditionResult.valid_use_count"><td><code>validUseCount</code></td><td><code>int32</code></td><td><p>The number of uses for which this result can be considered valid.</p></td></tr><tr id="CheckResponse.PreconditionResult.attributes"><td><code>attributes</code></td><td><code><a href="#CompressedAttributes">CompressedAttributes</a></code></td><td><p>The attributes returned by Mixer.</p><p>The exact set of attributes returned is determined by the set of adapters Mixer is configured with. These attributes are used to ferry new attributes that Mixer derived based on the input set of attributes and its configuration.</p></td></tr><tr id="CheckResponse.PreconditionResult.referenced_attributes"><td><code>referencedAttributes</code></td><td><code><a href="#ReferencedAttributes">ReferencedAttributes</a></code></td><td><p>The total set of attributes that were used in producing the result along with matching conditions.</p></td></tr></tbody></table></section><h3 id="CheckResponse.QuotaResult">CheckResponse.QuotaResult</h3><section><p>Expresses the result of a quota allocation.</p><table class="message-fields"><thead><tr><th>Field</th><th>Type</th><th>Description</th></tr></thead><tbody><tr id="CheckResponse.QuotaResult.valid_duration"><td><code>validDuration</code></td><td><code><a href="https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#duration">google.protobuf.Duration</a></code></td><td><p>The amount of time for which this result can be considered valid.</p></td></tr><tr id="CheckResponse.QuotaResult.granted_amount"><td><code>grantedAmount</code></td><td><code>int64</code></td><td><p>The amount of granted quota. When <code>QuotaParams.best_effort</code> is true, this will be >= 0. If <code>QuotaParams.best_effort</code> is false, this will be either 0 or >= <code>QuotaParams.amount</code>.</p></td></tr><tr id="CheckResponse.QuotaResult.referenced_attributes"><td><code>referencedAttributes</code></td><td><code><a href="#ReferencedAttributes">ReferencedAttributes</a></code></td><td><p>The total set of attributes that were used in producing the result along with matching conditions.</p></td></tr></tbody></table></section><h3 id="CompressedAttributes">CompressedAttributes</h3><section><p>Defines a list of attributes in compressed format optimized for transport. Within this message, strings are referenced using integer indices into one of two string dictionaries. Positive integers index into the global deployment-wide dictionary, whereas negative integers index into the message-level dictionary instead. The message-level dictionary is carried by the <code>words</code> field of this message, the deployment-wide dictionary is determined via configuration.</p><table class="message-fields"><thead><tr><th>Field</th><th>Type</th><th>Description</th></tr></thead><tbody><tr id="CompressedAttributes.words"><td><code>words</code></td><td><code>string[]</code></td><td><p>The message-level dictionary.</p></td></tr><tr id="CompressedAttributes.strings"><td><code>strings</code></td><td><code>map<int32,int32></code></td><td><p>Holds attributes of type STRING, DNS<em>NAME, EMAIL</em>ADDRESS, URI</p></td></tr><tr id="CompressedAttributes.int64s"><td><code>int64s</code></td><td><code>map<int32,int64></code></td><td><p>Holds attributes of type INT64</p></td></tr><tr id="CompressedAttributes.doubles"><td><code>doubles</code></td><td><code>map<int32,double></code></td><td><p>Holds attributes of type DOUBLE</p></td></tr><tr id="CompressedAttributes.bools"><td><code>bools</code></td><td><code>map<int32,bool></code></td><td><p>Holds attributes of type BOOL</p></td></tr><tr id="CompressedAttributes.timestamps"><td><code>timestamps</code></td><td><code>map<int32,<a href="https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#timestamp">google.protobuf.Timestamp</a>></code></td><td><p>Holds attributes of type TIMESTAMP</p></td></tr><tr id="CompressedAttributes.durations"><td><code>durations</code></td><td><code>map<int32,<a href="https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#duration">google.protobuf.Duration</a>></code></td><td><p>Holds attributes of type DURATION</p></td></tr><tr id="CompressedAttributes.bytes"><td><code>bytes</code></td><td><code>map<int32,bytes></code></td><td><p>Holds attributes of type BYTES</p></td></tr><tr id="CompressedAttributes.string_maps"><td><code>stringMaps</code></td><td><code>map<int32,<a href="#StringMap">StringMap</a>></code></td><td><p>Holds attributes of type STRING_MAP</p></td></tr></tbody></table></section><h3 id="ReferencedAttributes">ReferencedAttributes</h3><section><p>Describes the attributes that were used to determine the response. This can be used to construct a response cache.</p><table class="message-fields"><thead><tr><th>Field</th><th>Type</th><th>Description</th></tr></thead><tbody><tr id="ReferencedAttributes.words"><td><code>words</code></td><td><code>string[]</code></td><td><p>The message-level dictionary. Refer to <a href="#CompressedAttributes">CompressedAttributes</a> for information on using dictionaries.</p></td></tr><tr id="ReferencedAttributes.attribute_matches"><td><code>attributeMatches</code></td><td><code><a href="#ReferencedAttributes.AttributeMatch">ReferencedAttributes.AttributeMatch[]</a></code></td><td><p>Describes a set of attributes.</p></td></tr></tbody></table></section><h3 id="ReferencedAttributes.AttributeMatch">ReferencedAttributes.AttributeMatch</h3><section><p>Describes a single attribute match.</p><table class="message-fields"><thead><tr><th>Field</th><th>Type</th><th>Description</th></tr></thead><tbody><tr id="ReferencedAttributes.AttributeMatch.name"><td><code>name</code></td><td><code>int32</code></td><td><p>The name of the attribute. This is a dictionary index encoded in a manner identical to all strings in the <a href="#CompressedAttributes">CompressedAttributes</a> message.</p></td></tr><tr id="ReferencedAttributes.AttributeMatch.condition"><td><code>condition</code></td><td><code><a href="#ReferencedAttributes.Condition">ReferencedAttributes.Condition</a></code></td><td><p>The kind of match against the attribute value.</p></td></tr><tr id="ReferencedAttributes.AttributeMatch.regex"><td><code>regex</code></td><td><code>string</code></td><td><p>If a REGEX condition is provided for a STRING_MAP attribute, clients should use the regex value to match against map keys.</p></td></tr><tr id="ReferencedAttributes.AttributeMatch.map_key"><td><code>mapKey</code></td><td><code>int32</code></td><td><p>A key in a STRING<em>MAP. When multiple keys from a STRING</em>MAP attribute were referenced, there will be multiple AttributeMatch messages with different map<em>key values. Values for map</em>key SHOULD be ignored for attributes that are not STRING_MAP.</p><p>Indices for the keys are used (taken either from the message dictionary from the <code>words</code> field or the global dictionary).</p><p>If no map<em>key value is provided for a STRING</em>MAP attribute, the entire STRING_MAP will be used.</p></td></tr></tbody></table></section><h3 id="ReferencedAttributes.Condition">ReferencedAttributes.Condition</h3><section><p>How an attribute’s value was matched</p><table class="enum-values"><thead><tr><th>Name</th><th>Description</th></tr></thead><tbody><tr id="ReferencedAttributes.Condition.CONDITION_UNSPECIFIED"><td><code>CONDITION_UNSPECIFIED</code></td><td><p>should not occur</p></td></tr><tr id="ReferencedAttributes.Condition.ABSENCE"><td><code>ABSENCE</code></td><td><p>match when attribute doesn’t exist</p></td></tr><tr id="ReferencedAttributes.Condition.EXACT"><td><code>EXACT</code></td><td><p>match when attribute value is an exact byte-for-byte match</p></td></tr><tr id="ReferencedAttributes.Condition.REGEX"><td><code>REGEX</code></td><td><p>match when attribute value matches the included regex</p></td></tr></tbody></table></section><h3 id="ReportRequest">ReportRequest</h3><section><p>Used to report telemetry after performing one or more actions.</p><table class="message-fields"><thead><tr><th>Field</th><th>Type</th><th>Description</th></tr></thead><tbody><tr id="ReportRequest.attributes"><td><code>attributes</code></td><td><code><a href="#CompressedAttributes">CompressedAttributes[]</a></code></td><td><p>The attributes to use for this request.</p><p>Each <code>Attributes</code> element represents the state of a single action. Multiple actions can be provided in a single message in order to improve communication efficiency. The client can accumulate a set of actions and send them all in one single message.</p><p>Although each <code>Attributes</code> message is semantically treated as an independent stand-alone entity unrelated to the other attributes within the message, this message format leverages delta-encoding between attribute messages in order to substantially reduce the request size and improve end-to-end efficiency. Each individual set of attributes is used to modify the previous set. This eliminates the need to redundantly send the same attributes multiple times over within a single request.</p><p>If a client is not sophisticated and doesn’t want to use delta-encoding, a degenerate case is to include all attributes in every individual message.</p></td></tr><tr id="ReportRequest.default_words"><td><code>defaultWords</code></td><td><code>string[]</code></td><td><p>The default message-level dictionary for all the attributes. Individual attribute messages can have their own dictionaries, but if they don’t then this set of words, if it is provided, is used instead.</p><p>This makes it possible to share the same dictionary for all attributes in this request, which can substantially reduce the overall request size.</p></td></tr><tr id="ReportRequest.global_word_count"><td><code>globalWordCount</code></td><td><code>uint32</code></td><td><p>The number of words in the global dictionary. To detect global dictionary out of sync between client and server.</p></td></tr></tbody></table></section><h3 id="ReportResponse">ReportResponse</h3><section><p>Used to carry responses to telemetry reports</p></section><h3 id="StringMap">StringMap</h3><section><p>A map of string to string. The keys and values in this map are dictionary indices (see the <a href="#CompressedAttributes">Attributes</a> message for an explanation)</p><table class="message-fields"><thead><tr><th>Field</th><th>Type</th><th>Description</th></tr></thead><tbody><tr id="StringMap.entries"><td><code>entries</code></td><td><code>map<int32,int32></code></td><td><p>Holds a set of name/value pairs.</p></td></tr></tbody></table></section><h3 id="google.rpc.Status">google.rpc.Status</h3><section><p>The <code>Status</code> type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by <a href="https://github.com/grpc">gRPC</a>. The error model is designed to be:</p><ul><li>Simple to use and understand for most users</li><li>Flexible enough to meet unexpected needs</li></ul><h4 id="overview">Overview</h4><p>The <code>Status</code> message contains three pieces of data: error code, error message, and error details. The error code should be an enum value of <em>google.rpc.Code</em>, but it may accept additional error codes if needed. The error message should be a developer-facing English message that helps developers <em>understand</em> and <em>resolve</em> the error. If a localized user-facing error message is needed, put the localized message in the error details or localize it in the client. The optional error details may contain arbitrary information about the error. There is a predefined set of error detail types in the package <code>google.rpc</code> that can be used for common error conditions.</p><h4 id="language-mapping">Language mapping</h4><p>The <code>Status</code> message is the logical representation of the error model, but it is not necessarily the actual wire format. When the <code>Status</code> message is exposed in different client libraries and different wire protocols, it can be mapped differently. For example, it will likely be mapped to some exceptions in Java, but more likely mapped to some error codes in C.</p><h4 id="other-uses">Other uses</h4><p>The error model and the <code>Status</code> message can be used in a variety of environments, either with or without APIs, to provide a consistent developer experience across different environments.</p><p>Example uses of this error model include:</p><ul><li><p>Partial errors. If a service needs to return partial errors to the client, it may embed the <code>Status</code> in the normal response to indicate the partial errors.</p></li><li><p>Workflow errors. A typical workflow has multiple steps. Each step may have a <code>Status</code> message for error reporting.</p></li><li><p>Batch operations. If a client uses batch request and batch response, the <code>Status</code> message should be used directly inside batch response, one for each error sub-response.</p></li><li><p>Asynchronous operations. If an API call embeds asynchronous operation results in its response, the status of those operations should be represented directly using the <code>Status</code> message.</p></li><li><p>Logging. If some API errors are stored in logs, the message <code>Status</code> could be used directly after any stripping needed for security/privacy reasons.</p></li></ul><table class="message-fields"><thead><tr><th>Field</th><th>Type</th><th>Description</th></tr></thead><tbody><tr id="google.rpc.Status.code"><td><code>code</code></td><td><code>int32</code></td><td><p>The status code, which should be an enum value of <em>google.rpc.Code</em>.</p></td></tr><tr id="google.rpc.Status.message"><td><code>message</code></td><td><code>string</code></td><td><p>A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the <a href="#google.rpc.Status.details">google.rpc.Status.details</a> field, or localized by the client.</p></td></tr><tr id="google.rpc.Status.details"><td><code>details</code></td><td><code><a href="https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#any">google.protobuf.Any[]</a></code></td><td><p>A list of messages that carry the error details. There is a common set of message types for APIs to use.</p></td></tr></tbody></table></section></main></div><div class="col-12 col-md-2 d-none d-lg-block"><nav class="toc"><div class="spacer"></div><div class="directory" role="directory"><ul><li><a href="#Services">Services</a><ul><li><a href="#Mixer">Mixer</a></li></ul></li><li><a href="#Types">Types</a><ul><li><a href="#Attributes">Attributes</a></li><li><a href="#Attributes.AttributeValue">Attributes.AttributeValue</a></li><li><a href="#Attributes.StringMap">Attributes.StringMap</a></li><li><a href="#CheckRequest">CheckRequest</a></li><li><a href="#CheckRequest.QuotaParams">CheckRequest.QuotaParams</a></li><li><a href="#CheckResponse">CheckResponse</a></li><li><a href="#CheckResponse.PreconditionResult">CheckResponse.PreconditionResult</a></li><li><a href="#CheckResponse.QuotaResult">CheckResponse.QuotaResult</a></li><li><a href="#CompressedAttributes">CompressedAttributes</a></li><li><a href="#ReferencedAttributes">ReferencedAttributes</a></li><li><a href="#ReferencedAttributes.AttributeMatch">ReferencedAttributes.AttributeMatch</a></li><li><a href="#ReferencedAttributes.Condition">ReferencedAttributes.Condition</a></li><li><a href="#ReportRequest">ReportRequest</a></li><li><a href="#ReportResponse">ReportResponse</a></li><li><a href="#StringMap">StringMap</a></li><li><a href="#google.rpc.Status">google.rpc.Status</a><ul><li><a href="#overview">Overview</a></li><li><a href="#language-mapping">Language mapping</a></li><li><a href="#other-uses">Other uses</a></li></ul></li></ul></li></ul></div></nav></div></div></div><div class="footer"><footer><div class="container-fluid"><div class="row"><div class="col-sm-2"></div><nav class=" col-12 col-sm-3" role="navigation"><ul class="first"><li><a class="header" href="/v0.6/docs/">Docs</a></li><li><a href="/v0.6/docs/concepts/">Concepts</a></li><li><a href="/v0.6/docs/setup/">Setup</a></li><li><a href="/v0.6/docs/tasks/">Tasks</a></li><li><a href="/v0.6/docs/guides/">Guides</a></li><li><a href="/v0.6/docs/reference/">Reference</a></li></ul></nav><nav class="col-12 col-sm-3" role="navigation"><ul><li><a class="header" href="/v0.6/help/">Help</a></li><li><a href="/v0.6/help/faq/index.html">FAQ</a></li><li><a href="/v0.6/help/glossary.html">Glossary</a></li><li><a href="/v0.6/help/troubleshooting.html">Troubleshooting</a></li><li><a href="/v0.6/help/bugs.html">Report Bugs</a></li><li><a href="https://github.com/istio/istio.github.io/issues/new?title=Issue with _docs/reference/api/istio.mixer.v1.html" target="_blank" rel="noopener">Doc Bugs & Gaps</a></li><li><a href="https://github.com/istio/istio.github.io/edit/master/_docs/reference/api/istio.mixer.v1.html" target="_blank" rel="noopener">Edit This Page</a></li></ul></nav><nav class="col-12 col-sm-3" role="navigation"><ul><li><a class="header" href="/v0.6/community.html">Community</a></li><li> <a href="https://groups.google.com/forum/#!forum/istio-users" target="_blank" rel="noopener">User</a> | <a href="https://groups.google.com/forum/#!forum/istio-dev" target="_blank" rel="noopener">Dev Mailing Lists</a></li><li><a href="https://twitter.com/IstioMesh" target="_blank" rel="noopener">Twitter</a></li><li><a href="https://stackoverflow.com/questions/tagged/istio" target="_blank" rel="noopener">Stack Overflow</a></li><li><a href="https://github.com/istio/community/" target="_blank" rel="noopener">GitHub</a></li><li><a href="https://github.com/istio/community/blob/master/WORKING-GROUPS.md" target="_blank" rel="noopener">Working Groups</a></li></ul></nav></div><div class="row"><div class="col-12"><p class="description text-center" role="contentinfo"> Istio Archive 0.6, Copyright © 2018 Istio Authors<br> Archived on 02-Apr-2018</p></div></div></div></footer></div><script src="https://code.jquery.com/jquery-3.2.1.slim.min.js" integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN" crossorigin="anonymous"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js" integrity="sha384-ApNbgh9B+Y1QKtv3Rn7W3mgPxhU9K/ScQsAP7hUibX39j7fakFPskvXusvfa0b4Q" crossorigin="anonymous"></script> <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js" integrity="sha384-JZR6Spejh4U02d8jOt6vLEHfe/JQGiRRSQQxSfFWpi1MquVdAyjUar5+76PVCmYl" crossorigin="anonymous"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/1.7.1/clipboard.min.js"></script> <script src="https://www.google.com/cse/brand?form=searchbox"></script> <script src="/v0.6/js/misc.min.js"></script></body></html>
|