---
schema_version: "1"
id: ddd30cc7e996d2a603a9d346d1fe19ce44bff617ab6367f7b5caf3d2695edd74
title: APIkit for gRPC Module Reference
collection: mulesoft
version: current
locale: en-us
portal_url: https://docs.salesforce.com/mulesoft/current/en-us/apikit/latest/apikit-for-grpc-module-reference.md
canonical_url: https://docs.mulesoft.com/apikit/latest/apikit-for-grpc-module-reference
source_site: docs.mulesoft.com
content_type: documentation
content_hash: e313019381ec682e00b14896c5b9d027ca10f706f3c18a8f5266dadaaab804ed
description: MuleSoft Documentation Site
release: 4.x
latest: true
---
# APIkit for gRPC Module Reference

Implement gRPC APIs in Mule applications with APIkit for gRPC: declare dependencies, namespaces, and configuration elements that wire Protocol Buffer (`.proto`) services into flows. This reference lists Maven coordinates, XML schema locations, `grpc:config`, operations, and sources you use when you scaffold or customize gRPC endpoints.

## [](#dependencies)Dependencies

Add the gRPC Connector (server) dependency to your Mule project:

```xml
<dependency>
  <groupId>com.mulesoft.connectors</groupId>
  <artifactId>mule-grpc-connector</artifactId>
  <version>LATEST_VERSION</version> (1)
  <classifier>mule-plugin</classifier>
</dependency>
```

<table><tbody><tr><td><i class="conum" data-value="1"></i><b>1</b></td><td>To get the <strong>LATEST_VERSION</strong>, check the <a href="https://docs.mulesoft.com/apikit/latest/apikit-release-notes" class="xref page">APIkit Release Notes</a> .</td></tr></tbody></table>

## [](#namespace-and-schema)Namespace and Schema

Use this namespace and schema location in your Mule configuration:

```xml
xmlns:grpc="http://www.mulesoft.org/schema/mule/grpc"
xsi:schemaLocation="http://www.mulesoft.org/schema/mule/grpc http://www.mulesoft.org/schema/mule/grpc/current/mule-grpc.xsd"
```

## [](#configurations)Configurations

### [](#grpc-server-config)grpc:server-config

Configures the gRPC server that listens for incoming gRPC requests. This element wraps the connection provider, which defines the listening endpoint and the Interface Description Language (IDL) definition that describes the service and message types.

#### [](#parameters)Parameters

<table class="tableblock frame-all grid-all stretch">
<colgroup>
<col style="width: 6.6666%;">
<col style="width: 13.3333%;">
<col style="width: 20%;">
<col style="width: 26.6666%;">
<col style="width: 33.3335%;">
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">Name</th>
<th class="tableblock halign-left valign-top">Type</th>
<th class="tableblock halign-left valign-top">Description</th>
<th class="tableblock halign-left valign-top">Default Value</th>
<th class="tableblock halign-left valign-top">Required</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><code>Name</code></p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>String</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>Identifier of this element used to reference it in other components.</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>None</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>Yes</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><code>maxInboundMessageSize</code></p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>Number</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>Maximum size in bytes for inbound gRPC messages. Messages exceeding this size are rejected.</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>4194304 (4 MB)</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>No</p>
</div></div></td>
</tr>
</tbody>
</table>

#### [](#example)Example

```xml
<grpc:server-config name="GRPC_Server_Config">
  <grpc:grpc-server-connection listenerConfig="HTTP_Listener_config">
    <grpc:idl-definition>
      <grpc:single-binary-protobuf protobufDescriptorFile="${grpc.server.descriptor.file}" />
    </grpc:idl-definition>
  </grpc:grpc-server-connection>
</grpc:server-config>
```

#### [](#associated-operations)Associated Operations

