// Path: src/main/java/org/graylog/plugins/aggregates/rule/Rule.java
// public interface Rule {
// 	
// 	public String getQuery();
// 
// 	public String getField();
// 
// 	public long getNumberOfMatches();
// 
// 	public boolean isMatchMoreOrEqual();
// 
// 	public int getInterval();
// 	
// 	public String getName();
// 	
// 	public boolean isEnabled();
// 	
// 	public String getStreamId();
// 
// 	public boolean isInReport();
// 
// 	public List<String> getReportSchedules();
// 
// 	public String getAlertConditionId();
// 
// 	public boolean shouldRepeatNotifications();
// 
// 	public long getBacklog();
// }
// 
// Path: src/main/java/org/graylog/plugins/aggregates/rule/RuleImpl.java
// @AutoValue
// @JsonAutoDetect
// @JsonIgnoreProperties(ignoreUnknown = true)
// @CollectionName("aggregate_rules")
// public abstract class RuleImpl implements Rule{
// 
// 
// 	@JsonProperty("query")
//     @Override
//     @NotNull
//     public abstract String getQuery();
// 
//     @JsonProperty("field")
//     @Override
//     @NotNull
//     public abstract String getField();
// 
//     @JsonProperty("numberOfMatches")
//     @Override
//     @Min(1)
//     public abstract long getNumberOfMatches();
//     
//     @JsonProperty("matchMoreOrEqual")
//     @Override
//     public abstract boolean isMatchMoreOrEqual();
// 	
//     @JsonProperty("interval")
//     @Override
//     @Min(1)
//     public abstract int getInterval();
// 		
//     @JsonProperty("name")    
//     @Override
//     @NotNull
//     public abstract String getName();
// 
//     @JsonProperty("enabled")
//     @Override
//     public abstract boolean isEnabled();
//     
//     @JsonProperty("streamId")
//     @Override
//     public abstract String getStreamId();
// 
//     @JsonProperty("inReport")
//     @Override
//     public abstract boolean isInReport();
//     
//     @JsonProperty("reportSchedules")
//     @Override
//     @Nullable
//     public abstract List<String> getReportSchedules();
// 
//     @JsonProperty("alertConditionId")
//     @Override
//     @Nullable
//     public abstract String getAlertConditionId();
// 
//     @JsonProperty("repeatNotifications")
//     @Override
//     @Nullable
//     public abstract boolean shouldRepeatNotifications();
// 
//     @JsonProperty("backlog")
//     @Override
//     @Nullable
//     @Min(0)
//     public abstract long getBacklog();
// 
// 	@JsonCreator
//     public static RuleImpl create(@JsonProperty("_id") String objectId,
//                                        @JsonProperty("query") String query,
//                                        @JsonProperty("field") String field,
//                                        @JsonProperty("numberOfMatches") long numberOfMatches,
//                                        @JsonProperty("matchMoreOrEqual") boolean matchMoreOrEqual,
//                                        @JsonProperty("interval") int interval,
//                                        @JsonProperty("name") String name,
//                                        @JsonProperty("enabled") boolean enabled,
//                                        @JsonProperty("streamId") String streamId,
//                                        @JsonProperty("inReport") boolean inReport,
//                                        @JsonProperty("reportSchedules") List<String> reportSchedules,
//                                        @JsonProperty("alertConditionId") String alertConditionId,
//                                        @JsonProperty("repeatNotifications") boolean repeatNotifications,
//                                        @JsonProperty("backlog") long backlog) {
//         return new AutoValue_RuleImpl(query, field, numberOfMatches, matchMoreOrEqual, interval, name, enabled, streamId, inReport, reportSchedules, alertConditionId, repeatNotifications, backlog);
//     }
// 	
// 	public static RuleImpl create(
//             String query,
//             String field,
//             long numberOfMatches,
//             boolean matchMoreOrEqual,
//             int interval,
//             String name,
//             boolean enabled,
//             String streamId,
//             boolean inReport,
//             List<String> reportSchedules,
//             String alertConditionId,
//             boolean repeatNotifications,
//             long backlog) {
// 		return new AutoValue_RuleImpl(query, field, numberOfMatches, matchMoreOrEqual, interval, name, enabled, streamId, inReport, reportSchedules, alertConditionId, repeatNotifications, backlog);
// 	
// 	}
// }


import com.fasterxml.jackson.annotation.JsonAutoDetect;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.google.auto.value.AutoValue;
import org.graylog.plugins.aggregates.rule.Rule;
import org.graylog.plugins.aggregates.rule.RuleImpl;
import javax.validation.Valid;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
package org.graylog.plugins.aggregates.rule.rest.models.requests;






@AutoValue
@JsonAutoDetect
public abstract class UpdateRuleRequest {
	

    @JsonProperty("rule")
    @NotNull
    public abstract RuleImpl getRule();
    
