43 lines
1.5 KiB
Markdown
43 lines
1.5 KiB
Markdown
# 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
|