Files
kubesphere/vendor/istio.io/api/mixer/v1/config/client/istio.mixer.v1.config.client.gen.json
hongming fe6c5de00f update dependencies
Signed-off-by: hongming <talonwan@yunify.com>
2021-01-04 15:35:32 +08:00

832 lines
30 KiB
JSON

{
"openapi": "3.0.0",
"info": {
"title": "Configuration state for the Mixer client library.",
"version": "client"
},
"components": {
"schemas": {
"istio.mixer.v1.config.client.HTTPAPISpec": {
"description": "HTTPAPISpec defines the canonical configuration for generating API-related attributes from HTTP requests based on the method and uri templated path matches. It is sufficient for defining the API surface of a service for the purposes of API attribute generation. It is not intended to represent auth, quota, documentation, or other information commonly found in other API specifications, e.g. OpenAPI.",
"type": "object",
"properties": {
"attributes": {
"$ref": "#/components/schemas/istio.mixer.v1.Attributes"
},
"patterns": {
"description": "List of HTTP patterns to match.",
"type": "array",
"items": {
"$ref": "#/components/schemas/istio.mixer.v1.config.client.HTTPAPISpecPattern"
}
},
"apiKeys": {
"description": "List of APIKey that describes how to extract an API-KEY from an HTTP request. The first API-Key match found in the list is used, i.e. 'OR' semantics.",
"type": "array",
"items": {
"$ref": "#/components/schemas/istio.mixer.v1.config.client.APIKey"
}
}
}
},
"istio.mixer.v1.config.client.HTTPAPISpecPattern": {
"description": "HTTPAPISpecPattern defines a single pattern to match against incoming HTTP requests. The per-pattern list of attributes is generated if both the http_method and uri_template match. In addition, the top-level list of attributes in the HTTPAPISpec is also generated.",
"type": "object",
"properties": {
"attributes": {
"$ref": "#/components/schemas/istio.mixer.v1.Attributes"
},
"httpMethod": {
"description": "HTTP request method to match against as defined by [rfc7231](https://tools.ietf.org/html/rfc7231#page-21). For example: GET, HEAD, POST, PUT, DELETE.",
"type": "string",
"format": "string"
}
},
"oneOf": [
{
"not": {
"anyOf": [
{
"required": [
"uriTemplate"
],
"properties": {
"uriTemplate": {
"description": "URI template to match against as defined by [rfc6570](https://tools.ietf.org/html/rfc6570). For example, the following are valid URI templates: /pets /pets/{id} /dictionary/{term:1}/{term} /search{?q*,lang}",
"type": "string",
"format": "string"
}
}
},
{
"required": [
"regex"
],
"properties": {
"regex": {
"description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax)",
"type": "string",
"format": "string"
}
}
}
]
}
},
{
"required": [
"uriTemplate"
],
"properties": {
"uriTemplate": {
"description": "URI template to match against as defined by [rfc6570](https://tools.ietf.org/html/rfc6570). For example, the following are valid URI templates: /pets /pets/{id} /dictionary/{term:1}/{term} /search{?q*,lang}",
"type": "string",
"format": "string"
}
}
},
{
"required": [
"regex"
],
"properties": {
"regex": {
"description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax)",
"type": "string",
"format": "string"
}
}
}
]
},
"istio.mixer.v1.config.client.APIKey": {
"description": "APIKey defines the explicit configuration for generating the `request.api_key` attribute from HTTP requests.",
"type": "object",
"oneOf": [
{
"not": {
"anyOf": [
{
"required": [
"query"
],
"properties": {
"query": {
"description": "API Key is sent as a query parameter. `query` represents the query string parameter name.",
"type": "string",
"format": "string"
}
}
},
{
"required": [
"header"
],
"properties": {
"header": {
"description": "API key is sent in a request header. `header` represents the header name.",
"type": "string",
"format": "string"
}
}
},
{
"required": [
"cookie"
],
"properties": {
"cookie": {
"description": "API key is sent in a [cookie](https://swagger.io/docs/specification/authentication/cookie-authentication),",
"type": "string",
"format": "string"
}
}
}
]
}
},
{
"required": [
"query"
],
"properties": {
"query": {
"description": "API Key is sent as a query parameter. `query` represents the query string parameter name.",
"type": "string",
"format": "string"
}
}
},
{
"required": [
"header"
],
"properties": {
"header": {
"description": "API key is sent in a request header. `header` represents the header name.",
"type": "string",
"format": "string"
}
}
},
{
"required": [
"cookie"
],
"properties": {
"cookie": {
"description": "API key is sent in a [cookie](https://swagger.io/docs/specification/authentication/cookie-authentication),",
"type": "string",
"format": "string"
}
}
}
]
},
"istio.mixer.v1.config.client.HTTPAPISpecReference": {
"description": "HTTPAPISpecReference defines a reference to an HTTPAPISpec. This is typically used for establishing bindings between an HTTPAPISpec and an IstioService. For example, the following defines an HTTPAPISpecReference for service `foo` in namespace `bar`.",
"type": "object",
"properties": {
"name": {
"description": "The short name of the HTTPAPISpec. This is the resource name defined by the metadata name field.",
"type": "string",
"format": "string"
},
"namespace": {
"description": "Optional namespace of the HTTPAPISpec. Defaults to the encompassing HTTPAPISpecBinding's metadata namespace field.",
"type": "string",
"format": "string"
}
}
},
"istio.mixer.v1.config.client.HTTPAPISpecBinding": {
"description": "HTTPAPISpecBinding defines the binding between HTTPAPISpecs and one or more IstioService. For example, the following establishes a binding between the HTTPAPISpec `petstore` and service `foo` in namespace `bar`.",
"type": "object",
"properties": {
"services": {
"description": "One or more services to map the listed HTTPAPISpec onto.",
"type": "array",
"items": {
"$ref": "#/components/schemas/istio.mixer.v1.config.client.IstioService"
}
},
"apiSpecs": {
"description": "One or more HTTPAPISpec references that should be mapped to the specified service(s). The aggregate collection of match conditions defined in the HTTPAPISpecs should not overlap.",
"type": "array",
"items": {
"$ref": "#/components/schemas/istio.mixer.v1.config.client.HTTPAPISpecReference"
}
}
}
},
"istio.mixer.v1.config.client.IstioService": {
"description": "IstioService identifies a service and optionally service version. The FQDN of the service is composed from the name, namespace, and implementation-specific domain suffix (e.g. on Kubernetes, \"reviews\" + \"default\" + \"svc.cluster.local\" -\u003e \"reviews.default.svc.cluster.local\").",
"type": "object",
"properties": {
"name": {
"description": "The short name of the service such as \"foo\".",
"type": "string",
"format": "string"
},
"namespace": {
"description": "Optional namespace of the service. Defaults to value of metadata namespace field.",
"type": "string",
"format": "string"
},
"domain": {
"description": "Domain suffix used to construct the service FQDN in implementations that support such specification.",
"type": "string",
"format": "string"
},
"service": {
"description": "The service FQDN.",
"type": "string",
"format": "string"
},
"labels": {
"description": "Optional one or more labels that uniquely identify the service version.",
"type": "object",
"additionalProperties": {
"type": "string",
"format": "string"
}
}
}
},
"istio.mixer.v1.config.client.NetworkFailPolicy": {
"description": "Specifies the behavior when the client is unable to connect to Mixer.",
"type": "object",
"properties": {
"policy": {
"$ref": "#/components/schemas/istio.mixer.v1.config.client.NetworkFailPolicy.FailPolicy"
},
"maxRetry": {
"description": "Max retries on transport error.",
"type": "integer"
},
"baseRetryWait": {
"description": "Base time to wait between retries. Will be adjusted by exponential backoff and jitter.",
"type": "string"
},
"maxRetryWait": {
"description": "Max time to wait between retries.",
"type": "string"
}
}
},
"istio.mixer.v1.config.client.NetworkFailPolicy.FailPolicy": {
"description": "Describes the policy.",
"type": "string",
"enum": [
"FAIL_OPEN",
"FAIL_CLOSE"
]
},
"istio.mixer.v1.config.client.ServiceConfig": {
"description": "Defines the per-service client configuration.",
"type": "object",
"properties": {
"disableCheckCalls": {
"description": "If true, do not call Mixer Check.",
"type": "boolean"
},
"disableReportCalls": {
"description": "If true, do not call Mixer Report.",
"type": "boolean"
},
"mixerAttributes": {
"$ref": "#/components/schemas/istio.mixer.v1.Attributes"
},
"httpApiSpec": {
"description": "HTTP API specifications to generate API attributes.",
"type": "array",
"items": {
"$ref": "#/components/schemas/istio.mixer.v1.config.client.HTTPAPISpec"
}
},
"quotaSpec": {
"description": "Quota specifications to generate quota requirements.",
"type": "array",
"items": {
"$ref": "#/components/schemas/istio.mixer.v1.config.client.QuotaSpec"
}
},
"networkFailPolicy": {
"$ref": "#/components/schemas/istio.mixer.v1.config.client.NetworkFailPolicy"
},
"forwardAttributes": {
"$ref": "#/components/schemas/istio.mixer.v1.Attributes"
}
}
},
"istio.mixer.v1.config.client.QuotaSpec": {
"description": "Determines the quotas used for individual requests.",
"type": "object",
"properties": {
"rules": {
"description": "A list of Quota rules.",
"type": "array",
"items": {
"$ref": "#/components/schemas/istio.mixer.v1.config.client.QuotaRule"
}
}
}
},
"istio.mixer.v1.config.client.TransportConfig": {
"description": "Defines the transport config on how to call Mixer.",
"type": "object",
"properties": {
"networkFailPolicy": {
"$ref": "#/components/schemas/istio.mixer.v1.config.client.NetworkFailPolicy"
},
"disableCheckCache": {
"description": "The flag to disable check cache.",
"type": "boolean"
},
"disableQuotaCache": {
"description": "The flag to disable quota cache.",
"type": "boolean"
},
"disableReportBatch": {
"description": "The flag to disable report batch.",
"type": "boolean"
},
"statsUpdateInterval": {
"description": "Specify refresh interval to write Mixer client statistics to Envoy share memory. If not specified, the interval is 10 seconds.",
"type": "string"
},
"checkCluster": {
"description": "Name of the cluster that will forward check calls to a pool of mixer servers. Defaults to \"mixer_server\". By using different names for checkCluster and reportCluster, it is possible to have one set of Mixer servers handle check calls, while another set of Mixer servers handle report calls.",
"type": "string",
"format": "string"
},
"reportCluster": {
"description": "Name of the cluster that will forward report calls to a pool of mixer servers. Defaults to \"mixer_server\". By using different names for checkCluster and reportCluster, it is possible to have one set of Mixer servers handle check calls, while another set of Mixer servers handle report calls.",
"type": "string",
"format": "string"
},
"attributesForMixerProxy": {
"$ref": "#/components/schemas/istio.mixer.v1.Attributes"
},
"reportBatchMaxEntries": {
"description": "When disable_report_batch is false, this value specifies the maximum number of requests that are batched in report. If left unspecified, the default value of report_batch_max_entries == 0 will use the hardcoded defaults of istio::mixerclient::ReportOptions.",
"type": "integer"
},
"reportBatchMaxTime": {
"description": "When disable_report_batch is false, this value specifies the maximum elapsed time a batched report will be sent after a user request is processed. If left unspecified, the default report_batch_max_time == 0 will use the hardcoded defaults of istio::mixerclient::ReportOptions.",
"type": "string"
}
}
},
"istio.mixer.v1.config.client.HttpClientConfig": {
"description": "Defines the client config for HTTP.",
"type": "object",
"properties": {
"mixerAttributes": {
"$ref": "#/components/schemas/istio.mixer.v1.Attributes"
},
"forwardAttributes": {
"$ref": "#/components/schemas/istio.mixer.v1.Attributes"
},
"transport": {
"$ref": "#/components/schemas/istio.mixer.v1.config.client.TransportConfig"
},
"serviceConfigs": {
"description": "Map of control configuration indexed by destination.service. This is used to support per-service configuration for cases where a mixerclient serves multiple services.",
"type": "object",
"additionalProperties": {
"$ref": "#/components/schemas/istio.mixer.v1.config.client.ServiceConfig"
}
},
"defaultDestinationService": {
"description": "Default destination service name if none was specified in the client request.",
"type": "string",
"format": "string"
},
"ignoreForwardedAttributes": {
"description": "Whether or not to use attributes forwarded in the request headers to create the attribute bag to send to mixer. For intra-mesh traffic, this should be set to \"false\". For ingress/egress gateways, this should be set to \"true\".",
"type": "boolean"
}
}
},
"istio.mixer.v1.config.client.TcpClientConfig": {
"description": "Defines the client config for TCP.",
"type": "object",
"properties": {
"disableCheckCalls": {
"description": "If set to true, disables Mixer check calls.",
"type": "boolean"
},
"disableReportCalls": {
"description": "If set to true, disables Mixer check calls.",
"type": "boolean"
},
"mixerAttributes": {
"$ref": "#/components/schemas/istio.mixer.v1.Attributes"
},
"transport": {
"$ref": "#/components/schemas/istio.mixer.v1.config.client.TransportConfig"
},
"connectionQuotaSpec": {
"$ref": "#/components/schemas/istio.mixer.v1.config.client.QuotaSpec"
},
"reportInterval": {
"description": "Specify report interval to send periodical reports for long TCP connections. If not specified, the interval is 10 seconds. This interval should not be less than 1 second, otherwise it will be reset to 1 second.",
"type": "string"
}
}
},
"istio.mixer.v1.config.client.QuotaRule": {
"description": "Specifies a rule with list of matches and list of quotas. If any clause matched, the list of quotas will be used.",
"type": "object",
"properties": {
"quotas": {
"description": "The list of quotas to charge.",
"type": "array",
"items": {
"$ref": "#/components/schemas/istio.mixer.v1.config.client.Quota"
}
},
"match": {
"description": "If empty, match all request. If any of match is true, it is matched.",
"type": "array",
"items": {
"$ref": "#/components/schemas/istio.mixer.v1.config.client.AttributeMatch"
}
}
}
},
"istio.mixer.v1.config.client.AttributeMatch": {
"description": "Specifies a match clause to match Istio attributes",
"type": "object",
"properties": {
"clause": {
"description": "Map of attribute names to StringMatch type. Each map element specifies one condition to match.",
"type": "object",
"additionalProperties": {
"$ref": "#/components/schemas/istio.mixer.v1.config.client.StringMatch"
}
}
}
},
"istio.mixer.v1.config.client.Quota": {
"description": "Specifies a quota to use with quota name and amount.",
"type": "object",
"properties": {
"quota": {
"description": "The quota name to charge",
"type": "string",
"format": "string"
},
"charge": {
"description": "The quota amount to charge",
"type": "integer",
"format": "int32"
}
}
},
"istio.mixer.v1.config.client.StringMatch": {
"description": "Describes how to match a given string in HTTP headers. Match is case-sensitive.",
"type": "object",
"oneOf": [
{
"not": {
"anyOf": [
{
"required": [
"exact"
],
"properties": {
"exact": {
"description": "exact string match",
"type": "string",
"format": "string"
}
}
},
{
"required": [
"prefix"
],
"properties": {
"prefix": {
"description": "prefix-based match",
"type": "string",
"format": "string"
}
}
},
{
"required": [
"regex"
],
"properties": {
"regex": {
"description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).",
"type": "string",
"format": "string"
}
}
}
]
}
},
{
"required": [
"exact"
],
"properties": {
"exact": {
"description": "exact string match",
"type": "string",
"format": "string"
}
}
},
{
"required": [
"prefix"
],
"properties": {
"prefix": {
"description": "prefix-based match",
"type": "string",
"format": "string"
}
}
},
{
"required": [
"regex"
],
"properties": {
"regex": {
"description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).",
"type": "string",
"format": "string"
}
}
}
]
},
"istio.mixer.v1.config.client.QuotaSpecBinding": {
"description": "QuotaSpecBinding defines the binding between QuotaSpecs and one or more IstioService.",
"type": "object",
"properties": {
"services": {
"description": "One or more services to map the listed QuotaSpec onto.",
"type": "array",
"items": {
"$ref": "#/components/schemas/istio.mixer.v1.config.client.IstioService"
}
},
"quotaSpecs": {
"description": "One or more QuotaSpec references that should be mapped to the specified service(s). The aggregate collection of match conditions defined in the QuotaSpecs should not overlap.",
"type": "array",
"items": {
"$ref": "#/components/schemas/istio.mixer.v1.config.client.QuotaSpecBinding.QuotaSpecReference"
}
}
}
},
"istio.mixer.v1.config.client.QuotaSpecBinding.QuotaSpecReference": {
"description": "QuotaSpecReference uniquely identifies the QuotaSpec used in the Binding.",
"type": "object",
"properties": {
"name": {
"description": "The short name of the QuotaSpec. This is the resource name defined by the metadata name field.",
"type": "string",
"format": "string"
},
"namespace": {
"description": "Optional namespace of the QuotaSpec. Defaults to the value of the metadata namespace field.",
"type": "string",
"format": "string"
}
}
},
"istio.mixer.v1.Attributes": {
"description": "Default attributes to send to Mixer in both Check and Report. This typically includes \"destination.ip\" and \"destination.uid\" attributes.",
"type": "object",
"properties": {
"attributes": {
"description": "A map of attribute name to its value.",
"type": "object",
"additionalProperties": {
"$ref": "#/components/schemas/istio.mixer.v1.Attributes.AttributeValue"
}
}
}
},
"istio.mixer.v1.Attributes.AttributeValue": {
"type": "object",
"oneOf": [
{
"not": {
"anyOf": [
{
"required": [
"stringValue"
],
"properties": {
"stringValue": {
"description": "Used for values of type STRING, DNS_NAME, EMAIL_ADDRESS, and URI",
"type": "string",
"format": "string"
}
}
},
{
"required": [
"int64Value"
],
"properties": {
"int64Value": {
"description": "Used for values of type INT64",
"type": "integer",
"format": "int64"
}
}
},
{
"required": [
"doubleValue"
],
"properties": {
"doubleValue": {
"description": "Used for values of type DOUBLE",
"type": "number",
"format": "double"
}
}
},
{
"required": [
"boolValue"
],
"properties": {
"boolValue": {
"description": "Used for values of type BOOL",
"type": "boolean"
}
}
},
{
"required": [
"bytesValue"
],
"properties": {
"bytesValue": {
"description": "Used for values of type BYTES",
"type": "string",
"format": "binary"
}
}
},
{
"required": [
"timestampValue"
],
"properties": {
"timestampValue": {
"description": "Used for values of type TIMESTAMP",
"type": "string",
"format": "dateTime"
}
}
},
{
"required": [
"durationValue"
],
"properties": {
"durationValue": {
"description": "Used for values of type DURATION",
"type": "string"
}
}
},
{
"required": [
"stringMapValue"
],
"properties": {
"stringMapValue": {
"$ref": "#/components/schemas/istio.mixer.v1.Attributes.StringMap"
}
}
}
]
}
},
{
"required": [
"stringValue"
],
"properties": {
"stringValue": {
"description": "Used for values of type STRING, DNS_NAME, EMAIL_ADDRESS, and URI",
"type": "string",
"format": "string"
}
}
},
{
"required": [
"int64Value"
],
"properties": {
"int64Value": {
"description": "Used for values of type INT64",
"type": "integer",
"format": "int64"
}
}
},
{
"required": [
"doubleValue"
],
"properties": {
"doubleValue": {
"description": "Used for values of type DOUBLE",
"type": "number",
"format": "double"
}
}
},
{
"required": [
"boolValue"
],
"properties": {
"boolValue": {
"description": "Used for values of type BOOL",
"type": "boolean"
}
}
},
{
"required": [
"bytesValue"
],
"properties": {
"bytesValue": {
"description": "Used for values of type BYTES",
"type": "string",
"format": "binary"
}
}
},
{
"required": [
"timestampValue"
],
"properties": {
"timestampValue": {
"description": "Used for values of type TIMESTAMP",
"type": "string",
"format": "dateTime"
}
}
},
{
"required": [
"durationValue"
],
"properties": {
"durationValue": {
"description": "Used for values of type DURATION",
"type": "string"
}
}
},
{
"required": [
"stringMapValue"
],
"properties": {
"stringMapValue": {
"$ref": "#/components/schemas/istio.mixer.v1.Attributes.StringMap"
}
}
}
]
},
"istio.mixer.v1.Attributes.StringMap": {
"description": "Used for values of type STRING_MAP",
"type": "object",
"properties": {
"entries": {
"description": "Holds a set of name/value pairs.",
"type": "object",
"additionalProperties": {
"type": "string",
"format": "string"
}
}
}
}
}
}
}