# IRPCGroundLink.OpenGroundLinkChannel

Location: [gRPC API](https://developer.m-files.com/APIs/gRPC-API/index.md) > [Server integration API](https://developer.m-files.com/APIs/gRPC-API/integration/index.md) > [Ground Link channel](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCGroundLink/index.md)

HTML version: https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCGroundLink/OpenGroundLinkChannel/

Badges: `Server integration API / specialized` `internal: not for applications` `write` `no session` `client streaming` `server streaming`

Opens a bi-directional Ground Link channel between the client and server.

- **Service:** [Ground Link channel](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCGroundLink/index.md) `MFiles.IRPCGroundLink`
- **gRPC method:** `/MFiles.IRPCGroundLink/OpenGroundLinkChannel`
- **HTTP (mf-http-grpc):** `POST /grpc/v1/open-ground-link-channel`
- **Request:** [`GroundLinkMessage`](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCGroundLink/OpenGroundLinkChannel/index.md#request)
- **Response:** [`GroundLinkMessage`](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCGroundLink/OpenGroundLinkChannel/index.md#request)
- **Book and level:** Server integration API, specialized
- **Kind:** write
- **Session:** Not needed: the call can be made before logging in.
- **Idempotent:** no
- **Returns metadata structure version:** no
- **Streaming:** client, server

<a id="remarks"></a>

## Remarks

**For M-Files components only.** The Ground Link proxy of M-Files Ground Link opens it.
Applications should not call it.
- Bidirectional streaming call without a session; see the service overview for the required
  metadata. Missing vault or service metadata fails with "Vault and/or service headers are
  missing."; a vault that does not accept Ground Link connections (its Ground Link application
  is not running) fails with "Vault does not exist or is not accepting Ground Link connections.";
  another service name fails with "Unknown Ground Link service."; an offline vault fails with a
  vault-offline error.
- The server's initial response metadata carries `mfiles-max-message-size` (the largest message
  the server accepts; a larger message makes gRPC close the stream) and
  `mfiles-groundlink-split-message-support` = `1` (the vault side accepts a large message split
  into parts), plus headers from the vault's Ground Link application.

<a id="request"></a>

## Request: GroundLinkMessage

Wrapper for passing .NET remoting messages over gRPC.

> Nested message fields are expanded to depth 3; follow a type link for deeper levels and for the type's own page.

| Field | Type | Description |
|---|---|---|
| `type` | [`GroundLinkMessageType`](https://developer.m-files.com/APIs/gRPC-API/Reference/Enums/MFiles.GroundLinkMessageType/index.md) | Whether the message is a call (`REQUEST`) or the return of a call (`RESPONSE`). Values: `REQUEST` (0), `RESPONSE` (1). |
| `id` | `string` | The ID of the call. A response carries the ID of its request. |
| `uri` | `string` | The URI of the call, if any. Can be empty. |
| `headers` | `bytes` | The serialized .NET remoting message headers. |
| `data` | `bytes` | The serialized .NET remoting message. |

<a id="response"></a>

## Response: GroundLinkMessage

Wrapper for passing .NET remoting messages over gRPC.

> Nested message fields are expanded to depth 3; follow a type link for deeper levels and for the type's own page.

| Field | Type | Description |
|---|---|---|
| `type` | [`GroundLinkMessageType`](https://developer.m-files.com/APIs/gRPC-API/Reference/Enums/MFiles.GroundLinkMessageType/index.md) | Whether the message is a call (`REQUEST`) or the return of a call (`RESPONSE`). Values: `REQUEST` (0), `RESPONSE` (1). |
| `id` | `string` | The ID of the call. A response carries the ID of its request. |
| `uri` | `string` | The URI of the call, if any. Can be empty. |
| `headers` | `bytes` | The serialized .NET remoting message headers. |
| `data` | `bytes` | The serialized .NET remoting message. |
