syntax = "proto3";

package grpc.health.v1;

// Health check service definition
service Health {
  // Check the health status of the service
  rpc Check(HealthCheckRequest) returns (HealthCheckResponse);

  // Watch for health status changes
  rpc Watch(HealthCheckRequest) returns (stream HealthCheckResponse);
}

// Health check request
message HealthCheckRequest {
  // Service name to check (empty for overall service health)
  string service = 1;
}

// Health check response
message HealthCheckResponse {
  // Health status
  ServingStatus status = 1;
}

// Serving status enum
enum ServingStatus {
  UNKNOWN = 0;
  SERVING = 1;
  NOT_SERVING = 2;
  SERVICE_UNKNOWN = 3;  // Used when the requested service is unknown
}