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(requestFlow, casted.requestFlow) 112 && Objects.equals(sourceFiles, casted.sourceFiles) 113 && Objects.equals(signatureColor, casted.signatureColor) 114 && Objects.equals(signers, casted.signers) 115 && Objects.equals(parentFolder, casted.parentFolder); 116 } 117 118 @Override 119 public int hashCode() { 120 return Objects.hash( 121 isDocumentPreparationNeeded, 122 redirectUrl, 123 declinedRedirectUrl, 124 areTextSignaturesEnabled, 125 emailSubject, 126 emailMessage, 127 areRemindersEnabled, 128 name, 129 prefillTags, 130 daysValid, 131 externalId, 132 templateId, 133 externalSystemName, 134 requestFlow, 135 sourceFiles, 136 signatureColor, 137 signers, 138 parentFolder); 139 } 140 141 @Override 142 public String toString() { 143 return "SignRequestCreateRequest{" 144 + "isDocumentPreparationNeeded='" 145 + isDocumentPreparationNeeded 146 + '\'' 147 + ", " 148 + "redirectUrl='" 149 + redirectUrl 150 + '\'' 151 + ", " 152 + "declinedRedirectUrl='" 153 + declinedRedirectUrl 154 + '\'' 155 + ", " 156 + "areTextSignaturesEnabled='" 157 + areTextSignaturesEnabled 158 + '\'' 159 + ", " 160 + "emailSubject='" 161 + emailSubject 162 + '\'' 163 + ", " 164 + "emailMessage='" 165 + emailMessage 166 + '\'' 167 + ", " 168 + "areRemindersEnabled='" 169 + areRemindersEnabled 170 + '\'' 171 + ", " 172 + "name='" 173 + name 174 + '\'' 175 + ", " 176 + "prefillTags='" 177 + prefillTags 178 + '\'' 179 + ", " 180 + "daysValid='" 181 + daysValid 182 + '\'' 183 + ", " 184 + "externalId='" 185 + externalId 186 + '\'' 187 + ", " 188 + "templateId='" 189 + templateId 190 + '\'' 191 + ", " 192 + "externalSystemName='" 193 + externalSystemName 194 + '\'' 195 + ", " 196 + "requestFlow='" 197 + requestFlow 198 + '\'' 199 + ", " 200 + "sourceFiles='" 201 + sourceFiles 202 + '\'' 203 + ", " 204 + "signatureColor='" 205 + signatureColor 206 + '\'' 207 + ", " 208 + "signers='" 209 + signers 210 + '\'' 211 + ", " 212 + "parentFolder='" 213 + parentFolder 214 + '\'' 215 + "}"; 216 } 217 218 public static class Builder extends SignRequestBase.Builder { 219 220 protected List<FileBase> sourceFiles; 221 222 protected EnumWrapper<SignRequestCreateRequestSignatureColorField> signatureColor; 223 224 protected final List<SignRequestCreateSigner> signers; 225 226 protected FolderMini parentFolder; 227 228 public Builder(List<SignRequestCreateSigner> signers) { 229 super(); 230 this.signers = signers; 231 } 232 233 public Builder sourceFiles(List<FileBase> sourceFiles) { 234 this.sourceFiles = sourceFiles; 235 this.markNullableFieldAsSet("source_files"); 236 return this; 237 } 238 239 public Builder signatureColor(SignRequestCreateRequestSignatureColorField signatureColor) { 240 this.signatureColor = 241 new EnumWrapper<SignRequestCreateRequestSignatureColorField>(signatureColor); 242 this.markNullableFieldAsSet("signature_color"); 243 return this; 244 } 245 246 public Builder signatureColor( 247 EnumWrapper<SignRequestCreateRequestSignatureColorField> signatureColor) { 248 this.signatureColor = signatureColor; 249 this.markNullableFieldAsSet("signature_color"); 250 return this; 251 } 252 253 public Builder parentFolder(FolderMini parentFolder) { 254 this.parentFolder = parentFolder; 255 return this; 256 } 257 258 @Override 259 public Builder isDocumentPreparationNeeded(Boolean isDocumentPreparationNeeded) { 260 this.isDocumentPreparationNeeded = isDocumentPreparationNeeded; 261 return this; 262 } 263 264 @Override 265 public Builder redirectUrl(String redirectUrl) { 266 this.redirectUrl = redirectUrl; 267 this.markNullableFieldAsSet("redirect_url"); 268 return this; 269 } 270 271 @Override 272 public Builder declinedRedirectUrl(String declinedRedirectUrl) { 273 this.declinedRedirectUrl = declinedRedirectUrl; 274 this.markNullableFieldAsSet("declined_redirect_url"); 275 return this; 276 } 277 278 @Override 279 public Builder areTextSignaturesEnabled(Boolean areTextSignaturesEnabled) { 280 this.areTextSignaturesEnabled = areTextSignaturesEnabled; 281 return this; 282 } 283 284 @Override 285 public Builder emailSubject(String emailSubject) { 286 this.emailSubject = emailSubject; 287 this.markNullableFieldAsSet("email_subject"); 288 return this; 289 } 290 291 @Override 292 public Builder emailMessage(String emailMessage) { 293 this.emailMessage = emailMessage; 294 this.markNullableFieldAsSet("email_message"); 295 return this; 296 } 297 298 @Override 299 public Builder areRemindersEnabled(Boolean areRemindersEnabled) { 300 this.areRemindersEnabled = areRemindersEnabled; 301 return this; 302 } 303 304 @Override 305 public Builder name(String name) { 306 this.name = name; 307 return this; 308 } 309 310 @Override 311 public Builder prefillTags(List<SignRequestPrefillTag> prefillTags) { 312 this.prefillTags = prefillTags; 313 return this; 314 } 315 316 @Override 317 public Builder daysValid(Long daysValid) { 318 this.daysValid = daysValid; 319 this.markNullableFieldAsSet("days_valid"); 320 return this; 321 } 322 323 @Override 324 public Builder externalId(String externalId) { 325 this.externalId = externalId; 326 this.markNullableFieldAsSet("external_id"); 327 return this; 328 } 329 330 @Override 331 public Builder templateId(String templateId) { 332 this.templateId = templateId; 333 this.markNullableFieldAsSet("template_id"); 334 return this; 335 } 336 337 @Override 338 public Builder externalSystemName(String externalSystemName) { 339 this.externalSystemName = externalSystemName; 340 this.markNullableFieldAsSet("external_system_name"); 341 return this; 342 } 343 344 @Override 345 public Builder requestFlow(String requestFlow) { 346 this.requestFlow = requestFlow; 347 this.markNullableFieldAsSet("request_flow"); 348 return this; 349 } 350 351 public SignRequestCreateRequest build() { 352 return new SignRequestCreateRequest(this); 353 } 354 } 355}