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}