    @JsonCreator    
    public static UpdateRuleRequest create(
    		@JsonProperty("rule") @Valid RuleImpl rule    		    		
    		) {
// Path: src/main/java/org/graylog/plugins/aggregates/rule/Rule.java
// public interface Rule {
// 	
// 	public String getQuery();
// 
// 	public String getField();
// 
// 	public long getNumberOfMatches();
// 
// 	public boolean isMatchMoreOrEqual();
// 
// 	public int getInterval();
// 	
// 	public String getName();
// 	
// 	public boolean isEnabled();
// 	
// 	public String getStreamId();
// 
// 	public boolean isInReport();
// 
// 	public List<String> getReportSchedules();
// 
// 	public String getAlertConditionId();
// 
// 	public boolean shouldRepeatNotifications();
// 
// 	public long getBacklog();
// }
// 
// Path: src/main/java/org/graylog/plugins/aggregates/rule/RuleImpl.java
// @AutoValue
// @JsonAutoDetect
// @JsonIgnoreProperties(ignoreUnknown = true)
// @CollectionName("aggregate_rules")
// public abstract class RuleImpl implements Rule{
// 
// 
// 	@JsonProperty("query")
//     @Override
//     @NotNull
//     public abstract String getQuery();
// 
//     @JsonProperty("field")
//     @Override
//     @NotNull
//     public abstract String getField();
// 
//     @JsonProperty("numberOfMatches")
//     @Override
//     @Min(1)
//     public abstract long getNumberOfMatches();
//     
//     @JsonProperty("matchMoreOrEqual")
//     @Override
//     public abstract boolean isMatchMoreOrEqual();
// 	
//     @JsonProperty("interval")
//     @Override
//     @Min(1)
//     public abstract int getInterval();
// 		
//     @JsonProperty("name")    
//     @Override
//     @NotNull
//     public abstract String getName();
// 
//     @JsonProperty("enabled")
//     @Override
//     public abstract boolean isEnabled();
//     
//     @JsonProperty("streamId")
//     @Override
//     public abstract String getStreamId();
// 
//     @JsonProperty("inReport")
//     @Override
//     public abstract boolean isInReport();
//     
//     @JsonProperty("reportSchedules")
//     @Override
//     @Nullable
//     public abstract List<String> getReportSchedules();
// 
//     @JsonProperty("alertConditionId")
//     @Override
//     @Nullable
//     public abstract String getAlertConditionId();
// 
//     @JsonProperty("repeatNotifications")
//     @Override
//     @Nullable
//     public abstract boolean shouldRepeatNotifications();
// 
//     @JsonProperty("backlog")
//     @Override
//     @Nullable
//     @Min(0)
//     public abstract long getBacklog();
// 
// 	@JsonCreator
//     public static RuleImpl create(@JsonProperty("_id") String objectId,
//                                        @JsonProperty("query") String query,
//                                        @JsonProperty("field") String field,
//                                        @JsonProperty("numberOfMatches") long numberOfMatches,
//                                        @JsonProperty("matchMoreOrEqual") boolean matchMoreOrEqual,
//                                        @JsonProperty("interval") int interval,
//                                        @JsonProperty("name") String name,
//                                        @JsonProperty("enabled") boolean enabled,
//                                        @JsonProperty("streamId") String streamId,
//                                        @JsonProperty("inReport") boolean inReport,
//                                        @JsonProperty("reportSchedules") List<String> reportSchedules,
//                                        @JsonProperty("alertConditionId") String alertConditionId,
//                                        @JsonProperty("repeatNotifications") boolean repeatNotifications,
//                                        @JsonProperty("backlog") long backlog) {
//         return new AutoValue_RuleImpl(query, field, numberOfMatches, matchMoreOrEqual, interval, name, enabled, streamId, inReport, reportSchedules, alertConditionId, repeatNotifications, backlog);
//     }
// 	
// 	public static RuleImpl create(
//             String query,
//             String field,
//             long numberOfMatches,
//             boolean matchMoreOrEqual,
//             int interval,
//             String name,
//             boolean enabled,
//             String streamId,
//             boolean inReport,
//             List<String> reportSchedules,
//             String alertConditionId,
//             boolean repeatNotifications,
//             long backlog) {
// 		return new AutoValue_RuleImpl(query, field, numberOfMatches, matchMoreOrEqual, interval, name, enabled, streamId, inReport, reportSchedules, alertConditionId, repeatNotifications, backlog);
// 	
// 	}
// }


// Path: src/main/java/org/graylog/plugins/aggregates/rule/rest/models/requests/UpdateRuleRequest.java
import com.fasterxml.jackson.annotation.JsonAutoDetect;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.google.auto.value.AutoValue;
import org.graylog.plugins.aggregates.rule.Rule;
import org.graylog.plugins.aggregates.rule.RuleImpl;
import javax.validation.Valid;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;

package org.graylog.plugins.aggregates.rule.rest.models.requests;






@AutoValue
@JsonAutoDetect
public abstract class UpdateRuleRequest {
	

    @JsonProperty("rule")
    @NotNull
    public abstract RuleImpl getRule();
    
    @JsonCreator    
    public static UpdateRuleRequest create(
    		@JsonProperty("rule") @Valid RuleImpl rule    		    		
    		) {
        return new AutoValue_UpdateRuleRequest(rule);