gRPC API Reference

Protocol Buffers service definition for the InferaDB Engine.

The Engine exposes a gRPC API on port 8081 (default). Typically 20-30% faster than REST.

Service Definition

service AuthorizationService {
    rpc Evaluate(stream EvaluateRequest) returns (stream EvaluateResponse);
    rpc Expand(ExpandRequest) returns (stream ExpandResponse);
    rpc WriteRelationships(stream WriteRequest) returns (WriteResponse);
    rpc DeleteRelationships(stream DeleteRequest) returns (DeleteResponse);
    rpc ListResources(ListResourcesRequest) returns (stream ListResourcesResponse);
    rpc ListRelationships(ListRelationshipsRequest) returns (stream ListRelationshipsResponse);
    rpc ListSubjects(ListSubjectsRequest) returns (stream ListSubjectsResponse);
    rpc Watch(WatchRequest) returns (stream WatchResponse);
    rpc Simulate(SimulateRequest) returns (SimulateResponse);
    rpc Health(HealthRequest) returns (HealthResponse);
}

The proto definitions are at engine/proto/inferadb/authorization/v1/authorization.proto.

RPC Methods

RPC Streaming Description
Evaluate Bidirectional Permission check (batch via streaming)
Expand Server Expand relation to userset tree
WriteRelationships Client Write relationships (batch)
DeleteRelationships Client Delete by exact match or filter
ListResources Server List accessible resources (with cursor pagination, wildcard patterns)
ListRelationships Server List relationships with filters
ListSubjects Server List subjects with relation to resource
Watch Server Real-time relationship change events
Simulate Unary What-if testing with ephemeral relationships
Health Unary Health check

Connection

# Using grpcurl
grpcurl -plaintext localhost:8081 list
grpcurl -plaintext -d '{"resource":"document:readme","permission":"can_view","subject":"user:alice"}' \
  localhost:8081 inferadb.authorization.v1.AuthorizationService/Evaluate

Authentication

Pass the JWT as a metadata header:

authorization: Bearer <token>

Error Codes

gRPC Status Meaning
OK Success
INVALID_ARGUMENT Malformed request
UNAUTHENTICATED Missing or invalid credentials
NOT_FOUND Resource not found
RESOURCE_EXHAUSTED Rate limited
INTERNAL Server error