Rename all crate directories, package names, binary names, proto package/module paths, ALPN strings, env var prefixes, config filenames, mDNS service names, and plugin ABI symbols from quicproquo/qpq to quicprochat/qpc.
86 lines
1.7 KiB
Protocol Buffer
86 lines
1.7 KiB
Protocol Buffer
syntax = "proto3";
|
|
package qpc.v1;
|
|
|
|
// Delivery service: enqueue, fetch, peek, ack, batch (6 methods).
|
|
// Method IDs: 200-205.
|
|
|
|
message Envelope {
|
|
uint64 seq = 1;
|
|
bytes data = 2;
|
|
}
|
|
|
|
message EnqueueRequest {
|
|
bytes recipient_key = 1;
|
|
bytes payload = 2;
|
|
bytes channel_id = 3;
|
|
uint32 ttl_secs = 4;
|
|
// Client-generated idempotency key (16 bytes, UUID v7).
|
|
// Server deduplicates enqueue requests with the same message_id within a TTL window.
|
|
bytes message_id = 5;
|
|
}
|
|
|
|
message EnqueueResponse {
|
|
uint64 seq = 1;
|
|
bytes delivery_proof = 2;
|
|
// True if this was a duplicate enqueue (message_id already seen).
|
|
bool duplicate = 3;
|
|
}
|
|
|
|
message FetchRequest {
|
|
bytes recipient_key = 1;
|
|
bytes channel_id = 2;
|
|
uint32 limit = 3;
|
|
// Device ID for multi-device scoping. When set, the server builds
|
|
// a composite queue key (identity_key + device_id). Empty = bare key.
|
|
bytes device_id = 4;
|
|
}
|
|
|
|
message FetchResponse {
|
|
repeated Envelope payloads = 1;
|
|
}
|
|
|
|
message FetchWaitRequest {
|
|
bytes recipient_key = 1;
|
|
bytes channel_id = 2;
|
|
uint64 timeout_ms = 3;
|
|
uint32 limit = 4;
|
|
bytes device_id = 5;
|
|
}
|
|
|
|
message FetchWaitResponse {
|
|
repeated Envelope payloads = 1;
|
|
}
|
|
|
|
message PeekRequest {
|
|
bytes recipient_key = 1;
|
|
bytes channel_id = 2;
|
|
uint32 limit = 3;
|
|
bytes device_id = 4;
|
|
}
|
|
|
|
message PeekResponse {
|
|
repeated Envelope payloads = 1;
|
|
}
|
|
|
|
message AckRequest {
|
|
bytes recipient_key = 1;
|
|
bytes channel_id = 2;
|
|
uint64 seq_up_to = 3;
|
|
bytes device_id = 4;
|
|
}
|
|
|
|
message AckResponse {}
|
|
|
|
message BatchEnqueueRequest {
|
|
repeated bytes recipient_keys = 1;
|
|
bytes payload = 2;
|
|
bytes channel_id = 3;
|
|
uint32 ttl_secs = 4;
|
|
// Client-generated idempotency key (16 bytes, UUID v7).
|
|
bytes message_id = 5;
|
|
}
|
|
|
|
message BatchEnqueueResponse {
|
|
repeated uint64 seqs = 1;
|
|
}
|