001package com.box.sdkgen.schemas.aiextractstructured; 002 003import com.box.sdkgen.internal.NullableFieldTracker; 004import com.box.sdkgen.internal.SerializableObject; 005import com.box.sdkgen.schemas.aiagentextractstructured.AiAgentExtractStructured; 006import com.box.sdkgen.schemas.aiagentreference.AiAgentReference; 007import com.box.sdkgen.schemas.aiextractstructuredagent.AiExtractStructuredAgent; 008import com.box.sdkgen.schemas.aiitembase.AiItemBase; 009import com.fasterxml.jackson.annotation.JsonFilter; 010import com.fasterxml.jackson.annotation.JsonProperty; 011import java.util.List; 012import java.util.Objects; 013 014/** AI Extract Structured Request object. */ 015@JsonFilter("nullablePropertyFilter") 016public class AiExtractStructured extends SerializableObject { 017 018 /** The items to be processed by the LLM. Currently you can use files only. */ 019 protected final List<AiItemBase> items; 020 021 /** 022 * The metadata template containing the fields to extract. For your request to work, you must 023 * provide either `metadata_template` or `fields`, but not both. 024 */ 025 @JsonProperty("metadata_template") 026 protected AiExtractStructuredMetadataTemplateField metadataTemplate; 027 028 /** 029 * The fields to be extracted from the provided items. For your request to work, you must provide 030 * either `metadata_template` or `fields`, but not both. 031 */ 032 protected List<AiExtractStructuredFieldsField> fields; 033 034 @JsonProperty("ai_agent") 035 protected AiExtractStructuredAgent aiAgent; 036 037 /** A flag to indicate whether confidence scores for every extracted field should be returned. */ 038 @JsonProperty("include_confidence_score") 039 protected Boolean includeConfidenceScore; 040 041 /** A flag to indicate whether references for every extracted field should be returned. */ 042 @JsonProperty("include_reference") 043 protected Boolean includeReference; 044 045 public AiExtractStructured(@JsonProperty("items") List<AiItemBase> items) { 046 super(); 047 this.items = items; 048 } 049 050 protected AiExtractStructured(Builder builder) { 051 super(); 052 this.items = builder.items; 053 this.metadataTemplate = builder.metadataTemplate; 054 this.fields = builder.fields; 055 this.aiAgent = builder.aiAgent; 056 this.includeConfidenceScore = builder.includeConfidenceScore; 057 this.includeReference = builder.includeReference; 058 markNullableFieldsAsSet(builder.getExplicitlySetNullableFields()); 059 } 060 061 public List<AiItemBase> getItems() { 062 return items; 063 } 064 065 public AiExtractStructuredMetadataTemplateField getMetadataTemplate() { 066 return metadataTemplate; 067 } 068 069 public List<AiExtractStructuredFieldsField> getFields() { 070 return fields; 071 } 072 073 public AiExtractStructuredAgent getAiAgent() { 074 return aiAgent; 075 } 076 077 public Boolean getIncludeConfidenceScore() { 078 return includeConfidenceScore; 079 } 080 081 public Boolean getIncludeReference() { 082 return includeReference; 083 } 084 085 @Override 086 public boolean equals(Object o) { 087 if (this == o) { 088 return true; 089 } 090 if (o == null || getClass() != o.getClass()) { 091 return false; 092 } 093 AiExtractStructured casted = (AiExtractStructured) o; 094 return Objects.equals(items, casted.items) 095 && Objects.equals(metadataTemplate, casted.metadataTemplate) 096 && Objects.equals(fields, casted.fields) 097 && Objects.equals(aiAgent, casted.aiAgent) 098 && Objects.equals(includeConfidenceScore, casted.includeConfidenceScore) 099 && Objects.equals(includeReference, casted.includeReference); 100 } 101 102 @Override 103 public int hashCode() { 104 return Objects.hash( 105 items, metadataTemplate, fields, aiAgent, includeConfidenceScore, includeReference); 106 } 107 108 @Override 109 public String toString() { 110 return "AiExtractStructured{" 111 + "items='" 112 + items 113 + '\'' 114 + ", " 115 + "metadataTemplate='" 116 + metadataTemplate 117 + '\'' 118 + ", " 119 + "fields='" 120 + fields 121 + '\'' 122 + ", " 123 + "aiAgent='" 124 + aiAgent 125 + '\'' 126 + ", " 127 + "includeConfidenceScore='" 128 + includeConfidenceScore 129 + '\'' 130 + ", " 131 + "includeReference='" 132 + includeReference 133 + '\'' 134 + "}"; 135 } 136 137 public static class Builder extends NullableFieldTracker { 138 139 protected final List<AiItemBase> items; 140 141 protected AiExtractStructuredMetadataTemplateField metadataTemplate; 142 143 protected List<AiExtractStructuredFieldsField> fields; 144 145 protected AiExtractStructuredAgent aiAgent; 146 147 protected Boolean includeConfidenceScore; 148 149 protected Boolean includeReference; 150 151 public Builder(List<AiItemBase> items) { 152 super(); 153 this.items = items; 154 } 155 156 public Builder metadataTemplate(AiExtractStructuredMetadataTemplateField metadataTemplate) { 157 this.metadataTemplate = metadataTemplate; 158 return this; 159 } 160 161 public Builder fields(List<AiExtractStructuredFieldsField> fields) { 162 this.fields = fields; 163 return this; 164 } 165 166 public Builder aiAgent(AiAgentReference aiAgent) { 167 this.aiAgent = new AiExtractStructuredAgent(aiAgent); 168 return this; 169 } 170 171 public Builder aiAgent(AiAgentExtractStructured aiAgent) { 172 this.aiAgent = new AiExtractStructuredAgent(aiAgent); 173 return this; 174 } 175 176 public Builder aiAgent(AiExtractStructuredAgent aiAgent) { 177 this.aiAgent = aiAgent; 178 return this; 179 } 180 181 public Builder includeConfidenceScore(Boolean includeConfidenceScore) { 182 this.includeConfidenceScore = includeConfidenceScore; 183 return this; 184 } 185 186 public Builder includeReference(Boolean includeReference) { 187 this.includeReference = includeReference; 188 return this; 189 } 190 191 public AiExtractStructured build() { 192 return new AiExtractStructured(this); 193 } 194 } 195}