001package com.box.sdkgen.schemas.v2026r0.queryinsightsrequestbodyv2026r0;
002
003import com.box.sdkgen.internal.SerializableObject;
004import com.box.sdkgen.schemas.v2026r0.queryinsightsmetricdefinitionv2026r0.QueryInsightsMetricDefinitionV2026R0;
005import com.fasterxml.jackson.annotation.JsonFilter;
006import com.fasterxml.jackson.annotation.JsonProperty;
007import java.util.Map;
008import java.util.Objects;
009
010/** Request body describing the filtering, grouping, and metrics for an insights computation. */
011@JsonFilter("nullablePropertyFilter")
012public class QueryInsightsRequestBodyV2026R0 extends SerializableObject {
013
014  /**
015   * The filtering and grouping definition. Filters are applied first, followed by grouping, before
016   * metrics are computed.
017   */
018  protected final QueryInsightsRequestBodyV2026R0QueryField query;
019
020  /**
021   * A map of user-defined metric aliases to their definitions. A maximum of 10 metrics may be
022   * defined. Each alias must be a unique, non-empty string of up to 256 characters, containing only
023   * letters, digits, `_`, `-`, or `.`, and must not start with a digit, `_`, `-`, or `.`. May be
024   * empty to request only a total count.
025   */
026  protected final Map<String, QueryInsightsMetricDefinitionV2026R0> metrics;
027
028  public QueryInsightsRequestBodyV2026R0(
029      @JsonProperty("query") QueryInsightsRequestBodyV2026R0QueryField query,
030      @JsonProperty("metrics") Map<String, QueryInsightsMetricDefinitionV2026R0> metrics) {
031    super();
032    this.query = query;
033    this.metrics = metrics;
034  }
035
036  public QueryInsightsRequestBodyV2026R0QueryField getQuery() {
037    return query;
038  }
039
040  public Map<String, QueryInsightsMetricDefinitionV2026R0> getMetrics() {
041    return metrics;
042  }
043
044  @Override
045  public boolean equals(Object o) {
046    if (this == o) {
047      return true;
048    }
049    if (o == null || getClass() != o.getClass()) {
050      return false;
051    }
052    QueryInsightsRequestBodyV2026R0 casted = (QueryInsightsRequestBodyV2026R0) o;
053    return Objects.equals(query, casted.query) && Objects.equals(metrics, casted.metrics);
054  }
055
056  @Override
057  public int hashCode() {
058    return Objects.hash(query, metrics);
059  }
060
061  @Override
062  public String toString() {
063    return "QueryInsightsRequestBodyV2026R0{"
064        + "query='"
065        + query
066        + '\''
067        + ", "
068        + "metrics='"
069        + metrics
070        + '\''
071        + "}";
072  }
073}