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}