syntax = "proto3";
package conductor.proto;

import "model/ratelimitconfig.proto";
import "model/workflowtask.proto";
import "google/protobuf/struct.proto";
import "model/schemadef.proto";
import "model/cacheconfig.proto";

option java_package = "com.netflix.conductor.proto";
option java_outer_classname = "WorkflowDefPb";
option go_package = "github.com/netflix/conductor/client/gogrpc/conductor/model";

message WorkflowDef {
    enum TimeoutPolicy {
        TIME_OUT_WF = 0;
        ALERT_ONLY = 1;
    }
    string name = 1;
    string description = 2;
    int32 version = 3;
    repeated WorkflowTask tasks = 4;
    repeated string input_parameters = 5;
    map<string, google.protobuf.Value> output_parameters = 6;
    string failure_workflow = 7;
    int32 schema_version = 8;
    bool restartable = 9;
    bool workflow_status_listener_enabled = 10;
    string owner_email = 11;
    WorkflowDef.TimeoutPolicy timeout_policy = 12;
    int64 timeout_seconds = 13;
    map<string, google.protobuf.Value> variables = 14;
    map<string, google.protobuf.Value> input_template = 15;
    int32 failure_workflow_version = 16;
    string workflow_status_listener_sink = 17;
    RateLimitConfig rate_limit_config = 18;
    SchemaDef input_schema = 19;
    SchemaDef output_schema = 20;
    bool enforce_schema = 21;
    map<string, google.protobuf.Value> metadata = 22;
    CacheConfig cache_config = 23;
    repeated string masked_fields = 24;
}
