syntax = "proto3";
package qpq.v1;

// Federation relay + proxy (6 methods).
// Method IDs: 900-905.

message FederationAuth {
  string origin = 1;
}

message RelayEnqueueRequest {
  bytes recipient_key = 1;
  bytes payload = 2;
  bytes channel_id = 3;
  FederationAuth auth = 4;
}

message RelayEnqueueResponse {
  uint64 seq = 1;
}

message RelayBatchEnqueueRequest {
  repeated bytes recipient_keys = 1;
  bytes payload = 2;
  bytes channel_id = 3;
  FederationAuth auth = 4;
}

message RelayBatchEnqueueResponse {
  repeated uint64 seqs = 1;
}

message ProxyFetchKeyPackageRequest {
  bytes identity_key = 1;
  FederationAuth auth = 2;
}

message ProxyFetchKeyPackageResponse {
  bytes package = 1;
}

message ProxyFetchHybridKeyRequest {
  bytes identity_key = 1;
  FederationAuth auth = 2;
}

message ProxyFetchHybridKeyResponse {
  bytes hybrid_public_key = 1;
}

message ProxyResolveUserRequest {
  string username = 1;
  FederationAuth auth = 2;
}

message ProxyResolveUserResponse {
  bytes identity_key = 1;
}

message FederationHealthRequest {}

message FederationHealthResponse {
  string status = 1;
  string server_domain = 2;
}
