syntax = "proto3";

package temporal.api.compute.v1;

option go_package = "go.temporal.io/api/compute/v1;compute";
option java_package = "io.temporal.api.compute.v1";
option java_multiple_files = true;
option java_outer_classname = "ScalerProto";
option ruby_package = "Temporalio::Api::Compute::V1";
option csharp_namespace = "Temporalio.Api.Compute.V1";

import "temporal/api/common/v1/message.proto";

// ComputeScaler instructs the Temporal Service when to scale up or down the number of
// Workers that comprise a WorkerDeployment.
message ComputeScaler {
    // Type of the compute scaler. this string is implementation-specific and
    // can be used by implementations to understand how to interpret the
    // contents of the scaler_details field.
    string type = 1;

    // Contains scaler-specific instructions and configuration.
    // For server-implemented scalers, use the SDK's default data
    // converter to ensure the server can understand it.
    // For remote-implemented scalers, you might use your own data
    // converters according to what the remote endpoints understand.
    temporal.api.common.v1.Payload details = 2;
}
