Files
sq/todos/SQ-008-protobuf-api-definitions.md
2026-02-26 21:52:50 +01:00

43 lines
1.5 KiB
Markdown

# SQ-008: Protobuf API Definitions
**Status:** `[ ] TODO`
**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