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