Project: Gloo (Orchestration & Management / API Gateway)
File: grpc_json.proto.sk.md

title: "grpc_json.proto" weight: 5 <!-- Code generated by solo-kit. DO NOT EDIT. --> [#next-free-field: 10] ```yaml "protoDescriptor": string "protoDescriptorBin": bytes "protoDescriptorConfigMap": .grpc_json.options.gloo.solo.io.GrpcJsonTranscoder.DescriptorConfigMap "services": []string "printOptions": .grpc_json.options.gloo.solo.io.GrpcJsonTranscoder.PrintOptions "matchIncomingRequestRoute": bool "ignoredQueryParameters": []string "autoMapping": bool "ignoreUnknownQueryParameters": bool "convertGrpcStatus": bool ``` | Field | Type | Description | | -- | - | -- | | `protoDescriptor` | `string` | Supplies the filename of the for the gRPC services. Only one of `protoDescriptor`, `protoDescriptorBin`, or `protoDescriptorConfigMap` can be set. | | `protoDescriptorBin` | `bytes` | Supplies the binary content of the for the gRPC services. Note: in yaml, this must be provided as a base64 standard encoded string; yaml can't handle binary bytes. Only one of `protoDescriptorBin`, `protoDescriptor`, or `protoDescriptorConfigMap` can be set. | | `protoDescriptorConfigMap` | | A reference to a ConfigMap containing the base64-encoded binary content of the for the gRPC services. Only one of `protoDescriptorConfigMap`, `protoDescriptor`, or `protoDescriptorBin` can be set. | | `services` | `[]string` | A list of strings that supplies the fully qualified service names (i.e. "packagename.servicename") that the transcoder will translate. If the service name doesn't exist in ``protodescriptor``, Envoy will fail at startup. The ``protodescriptor`` may contain more services than the service names specified here, but they won't be translated. | | `printOptions` | | Control options for response JSON. These options are passed directly to `JsonPrintOptions <https://developers.google.com/protocol-buffers/docs/reference/cpp/ google.protobuf.util.jsonutil#JsonPrintOptions>`. | | `matchIncomingRequestRoute` | `bool` | Set this value to true to keep the incoming request route after the outgoing headers are transformed to match the upstream gRPC service. Note that you cannot set this value to true with routes for gRPC services that are not transcoded. When set to false, Envoy does not match against the incoming request path. For more information, see the Envoy docs <https://www.envoyproxy.io/docs/envoy/latest/configuration/http/httpfilters/grpcjsontranscoderfilter#route-configs-for-transcoded-requests>. | | `ignoredQueryParameters` | `[]string` | A list of query parameters to be ignored for transcoding method mapping. By default, the transcoder filter will not transcode a request if there are any unknown/invalid query parameters. Example : .. code-block:: proto service Bookstore { rpc GetShelf(GetShelfRequest) returns (Shelf) { option (google.api.http) = { get: "/shelves/{shelf}" }; } } message GetShelfRequest { int64 shelf = 1; } message Shelf {} The request ``/shelves/100?foo=bar`` will not be mapped to ``GetShelf``` because variable binding for ``foo`` is not defined. Adding ``foo`` to ``ignoredqueryparameters`` will allow the same request to be mapped to ``GetShelf``. | | `autoMapping` | `bool` | Whether to route methods without the ``google.api.http`` option. Example : .. code-block:: proto package bookstore; service Bookstore { rpc GetShelf(GetShelfRequest) returns (Shelf) {} } message GetShelfRequest { int64 shelf = 1; } message Shelf {} The client could ``post`` a json body ``{"shelf": 1234}`` with the path of ``/bookstore.Bookstore/GetShelfRequest`` to call

| | `ignoreUnknownQueryParameters` | `bool` | Whether to ignore query parameters that cannot be mapped to a corresponding protobuf field. Use this if you cannot control the query parameters and do not know them beforehand. Otherwise use ``ignoredqueryparameters``. Defaults to false. | | `convertGrpcStatus` | `bool` | Whether to convert gRPC status headers to JSON. When trailer indicates a gRPC error and there was no HTTP body, take ``google.rpc.Status`` from the ``grpc-status-details-bin`` header and use it as JSON body. If there was no such header, make ``google.rpc.Status`` out of the ``grpc-status`` and ``grpc-message`` headers. The error details types must be present in the ``protodescriptor``. For example, if an upstream server replies with headers: .. code-block:: none grpc-status: 5 grpc-status-details-bin: CAUaMwoqdHlwZS5nb29nbGVhcGlzLmNvbS9nb29nbGUucnBjLlJlcXVlc3RJbmZvEgUKA3ItMQ The ``grpc-status-details-bin`` header contains a base64-encoded protobuf message ``google.rpc.Status``. It will be transcoded into: .. code-block:: none HTTP/1.1 404 Not Found content-type: application/json {"code":5,"details":[{"@type":"type.googleapis.com/google.rpc.RequestInfo","requestId":"r-1"}]} In order to transcode the message, the ``google.rpc.RequestInfo`` type from the ``google/rpc/errordetails.proto`` should be included in the configured :ref:`proto descriptor set <configgrpcjsongenerateprotodescriptorset>`. | ```yaml "addWhitespace": bool "alwaysPrintPrimitiveFields": bool "alwaysPrintEnumsAsInts": bool "preserveProtoFieldNames": bool ``` | Field | Type | Description | | -- | - | -- | | `addWhitespace` | `bool` | Whether to add spaces, line breaks and indentation to make the JSON output easy to read. Defaults to false. | | `alwaysPrintPrimitiveFields` | `bool` | Whether to always print primitive fields. By default primitive fields with default values will be omitted in JSON output. For example, an int32 field set to 0 will be omitted. Setting this flag to true will override the default behavior and print primitive fields regardless of their values. Defaults to false. | | `alwaysPrintEnumsAsInts` | `bool` | Whether to always print enums as ints. By default they are rendered as strings. Defaults to false. | | `preserveProtoFieldNames` | `bool` | Whether to preserve proto field names. By default protobuf will generate JSON field names using the ``json_name`` option, or lower camel case, in that order. Setting this flag will preserve the original field names. Defaults to false. | Allows the user to store the binary content of a in a ConfigMap. ```yaml "configMapRef": .core.solo.io.ResourceRef "key": string ``` | Field | Type | Description | | -- | - | -- | | `configMapRef` | | A reference to a ConfigMap containing the base64-encoded binary content of a proto descriptor set. The ConfigMap must be in a namespace watched by Gloo Edge. | | `key` | `string` | The ConfigMap data key whose value contains the proto descriptor set. If the ConfigMap contains multiple key-value pairs, this field is required. If the ConfigMap contains exactly one key-value pair, this field is optional. | <!-- Start of HubSpot Embed Code --> <script type="text/javascript" id="hs-script-loader" async defer src="//js.hs-scripts.com/5130874.js"></script> <!-- End of HubSpot Embed Code -->