001package com.box.sdkgen.schemas.aistudioagentask;
002
003import com.box.sdkgen.internal.Nullable;
004import com.box.sdkgen.internal.NullableFieldTracker;
005import com.box.sdkgen.internal.SerializableObject;
006import com.box.sdkgen.schemas.aistudioagentbasictexttool.AiStudioAgentBasicTextTool;
007import com.box.sdkgen.schemas.aistudioagentlongtexttool.AiStudioAgentLongTextTool;
008import com.box.sdkgen.schemas.aistudioagentspreadsheettool.AiStudioAgentSpreadsheetTool;
009import com.box.sdkgen.serialization.json.EnumWrapper;
010import com.fasterxml.jackson.annotation.JsonFilter;
011import com.fasterxml.jackson.annotation.JsonProperty;
012import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
013import com.fasterxml.jackson.databind.annotation.JsonSerialize;
014import java.util.List;
015import java.util.Objects;
016
017/** The AI agent to be used to handle queries. */
018@JsonFilter("nullablePropertyFilter")
019public class AiStudioAgentAsk extends SerializableObject {
020
021  /** The type of AI agent used to handle queries. */
022  @JsonDeserialize(using = AiStudioAgentAskTypeField.AiStudioAgentAskTypeFieldDeserializer.class)
023  @JsonSerialize(using = AiStudioAgentAskTypeField.AiStudioAgentAskTypeFieldSerializer.class)
024  protected EnumWrapper<AiStudioAgentAskTypeField> type;
025
026  /** The state of the AI Agent capability. Possible values are: `enabled` and `disabled`. */
027  @JsonProperty("access_state")
028  protected final String accessState;
029
030  /** The description of the AI agent. */
031  protected final String description;
032
033  /** Custom instructions for the AI agent. */
034  @JsonProperty("custom_instructions")
035  @Nullable
036  protected String customInstructions;
037
038  /**
039   * Suggested questions for the AI agent. If null, suggested question will be generated. If empty,
040   * no suggested questions will be displayed.
041   */
042  @JsonProperty("suggested_questions")
043  protected List<String> suggestedQuestions;
044
045  @JsonProperty("long_text")
046  protected AiStudioAgentLongTextTool longText;
047
048  @JsonProperty("basic_text")
049  protected AiStudioAgentBasicTextTool basicText;
050
051  @JsonProperty("basic_image")
052  protected AiStudioAgentBasicTextTool basicImage;
053
054  protected AiStudioAgentSpreadsheetTool spreadsheet;
055
056  @JsonProperty("long_text_multi")
057  protected AiStudioAgentLongTextTool longTextMulti;
058
059  @JsonProperty("basic_text_multi")
060  protected AiStudioAgentBasicTextTool basicTextMulti;
061
062  @JsonProperty("basic_image_multi")
063  protected AiStudioAgentBasicTextTool basicImageMulti;
064
065  public AiStudioAgentAsk(
066      @JsonProperty("access_state") String accessState,
067      @JsonProperty("description") String description) {
068    super();
069    this.accessState = accessState;
070    this.description = description;
071    this.type = new EnumWrapper<AiStudioAgentAskTypeField>(AiStudioAgentAskTypeField.AI_AGENT_ASK);
072  }
073
074  protected AiStudioAgentAsk(Builder builder) {
075    super();
076    this.type = builder.type;
077    this.accessState = builder.accessState;
078    this.description = builder.description;
079    this.customInstructions = builder.customInstructions;
080    this.suggestedQuestions = builder.suggestedQuestions;
081    this.longText = builder.longText;
082    this.basicText = builder.basicText;
083    this.basicImage = builder.basicImage;
084    this.spreadsheet = builder.spreadsheet;
085    this.longTextMulti = builder.longTextMulti;
086    this.basicTextMulti = builder.basicTextMulti;
087    this.basicImageMulti = builder.basicImageMulti;
088    markNullableFieldsAsSet(builder.getExplicitlySetNullableFields());
089  }
090
091  public EnumWrapper<AiStudioAgentAskTypeField> getType() {
092    return type;
093  }
094
095  public String getAccessState() {
096    return accessState;
097  }
098
099  public String getDescription() {
100    return description;
101  }
102
103  public String getCustomInstructions() {
104    return customInstructions;
105  }
106
107  public List<String> getSuggestedQuestions() {
108    return suggestedQuestions;
109  }
110
111  public AiStudioAgentLongTextTool getLongText() {
112    return longText;
113  }
114
115  public AiStudioAgentBasicTextTool getBasicText() {
116    return basicText;
117  }
118
119  public AiStudioAgentBasicTextTool getBasicImage() {
120    return basicImage;
121  }
122
123  public AiStudioAgentSpreadsheetTool getSpreadsheet() {
124    return spreadsheet;
125  }
126
127  public AiStudioAgentLongTextTool getLongTextMulti() {
128    return longTextMulti;
129  }
130
131  public AiStudioAgentBasicTextTool getBasicTextMulti() {
132    return basicTextMulti;
133  }
134
135  public AiStudioAgentBasicTextTool getBasicImageMulti() {
136    return basicImageMulti;
137  }
138
139  @Override
140  public boolean equals(Object o) {
141    if (this == o) {
142      return true;
143    }
144    if (o == null || getClass() != o.getClass()) {
145      return false;
146    }
147    AiStudioAgentAsk casted = (AiStudioAgentAsk) o;
148    return Objects.equals(type, casted.type)
149        && Objects.equals(accessState, casted.accessState)
150        && Objects.equals(description, casted.description)
151        && Objects.equals(customInstructions, casted.customInstructions)
152        && Objects.equals(suggestedQuestions, casted.suggestedQuestions)
153        && Objects.equals(longText, casted.longText)
154        && Objects.equals(basicText, casted.basicText)
155        && Objects.equals(basicImage, casted.basicImage)
156        && Objects.equals(spreadsheet, casted.spreadsheet)
157        && Objects.equals(longTextMulti, casted.longTextMulti)
158        && Objects.equals(basicTextMulti, casted.basicTextMulti)
159        && Objects.equals(basicImageMulti, casted.basicImageMulti);
160  }
161
162  @Override
163  public int hashCode() {
164    return Objects.hash(
165        type,
166        accessState,
167        description,
168        customInstructions,
169        suggestedQuestions,
170        longText,
171        basicText,
172        basicImage,
173        spreadsheet,
174        longTextMulti,
175        basicTextMulti,
176        basicImageMulti);
177  }
178
179  @Override
180  public String toString() {
181    return "AiStudioAgentAsk{"
182        + "type='"
183        + type
184        + '\''
185        + ", "
186        + "accessState='"
187        + accessState
188        + '\''
189        + ", "
190        + "description='"
191        + description
192        + '\''
193        + ", "
194        + "customInstructions='"
195        + customInstructions
196        + '\''
197        + ", "
198        + "suggestedQuestions='"
199        + suggestedQuestions
200        + '\''
201        + ", "
202        + "longText='"
203        + longText
204        + '\''
205        + ", "
206        + "basicText='"
207        + basicText
208        + '\''
209        + ", "
210        + "basicImage='"
211        + basicImage
212        + '\''
213        + ", "
214        + "spreadsheet='"
215        + spreadsheet
216        + '\''
217        + ", "
218        + "longTextMulti='"
219        + longTextMulti
220        + '\''
221        + ", "
222        + "basicTextMulti='"
223        + basicTextMulti
224        + '\''
225        + ", "
226        + "basicImageMulti='"
227        + basicImageMulti
228        + '\''
229        + "}";
230  }
231
232  public static class Builder extends NullableFieldTracker {
233
234    protected EnumWrapper<AiStudioAgentAskTypeField> type;
235
236    protected final String accessState;
237
238    protected final String description;
239
240    protected String customInstructions;
241
242    protected List<String> suggestedQuestions;
243
244    protected AiStudioAgentLongTextTool longText;
245
246    protected AiStudioAgentBasicTextTool basicText;
247
248    protected AiStudioAgentBasicTextTool basicImage;
249
250    protected AiStudioAgentSpreadsheetTool spreadsheet;
251
252    protected AiStudioAgentLongTextTool longTextMulti;
253
254    protected AiStudioAgentBasicTextTool basicTextMulti;
255
256    protected AiStudioAgentBasicTextTool basicImageMulti;
257
258    public Builder(String accessState, String description) {
259      super();
260      this.accessState = accessState;
261      this.description = description;
262    }
263
264    public Builder type(AiStudioAgentAskTypeField type) {
265      this.type = new EnumWrapper<AiStudioAgentAskTypeField>(type);
266      return this;
267    }
268
269    public Builder type(EnumWrapper<AiStudioAgentAskTypeField> type) {
270      this.type = type;
271      return this;
272    }
273
274    public Builder customInstructions(String customInstructions) {
275      this.customInstructions = customInstructions;
276      this.markNullableFieldAsSet("custom_instructions");
277      return this;
278    }
279
280    public Builder suggestedQuestions(List<String> suggestedQuestions) {
281      this.suggestedQuestions = suggestedQuestions;
282      return this;
283    }
284
285    public Builder longText(AiStudioAgentLongTextTool longText) {
286      this.longText = longText;
287      return this;
288    }
289
290    public Builder basicText(AiStudioAgentBasicTextTool basicText) {
291      this.basicText = basicText;
292      return this;
293    }
294
295    public Builder basicImage(AiStudioAgentBasicTextTool basicImage) {
296      this.basicImage = basicImage;
297      return this;
298    }
299
300    public Builder spreadsheet(AiStudioAgentSpreadsheetTool spreadsheet) {
301      this.spreadsheet = spreadsheet;
302      return this;
303    }
304
305    public Builder longTextMulti(AiStudioAgentLongTextTool longTextMulti) {
306      this.longTextMulti = longTextMulti;
307      return this;
308    }
309
310    public Builder basicTextMulti(AiStudioAgentBasicTextTool basicTextMulti) {
311      this.basicTextMulti = basicTextMulti;
312      return this;
313    }
314
315    public Builder basicImageMulti(AiStudioAgentBasicTextTool basicImageMulti) {
316      this.basicImageMulti = basicImageMulti;
317      return this;
318    }
319
320    public AiStudioAgentAsk build() {
321      if (this.type == null) {
322        this.type =
323            new EnumWrapper<AiStudioAgentAskTypeField>(AiStudioAgentAskTypeField.AI_AGENT_ASK);
324      }
325      return new AiStudioAgentAsk(this);
326    }
327  }
328}