{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "description": "Configuration files for gRPC API Gateway & OpenAPI generation plugin for protobuf (https://github.com/meshapi/grpc-api-gateway)",
  "id": "https://json.schemastore.org/grpc-api-gateway.json",
  "properties": {
    "gateway": {
      "$ref": "#/definitions/meshapi.gateway.GatewaySpec"
    },
    "openapi": {
      "$ref": "#/definitions/meshapi.gateway.OpenAPISpec"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "title": "Config",
  "definitions": {
    "meshapi.gateway.AdditionalEndpointBinding": {
      "properties": {
        "get": {
          "type": "string"
        },
        "put": {
          "type": "string"
        },
        "post": {
          "type": "string"
        },
        "delete": {
          "type": "string"
        },
        "patch": {
          "type": "string"
        },
        "custom": {
          "$ref": "#/definitions/meshapi.gateway.CustomPattern"
        },
        "body": {
          "type": "string",
          "description": "body is a request message field selector that will be read via HTTP body. '*' indicates that the entire request message gets decoded from the body. An empty string indicates that no part of the request gets decoded from the body. NOTE: Not all methods support HTTP body."
        },
        "response_body": {
          "type": "string",
          "description": "response_body is a response message field selector that will be written to HTTP response. '*' or an empty string indicates that the entire response message gets encoded."
        },
        "query_params": {
          "items": {
            "$ref": "#/definitions/meshapi.gateway.QueryParameterBinding"
          },
          "type": "array",
          "description": "query_params are explicit query parameter bindings that can be used to rename or ignore query parameters."
        },
        "disable_query_param_discovery": {
          "type": "boolean",
          "description": "disable_query_param_discovery can be used to avoid auto binding query parameters."
        },
        "stream": {
          "$ref": "#/definitions/meshapi.gateway.StreamConfig"
        }
      },
      "additionalProperties": false,
      "type": "object",
      "oneOf": [
        {
          "properties": {
            "get": { "type": "string" }
          },
          "required": ["get"]
        },
        {
          "properties": {
            "put": { "type": "string" }
          },
          "required": ["put"]
        },
        {
          "properties": {
            "post": { "type": "string" }
          },
          "required": ["post"]
        },
        {
          "properties": {
            "delete": { "type": "string" }
          },
          "required": ["delete"]
        },
        {
          "properties": {
            "patch": { "type": "string" }
          },
          "required": ["patch"]
        },
        {
          "properties": {
            "custom": { "$ref": "#/definitions/meshapi.gateway.CustomPattern" }
          },
          "required": ["custom"]
        }
      ],
      "title": "Additional Endpoint Binding",
      "description": "AdditionalEndpointBinding is an additional gRPC method - HTTP endpoint binding specification."
    },
    "meshapi.gateway.CustomPattern": {
      "properties": {
        "method": {
          "type": "string",
          "description": "method is the custom HTTP method."
        },
        "path": {
          "type": "string",
          "description": "path is the HTTP path pattern."
        }
      },
      "additionalProperties": false,
      "type": "object",
      "title": "Custom Pattern",
      "description": "CustomPattern describes an HTTP pattern and custom method."
    },
    "meshapi.gateway.EndpointBinding": {
      "properties": {
        "selector": {
          "type": "string",
          "description": "selector is a dot-separated gRPC service method selector. If the selector begins with '~.', the current proto package will be added to the beginning of the path. For instance: `~.MyService`. Since no proto package can be deduced in the global config file, this alias cannot be used in the global config file. If the selector does not begin with '~.', it will be treated as a fully qualified method name (FQMN)."
        },
        "get": {
          "type": "string"
        },
        "put": {
          "type": "string"
        },
        "post": {
          "type": "string"
        },
        "delete": {
          "type": "string"
        },
        "patch": {
          "type": "string"
        },
        "custom": {
          "$ref": "#/definitions/meshapi.gateway.CustomPattern"
        },
        "body": {
          "type": "string",
          "description": "body is a request message field selector that will be read via HTTP body. '*' indicates that the entire request message gets decoded from the body. An empty string indicates that no part of the request gets decoded from the body. NOTE: Not all methods support HTTP body."
        },
        "response_body": {
          "type": "string",
          "description": "response_body is a response message field selector that will be written to HTTP response. '*' or an empty string indicates that the entire response message gets encoded."
        },
        "query_params": {
          "items": {
            "$ref": "#/definitions/meshapi.gateway.QueryParameterBinding"
          },
          "type": "array",
          "description": "query_params are explicit query parameter bindings that can be used to rename or ignore query parameters."
        },
        "additional_bindings": {
          "items": {
            "$ref": "#/definitions/meshapi.gateway.AdditionalEndpointBinding"
          },
          "type": "array",
          "description": "additional_bindings holds additional bindings for the same gRPC service method."
        },
        "disable_query_param_discovery": {
          "type": "boolean",
          "description": "disable_query_param_discovery can be used to avoid auto binding query parameters."
        },
        "stream": {
          "$ref": "#/definitions/meshapi.gateway.StreamConfig"
        }
      },
      "additionalProperties": false,
      "type": "object",
      "oneOf": [
        {
          "properties": {
            "get": { "type": "string" }
          },
          "required": ["get"]
        },
        {
          "properties": {
            "put": { "type": "string" }
          },
          "required": ["put"]
        },
        {
          "properties": {
            "post": { "type": "string" }
          },
          "required": ["post"]
        },
        {
          "properties": {
            "delete": { "type": "string" }
          },
          "required": ["delete"]
        },
        {
          "properties": {
            "patch": { "type": "string" }
          },
          "required": ["patch"]
        },
        {
          "properties": {
            "custom": { "$ref": "#/definitions/meshapi.gateway.CustomPattern" }
          },
          "required": ["custom"]
        }
      ],
      "title": "Endpoint Binding",
      "description": "EndpointBinding is a gRPC method - HTTP endpoint binding specification."
    },
    "meshapi.gateway.GatewaySpec": {
      "properties": {
        "endpoints": {
          "items": {
            "$ref": "#/definitions/meshapi.gateway.EndpointBinding"
          },
          "type": "array",
          "description": "endpoints hold a series of endpoint binding specs."
        }
      },
      "additionalProperties": false,
      "type": "object",
      "title": "Gateway Spec",
      "description": "GatewaySpec holds gRPC gateway configurations."
    },
    "meshapi.gateway.OpenAPIEnumSpec": {
      "properties": {
        "selector": {
          "type": "string",
          "description": "selector is a dot-separated protobuf enum selector. If the selector begins with a '.', it will be treated as an absolute path. If it begins with '~.', the current proto package will be added to the beginning of the path. For instance: `~.MyEnum`. Since no proto package can be deduced in the global config file, this alias cannot be used in the global config file. If the path does not begin with a '.' or '~.', it will be treated as a relative path and a search from the current proto package will be performed in order to find the enum."
        },
        "schema": {
          "$ref": "#/definitions/meshapi.gateway.openapi.Schema"
        }
      },
      "additionalProperties": false,
      "type": "object",
      "title": "Open API Enum Spec",
      "description": "OpenAPIEnumSpec defines configuration for generating OpenAPI documentation for protobuf enums."
    },
    "meshapi.gateway.OpenAPIMessageSpec": {
      "properties": {
        "selector": {
          "type": "string",
          "description": "selector is a dot-separated protobuf message selector. If the selector begins with a '.', it will be treated as an absolute path. If it begins with '~.', the current proto package will be added to the beginning of the path. For instance: `~.MyMessage`. Since no proto package can be deduced in the global config file, this alias cannot be used in the global config file. If the path does not begin with a '.' or '~.', it will be treated as a relative path and a search from the current proto package will be performed in order to find the message."
        },
        "schema": {
          "$ref": "#/definitions/meshapi.gateway.openapi.Schema"
        },
        "fields": {
          "additionalProperties": {
            "$ref": "#/definitions/meshapi.gateway.openapi.Schema"
          },
          "type": "object",
          "description": "fields allows controlling the OpenAPI v3.1 generation for individual fields in this proto message."
        }
      },
      "additionalProperties": false,
      "type": "object",
      "title": "Open API Message Spec",
      "description": "OpenAPIMessageSpec defines configuration for generating OpenAPI documentation for protobuf messages."
    },
    "meshapi.gateway.OpenAPIServiceSpec": {
      "properties": {
        "selector": {
          "type": "string",
          "description": "selector is a dot-separated gRPC service method selector. If the selector begins with '~.', the current proto package will be added to the beginning of the path. For instance: `~.MyService`. Since no proto package can be deduced in the global config file, this alias cannot be used in the global config file. If the selector does not begin with '~.', it will be treated as a fully qualified method name (FQMN)."
        },
        "document": {
          "$ref": "#/definitions/meshapi.gateway.openapi.Document"
        },
        "methods": {
          "additionalProperties": {
            "$ref": "#/definitions/meshapi.gateway.openapi.Operation"
          },
          "type": "object",
          "description": "methods maps each method to an operation configuration."
        }
      },
      "additionalProperties": false,
      "type": "object",
      "title": "Open API Service Spec",
      "description": "OpenAPIServiceSpec defines configuration for generating OpenAPI documentation for gRPC services."
    },
    "meshapi.gateway.OpenAPISpec": {
      "properties": {
        "document": {
          "$ref": "#/definitions/meshapi.gateway.openapi.Document"
        },
        "services": {
          "items": {
            "$ref": "#/definitions/meshapi.gateway.OpenAPIServiceSpec"
          },
          "type": "array",
          "description": "services is used to configure OpenAPI v3.1 output for gRPC services."
        },
        "messages": {
          "items": {
            "$ref": "#/definitions/meshapi.gateway.OpenAPIMessageSpec"
          },
          "type": "array",
          "description": "messages is used to configure OpenAPI v3.1 output for protobuf messages."
        },
        "enums": {
          "items": {
            "$ref": "#/definitions/meshapi.gateway.OpenAPIEnumSpec"
          },
          "type": "array",
          "description": "enums is used to configure OpenAPI v3.1 output for protobuf enums."
        }
      },
      "additionalProperties": false,
      "type": "object",
      "title": "Open API Spec",
      "description": "OpenAPISpec defines the overall OpenAPI documentation configuration."
    },
    "meshapi.gateway.QueryParameterBinding": {
      "properties": {
        "selector": {
          "type": "string",
          "description": "selector is a dot-separated path to the request message's field."
        },
        "name": {
          "type": "string",
          "description": "name is the name of the HTTP query parameter that will be used."
        },
        "ignore": {
          "type": "boolean",
          "description": "ignore avoids reading this query parameter altogether (default: false)."
        }
      },
      "additionalProperties": false,
      "type": "object",
      "title": "Query Parameter Binding",
      "description": "QueryParameterBinding describes a query parameter to request message binding."
    },
    "meshapi.gateway.StreamConfig": {
      "properties": {
        "disable_websockets": {
          "type": "boolean",
          "description": "disable_websockets indicates whether or not websockets are allowed for this method. The client must still ask for a connection upgrade."
        },
        "disable_sse": {
          "type": "boolean",
          "description": "disable_sse indicates whether or not server-sent events are allowed. see: https://developer.mozilla.org/en-US/docs/Web/API/Server-sent_events/Using_server-sent_events SSE is only used when Accept-Type from the request includes MIME type text/event-stream."
        },
        "disable_chunked_transfer": {
          "type": "boolean",
          "description": "disable_chunked indicates whether or not chunked transfer encoding is allowed. NOTE: Chunked transfer encoding is disabled in HTTP/2 so this option will only be available if the request is HTTP/1."
        }
      },
      "additionalProperties": false,
      "type": "object",
      "title": "Stream Config",
      "description": "StreamConfig sets the behavior of the HTTP server for gRPC streaming methods."
    },
    "meshapi.gateway.openapi.Components": {
      "properties": {
        "schemas": {
          "additionalProperties": {
            "$ref": "#/definitions/meshapi.gateway.openapi.Schema"
          },
          "type": "object"
        },
        "responses": {
          "additionalProperties": {
            "$ref": "#/definitions/meshapi.gateway.openapi.Response"
          },
          "type": "object"
        },
        "parameters": {
          "additionalProperties": {
            "$ref": "#/definitions/meshapi.gateway.openapi.Parameter"
          },
          "type": "object"
        },
        "examples": {
          "additionalProperties": {
            "$ref": "#/definitions/meshapi.gateway.openapi.Example"
          },
          "type": "object"
        },
        "request_bodies": {
          "additionalProperties": {
            "$ref": "#/definitions/meshapi.gateway.openapi.RequestBody"
          },
          "type": "object"
        },
        "headers": {
          "additionalProperties": {
            "$ref": "#/definitions/meshapi.gateway.openapi.Header"
          },
          "type": "object"
        },
        "security_schemes": {
          "additionalProperties": {
            "$ref": "#/definitions/meshapi.gateway.openapi.SecurityScheme"
          },
          "type": "object"
        },
        "links": {
          "additionalProperties": {
            "$ref": "#/definitions/meshapi.gateway.openapi.Link"
          },
          "type": "object"
        },
        "extensions": {
          "additionalProperties": {
            "oneOf": [
              {
                "type": "array"
              },
              {
                "type": "boolean"
              },
              {
                "type": "number"
              },
              {
                "type": "object"
              },
              {
                "type": "string"
              }
            ],
            "title": "Value",
            "description": "`Value` represents a dynamically typed value which can be either null, a number, a string, a boolean, a recursive struct value, or a list of values. A producer of value is expected to set one of these variants. Absence of any variant indicates an error. The JSON representation for `Value` is JSON value."
          },
          "type": "object",
          "description": "extensions that start with \"x-\" such as \"x-foo\" used to describe extra functionality that is not covered by standard OpenAPI specification. See: https://spec.openapis.org/oas/latest.html#specification-extensions"
        }
      },
      "additionalProperties": false,
      "type": "object",
      "title": "Components",
      "description": "Holds a set of reusable objects for different aspects of the OAS. All objects defined within the components object will have no effect on the API unless they are explicitly referenced from properties outside the components object.  See: https://spec.openapis.org/oas/latest.html#components-object"
    },
    "meshapi.gateway.openapi.Contact": {
      "properties": {
        "name": {
          "type": "string",
          "description": "The identifying name of the contact person/organization."
        },
        "url": {
          "type": "string",
          "description": "The URL pointing to the contact information. This MUST be in the form of a URL."
        },
        "email": {
          "type": "string",
          "description": "The email address of the contact person/organization. This MUST be in the form of an email address."
        },
        "extensions": {
          "additionalProperties": {
            "oneOf": [
              {
                "type": "array"
              },
              {
                "type": "boolean"
              },
              {
                "type": "number"
              },
              {
                "type": "object"
              },
              {
                "type": "string"
              }
            ],
            "title": "Value",
            "description": "`Value` represents a dynamically typed value which can be either null, a number, a string, a boolean, a recursive struct value, or a list of values. A producer of value is expected to set one of these variants. Absence of any variant indicates an error. The JSON representation for `Value` is JSON value."
          },
          "type": "object",
          "description": "Extensions that start with \"x-\" such as \"x-foo\" used to describe extra functionality that is not covered by standard OpenAPI specification. See: https://spec.openapis.org/oas/latest.html#specification-extensions"
        }
      },
      "additionalProperties": false,
      "type": "object",
      "title": "Contact",
      "description": "Contact information for the exposed API. See: https://spec.openapis.org/oas/v3.1.0#contact-object"
    },
    "meshapi.gateway.openapi.Discriminator": {
      "properties": {
        "property_name": {
          "type": "string",
          "description": "REQUIRED. The name of the property in the payload that will hold the discriminator value."
        },
        "mapping": {
          "additionalProperties": {
            "type": "string"
          },
          "type": "object",
          "description": "An object to hold mappings between payload values and schema names or references."
        },
        "extensions": {
          "additionalProperties": {
            "oneOf": [
              {
                "type": "array"
              },
              {
                "type": "boolean"
              },
              {
                "type": "number"
              },
              {
                "type": "object"
              },
              {
                "type": "string"
              }
            ],
            "title": "Value",
            "description": "`Value` represents a dynamically typed value which can be either null, a number, a string, a boolean, a recursive struct value, or a list of values. A producer of value is expected to set one of these variants. Absence of any variant indicates an error. The JSON representation for `Value` is JSON value."
          },
          "type": "object",
          "description": "Extensions that start with \"x-\" such as \"x-foo\" used to describe extra functionality that is not covered by standard OpenAPI specification. See: https://spec.openapis.org/oas/latest.html#specification-extensions"
        }
      },
      "additionalProperties": false,
      "type": "object",
      "title": "Discriminator",
      "description": "See: https://spec.openapis.org/oas/latest.html#discriminator-object"
    },
    "meshapi.gateway.openapi.Document": {
      "properties": {
        "info": {
          "$ref": "#/definitions/meshapi.gateway.openapi.Info"
        },
        "servers": {
          "items": {
            "$ref": "#/definitions/meshapi.gateway.openapi.Server"
          },
          "type": "array",
          "description": "An array of Server Objects, which provide connectivity information to a target server. If the servers property is not provided, or is an empty array, the default value would be a Server Object with a url value of /. See: https://spec.openapis.org/oas/latest.html#server-object"
        },
        "components": {
          "$ref": "#/definitions/meshapi.gateway.openapi.Components"
        },
        "security": {
          "items": {
            "$ref": "#/definitions/meshapi.gateway.openapi.SecurityRequirement"
          },
          "type": "array",
          "description": "A declaration of which security mechanisms can be used across the API. The list of values includes alternative security requirement objects that can be used. Only one of the security requirement objects need to be satisfied to authorize a request. Individual operations can override this definition. To make security optional, an empty security requirement ({}) can be included in the array. See: https://spec.openapis.org/oas/v3.1.0#security-requirement-object"
        },
        "tags": {
          "items": {
            "$ref": "#/definitions/meshapi.gateway.openapi.Tag"
          },
          "type": "array",
          "description": "A list of tags used by the document with additional metadata. The order of the tags can be used to reflect on their order by the parsing tools. Not all tags that are used by the Operation Object must be declared. The tags that are not declared MAY be organized randomly or based on the tools’ logic. Each tag name in the list MUST be unique. See: https://spec.openapis.org/oas/v3.1.0#tag-object"
        },
        "external_docs": {
          "$ref": "#/definitions/meshapi.gateway.openapi.ExternalDocumentation"
        },
        "extensions": {
          "additionalProperties": {
            "oneOf": [
              {
                "type": "array"
              },
              {
                "type": "boolean"
              },
              {
                "type": "number"
              },
              {
                "type": "object"
              },
              {
                "type": "string"
              }
            ],
            "title": "Value",
            "description": "`Value` represents a dynamically typed value which can be either null, a number, a string, a boolean, a recursive struct value, or a list of values. A producer of value is expected to set one of these variants. Absence of any variant indicates an error. The JSON representation for `Value` is JSON value."
          },
          "type": "object",
          "description": "extensions that start with \"x-\" such as \"x-foo\" used to describe extra functionality that is not covered by standard OpenAPI specification. See: https://spec.openapis.org/oas/latest.html#specification-extensions"
        },
        "config": {
          "$ref": "#/definitions/meshapi.gateway.openapi.DocumentConfiguration"
        }
      },
      "additionalProperties": false,
      "type": "object",
      "title": "Document",
      "description": "This is the root object of the OpenAPI document. See: https://spec.openapis.org/oas/v3.1.0#openapi-object"
    },
    "meshapi.gateway.openapi.DocumentConfiguration": {
      "properties": {
        "default_responses": {
          "additionalProperties": {
            "$ref": "#/definitions/meshapi.gateway.openapi.Response"
          },
          "type": "object",
          "description": "default_responses is used to control the default responses generated in this OpenAPI document."
        }
      },
      "additionalProperties": false,
      "type": "object",
      "title": "Document Configuration",
      "description": "DocumentConfiguration allows for controlling the default responses"
    },
    "meshapi.gateway.openapi.Encoding": {
      "properties": {
        "content_type": {
          "type": "string",
          "description": "The Content-Type for encoding a specific property. Default value depends on the property type: for object - application/json; for array – the default is defined based on the inner type; for all other cases the default is application/octet-stream. The value can be a specific media type (e.g. application/json), a wildcard media type (e.g. image/*), or a comma-separated list of the two types."
        },
        "headers": {
          "additionalProperties": {
            "$ref": "#/definitions/meshapi.gateway.openapi.Header"
          },
          "type": "object",
          "description": "A map allowing additional information to be provided as headers, for example Content-Disposition. Content-Type is described separately and SHALL be ignored in this section. This property SHALL be ignored if the request body media type is not a multipart."
        },
        "style": {
          "type": "string",
          "description": "Describes how a specific property value will be serialized depending on its type. See Parameter Object for details on the style property. The behavior follows the same values as query parameters, including default values. This property SHALL be ignored if the request body media type is not application/x-www-form-urlencoded or multipart/form-data. If a value is explicitly defined, then the value of contentType (implicit or explicit) SHALL be ignored."
        },
        "explode": {
          "type": "boolean",
          "description": "When this is true, property values of type array or object generate separate parameters for each value of the array, or key-value-pair of the map. For other types of properties this property has no effect. When style is form, the default value is true. For all other styles, the default value is false. This property SHALL be ignored if the request body media type is not application/x-www-form-urlencoded or multipart/form-data. If a value is explicitly defined, then the value of contentType (implicit or explicit) SHALL be ignored."
        },
        "allow_reserved": {
          "type": "boolean",
          "description": "Determines whether the parameter value SHOULD allow reserved characters, as defined by [RFC3986] :/?#[]@!$\u0026'()*+,;= to be included without percent-encoding. The default value is false. This property SHALL be ignored if the request body media type is not application/x-www-form-urlencoded or multipart/form-data. If a value is explicitly defined, then the value of contentType (implicit or explicit) SHALL be ignored."
        },
        "extensions": {
          "additionalProperties": {
            "oneOf": [
              {
                "type": "array"
              },
              {
                "type": "boolean"
              },
              {
                "type": "number"
              },
              {
                "type": "object"
              },
              {
                "type": "string"
              }
            ],
            "title": "Value",
            "description": "`Value` represents a dynamically typed value which can be either null, a number, a string, a boolean, a recursive struct value, or a list of values. A producer of value is expected to set one of these variants. Absence of any variant indicates an error. The JSON representation for `Value` is JSON value."
          },
          "type": "object",
          "description": "extensions that start with \"x-\" such as \"x-foo\" used to describe extra functionality that is not covered by standard OpenAPI specification. See: https://spec.openapis.org/oas/latest.html#specification-extensions"
        }
      },
      "additionalProperties": false,
      "type": "object",
      "title": "Encoding",
      "description": "A single encoding definition applied to a single schema property. See: https://spec.openapis.org/oas/latest.html#encoding-object"
    },
    "meshapi.gateway.openapi.Example": {
      "properties": {
        "ref": {
          "$ref": "#/definitions/meshapi.gateway.openapi.Reference"
        },
        "summary": {
          "type": "string",
          "description": "Short description for the example."
        },
        "description": {
          "type": "string",
          "description": "Long description for the example. CommonMark syntax MAY be used for rich text representation."
        },
        "value": {
          "oneOf": [
            {
              "type": "array"
            },
            {
              "type": "boolean"
            },
            {
              "type": "number"
            },
            {
              "type": "object"
            },
            {
              "type": "string"
            }
          ],
          "title": "Value",
          "description": "`Value` represents a dynamically typed value which can be either null, a number, a string, a boolean, a recursive struct value, or a list of values. A producer of value is expected to set one of these variants. Absence of any variant indicates an error. The JSON representation for `Value` is JSON value."
        },
        "external_value": {
          "type": "string",
          "description": "A URI that points to the literal example. This provides the capability to reference examples that cannot easily be included in JSON or YAML documents. The value field and externalValue field are mutually exclusive. See the rules for resolving Relative References."
        },
        "extensions": {
          "additionalProperties": {
            "oneOf": [
              {
                "type": "array"
              },
              {
                "type": "boolean"
              },
              {
                "type": "number"
              },
              {
                "type": "object"
              },
              {
                "type": "string"
              }
            ],
            "title": "Value",
            "description": "`Value` represents a dynamically typed value which can be either null, a number, a string, a boolean, a recursive struct value, or a list of values. A producer of value is expected to set one of these variants. Absence of any variant indicates an error. The JSON representation for `Value` is JSON value."
          },
          "type": "object",
          "description": "extensions that start with \"x-\" such as \"x-foo\" used to describe extra functionality that is not covered by standard OpenAPI specification. See: https://spec.openapis.org/oas/latest.html#specification-extensions"
        }
      },
      "additionalProperties": false,
      "type": "object",
      "title": "Example",
      "description": "See: https://spec.openapis.org/oas/latest.html#example-object"
    },
    "meshapi.gateway.openapi.ExternalDocumentation": {
      "properties": {
        "description": {
          "type": "string",
          "description": "A description of the target documentation. CommonMark syntax MAY be used for rich text representation."
        },
        "url": {
          "type": "string",
          "description": "REQUIRED. The URL for the target documentation. This MUST be in the form of a URL."
        },
        "extensions": {
          "additionalProperties": {
            "oneOf": [
              {
                "type": "array"
              },
              {
                "type": "boolean"
              },
              {
                "type": "number"
              },
              {
                "type": "object"
              },
              {
                "type": "string"
              }
            ],
            "title": "Value",
            "description": "`Value` represents a dynamically typed value which can be either null, a number, a string, a boolean, a recursive struct value, or a list of values. A producer of value is expected to set one of these variants. Absence of any variant indicates an error. The JSON representation for `Value` is JSON value."
          },
          "type": "object",
          "description": "Extensions that start with \"x-\" such as \"x-foo\" used to describe extra functionality that is not covered by standard OpenAPI specification. See: https://spec.openapis.org/oas/latest.html#specification-extensions"
        }
      },
      "additionalProperties": false,
      "type": "object",
      "title": "External Documentation",
      "description": "Allows referencing an external resource for extended documentation. See: https://spec.openapis.org/oas/v3.1.0#external-documentation-object"
    },
    "meshapi.gateway.openapi.FieldConfiguration": {
      "properties": {
        "path_param_name": {
          "type": "string",
          "description": "Alternative parameter name when used as path parameter. If set, this will be used as the complete parameter name when this field is used as a path parameter. Use this to avoid having auto-generated path parameter names for overlapping paths."
        },
        "required": {
          "type": "boolean",
          "description": "Marks this field as required."
        }
      },
      "additionalProperties": false,
      "type": "object",
      "title": "Field Configuration",
      "description": "FieldConfiguration provides additional field level properties used when generating the OpenAPI v3.1 file. These properties are not defined by OpenAPIv3, but they are used to control the generation."
    },
    "meshapi.gateway.openapi.Header": {
      "properties": {
        "ref": {
          "$ref": "#/definitions/meshapi.gateway.openapi.Reference"
        },
        "description": {
          "type": "string",
          "description": "A description of the link. CommonMark syntax MAY be used for rich text representation."
        },
        "required": {
          "type": "boolean",
          "description": "Determines whether this parameter is mandatory. If the parameter location is \"path\", this property is REQUIRED and its value MUST be true. Otherwise, the property MAY be included and its default value is false."
        },
        "deprecated": {
          "type": "boolean",
          "description": "Specifies that a parameter is deprecated and SHOULD be transitioned out of usage. Default value is false."
        },
        "allow_empty_value": {
          "type": "boolean",
          "description": "Sets the ability to pass empty-valued parameters. This is valid only for query parameters and allows sending a parameter with an empty value. Default value is false. If style is used, and if behavior is n/a (cannot be serialized), the value of allowEmptyValue SHALL be ignored. Use of this property is NOT RECOMMENDED, as it is likely to be removed in a later revision."
        },
        "style": {
          "type": "string",
          "description": "Describes how the parameter value will be serialized depending on the type of the parameter value. Default value for header parameters is \"simple\"."
        },
        "explode": {
          "type": "boolean",
          "description": "When this is true, parameter values of type array or object generate separate parameters for each value of the array or key-value pair of the map. For other types of parameters this property has no effect. When style is form, the default value is true. For all other styles, the default value is false."
        },
        "schema": {
          "$ref": "#/definitions/meshapi.gateway.openapi.Schema"
        },
        "example": {
          "oneOf": [
            {
              "type": "array"
            },
            {
              "type": "boolean"
            },
            {
              "type": "number"
            },
            {
              "type": "object"
            },
            {
              "type": "string"
            }
          ],
          "title": "Value",
          "description": "`Value` represents a dynamically typed value which can be either null, a number, a string, a boolean, a recursive struct value, or a list of values. A producer of value is expected to set one of these variants. Absence of any variant indicates an error. The JSON representation for `Value` is JSON value."
        },
        "examples": {
          "additionalProperties": {
            "$ref": "#/definitions/meshapi.gateway.openapi.Example"
          },
          "type": "object",
          "description": "Examples of the parameter’s potential value. Each example SHOULD contain a value in the correct format as specified in the parameter encoding. The examples field is mutually exclusive of the example field. Furthermore, if referencing a schema that contains an example, the examples value SHALL override the example provided by the schema."
        },
        "content": {
          "additionalProperties": {
            "$ref": "#/definitions/meshapi.gateway.openapi.MediaType"
          },
          "type": "object",
          "description": "A map containing the representations for the parameter. The key is the media type and the value describes it. The map MUST only contain one entry."
        },
        "extensions": {
          "additionalProperties": {
            "oneOf": [
              {
                "type": "array"
              },
              {
                "type": "boolean"
              },
              {
                "type": "number"
              },
              {
                "type": "object"
              },
              {
                "type": "string"
              }
            ],
            "title": "Value",
            "description": "`Value` represents a dynamically typed value which can be either null, a number, a string, a boolean, a recursive struct value, or a list of values. A producer of value is expected to set one of these variants. Absence of any variant indicates an error. The JSON representation for `Value` is JSON value."
          },
          "type": "object",
          "description": "extensions that start with \"x-\" such as \"x-foo\" used to describe extra functionality that is not covered by standard OpenAPI specification. See: https://spec.openapis.org/oas/latest.html#specification-extensions"
        }
      },
      "additionalProperties": false,
      "type": "object",
      "title": "Header",
      "description": "Header object follows the structure of the Parameter object with the following changes: 1. name MUST NOT be specified, it is given in the corresponding headers map.  2. in MUST NOT be specified, it is implicitly in header. 3. All traits that are affected by the location MUST be applicable to a location of header (for example, style). See: https://spec.openapis.org/oas/v3.1.0#header-object"
    },
    "meshapi.gateway.openapi.Info": {
      "properties": {
        "title": {
          "type": "string",
          "description": "REQUIRED. The title of the API."
        },
        "summary": {
          "type": "string",
          "description": "A short summary of the API."
        },
        "description": {
          "type": "string",
          "description": "A description of the API. CommonMark syntax MAY be used for rich text representation."
        },
        "terms_of_service": {
          "type": "string",
          "description": "A URL to the Terms of Service for the API. This MUST be in the form of a URL."
        },
        "contact": {
          "$ref": "#/definitions/meshapi.gateway.openapi.Contact"
        },
        "license": {
          "$ref": "#/definitions/meshapi.gateway.openapi.License"
        },
        "version": {
          "type": "string",
          "description": "REQUIRED. The version of the OpenAPI document."
        },
        "extensions": {
          "additionalProperties": {
            "oneOf": [
              {
                "type": "array"
              },
              {
                "type": "boolean"
              },
              {
                "type": "number"
              },
              {
                "type": "object"
              },
              {
                "type": "string"
              }
            ],
            "title": "Value",
            "description": "`Value` represents a dynamically typed value which can be either null, a number, a string, a boolean, a recursive struct value, or a list of values. A producer of value is expected to set one of these variants. Absence of any variant indicates an error. The JSON representation for `Value` is JSON value."
          },
          "type": "object",
          "description": "Extensions that start with \"x-\" such as \"x-foo\" used to describe extra functionality that is not covered by standard OpenAPI specification. See: https://spec.openapis.org/oas/latest.html#specification-extensions"
        }
      },
      "additionalProperties": false,
      "type": "object",
      "title": "Info",
      "description": "Info captures OpenAPI Info object. NOTE: A generated value will be used for the required fields if they are left empty. See: https://spec.openapis.org/oas/v3.1.0#info-object"
    },
    "meshapi.gateway.openapi.License": {
      "properties": {
        "name": {
          "type": "string",
          "description": "REQUIRED. The license name used for the API."
        },
        "identifier": {
          "type": "string",
          "description": "An SPDX license expression for the API. The identifier field is mutually exclusive of the url field."
        },
        "url": {
          "type": "string",
          "description": "A URL to the license used for the API. This MUST be in the form of a URL. The url field is mutually exclusive of the identifier field."
        },
        "extensions": {
          "additionalProperties": {
            "oneOf": [
              {
                "type": "array"
              },
              {
                "type": "boolean"
              },
              {
                "type": "number"
              },
              {
                "type": "object"
              },
              {
                "type": "string"
              }
            ],
            "title": "Value",
            "description": "`Value` represents a dynamically typed value which can be either null, a number, a string, a boolean, a recursive struct value, or a list of values. A producer of value is expected to set one of these variants. Absence of any variant indicates an error. The JSON representation for `Value` is JSON value."
          },
          "type": "object",
          "description": "Extensions that start with \"x-\" such as \"x-foo\" used to describe extra functionality that is not covered by standard OpenAPI specification. See: https://spec.openapis.org/oas/latest.html#specification-extensions"
        }
      },
      "additionalProperties": false,
      "type": "object",
      "title": "License",
      "description": "License information for the exposed API. See: https://spec.openapis.org/oas/v3.1.0#license-object"
    },
    "meshapi.gateway.openapi.Link": {
      "properties": {
        "ref": {
          "$ref": "#/definitions/meshapi.gateway.openapi.Reference"
        },
        "operation_ref": {
          "type": "string",
          "description": "A relative or absolute URI reference to an OAS operation. This field is mutually exclusive of the operationId field, and MUST point to an Operation Object. Relative operationRef values MAY be used to locate an existing Operation Object in the OpenAPI definition."
        },
        "operation_id": {
          "type": "string",
          "description": "The name of an existing, resolvable OAS operation, as defined with a unique operationId. This field is mutually exclusive of the operationRef field. NOTE: If a path (relative or absolute) to another service method is used, that operation ID will be substituted. \tExample: \".google.protobuf.Timestamp\""
        },
        "parameters": {
          "additionalProperties": {
            "oneOf": [
              {
                "type": "array"
              },
              {
                "type": "boolean"
              },
              {
                "type": "number"
              },
              {
                "type": "object"
              },
              {
                "type": "string"
              }
            ],
            "title": "Value",
            "description": "`Value` represents a dynamically typed value which can be either null, a number, a string, a boolean, a recursive struct value, or a list of values. A producer of value is expected to set one of these variants. Absence of any variant indicates an error. The JSON representation for `Value` is JSON value."
          },
          "type": "object",
          "description": "A map representing parameters to pass to an operation as specified with operationId or identified via operationRef. The key is the parameter name to be used, whereas the value can be a constant or an expression to be evaluated and passed to the linked operation. The parameter name can be qualified using the parameter location [{in}.]{name} for operations that use the same parameter name in different locations (e.g. path.id)."
        },
        "request_body": {
          "oneOf": [
            {
              "type": "array"
            },
            {
              "type": "boolean"
            },
            {
              "type": "number"
            },
            {
              "type": "object"
            },
            {
              "type": "string"
            }
          ],
          "title": "Value",
          "description": "`Value` represents a dynamically typed value which can be either null, a number, a string, a boolean, a recursive struct value, or a list of values. A producer of value is expected to set one of these variants. Absence of any variant indicates an error. The JSON representation for `Value` is JSON value."
        },
        "description": {
          "type": "string",
          "description": "A description of the link. CommonMark syntax MAY be used for rich text representation."
        },
        "server": {
          "$ref": "#/definitions/meshapi.gateway.openapi.Server"
        },
        "extensions": {
          "additionalProperties": {
            "oneOf": [
              {
                "type": "array"
              },
              {
                "type": "boolean"
              },
              {
                "type": "number"
              },
              {
                "type": "object"
              },
              {
                "type": "string"
              }
            ],
            "title": "Value",
            "description": "`Value` represents a dynamically typed value which can be either null, a number, a string, a boolean, a recursive struct value, or a list of values. A producer of value is expected to set one of these variants. Absence of any variant indicates an error. The JSON representation for `Value` is JSON value."
          },
          "type": "object",
          "description": "extensions that start with \"x-\" such as \"x-foo\" used to describe extra functionality that is not covered by standard OpenAPI specification. See: https://spec.openapis.org/oas/latest.html#specification-extensions"
        }
      },
      "additionalProperties": false,
      "type": "object",
      "oneOf": [
        {
          "properties": {
            "operation_ref": { "type": "string" }
          },
          "required": ["operation_ref"]
        },
        {
          "properties": {
            "operation_id": { "type": "string" }
          },
          "required": ["operation_id"]
        }
      ],
      "title": "Link",
      "description": "The Link object represents a possible design-time link for a response. The presence of a link does not guarantee the caller’s ability to successfully invoke it, rather it provides a known relationship and traversal mechanism between responses and other operations. See: https://spec.openapis.org/oas/v3.1.0#link-object"
    },
    "meshapi.gateway.openapi.MediaType": {
      "properties": {
        "schema": {
          "$ref": "#/definitions/meshapi.gateway.openapi.Schema"
        },
        "example": {
          "oneOf": [
            {
              "type": "array"
            },
            {
              "type": "boolean"
            },
            {
              "type": "number"
            },
            {
              "type": "object"
            },
            {
              "type": "string"
            }
          ],
          "title": "Value",
          "description": "`Value` represents a dynamically typed value which can be either null, a number, a string, a boolean, a recursive struct value, or a list of values. A producer of value is expected to set one of these variants. Absence of any variant indicates an error. The JSON representation for `Value` is JSON value."
        },
        "examples": {
          "additionalProperties": {
            "$ref": "#/definitions/meshapi.gateway.openapi.Example"
          },
          "type": "object",
          "description": "Examples of the parameter’s potential value. Each example SHOULD contain a value in the correct format as specified in the parameter encoding. The examples field is mutually exclusive of the example field. Furthermore, if referencing a schema that contains an example, the examples value SHALL override the example provided by the schema."
        },
        "encoding": {
          "additionalProperties": {
            "$ref": "#/definitions/meshapi.gateway.openapi.Encoding"
          },
          "type": "object",
          "description": "A map between a property name and its encoding information. The key, being the property name, MUST exist in the schema as a property. The encoding object SHALL only apply to requestBody objects when the media type is multipart or application/x-www-form-urlencoded."
        },
        "extensions": {
          "additionalProperties": {
            "oneOf": [
              {
                "type": "array"
              },
              {
                "type": "boolean"
              },
              {
                "type": "number"
              },
              {
                "type": "object"
              },
              {
                "type": "string"
              }
            ],
            "title": "Value",
            "description": "`Value` represents a dynamically typed value which can be either null, a number, a string, a boolean, a recursive struct value, or a list of values. A producer of value is expected to set one of these variants. Absence of any variant indicates an error. The JSON representation for `Value` is JSON value."
          },
          "type": "object",
          "description": "extensions that start with \"x-\" such as \"x-foo\" used to describe extra functionality that is not covered by standard OpenAPI specification. See: https://spec.openapis.org/oas/latest.html#specification-extensions"
        }
      },
      "additionalProperties": false,
      "type": "object",
      "title": "Media Type",
      "description": "Each Media Type Object provides schema and examples for the media type identified by its key. See: https://spec.openapis.org/oas/latest.html#media-type-object"
    },
    "meshapi.gateway.openapi.Operation": {
      "properties": {
        "tags": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "description": "A list of tags for API documentation control. Tags can be used for logical grouping of operations by resources or any other qualifier."
        },
        "summary": {
          "type": "string",
          "description": "A short summary of what the operation does. Default is the proto docstring for this method."
        },
        "description": {
          "type": "string",
          "description": "A verbose explanation of the operation behavior. CommonMark syntax MAY be used for rich text representation."
        },
        "external_docs": {
          "$ref": "#/definitions/meshapi.gateway.openapi.ExternalDocumentation"
        },
        "operation_id": {
          "type": "string",
          "description": "Override the operation ID, if left unset, a default value will be provided."
        },
        "parameters": {
          "items": {
            "$ref": "#/definitions/meshapi.gateway.openapi.Parameter"
          },
          "type": "array",
          "description": "A list of parameters that are applicable for this operation. Note that path and query parameters get populated by the generator and will override any overlapping keys. You might use this to define headers and values that are not defined on the request payload."
        },
        "responses": {
          "additionalProperties": {
            "$ref": "#/definitions/meshapi.gateway.openapi.Response"
          },
          "type": "object",
          "description": "The list of possible responses returned from executing this operation. NOTE: This list is additive meaning that it will override any generated response from the proto files."
        },
        "deprecated": {
          "type": "boolean",
          "description": "Declares this operation to be deprecated. Consumers SHOULD refrain from usage of the declared operation. Default value is false."
        },
        "security": {
          "items": {
            "$ref": "#/definitions/meshapi.gateway.openapi.SecurityRequirement"
          },
          "type": "array",
          "description": "A declaration of which security mechanisms can be used for this operation. The list of values includes alternative security requirement objects that can be used. Only one of the security requirement objects need to be satisfied to authorize a request. To make security optional, an empty security requirement ({}) can be included in the array. This definition overrides any declared top-level security. To remove a top-level security declaration, an empty array can be used."
        },
        "servers": {
          "items": {
            "$ref": "#/definitions/meshapi.gateway.openapi.Server"
          },
          "type": "array",
          "description": "An alternative server array to service this operation. If an alternative server object is specified at the Path Item Object or Root level, it will be overridden by this value."
        },
        "extensions": {
          "additionalProperties": {
            "oneOf": [
              {
                "type": "array"
              },
              {
                "type": "boolean"
              },
              {
                "type": "number"
              },
              {
                "type": "object"
              },
              {
                "type": "string"
              }
            ],
            "title": "Value",
            "description": "`Value` represents a dynamically typed value which can be either null, a number, a string, a boolean, a recursive struct value, or a list of values. A producer of value is expected to set one of these variants. Absence of any variant indicates an error. The JSON representation for `Value` is JSON value."
          },
          "type": "object",
          "description": "extensions that start with \"x-\" such as \"x-foo\" used to describe extra functionality that is not covered by standard OpenAPI specification. See: https://spec.openapis.org/oas/latest.html#specification-extensions"
        }
      },
      "additionalProperties": false,
      "type": "object",
      "title": "Operation",
      "description": "Describes a single API operation on a path. NOTE: this operation object is a partial implementation of the OpenAPI Operation object. Fields overridden here will only impact this method but will be used for all different HTTP bindings of the same method. See: https://spec.openapis.org/oas/v3.1.0#operation-object"
    },
    "meshapi.gateway.openapi.Parameter": {
      "properties": {
        "ref": {
          "$ref": "#/definitions/meshapi.gateway.openapi.Reference"
        },
        "name": {
          "type": "string",
          "description": "REQUIRED. The name of the parameter. Parameter names are case sensitive. If in is \"path\", the name field MUST correspond to a template expression occurring within the path field in the Paths Object. See Path Templating for further information. If in is \"header\" and the name field is \"Accept\", \"Content-Type\" or \"Authorization\", the parameter definition SHALL be ignored. For all other cases, the name corresponds to the parameter name used by the in property."
        },
        "in": {
          "type": "string",
          "description": "REQUIRED. The location of the parameter. Possible values are \"query\", \"header\", \"path\" or \"cookie\"."
        },
        "description": {
          "type": "string",
          "description": "A description of the link. CommonMark syntax MAY be used for rich text representation."
        },
        "required": {
          "type": "boolean",
          "description": "Determines whether this parameter is mandatory. If the parameter location is \"path\", this property is REQUIRED and its value MUST be true. Otherwise, the property MAY be included and its default value is false."
        },
        "deprecated": {
          "type": "boolean",
          "description": "Specifies that a parameter is deprecated and SHOULD be transitioned out of usage. Default value is false."
        },
        "allow_empty_value": {
          "type": "boolean",
          "description": "Sets the ability to pass empty-valued parameters. This is valid only for query parameters and allows sending a parameter with an empty value. Default value is false. If style is used, and if behavior is n/a (cannot be serialized), the value of allowEmptyValue SHALL be ignored. Use of this property is NOT RECOMMENDED, as it is likely to be removed in a later revision."
        },
        "style": {
          "type": "string",
          "description": "Describes how the parameter value will be serialized depending on the type of the parameter value. Default value for header parameters is \"simple\"."
        },
        "explode": {
          "type": "boolean",
          "description": "When this is true, parameter values of type array or object generate separate parameters for each value of the array or key-value pair of the map. For other types of parameters this property has no effect. When style is form, the default value is true. For all other styles, the default value is false."
        },
        "allow_reserved": {
          "type": "boolean",
          "description": "Determines whether the parameter value SHOULD allow reserved characters, as defined by [RFC3986] :/?#[]@!$\u0026'()*+,;= to be included without percent-encoding. This property only applies to parameters with an in value of query. The default value is false."
        },
        "schema": {
          "$ref": "#/definitions/meshapi.gateway.openapi.Schema"
        },
        "example": {
          "oneOf": [
            {
              "type": "array"
            },
            {
              "type": "boolean"
            },
            {
              "type": "number"
            },
            {
              "type": "object"
            },
            {
              "type": "string"
            }
          ],
          "title": "Value",
          "description": "`Value` represents a dynamically typed value which can be either null, a number, a string, a boolean, a recursive struct value, or a list of values. A producer of value is expected to set one of these variants. Absence of any variant indicates an error. The JSON representation for `Value` is JSON value."
        },
        "examples": {
          "additionalProperties": {
            "$ref": "#/definitions/meshapi.gateway.openapi.Example"
          },
          "type": "object",
          "description": "Examples of the parameter’s potential value. Each example SHOULD contain a value in the correct format as specified in the parameter encoding. The examples field is mutually exclusive of the example field. Furthermore, if referencing a schema that contains an example, the examples value SHALL override the example provided by the schema."
        },
        "content": {
          "additionalProperties": {
            "$ref": "#/definitions/meshapi.gateway.openapi.MediaType"
          },
          "type": "object",
          "description": "A map containing the representations for the parameter. The key is the media type and the value describes it. The map MUST only contain one entry."
        },
        "extensions": {
          "additionalProperties": {
            "oneOf": [
              {
                "type": "array"
              },
              {
                "type": "boolean"
              },
              {
                "type": "number"
              },
              {
                "type": "object"
              },
              {
                "type": "string"
              }
            ],
            "title": "Value",
            "description": "`Value` represents a dynamically typed value which can be either null, a number, a string, a boolean, a recursive struct value, or a list of values. A producer of value is expected to set one of these variants. Absence of any variant indicates an error. The JSON representation for `Value` is JSON value."
          },
          "type": "object",
          "description": "extensions that start with \"x-\" such as \"x-foo\" used to describe extra functionality that is not covered by standard OpenAPI specification. See: https://spec.openapis.org/oas/latest.html#specification-extensions"
        }
      },
      "additionalProperties": false,
      "type": "object",
      "title": "Parameter",
      "description": "Describes a single operation parameter. A unique parameter is defined by a combination of a name and location. See: https://spec.openapis.org/oas/latest.html#parameter-object"
    },
    "meshapi.gateway.openapi.Reference": {
      "properties": {
        "uri": {
          "type": "string",
          "description": "REQUIRED. The reference identifier. This MUST be in the form of a URI. For proto messages, a fully qualified message name can be used (relative links are allowed where proto file is deduced). Example: \".google.protobuf.Timestamp\""
        },
        "summary": {
          "type": "string",
          "description": "A short summary that, by default, SHOULD override that of the referenced component. If the referenced object-type does not allow a summary field, then this field has no effect."
        },
        "description": {
          "type": "string",
          "description": "A description that, by default, SHOULD override that of the referenced component. CommonMark syntax MAY be used for rich text representation. If the referenced object-type does not allow a description field, then this field has no effect."
        }
      },
      "additionalProperties": false,
      "type": "object",
      "title": "Reference",
      "description": "Reference allows referencing other components in the OpenAPI document, both internally and externally. For detailed information on the Reference object, refer to the OpenAPI Specification: https://spec.openapis.org/oas/latest.html#reference-object"
    },
    "meshapi.gateway.openapi.RequestBody": {
      "properties": {
        "ref": {
          "$ref": "#/definitions/meshapi.gateway.openapi.Reference"
        },
        "description": {
          "type": "string",
          "description": "A brief description of the request body. This could contain examples of use. CommonMark syntax MAY be used for rich text representation."
        },
        "content": {
          "additionalProperties": {
            "$ref": "#/definitions/meshapi.gateway.openapi.MediaType"
          },
          "type": "object",
          "description": "REQUIRED. The content of the request body. The key is a media type or media type range and the value describes it. For requests that match multiple keys, only the most specific key is applicable. e.g. text/plain overrides text/*"
        },
        "required": {
          "type": "boolean",
          "description": "Determines if the request body is required in the request. Defaults to false."
        },
        "extensions": {
          "additionalProperties": {
            "oneOf": [
              {
                "type": "array"
              },
              {
                "type": "boolean"
              },
              {
                "type": "number"
              },
              {
                "type": "object"
              },
              {
                "type": "string"
              }
            ],
            "title": "Value",
            "description": "`Value` represents a dynamically typed value which can be either null, a number, a string, a boolean, a recursive struct value, or a list of values. A producer of value is expected to set one of these variants. Absence of any variant indicates an error. The JSON representation for `Value` is JSON value."
          },
          "type": "object",
          "description": "extensions that start with \"x-\" such as \"x-foo\" used to describe extra functionality that is not covered by standard OpenAPI specification. See: https://spec.openapis.org/oas/latest.html#specification-extensions"
        }
      },
      "additionalProperties": false,
      "type": "object",
      "title": "Request Body",
      "description": "Describes a single request body. See: https://spec.openapis.org/oas/latest.html#request-body-object"
    },
    "meshapi.gateway.openapi.Response": {
      "properties": {
        "ref": {
          "$ref": "#/definitions/meshapi.gateway.openapi.Reference"
        },
        "description": {
          "type": "string",
          "description": "A description which by default SHOULD override that of the referenced component. CommonMark syntax MAY be used for rich text representation. If the referenced object-type does not allow a description field, then this field has no effect."
        },
        "headers": {
          "additionalProperties": {
            "$ref": "#/definitions/meshapi.gateway.openapi.Header"
          },
          "type": "object",
          "description": "Maps a header name to its definition. [RFC7230] states header names are case insensitive. If a response header is defined with the name \"Content-Type\", it SHALL be ignored."
        },
        "content": {
          "additionalProperties": {
            "$ref": "#/definitions/meshapi.gateway.openapi.MediaType"
          },
          "type": "object",
          "description": "A map containing descriptions of potential response payloads. The key is a media type or media type range and the value describes it. For responses that match multiple keys, only the most specific key is applicable. e.g. text/plain overrides text/*"
        },
        "links": {
          "additionalProperties": {
            "$ref": "#/definitions/meshapi.gateway.openapi.Link"
          },
          "type": "object",
          "description": "A map of operations links that can be followed from the response. The key of the map is a short name for the link, following the naming constraints of the names for Component Objects."
        },
        "extensions": {
          "additionalProperties": {
            "oneOf": [
              {
                "type": "array"
              },
              {
                "type": "boolean"
              },
              {
                "type": "number"
              },
              {
                "type": "object"
              },
              {
                "type": "string"
              }
            ],
            "title": "Value",
            "description": "`Value` represents a dynamically typed value which can be either null, a number, a string, a boolean, a recursive struct value, or a list of values. A producer of value is expected to set one of these variants. Absence of any variant indicates an error. The JSON representation for `Value` is JSON value."
          },
          "type": "object",
          "description": "extensions that start with \"x-\" such as \"x-foo\" used to describe extra functionality that is not covered by standard OpenAPI specification. See: https://spec.openapis.org/oas/latest.html#specification-extensions"
        }
      },
      "additionalProperties": false,
      "type": "object",
      "title": "Response"
    },
    "meshapi.gateway.openapi.Schema": {
      "properties": {
        "discriminator": {
          "$ref": "#/definitions/meshapi.gateway.openapi.Discriminator"
        },
        "external_docs": {
          "$ref": "#/definitions/meshapi.gateway.openapi.ExternalDocumentation"
        },
        "extra": {
          "additionalProperties": {
            "oneOf": [
              {
                "type": "array"
              },
              {
                "type": "boolean"
              },
              {
                "type": "number"
              },
              {
                "type": "object"
              },
              {
                "type": "string"
              }
            ],
            "title": "Value",
            "description": "`Value` represents a dynamically typed value which can be either null, a number, a string, a boolean, a recursive struct value, or a list of values. A producer of value is expected to set one of these variants. Absence of any variant indicates an error. The JSON representation for `Value` is JSON value."
          },
          "type": "object",
          "description": "Extra can be used to add any other field in the schema. Since OpenAPI v3.1 arbitrary fields can be used in the schema objects. This field can be utilized to add those extra fields. Some of the JSON schema validation properties or core properties that are not captured as part of the gRPC REST Gateway OpenAPI objects."
        },
        "ref": {
          "type": "string",
          "description": "Ref is used to define an external reference to include in the message. This could be a fully qualified proto message reference and start with a '.', and that type must be available in the proto files or their dependencies. If no message is identified, the Ref will be used verbatim in the output. For example:  `ref: \".google.protobuf.Timestamp\"`. NOTE: This reference will only be honored when used in top-level schemas in responses only."
        },
        "config": {
          "$ref": "#/definitions/meshapi.gateway.openapi.FieldConfiguration"
        },
        "schema": {
          "type": "string",
          "description": "The \"$schema\" keyword is used to identify the schema dialect and its associated URI for validation.  See: https://json-schema.org/draft/2020-12/json-schema-core#name-the-schema-keyword"
        },
        "title": {
          "type": "string",
          "description": "The title of the schema."
        },
        "pattern": {
          "type": "string",
          "description": "A regular expression pattern that the schema value should match. See: https://datatracker.ietf.org/doc/html/draft-bhutton-json-schema-validation-00#section-6.3.3"
        },
        "required": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "description": "A list of property names that are required in this schema."
        },
        "enum": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "description": "An array of unique values for enum validation. See: https://datatracker.ietf.org/doc/html/draft-bhutton-json-schema-validation-00#section-6.1.2"
        },
        "multiple_of": {
          "type": "number",
          "description": "The value of \"multipleOf\" MUST be a number, strictly greater than 0. A numeric instance is valid only if division by this keyword's value results in an integer.  See: https://datatracker.ietf.org/doc/html/draft-bhutton-json-schema-validation-00#section-6.2.1"
        },
        "maximum": {
          "type": "number",
          "description": "Maximum represents an inclusive upper limit for a numeric instance. The value of MUST be a number, representing an inclusive upper limit for a numeric instance. See: https://datatracker.ietf.org/doc/html/draft-bhutton-json-schema-validation-00#section-6.2.2"
        },
        "exclusive_maximum": {
          "type": "number",
          "description": "See: https://datatracker.ietf.org/doc/html/draft-bhutton-json-schema-validation-00#section-6.2.3"
        },
        "minimum": {
          "type": "number",
          "description": "minimum represents an inclusive lower limit for a numeric instance. The value of MUST be a number, representing an inclusive lower limit for a numeric instance. See: https://datatracker.ietf.org/doc/html/draft-bhutton-json-schema-validation-00#section-6.2.4"
        },
        "exclusive_minimum": {
          "type": "number",
          "description": "See: https://datatracker.ietf.org/doc/html/draft-bhutton-json-schema-validation-00#section-6.2.5"
        },
        "max_length": {
          "type": "string",
          "description": "A string instance is valid against this keyword if its length is less than, or equal to, the value of this keyword. See: https://datatracker.ietf.org/doc/html/draft-bhutton-json-schema-validation-00#section-6.3.1"
        },
        "min_length": {
          "type": "string",
          "description": "A string instance is valid against this keyword if its length is greater than, or equal to, the value of this keyword. See: https://datatracker.ietf.org/doc/html/draft-bhutton-json-schema-validation-00#section-6.3.2"
        },
        "max_items": {
          "type": "string",
          "description": "An array instance is valid against \"maxItems\" if its size is less than, or equal to, the value of this keyword. See: https://datatracker.ietf.org/doc/html/draft-bhutton-json-schema-validation-00#section-6.4.1"
        },
        "min_items": {
          "type": "string",
          "description": "An array instance is valid against \"minItems\" if its size is greater than, or equal to, the value of this keyword. See: https://datatracker.ietf.org/doc/html/draft-bhutton-json-schema-validation-00#section-6.4.2"
        },
        "unique_items": {
          "type": "boolean",
          "description": "If set to true, all items must be unique."
        },
        "max_properties": {
          "type": "string"
        },
        "min_properties": {
          "type": "string"
        },
        "types": {
          "items": {
            "enum": [
              "UNKNOWN",
              0,
              "ARRAY",
              1,
              "BOOLEAN",
              2,
              "INTEGER",
              3,
              "NULL",
              4,
              "NUMBER",
              5,
              "OBJECT",
              6,
              "STRING",
              7
            ]
          },
          "type": "array",
          "title": "Schema Data Type",
          "description": "Enum for the data type of a schema."
        },
        "description": {
          "type": "string",
          "description": "A description of the schema using CommonMark syntax."
        },
        "items": {
          "$ref": "#/definitions/meshapi.gateway.openapi.Schema.Item"
        },
        "properties": {
          "additionalProperties": {
            "$ref": "#/definitions/meshapi.gateway.openapi.Schema"
          },
          "type": "object",
          "description": "The properties keyword specifies the schema for properties in an object. Defining any property here for proto messages merges them with the automatically generated ones."
        },
        "additional_properties": {
          "$ref": "#/definitions/meshapi.gateway.openapi.Schema"
        },
        "default": {
          "oneOf": [
            {
              "type": "array"
            },
            {
              "type": "boolean"
            },
            {
              "type": "number"
            },
            {
              "type": "object"
            },
            {
              "type": "string"
            }
          ],
          "title": "Value",
          "description": "`Value` represents a dynamically typed value which can be either null, a number, a string, a boolean, a recursive struct value, or a list of values. A producer of value is expected to set one of these variants. Absence of any variant indicates an error. The JSON representation for `Value` is JSON value."
        },
        "all_of": {
          "items": {
            "$ref": "#/definitions/meshapi.gateway.openapi.Schema"
          },
          "type": "array",
          "description": "The allOf keyword specifies that an instance must validate against all the schemas defined in the array. See: https://json-schema.org/draft/2020-12/json-schema-core#name-allof"
        },
        "any_of": {
          "items": {
            "$ref": "#/definitions/meshapi.gateway.openapi.Schema"
          },
          "type": "array",
          "description": "The anyOf keyword specifies that an instance must validate against at least one of the schemas defined in the array. See: https://json-schema.org/draft/2020-12/json-schema-core#name-anyof"
        },
        "one_of": {
          "items": {
            "$ref": "#/definitions/meshapi.gateway.openapi.Schema"
          },
          "type": "array",
          "description": "The oneOf keyword specifies that an instance must validate against exactly one of the schemas defined in the array. See: https://json-schema.org/draft/2020-12/json-schema-core#name-oneof"
        },
        "not": {
          "$ref": "#/definitions/meshapi.gateway.openapi.Schema"
        },
        "read_only": {
          "type": "boolean",
          "description": "The readOnly keyword specifies that a property is read-only. See: https://datatracker.ietf.org/doc/html/draft-bhutton-json-schema-validation-00#section-9.4"
        },
        "write_only": {
          "type": "boolean",
          "description": "The writeOnly keyword specifies that a property is write-only. See: https://datatracker.ietf.org/doc/html/draft-bhutton-json-schema-validation-00#section-9.4"
        },
        "examples": {
          "items": {
            "oneOf": [
              {
                "type": "array"
              },
              {
                "type": "boolean"
              },
              {
                "type": "number"
              },
              {
                "type": "object"
              },
              {
                "type": "string"
              }
            ],
            "title": "Value",
            "description": "`Value` represents a dynamically typed value which can be either null, a number, a string, a boolean, a recursive struct value, or a list of values. A producer of value is expected to set one of these variants. Absence of any variant indicates an error. The JSON representation for `Value` is JSON value."
          },
          "type": "array",
          "description": "Examples of valid instances for the schema. See: https://json-schema.org/draft/2020-12/json-schema-validation#section-9.5"
        },
        "format": {
          "type": "string",
          "description": "The format keyword specifies a predefined format for the schema value. See: https://json-schema.org/draft-06/json-schema-validation#rfc.section.8"
        },
        "deprecated": {
          "type": "boolean",
          "description": "The deprecated keyword specifies that the schema is deprecated. See: https://datatracker.ietf.org/doc/html/draft-bhutton-json-schema-validation-00#section-9.3"
        }
      },
      "additionalProperties": false,
      "type": "object",
      "title": "Schema",
      "description": "Schema represents an OpenAPI v3.1 Schema object, providing a structured definition for data types used in the API. For detailed information on the Schema object, refer to the OpenAPI Specification: https://spec.openapis.org/oas/v3.1.0#schema-object"
    },
    "meshapi.gateway.openapi.Schema.Item": {
      "properties": {
        "schema": {
          "$ref": "#/definitions/meshapi.gateway.openapi.Schema"
        },
        "list": {
          "$ref": "#/definitions/meshapi.gateway.openapi.Schema.SchemaList"
        }
      },
      "additionalProperties": false,
      "type": "object",
      "oneOf": [
        {
          "properties": {
            "schema": { "$ref": "#/definitions/meshapi.gateway.openapi.Schema" }
          },
          "required": ["schema"]
        },
        {
          "properties": {
            "list": {
              "$ref": "#/definitions/meshapi.gateway.openapi.Schema.SchemaList"
            }
          },
          "required": ["list"]
        }
      ],
      "title": "Item",
      "description": "Represents an item in a SchemaList, which can be a schema or another SchemaList."
    },
    "meshapi.gateway.openapi.Schema.SchemaList": {
      "properties": {
        "items": {
          "items": {
            "$ref": "#/definitions/meshapi.gateway.openapi.Schema"
          },
          "type": "array"
        }
      },
      "additionalProperties": false,
      "type": "object",
      "title": "Schema List",
      "description": "Represents a list of schemas for array validation or for object properties."
    },
    "meshapi.gateway.openapi.SecurityRequirement": {
      "properties": {
        "name": {
          "type": "string",
          "description": "Each name MUST correspond to a security scheme which is declared in the Security Schemes under the Components Object. If the security scheme is of type \"oauth2\" or \"openIdConnect\", then the value is a list of scope names required for the execution, and the list MAY be empty if authorization does not require a specified scope. For other security scheme types, the array MAY contain a list of role names which are required for the execution, but are not otherwise defined or exchanged in-band."
        },
        "scopes": {
          "items": {
            "type": "string"
          },
          "type": "array"
        }
      },
      "additionalProperties": false,
      "type": "object",
      "title": "Security Requirement",
      "description": "Lists the required security schemes to execute this operation. See: https://spec.openapis.org/oas/v3.1.0#security-requirement-object"
    },
    "meshapi.gateway.openapi.SecurityScheme": {
      "properties": {
        "ref": {
          "$ref": "#/definitions/meshapi.gateway.openapi.Reference"
        },
        "type": {
          "type": "string",
          "description": "REQUIRED. The type of the security scheme. Valid values are \"apiKey\", \"http\", \"mutualTLS\", \"oauth2\", \"openIdConnect\"."
        },
        "description": {
          "type": "string",
          "description": "A brief description of the request body. This could contain examples of use. CommonMark syntax MAY be used for rich text representation."
        },
        "name": {
          "type": "string",
          "description": "REQUIRED. The name of the header, query or cookie parameter to be used."
        },
        "in": {
          "type": "string",
          "description": "REQUIRED. The location of the API key. Valid values are \"query\", \"header\" or \"cookie\"."
        },
        "scheme": {
          "type": "string",
          "description": "REQUIRED. The name of the HTTP Authorization scheme to be used in the Authorization header as defined in [RFC7235]. The values used SHOULD be registered in the IANA Authentication Scheme registry."
        },
        "bearer_format": {
          "type": "string",
          "description": "A hint to the client to identify how the bearer token is formatted. Bearer tokens are usually generated by an authorization server, so this information is primarily for documentation purposes."
        },
        "flows": {
          "$ref": "#/definitions/meshapi.gateway.openapi.SecurityScheme.OAuthFlows"
        },
        "open_id_connect_url": {
          "type": "string",
          "description": "REQUIRED. OpenId Connect URL to discover OAuth2 configuration values. This MUST be in the form of a URL. The OpenID Connect standard requires the use of TLS."
        },
        "extensions": {
          "additionalProperties": {
            "oneOf": [
              {
                "type": "array"
              },
              {
                "type": "boolean"
              },
              {
                "type": "number"
              },
              {
                "type": "object"
              },
              {
                "type": "string"
              }
            ],
            "title": "Value",
            "description": "`Value` represents a dynamically typed value which can be either null, a number, a string, a boolean, a recursive struct value, or a list of values. A producer of value is expected to set one of these variants. Absence of any variant indicates an error. The JSON representation for `Value` is JSON value."
          },
          "type": "object",
          "description": "extensions that start with \"x-\" such as \"x-foo\" used to describe extra functionality that is not covered by standard OpenAPI specification. See: https://spec.openapis.org/oas/latest.html#specification-extensions"
        }
      },
      "additionalProperties": false,
      "type": "object",
      "title": "Security Scheme",
      "description": "Defines a security scheme that can be used by the operations. See: https://spec.openapis.org/oas/latest.html#security-scheme-object"
    },
    "meshapi.gateway.openapi.SecurityScheme.OAuthFlow": {
      "properties": {
        "authorization_url": {
          "type": "string"
        },
        "token_url": {
          "type": "string"
        },
        "refresh_url": {
          "type": "string"
        },
        "scopes": {
          "additionalProperties": {
            "type": "string"
          },
          "type": "object"
        },
        "extensions": {
          "additionalProperties": {
            "oneOf": [
              {
                "type": "array"
              },
              {
                "type": "boolean"
              },
              {
                "type": "number"
              },
              {
                "type": "object"
              },
              {
                "type": "string"
              }
            ],
            "title": "Value",
            "description": "`Value` represents a dynamically typed value which can be either null, a number, a string, a boolean, a recursive struct value, or a list of values. A producer of value is expected to set one of these variants. Absence of any variant indicates an error. The JSON representation for `Value` is JSON value."
          },
          "type": "object",
          "description": "extensions that start with \"x-\" such as \"x-foo\" used to describe extra functionality that is not covered by standard OpenAPI specification. See: https://spec.openapis.org/oas/latest.html#specification-extensions"
        }
      },
      "additionalProperties": false,
      "type": "object",
      "title": "O Auth Flow",
      "description": "Configuration details for a supported OAuth Flow See: https://spec.openapis.org/oas/latest.html#oauth-flow-object"
    },
    "meshapi.gateway.openapi.SecurityScheme.OAuthFlows": {
      "properties": {
        "implicit": {
          "$ref": "#/definitions/meshapi.gateway.openapi.SecurityScheme.OAuthFlow"
        },
        "password": {
          "$ref": "#/definitions/meshapi.gateway.openapi.SecurityScheme.OAuthFlow"
        },
        "client_credentials": {
          "$ref": "#/definitions/meshapi.gateway.openapi.SecurityScheme.OAuthFlow"
        },
        "authorization_code": {
          "$ref": "#/definitions/meshapi.gateway.openapi.SecurityScheme.OAuthFlow"
        },
        "extensions": {
          "additionalProperties": {
            "oneOf": [
              {
                "type": "array"
              },
              {
                "type": "boolean"
              },
              {
                "type": "number"
              },
              {
                "type": "object"
              },
              {
                "type": "string"
              }
            ],
            "title": "Value",
            "description": "`Value` represents a dynamically typed value which can be either null, a number, a string, a boolean, a recursive struct value, or a list of values. A producer of value is expected to set one of these variants. Absence of any variant indicates an error. The JSON representation for `Value` is JSON value."
          },
          "type": "object",
          "description": "extensions that start with \"x-\" such as \"x-foo\" used to describe extra functionality that is not covered by standard OpenAPI specification. See: https://spec.openapis.org/oas/latest.html#specification-extensions"
        }
      },
      "additionalProperties": false,
      "type": "object",
      "title": "O Auth Flows",
      "description": "See: https://spec.openapis.org/oas/latest.html#oauth-flows-object"
    },
    "meshapi.gateway.openapi.Server": {
      "properties": {
        "url": {
          "type": "string",
          "description": "REQUIRED. A URL to the target host. This URL supports Server Variables and MAY be relative, to indicate that the host location is relative to the location where the OpenAPI document is being served. Variable substitutions will be made when a variable is named in {brackets}."
        },
        "description": {
          "type": "string",
          "description": "An optional string describing the host designated by the URL. CommonMark syntax MAY be used for rich text representation."
        },
        "variables": {
          "additionalProperties": {
            "$ref": "#/definitions/meshapi.gateway.openapi.ServerVariable"
          },
          "type": "object",
          "description": "A map between a variable name and its value. The value is used for substitution in the server’s URL template."
        },
        "extensions": {
          "additionalProperties": {
            "oneOf": [
              {
                "type": "array"
              },
              {
                "type": "boolean"
              },
              {
                "type": "number"
              },
              {
                "type": "object"
              },
              {
                "type": "string"
              }
            ],
            "title": "Value",
            "description": "`Value` represents a dynamically typed value which can be either null, a number, a string, a boolean, a recursive struct value, or a list of values. A producer of value is expected to set one of these variants. Absence of any variant indicates an error. The JSON representation for `Value` is JSON value."
          },
          "type": "object",
          "description": "Extensions that start with \"x-\" such as \"x-foo\" used to describe extra functionality that is not covered by standard OpenAPI specification. See: https://spec.openapis.org/oas/latest.html#specification-extensions"
        }
      },
      "additionalProperties": false,
      "type": "object",
      "title": "Server",
      "description": "An object representing a Server. See: https://spec.openapis.org/oas/v3.1.0#server-object"
    },
    "meshapi.gateway.openapi.ServerVariable": {
      "properties": {
        "enum_values": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "description": "An enumeration of string values to be used if the substitution options are from a limited set. The array MUST NOT be empty."
        },
        "default_value": {
          "type": "string",
          "description": "REQUIRED. The default value to use for substitution, which SHALL be sent if an alternate value is not supplied. Note this behavior is different than the Schema Object’s treatment of default values, because in those cases parameter values are optional. If the enum is defined, the value MUST exist in the enum’s values."
        },
        "description": {
          "type": "string",
          "description": "An optional description for the server variable. CommonMark syntax MAY be used for rich text representation."
        },
        "extensions": {
          "additionalProperties": {
            "oneOf": [
              {
                "type": "array"
              },
              {
                "type": "boolean"
              },
              {
                "type": "number"
              },
              {
                "type": "object"
              },
              {
                "type": "string"
              }
            ],
            "title": "Value",
            "description": "`Value` represents a dynamically typed value which can be either null, a number, a string, a boolean, a recursive struct value, or a list of values. A producer of value is expected to set one of these variants. Absence of any variant indicates an error. The JSON representation for `Value` is JSON value."
          },
          "type": "object",
          "description": "Extensions that start with \"x-\" such as \"x-foo\" used to describe extra functionality that is not covered by standard OpenAPI specification. See: https://spec.openapis.org/oas/latest.html#specification-extensions"
        }
      },
      "additionalProperties": false,
      "type": "object",
      "title": "Server Variable",
      "description": "An object representing a Server Variable for server URL template substitution. See: https://spec.openapis.org/oas/v3.1.0#server-variable-object"
    },
    "meshapi.gateway.openapi.Tag": {
      "properties": {
        "name": {
          "type": "string",
          "description": "REQUIRED. The name of the tag."
        },
        "description": {
          "type": "string",
          "description": "A description for the tag. CommonMark syntax MAY be used for rich text representation."
        },
        "external_docs": {
          "$ref": "#/definitions/meshapi.gateway.openapi.ExternalDocumentation"
        },
        "extensions": {
          "additionalProperties": {
            "oneOf": [
              {
                "type": "array"
              },
              {
                "type": "boolean"
              },
              {
                "type": "number"
              },
              {
                "type": "object"
              },
              {
                "type": "string"
              }
            ],
            "title": "Value",
            "description": "`Value` represents a dynamically typed value which can be either null, a number, a string, a boolean, a recursive struct value, or a list of values. A producer of value is expected to set one of these variants. Absence of any variant indicates an error. The JSON representation for `Value` is JSON value."
          },
          "type": "object",
          "description": "Extensions that start with \"x-\" such as \"x-foo\" used to describe extra functionality that is not covered by standard OpenAPI specification. See: https://spec.openapis.org/oas/latest.html#specification-extensions"
        }
      },
      "additionalProperties": false,
      "type": "object",
      "title": "Tag",
      "description": "Adds metadata to a single tag that is used by the Operation Object. See: https://spec.openapis.org/oas/v3.1.0#tag-object"
    }
  }
}
