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 ReplyWithCRAction {
    int64 canned_response_id = 1;
    bool subscribe = 2;
    bool mark_as_answer = 3;
  }

  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;
      AA_SOFT_LOCK = 12;
      AA_UNSOFT_LOCK = 13;
      AA_EXCLUDE_FROM_GOLDEN = 14;
      AA_UNEXCLUDE_FROM_GOLDEN = 15;
      AA_INCLUDE_IN_GOLDEN = 16;
    }
    AttributeAction attribute_action = 1;
  }

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

  message MarkAsReadAction {}

  message MarkAsUnreadAction {}

  oneof action {
    ReplyAction reply_action = 1;
    MoveAction move_action = 2;
    MarkDuplicateAction mark_duplicate_action = 3;
    UnmarkDuplicateAction unmark_duplicate_action = 4;
    AttributeAction attribute_action = 5;
    ReplyWithCRAction reply_with_cr_action = 6;
    StarAction star_action = 16;
    SubscribeAction subscribe_action = 17;
    VoteAction vote_action = 18;
    ReportAction report_action = 19;
    MarkAsReadAction mark_as_read_action = 20;
    MarkAsUnreadAction mark_as_unread_action = 21;
  }
}

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