001package com.box.sdkgen.schemas.signrequestcreaterequest; 002 003import com.box.sdkgen.internal.Nullable; 004import com.box.sdkgen.schemas.filebase.FileBase; 005import com.box.sdkgen.schemas.foldermini.FolderMini; 006import com.box.sdkgen.schemas.signrequestbase.SignRequestBase; 007import com.box.sdkgen.schemas.signrequestcreatesigner.SignRequestCreateSigner; 008import com.box.sdkgen.schemas.signrequestprefilltag.SignRequestPrefillTag; 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/** Creates a Box Sign request object. */ 018@JsonFilter("nullablePropertyFilter") 019public class SignRequestCreateRequest extends SignRequestBase { 020 021 /** 022 * List of files to create a signing document from. This is currently limited to ten files. Only 023 * the ID and type fields are required for each file. 024 */ 025 @JsonProperty("source_files") 026 @Nullable 027 protected List<FileBase> sourceFiles; 028 029 /** Force a specific color for the signature (blue, black, or red). */ 030 @JsonDeserialize( 031 using = 032 SignRequestCreateRequestSignatureColorField 033 .SignRequestCreateRequestSignatureColorFieldDeserializer.class) 034 @JsonSerialize( 035 using = 036 SignRequestCreateRequestSignatureColorField 037 .SignRequestCreateRequestSignatureColorFieldSerializer.class) 038 @JsonProperty("signature_color") 039 @Nullable 040 protected EnumWrapper<SignRequestCreateRequestSignatureColorField> signatureColor; 041 042 /** 043 * Array of signers for the signature request. 35 is the max number of signers permitted. 044 * 045 * <p>**Note**: It may happen that some signers belong to conflicting 046 * [segments](https://developer.box.com/reference/resources/shield-information-barrier-segment-member) 047 * (user groups). This means that due to the security policies, users are assigned to segments to 048 * prevent exchanges or communication that could lead to ethical conflicts. In such a case, an 049 * attempt to send the sign request will result in an error. 050 * 051 * <p>Read more about [segments and ethical 052 * walls](https://support.box.com/hc/en-us/articles/9920431507603-Understanding-Information-Barriers#h_01GFVJEHQA06N7XEZ4GCZ9GFAQ). 053 */ 054 protected final List<SignRequestCreateSigner> signers; 055 056 @JsonProperty("parent_folder") 057 protected FolderMini parentFolder; 058 059 public SignRequestCreateRequest(@JsonProperty("signers") List<SignRequestCreateSigner> signers) { 060 super(); 061 this.signers = signers; 062 } 063 064 protected SignRequestCreateRequest(Builder builder) { 065 super(builder); 066 this.sourceFiles = builder.sourceFiles; 067 this.signatureColor = builder.signatureColor; 068 this.signers = builder.signers; 069 this.parentFolder = builder.parentFolder; 070 markNullableFieldsAsSet(builder.getExplicitlySetNullableFields()); 071 } 072 073 public List<FileBase> getSourceFiles() { 074 return sourceFiles; 075 } 076 077 public EnumWrapper<SignRequestCreateRequestSignatureColorField> getSignatureColor() { 078 return signatureColor; 079 } 080 081 public List<SignRequestCreateSigner> getSigners() { 082 return signers; 083 } 084 085 public FolderMini getParentFolder() { 086 return parentFolder; 087 } 088 089 @Override 090 public boolean equals(Object o) { 091 if (this == o) { 092 return true; 093 } 094 if (o == null || getClass() != o.getClass()) { 095 return false; 096 } 097 SignRequestCreateRequest casted = (SignRequestCreateRequest) o; 098 return Objects.equals(isDocumentPreparationNeeded, casted.isDocumentPreparationNeeded) 099 && Objects.equals(redirectUrl, casted.redirectUrl) 100 && Objects.equals(declinedRedirectUrl, casted.declinedRedirectUrl) 101 && Objects.equals(areTextSignaturesEnabled, casted.areTextSignaturesEnabled) 102 && Objects.equals(emailSubject, casted.emailSubject) 103 && Objects.equals(emailMessage, casted.emailMessage) 104 && Objects.equals(areRemindersEnabled, casted.areRemindersEnabled) 105 && Objects.equals(name, casted.name) 106 && Objects.equals(prefillTags, casted.prefillTags) 107 && Objects.equals(daysValid, casted.daysValid) 108 && Objects.equals(externalId, casted.externalId) 109 && Objects.equals(templateId, casted.templateId) 110 && Objects.equals(externalSystemName, casted.externalSystemName) 111 && Objects.equals(sourceFiles, casted.sourceFiles) 112 && Objects.equals(signatureColor, casted.signatureColor) 113 && Objects.equals(signers, casted.signers) 114 && Objects.equals(parentFolder, casted.parentFolder); 115 } 116 117 @Override 118 public int hashCode() { 119 return Objects.hash( 120 isDocumentPreparationNeeded, 121 redirectUrl, 122 declinedRedirectUrl, 123 areTextSignaturesEnabled, 124 emailSubject, 125 emailMessage, 126 areRemindersEnabled, 127 name, 128 prefillTags, 129 daysValid, 130 externalId, 131 templateId, 132 externalSystemName, 133 sourceFiles, 134 signatureColor, 135 signers, 136 parentFolder); 137 } 138 139 @Override 140 public String toString() { 141 return "SignRequestCreateRequest{" 142 + "isDocumentPreparationNeeded='" 143 + isDocumentPreparationNeeded 144 + '\'' 145 + ", " 146 + "redirectUrl='" 147 + redirectUrl 148 + '\'' 149 + ", " 150 + "declinedRedirectUrl='" 151 + declinedRedirectUrl 152 + '\'' 153 + ", " 154 + "areTextSignaturesEnabled='" 155 + areTextSignaturesEnabled 156 + '\'' 157 + ", " 158 + "emailSubject='" 159 + emailSubject 160 + '\'' 161 + ", " 162 + "emailMessage='" 163 + emailMessage 164 + '\'' 165 + ", " 166 + "areRemindersEnabled='" 167 + areRemindersEnabled 168 + '\'' 169 + ", " 170 + "name='" 171 + name 172 + '\'' 173 + ", " 174 + "prefillTags='" 175 + prefillTags 176 + '\'' 177 + ", " 178 + "daysValid='" 179 + daysValid 180 + '\'' 181 + ", " 182 + "externalId='" 183 + externalId 184 + '\'' 185 + ", " 186 + "templateId='" 187 + templateId 188 + '\'' 189 + ", " 190 + "externalSystemName='" 191 + externalSystemName 192 + '\'' 193 + ", " 194 + "sourceFiles='" 195 + sourceFiles 196 + '\'' 197 + ", " 198 + "signatureColor='" 199 + signatureColor 200 + '\'' 201 + ", " 202 + "signers='" 203 + signers 204 + '\'' 205 + ", " 206 + "parentFolder='" 207 + parentFolder 208 + '\'' 209 + "}"; 210 } 211 212 public static class Builder extends SignRequestBase.Builder { 213 214 protected List<FileBase> sourceFiles; 215 216 protected EnumWrapper<SignRequestCreateRequestSignatureColorField> signatureColor; 217 218 protected final List<SignRequestCreateSigner> signers; 219 220 protected FolderMini parentFolder; 221 222 public Builder(List<SignRequestCreateSigner> signers) { 223 super(); 224 this.signers = signers; 225 } 226 227 public Builder sourceFiles(List<FileBase> sourceFiles) { 228 this.sourceFiles = sourceFiles; 229 this.markNullableFieldAsSet("source_files"); 230 return this; 231 } 232 233 public Builder signatureColor(SignRequestCreateRequestSignatureColorField signatureColor) { 234 this.signatureColor = 235 new EnumWrapper<SignRequestCreateRequestSignatureColorField>(signatureColor); 236 this.markNullableFieldAsSet("signature_color"); 237 return this; 238 } 239 240 public Builder signatureColor( 241 EnumWrapper<SignRequestCreateRequestSignatureColorField> signatureColor) { 242 this.signatureColor = signatureColor; 243 this.markNullableFieldAsSet("signature_color"); 244 return this; 245 } 246 247 public Builder parentFolder(FolderMini parentFolder) { 248 this.parentFolder = parentFolder; 249 return this; 250 } 251 252 @Override 253 public Builder isDocumentPreparationNeeded(Boolean isDocumentPreparationNeeded) { 254 this.isDocumentPreparationNeeded = isDocumentPreparationNeeded; 255 return this; 256 } 257 258 @Override 259 public Builder redirectUrl(String redirectUrl) { 260 this.redirectUrl = redirectUrl; 261 this.markNullableFieldAsSet("redirect_url"); 262 return this; 263 } 264 265 @Override 266 public Builder declinedRedirectUrl(String declinedRedirectUrl) { 267 this.declinedRedirectUrl = declinedRedirectUrl; 268 this.markNullableFieldAsSet("declined_redirect_url"); 269 return this; 270 } 271 272 @Override 273 public Builder areTextSignaturesEnabled(Boolean areTextSignaturesEnabled) { 274 this.areTextSignaturesEnabled = areTextSignaturesEnabled; 275 return this; 276 } 277 278 @Override 279 public Builder emailSubject(String emailSubject) { 280 this.emailSubject = emailSubject; 281 this.markNullableFieldAsSet("email_subject"); 282 return this; 283 } 284 285 @Override 286 public Builder emailMessage(String emailMessage) { 287 this.emailMessage = emailMessage; 288 this.markNullableFieldAsSet("email_message"); 289 return this; 290 } 291 292 @Override 293 public Builder areRemindersEnabled(Boolean areRemindersEnabled) { 294 this.areRemindersEnabled = areRemindersEnabled; 295 return this; 296 } 297 298 @Override 299 public Builder name(String name) { 300 this.name = name; 301 return this; 302 } 303 304 @Override 305 public Builder prefillTags(List<SignRequestPrefillTag> prefillTags) { 306 this.prefillTags = prefillTags; 307 return this; 308 } 309 310 @Override 311 public Builder daysValid(Long daysValid) { 312 this.daysValid = daysValid; 313 this.markNullableFieldAsSet("days_valid"); 314 return this; 315 } 316 317 @Override 318 public Builder externalId(String externalId) { 319 this.externalId = externalId; 320 this.markNullableFieldAsSet("external_id"); 321 return this; 322 } 323 324 @Override 325 public Builder templateId(String templateId) { 326 this.templateId = templateId; 327 this.markNullableFieldAsSet("template_id"); 328 return this; 329 } 330 331 @Override 332 public Builder externalSystemName(String externalSystemName) { 333 this.externalSystemName = externalSystemName; 334 this.markNullableFieldAsSet("external_system_name"); 335 return this; 336 } 337 338 public SignRequestCreateRequest build() { 339 return new SignRequestCreateRequest(this); 340 } 341 } 342}