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}