Files
sq/todos/SQ-008-protobuf-api-definitions.md
2026-02-27 12:15:43 +01:00

1.5 KiB

SQ-008: Protobuf API Definitions

Status: [x] DONE Blocked by: SQ-000 Priority: High

Description

Define all protobuf service definitions and generate the Rust gRPC code via buf.

Files to Create/Modify

  • interface/proto/sq/v1/data_plane.proto - Publish, Subscribe, Ack RPCs
  • interface/proto/sq/v1/control_plane.proto - CreateTopic, DeleteTopic, ListTopics, DescribeTopic, CreateConsumerGroup
  • interface/proto/sq/v1/health.proto - Status service (may already exist from Phase 0)
  • interface/proto/sq/v1/cluster.proto - ReplicateEntries, Join, Heartbeat, FetchSegment (internal)
  • crates/sq-grpc-interface/src/lib.rs - updated module re-exports
  • Regenerated code in crates/sq-grpc-interface/src/grpc/

Key Service Definitions

DataPlaneService

  • Publish(PublishRequest) -> PublishResponse
  • Subscribe(SubscribeRequest) -> stream SubscribeResponse
  • Ack(AckRequest) -> AckResponse

ControlPlaneService

  • CreateTopic, DeleteTopic, ListTopics, DescribeTopic, CreateConsumerGroup

ClusterService (internal)

  • ReplicateEntries, Join, Heartbeat, FetchSegment (streaming)

StatusService

  • Status(GetStatusRequest) -> GetStatusResponse

Acceptance Criteria

  • buf lint passes on all proto files
  • buf generate produces code in sq-grpc-interface
  • cargo check -p sq-grpc-interface passes
  • All service traits are generated (DataPlaneService, ControlPlaneService, ClusterService, StatusService)
  • AckMode enum has ALL, LOCAL, NONE variants