42
todos/SQ-008-protobuf-api-definitions.md
Normal file
42
todos/SQ-008-protobuf-api-definitions.md
Normal file
@@ -0,0 +1,42 @@
|
||||
# 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
|
||||
Reference in New Issue
Block a user