syntax = "proto3";

package cabe.v1;
option go_package = "go.skia.org/infra/cabe/go/proto";

import "google/api/annotations.proto";
import "cabe/proto/v1/analysis.proto";
import "cabe/proto/v1/spec.proto";

service Analysis {
  // Get results of a performance experiment analysis.
  rpc GetAnalysis(GetAnalysisRequest) returns (GetAnalysisResponse) {
    option (google.api.http) = {
      post: "/cabe.v1.Analysis/GetAnalysis"
    };
  }
}

message GetAnalysisRequest {
  string pinpoint_job_id = 1;

  // experiment_spec defines the experiment arms as well as which specific
  // benchmarks and workloads it should expect to find in task result output
  // files.  If reality doesn't match the spec, CABE returns an error with
  // some information about what didn't match the provided ExperimentSpec.
  //
  // If experiment_spec isn't set, CABE will infer one based on heuristics*
  // and data available from Swarming and RBE-CAS at the time of the request.
  // Note that this is best-effort and not guaranteed to do what the caller
  // expects. If you have specific benchmarks and workloads that need to be
  // either analyzed or cause errors if they are missing, you should specify an
  // explicit experiment_spec value.
  //
  // *See infer_specs.go and infer_specs_test.go for implementation details.
  ExperimentSpec experiment_spec = 2;
}

message GetAnalysisResponse {
  repeated AnalysisResult results = 1;

  // If an experiment_spec was not included in the GetAnalysisRequest,
  // cabe will apply some best-effort heuristics to infer an experiment
  // specification based on swarming task metadata and contents of task
  // output json files. The GetAnalysis method will attach whatever
  // it was able to infer the experiment to this field.
  ExperimentSpec inferred_experiment_spec = 2;

  // Extra information about the analysis and/or the process of generating
  // the results.
  AnalysisMetadata metadata = 3;
}
