syntax = "proto3";

option cc_enable_arenas = true;

import "tensorflow_serving/apis/input.proto";
import "tensorflow_serving/apis/model.proto";

package tensorflow.serving;

// A single class.
message Class {
  // Label or name of the class.
  string label = 1;
  // Score for this class (e.g., the probability the item belongs to this
  // class). As per the proto3 default-value semantics, if the score is missing,
  // it should be treated as 0.
  float score = 2;
}

// List of classes for a single item (tensorflow.Example).
message Classifications {
  repeated Class classes = 1;
}

// Contains one result per input example, in the same order as the input in
// ClassificationRequest.
message ClassificationResult {
  repeated Classifications classifications = 1;
}

// RPC Interfaces

message ClassificationRequest {
  // Model Specification. If version is not specified, will use the latest
  // (numerical) version.
  ModelSpec model_spec = 1;

  // Input data.
  tensorflow.serving.Input input = 2;
}

message ClassificationResponse {
  // Effective Model Specification used for classification.
  ModelSpec model_spec = 2;

  // Result of the classification.
  ClassificationResult result = 1;
}
