syntax = "proto3";

package workflows;

message Thread {
  int64 forum_id = 1;
  int64 thread_id = 2;
}

message Action {
  message ReplyAction {
    string payload = 1;
    bool subscribe = 2;
    bool mark_as_answer = 3;
  }

  message MoveAction {
    int64 forum_id = 1;
    string category = 2;
    string language = 3;
    map<string, string> property = 4;
  }

  message MarkDuplicateAction {
    Thread destination = 1;
  }

  message UnmarkDuplicateAction {}

  message StarAction {
    bool star = 1; // true stars, and false unstars.
  }

  message SubscribeAction {
    bool subscribe = 1; // true subscribes, false unsubscribes.
  }

  message VoteAction {
    enum Vote {
      NONE = 0;
      UP = 1;
      DOWN = -1;
    }
    Vote vote = 1;
  }

  message AttributeAction {
    enum AttributeAction {
      AA_NONE = 0;
      AA_LOCK = 1;
      AA_UNLOCK = 2;
      AA_PIN = 3;
      AA_UNPIN = 4;
      AA_NON_ISSUE = 5;
      AA_OBSOLETE = 6;
      AA_REVERT = 7;
      AA_SET_TRENDING = 8;
      AA_UNSET_TRENDING = 9;
      AA_SET_ISSUE_RESOLVED = 10;
      AA_UNSET_ISSUE_RESOLVED = 11;
    }
    AttributeAction attribute_action = 1;
  }

  message ReportAction {
    enum ReportType {
      RT_UNKNOWN = 0;
      RT_OFF_TOPIC = 1;
      RT_ABUSE = 2;
    }
    ReportType report_type = 1;
  }

  oneof action {
    ReplyAction reply_action = 1;
    MoveAction move_action = 2;
    MarkDuplicateAction mark_duplicate_action = 3;
    UnmarkDuplicateAction unmark_duplicate_action = 4;
    AttributeAction attribute_action = 5;
    StarAction star_action = 16;
    SubscribeAction subscribe_action = 17;
    VoteAction vote_action = 18;
    ReportAction report_action = 19;
  }
}

message Workflow {
  string name = 1;
  string description = 2;
  int32 index = 3;
  repeated Action actions = 4;
}