- [grpc:send-stream-message](#send-stream-message)
- [grpc:end-stream](#end-stream)

#### [](#associated-sources)Associated Sources

- [Unary Method](#unary-method)
- [Client Streaming Method](#client-streaming-method)
- [Server Streaming Method](#server-streaming-method)
- [Bidirectional Streaming Method](#bidirectional-streaming-method)

### [](#grpc-server-connection)grpc:grpc-server-connection

Connection provider for the gRPC server. The gRPC server doesn’t independently configure host, port, or TLS; it uses an existing HTTP listener. This connection references an `http:listener-config` for the listening endpoint and defines the protobuf descriptor (IDL) that describes the service and message types.

#### [](#parameters-2)Parameters

<table class="tableblock frame-all grid-all stretch">
<colgroup>
<col style="width: 6.6666%;">
<col style="width: 13.3333%;">
<col style="width: 20%;">
<col style="width: 26.6666%;">
<col style="width: 33.3335%;">
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">Parameter</th>
<th class="tableblock halign-left valign-top">Type</th>
<th class="tableblock halign-left valign-top">Description</th>
<th class="tableblock halign-left valign-top">Default Value</th>
<th class="tableblock halign-left valign-top">Required</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><code>listenerConfig</code></p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>ConfigReference to <code>http:listener-config</code></p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>Reference to the HTTP listener configuration that defines host, port, and TLS. The gRPC server uses this listener for transport.</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>None</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>Yes</p>
</div></div></td>
</tr>
</tbody>
</table>

#### [](#child-elements)Child Elements

##### [](#grpcidl-definition)grpc:idl-definition

Contains the protobuf descriptor (IDL) for the gRPC service. The `grpc:single-binary-protobuf` definition is supported.

##### [](#grpcsingle-binary-protobuf)grpc:single-binary-protobuf

Provides the Protocol Buffer descriptor from a binary file (for example, a compiled `.proto` descriptor file).

<table class="tableblock frame-all grid-all stretch">
<colgroup>
<col style="width: 6.6666%;">
<col style="width: 13.3333%;">
<col style="width: 20%;">
<col style="width: 26.6666%;">
<col style="width: 33.3335%;">
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">Parameter</th>
<th class="tableblock halign-left valign-top">Type</th>
<th class="tableblock halign-left valign-top">Description</th>
<th class="tableblock halign-left valign-top">Default Value</th>
<th class="tableblock halign-left valign-top">Required</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><code>protobufDescriptorFile</code></p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>String</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>Path or expression (for example, <code>${grpc.server.descriptor.file}</code>) that resolves to the binary Protobuf descriptor file.</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>None</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>Yes</p>
</div></div></td>
</tr>
</tbody>
</table>

## [](#operations)Operations

### [](#send-stream-message)grpc:send-stream-message

Sends a message on an active server streaming response. To push messages to the client, use this operation within a flow triggered by `grpc:server-streaming-method`. This operation doesn’t support bidirectional streaming.

#### [](#parameters-3)Parameters

<table class="tableblock frame-all grid-all stretch">
<colgroup>
<col style="width: 6.6666%;">
<col style="width: 13.3333%;">
<col style="width: 20%;">
<col style="width: 26.6666%;">
<col style="width: 33.3335%;">
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">Parameter</th>
<th class="tableblock halign-left valign-top">Type</th>
<th class="tableblock halign-left valign-top">Description</th>
<th class="tableblock halign-left valign-top">Default Value</th>
<th class="tableblock halign-left valign-top">Required</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><code>config-ref</code></p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>String (Config Reference)</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>Reference to the <a href="#grpc-server-config">grpc:server-config</a> to use.</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>None</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>Yes</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><code>Payload</code></p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>Any</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>The message payload to send. It should conform to the message type defined in the Interface Description Language (IDL) for the streaming method.</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>#[payload]</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>No</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><code>Target Variable</code></p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>String</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>Name of a variable on which the operation output is placed.</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>None</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>No</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><code>Target Value</code></p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>String</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>Expression evaluated against the operation output. The result is stored in the target variable.</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>#[payload]</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>No</p>
</div></div></td>
</tr>
</tbody>
</table>

#### [](#configurations-2)Configurations

- [grpc:server-config](#grpc-server-config)

### [](#end-stream)grpc:end-stream

Ends the current server stream. Call this operation after sending all messages to the client. This operation doesn’t support bidirectional streaming.

#### [](#parameters-4)Parameters

<table class="tableblock frame-all grid-all stretch">
<colgroup>
<col style="width: 6.6666%;">
<col style="width: 13.3333%;">
<col style="width: 20%;">
<col style="width: 26.6666%;">
<col style="width: 33.3335%;">
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">Parameter</th>
<th class="tableblock halign-left valign-top">Type</th>
<th class="tableblock halign-left valign-top">Description</th>
<th class="tableblock halign-left valign-top">Default Value</th>
<th class="tableblock halign-left valign-top">Required</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><code>config-ref</code></p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>String (Config Reference)</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>Reference to the <a href="#grpc-server-config">grpc:server-config</a> to use.</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>None</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>Yes</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><code>Target Variable</code></p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>String</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>Name of a variable on which the operation output is placed.</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>None</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>No</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><code>Target Value</code></p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>String</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>Expression evaluated against the operation output. The result is stored in the target variable.</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>#[payload]</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>No</p>
</div></div></td>
</tr>
</tbody>
</table>

#### [](#configurations-3)Configurations

- [grpc:server-config](#grpc-server-config)

## [](#sources-listeners)Sources (Listeners)

### [](#unary-method)Unary Method

`<grpc:unary-method>`

Handles unary RPCs: one request from the client and one response from the server.

#### [](#parameters-5)Parameters

<table class="tableblock frame-all grid-all stretch">
<colgroup>
<col style="width: 6.6666%;">
<col style="width: 13.3333%;">
<col style="width: 20%;">
<col style="width: 26.6666%;">
<col style="width: 33.3335%;">
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">Parameter</th>
<th class="tableblock halign-left valign-top">Type</th>
<th class="tableblock halign-left valign-top">Description</th>
<th class="tableblock halign-left valign-top">Default Value</th>
<th class="tableblock halign-left valign-top">Required</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><code>config-ref</code></p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>String (Config Reference)</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>Reference to the <a href="#grpc-server-config">grpc:server-config</a> to use.</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>None</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>Yes</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><code>methodName</code></p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>String</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>Fully qualified method name in the format <code>ServiceName/MethodName</code> (for example, <code>com.example.MyService/MyMethod</code>).</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>None</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>Yes</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><code>Primary Node Only</code></p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>Boolean</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>Whether this source runs only on the primary node in a cluster.</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>false</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>No</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><code>Redelivery Policy</code></p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>Object</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>Policy for redelivery of the same message.</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>None</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>No</p>
</div></div></td>
</tr>
</tbody>
</table>

#### [](#output)Output

<table class="tableblock frame-all grid-all stretch">
<colgroup>
<col style="width: 50%;">
<col style="width: 50%;">
</colgroup>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>Type</strong></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Any (message type from IDL)</p></td>
</tr>
</tbody>
</table>

#### [](#configurations-4)Configurations

- [grpc:server-config](#grpc-server-config)

### [](#client-streaming-method)Client Streaming Method

`<grpc:client-streaming-method>`

Handles client streaming RPCs: the client sends a stream of messages and the server responds with a single message.

#### [](#parameters-6)Parameters

<table class="tableblock frame-all grid-all stretch">
<colgroup>
<col style="width: 6.6666%;">
<col style="width: 13.3333%;">
<col style="width: 20%;">
<col style="width: 26.6666%;">
<col style="width: 33.3335%;">
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">Parameter</th>
<th class="tableblock halign-left valign-top">Type</th>
<th class="tableblock halign-left valign-top">Description</th>
<th class="tableblock halign-left valign-top">Default Value</th>
<th class="tableblock halign-left valign-top">Required</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><code>config-ref</code></p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>String (Config Reference)</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>Reference to the <a href="#grpc-server-config">grpc:server-config</a> to use.</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>None</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>Yes</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><code>methodName</code></p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>String</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>Fully qualified method name in the format <code>ServiceName/MethodName</code> (for example, <code>com.example.MyService/MyMethod</code>).</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>None</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>Yes</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><code>Primary Node Only</code></p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>Boolean</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>Whether this source runs only on the primary node in a cluster.</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>false</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>No</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><code>Redelivery Policy</code></p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>Object</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>Policy for redelivery of the same message.</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>None</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>No</p>
</div></div></td>
</tr>
</tbody>
</table>

#### [](#child-elements-2)Child Elements

##### [](#grpcoutput)grpc:output

Optional nested element that defines the response and stream state for the client streaming method. Only `grpc:client-streaming-method` has this element. Unary and server streaming don’t use this element.

<table class="tableblock frame-all grid-all stretch">
<colgroup>
<col style="width: 6.6666%;">
<col style="width: 13.3333%;">
<col style="width: 20%;">
<col style="width: 26.6666%;">
<col style="width: 33.3335%;">
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">Parameter</th>
<th class="tableblock halign-left valign-top">Type</th>
<th class="tableblock halign-left valign-top">Description</th>
<th class="tableblock halign-left valign-top">Default Value</th>
<th class="tableblock halign-left valign-top">Required</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><code>response</code></p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>TypedValue&lt;InputStream&gt;</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>Response payload. Only effective on the final flow execution when <code>attributes.streamCompleted</code> is true.</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>#[payload]</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>No</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><code>streamState</code></p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>Map&lt;String, Object&gt;</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>State persisted across messages via <code>attributes.streamState</code>.</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>#[{}]</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>No</p>
</div></div></td>
</tr>
</tbody>
</table>

Specify stream state in two ways:

- **Attribute form** (expression): `streamState="#[vars.myState]"`.
- **Nested element form** (often generated by the scaffolder): use `grpc:stream-states` with one or more `grpc:stream-state` children, each with `key` and `value` attributes.

```xml
<grpc:output response="#[payload]">
  <grpc:stream-states>
    <grpc:stream-state key="orderId" value="#[vars.orderId]" />
    <grpc:stream-state key="total" value="#[vars.total]" />
  </grpc:stream-states>
</grpc:output>
```

#### [](#output-2)Output

<table class="tableblock frame-all grid-all stretch">
<colgroup>
<col style="width: 50%;">
<col style="width: 50%;">
</colgroup>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>Type</strong></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Stream of Any (message type from IDL)</p></td>
</tr>
</tbody>
</table>

#### [](#configurations-5)Configurations

- [grpc:server-config](#grpc-server-config)

### [](#server-streaming-method)Server Streaming Method

`<grpc:server-streaming-method>`

Handles server streaming RPCs: the client sends one request and the server responds with a stream of messages. Use `grpc:send-stream-message` and `grpc:end-stream` within the flow to send messages and close the stream.

#### [](#parameters-7)Parameters

<table class="tableblock frame-all grid-all stretch">
<colgroup>
<col style="width: 6.6666%;">
<col style="width: 13.3333%;">
<col style="width: 20%;">
<col style="width: 26.6666%;">
<col style="width: 33.3335%;">
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">Parameter</th>
<th class="tableblock halign-left valign-top">Type</th>
<th class="tableblock halign-left valign-top">Description</th>
<th class="tableblock halign-left valign-top">Default Value</th>
<th class="tableblock halign-left valign-top">Required</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><code>config-ref</code></p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>String (Config Reference)</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>Reference to the <a href="#grpc-server-config">grpc:server-config</a> to use.</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>None</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>Yes</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><code>methodName</code></p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>String</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>Fully qualified method name in the format <code>ServiceName/MethodName</code> (for example, <code>com.example.MyService/MyMethod</code>).</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>None</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>Yes</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><code>onCapacityOverload</code></p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>Enum: WAIT, DROP</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>Backpressure strategy when the flow’s <code>maxConcurrency</code> is reached. See <a href="#backpressure-strategy">Backpressure Strategy</a>.</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>WAIT</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>No</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><code>Primary Node Only</code></p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>Boolean</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>Whether this source runs only on the primary node in a cluster.</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>false</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>No</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><code>Redelivery Policy</code></p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>Object</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>Policy for redelivery of the same message.</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>None</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>No</p>
</div></div></td>
</tr>
</tbody>
</table>

#### [](#output-3)Output

<table class="tableblock frame-all grid-all stretch">
<colgroup>
<col style="width: 50%;">
<col style="width: 50%;">
</colgroup>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>Type</strong></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Any (request message type from IDL); response is sent via <code>grpc:send-stream-message</code> and <code>grpc:end-stream</code></p></td>
</tr>
</tbody>
</table>

#### [](#configurations-6)Configurations

- [grpc:server-config](#grpc-server-config)

### [](#bidirectional-streaming-method)Bidirectional Streaming Method

`<grpc:bidirectional-streaming-method>`

Handles bidirectional streaming RPCs: both client and server send streams of messages independently. The operations `grpc:send-stream-message` and `grpc:end-stream` don’t support bidirectional streaming. Use the nested `grpc:stream-output` child element to send inline response messages.

#### [](#parameters-8)Parameters

<table class="tableblock frame-all grid-all stretch">
<colgroup>
<col style="width: 6.6666%;">
<col style="width: 13.3333%;">
<col style="width: 20%;">
<col style="width: 26.6666%;">
<col style="width: 33.3335%;">
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">Parameter</th>
<th class="tableblock halign-left valign-top">Type</th>
<th class="tableblock halign-left valign-top">Description</th>
<th class="tableblock halign-left valign-top">Default Value</th>
<th class="tableblock halign-left valign-top">Required</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><code>config-ref</code></p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>String (Config Reference)</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>Reference to the <a href="#grpc-server-config">grpc:server-config</a> to use.</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>None</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>Yes</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><code>methodName</code></p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>String</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>Fully qualified method name in the format <code>ServiceName/MethodName</code> (for example, <code>com.example.MyService/MyMethod</code>).</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>None</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>Yes</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><code>Primary Node Only</code></p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>Boolean</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>Whether this source runs only on the primary node in a cluster.</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>false</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>No</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><code>Redelivery Policy</code></p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>Object</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>Policy for redelivery of the same message.</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>None</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>No</p>
</div></div></td>
</tr>
</tbody>
</table>

#### [](#child-elements-3)Child Elements

##### [](#grpcstream-output)grpc:stream-output

Optional nested element that defines the response and stream state for the bidirectional streaming method. Use it to send inline response messages to the client.

<table class="tableblock frame-all grid-all stretch">
<colgroup>
<col style="width: 6.6666%;">
<col style="width: 13.3333%;">
<col style="width: 20%;">
<col style="width: 26.6666%;">
<col style="width: 33.3335%;">
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">Parameter</th>
<th class="tableblock halign-left valign-top">Type</th>
<th class="tableblock halign-left valign-top">Description</th>
<th class="tableblock halign-left valign-top">Default Value</th>
<th class="tableblock halign-left valign-top">Required</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><code>response</code></p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>TypedValue&lt;InputStream&gt;</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>Response payload sent to the client.</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>#[payload]</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>No</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><code>streamState</code></p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>Map&lt;String, Object&gt;</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>State persisted across messages via <code>attributes.streamState</code>.</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>#[{}]</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>No</p>
</div></div></td>
</tr>
</tbody>
</table>

Specify stream state in two ways. **Attribute form**: `streamState="[vars.state]"`. **Nested element form**: use `grpc:stream-states` with `grpc:stream-state` children (each with `key` and `value` attributes), for example `<grpc:stream-state key="orderId" value="[vars.orderId]" />`.

#### [](#output-4)Output

<table class="tableblock frame-all grid-all stretch">
<colgroup>
<col style="width: 50%;">
<col style="width: 50%;">
</colgroup>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>Type</strong></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Stream of Any (message type from IDL). Send response messages using the nested <code>grpc:stream-output</code> element.</p></td>
</tr>
</tbody>
</table>

#### [](#configurations-7)Configurations

- [grpc:server-config](#grpc-server-config)

## [](#backpressure-strategy)Backpressure Strategy

The gRPC connector uses Mule’s built-in backpressure mechanism. To define how many requests can be processed concurrently, set `maxConcurrency` on the `<flow>` element (for example, `<flow name="MyFlow" maxConcurrency="3">`). When that limit is reached, the source applies a backpressure strategy to new incoming requests. The connector does not implement its own concurrency limit. Instead it responds to Mule runtime’s concurrency control.

For more information, see [Back-Pressure and MaxConcurrency](https://docs.mulesoft.com/mule-runtime/latest/tuning-backpressure-maxconcurrency).

- **onCapacityOverload** (server streaming only): For `grpc:server-streaming-method`, the `onCapacityOverload` attribute chooses the behavior when the flow’s maxConcurrency is reached. Other sources use a fixed mode (see table below).
    
    - **WAIT**: New requests wait until a concurrency slot becomes available. The request is eventually processed.
    - **DROP**: New requests are rejected immediately. The client receives gRPC status `RESOURCE_EXHAUSTED` (8).
    - **FAIL**: New requests are rejected immediately. The client receives gRPC status `UNAVAILABLE` (14). This is the only mode for unary.

<table class="tableblock frame-all grid-all stretch">
<colgroup>
<col style="width: 28.5714%;">
<col style="width: 14.2857%;">
<col style="width: 14.2857%;">
<col style="width: 42.8572%;">
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">Source</th>
<th class="tableblock halign-left valign-top">Default Mode</th>
<th class="tableblock halign-left valign-top">Supported Modes</th>
<th class="tableblock halign-left valign-top">Notes</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>grpc:unary-method</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">FAIL</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">FAIL</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Excess requests are immediately rejected with <code>UNAVAILABLE</code>.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>grpc:server-streaming-method</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">WAIT</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">WAIT, DROP</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Configurable via <code>onCapacityOverload</code> attribute on the source (default WAIT).</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>grpc:client-streaming-method</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">WAIT</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">WAIT</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Incoming messages queue until a slot is available.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>grpc:bidirectional-streaming-method</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">WAIT</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">WAIT</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Incoming messages queue until a slot is available.</p></td>
</tr>
</tbody>
</table>

## [](#error-handling)Error Handling

gRPC uses status code 0 (OK) for successful responses. This is not an error type. The following sections describe error conditions (status codes 1–16) and how they map to Mule error types.

### [](#error-type-hierarchy)Error Type Hierarchy

All gRPC protocol errors extend the base type `GRPC:GRPC_ERROR`. In error handlers, reference `GRPC:GRPC_ERROR` to catch any gRPC protocol error, or reference a specific type for finer-grained handling.

### [](#grpc-protocol-errors)gRPC Protocol Errors

The Mule error types in this table map to gRPC status codes. These errors extend `GRPC:GRPC_ERROR`.

<table class="tableblock frame-all grid-all stretch">
<colgroup>
<col style="width: 33.3333%;">
<col style="width: 33.3333%;">
<col style="width: 33.3334%;">
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">Mule Error Type</th>
<th class="tableblock halign-left valign-top">gRPC Code</th>
<th class="tableblock halign-left valign-top">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">GRPC:CANCELLED</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">1</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Request was cancelled</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">GRPC:GRPC_UNKNOWN</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">2</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Unknown error</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">GRPC:INVALID_ARGUMENT</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">3</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Invalid argument</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">GRPC:DEADLINE_EXCEEDED</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">4</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Deadline exceeded</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">GRPC:NOT_FOUND</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">5</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Resource not found</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">GRPC:ALREADY_EXISTS</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">6</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Resource exists</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">GRPC:PERMISSION_DENIED</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">7</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Permission denied</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">GRPC:RESOURCE_EXHAUSTED</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">8</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Resource exhausted</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">GRPC:FAILED_PRECONDITION</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">9</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Failed precondition</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">GRPC:ABORTED</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">10</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Operation aborted</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">GRPC:OUT_OF_RANGE</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">11</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Argument out of range</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">GRPC:UNIMPLEMENTED</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">12</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Operation not implemented</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">GRPC:INTERNAL</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">13</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Internal error</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">GRPC:UNAVAILABLE</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">14</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Service unavailable</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">GRPC:DATA_LOSS</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">15</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Data loss</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">GRPC:UNAUTHENTICATED</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">16</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Request not authenticated</p></td>
</tr>
</tbody>
</table>

### [](#connector-level-errors)Connector-Level Errors

The error types in this table are thrown by the connector for validation, transformation, and connectivity issues. They’re not gRPC protocol status codes but Mule error types used by the gRPC connector.

<table class="tableblock frame-all grid-all stretch">
<colgroup>
<col style="width: 50%;">
<col style="width: 50%;">
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">Error Type</th>
<th class="tableblock halign-left valign-top">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">GRPC:VALIDATION</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Thrown after request or message validation fails (for example, schema or IDL validation).</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">GRPC:TRANSFORMATION</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Thrown after message transformation fails (for example, serialization or deserialization of Protobuf messages).</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">GRPC:CONNECTIVITY</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Thrown after a connectivity issue occurs (for example, connection refused or transport error).</p></td>
</tr>
</tbody>
</table>

## [](#see-also)See Also

- [APIkit for gRPC](https://docs.mulesoft.com/apikit/latest/apikit-for-grpc)
- [gRPC Support on Anypoint Platform](https://docs.mulesoft.com/release-notes/platform/grpc-support)
- [Implementing a gRPC API Specification with Anypoint Code Builder](https://docs.mulesoft.com/anypoint-code-builder/imp-implement-grpc-api-spec)