Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

gRPC

You can use gRPC instead of WebSocket for publishing and subscribing. The service exposes the same logical model: streams and messages keyed by tenant and channel.

Endpoint

Use the gRPC URL (e.g. https://api.example.com:443) with TLS. Your operator will give you the host and port.

Discovery (reflection)

The server supports gRPC reflection. Reflection is a protocol: the server sends the list of services and message types to the client. You do not need a separate doc page; tools like grpcurl, BloomRPC, or Postman can connect and discover the API.

Example with grpcurl (list services):

grpcurl -insecure api.example.com:443 list

To see request/response types for a method:

grpcurl -insecure api.example.com:443 describe api.v1.SomeService.SomeMethod

Authentication

Pass your access token in gRPC metadata (e.g. as a header). The exact metadata key is defined by your operator.

Proto file

The service definition and message types come from the project’s proto file, e.g. common/proto/perimeter.proto. You can open it in the repo or get it from your operator to generate client code. See Reference for the schema.

Error handling

Standard gRPC status codes are used:

  • UNAUTHENTICATED (16) — Missing or invalid token.
  • PERMISSION_DENIED (7) — Token does not allow the requested tenant/channel.
  • UNAVAILABLE (14) — Service down or unreachable; retry with backoff.

See also Error codes.