001package com.box.sdkgen.schemas.signrequest;
002
003import com.box.sdkgen.internal.Nullable;
004import com.box.sdkgen.internal.utils.DateTimeUtils;
005import com.box.sdkgen.schemas.filebase.FileBase;
006import com.box.sdkgen.schemas.filemini.FileMini;
007import com.box.sdkgen.schemas.foldermini.FolderMini;
008import com.box.sdkgen.schemas.signrequestbase.SignRequestBase;
009import com.box.sdkgen.schemas.signrequestprefilltag.SignRequestPrefillTag;
010import com.box.sdkgen.schemas.signrequestsigner.SignRequestSigner;
011import com.box.sdkgen.serialization.json.EnumWrapper;
012import com.fasterxml.jackson.annotation.JsonFilter;
013import com.fasterxml.jackson.annotation.JsonProperty;
014import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
015import com.fasterxml.jackson.databind.annotation.JsonSerialize;
016import java.time.OffsetDateTime;
017import java.util.List;
018import java.util.Objects;
019
020/** A Box Sign request object. */
021@JsonFilter("nullablePropertyFilter")
022public class SignRequest extends SignRequestBase {
023
024  /** The value will always be `sign-request`. */
025  @JsonDeserialize(using = SignRequestTypeField.SignRequestTypeFieldDeserializer.class)
026  @JsonSerialize(using = SignRequestTypeField.SignRequestTypeFieldSerializer.class)
027  protected EnumWrapper<SignRequestTypeField> type;
028
029  /**
030   * List of files to create a signing document from. This is currently limited to ten files. Only
031   * the ID and type fields are required for each file.
032   */
033  @JsonProperty("source_files")
034  protected List<FileBase> sourceFiles;
035
036  /** Array of signers for the signature request. */
037  protected List<SignRequestSigner> signers;
038
039  /** Force a specific color for the signature (blue, black, or red). */
040  @JsonProperty("signature_color")
041  @Nullable
042  protected String signatureColor;
043
044  /** Box Sign request ID. */
045  protected String id;
046
047  /**
048   * This URL is returned if `is_document_preparation_needed` is set to `true` in the request. The
049   * parameter is used to prepare the signature request using the UI. The signature request is not
050   * sent until the preparation phase is complete.
051   */
052  @JsonProperty("prepare_url")
053  @Nullable
054  protected String prepareUrl;
055
056  @JsonProperty("signing_log")
057  protected FileMini signingLog;
058
059  /** Describes the status of the signature request. */
060  @JsonDeserialize(using = SignRequestStatusField.SignRequestStatusFieldDeserializer.class)
061  @JsonSerialize(using = SignRequestStatusField.SignRequestStatusFieldSerializer.class)
062  protected EnumWrapper<SignRequestStatusField> status;
063
064  /**
065   * List of files that will be signed, which are copies of the original source files. A new version
066   * of these files are created as signers sign and can be downloaded at any point in the signing
067   * process.
068   */
069  @JsonProperty("sign_files")
070  protected SignRequestSignFilesField signFiles;
071
072  /**
073   * Uses `days_valid` to calculate the date and time, in GMT, the sign request will expire if
074   * unsigned.
075   */
076  @JsonProperty("auto_expire_at")
077  @JsonSerialize(using = DateTimeUtils.DateTimeSerializer.class)
078  @JsonDeserialize(using = DateTimeUtils.DateTimeDeserializer.class)
079  @Nullable
080  protected OffsetDateTime autoExpireAt;
081
082  @JsonProperty("parent_folder")
083  protected FolderMini parentFolder;
084
085  /**
086   * The collaborator level of the user to the sign request. Values can include "owner", "editor",
087   * and "viewer".
088   */
089  @JsonProperty("collaborator_level")
090  @Nullable
091  protected String collaboratorLevel;
092
093  /** Short identifier for the sign request. */
094  @JsonProperty("short_id")
095  protected String shortId;
096
097  /** Timestamp marking when the sign request was created. */
098  @JsonProperty("created_at")
099  @JsonSerialize(using = DateTimeUtils.DateTimeSerializer.class)
100  @JsonDeserialize(using = DateTimeUtils.DateTimeDeserializer.class)
101  protected OffsetDateTime createdAt;
102
103  /** Timestamp indicating when all signing actions completed. */
104  @JsonProperty("finished_at")
105  @JsonSerialize(using = DateTimeUtils.DateTimeSerializer.class)
106  @JsonDeserialize(using = DateTimeUtils.DateTimeDeserializer.class)
107  @Nullable
108  protected OffsetDateTime finishedAt;
109
110  /** The email address of the sender of the sign request. */
111  @JsonProperty("sender_email")
112  @Nullable
113  protected String senderEmail;
114
115  /** The user ID of the sender of the sign request. */
116  @JsonProperty("sender_id")
117  @Nullable
118  protected Long senderId;
119
120  public SignRequest() {
121    super();
122  }
123
124  protected SignRequest(Builder builder) {
125    super(builder);
126    this.type = builder.type;
127    this.sourceFiles = builder.sourceFiles;
128    this.signers = builder.signers;
129    this.signatureColor = builder.signatureColor;
130    this.id = builder.id;
131    this.prepareUrl = builder.prepareUrl;
132    this.signingLog = builder.signingLog;
133    this.status = builder.status;
134    this.signFiles = builder.signFiles;
135    this.autoExpireAt = builder.autoExpireAt;
136    this.parentFolder = builder.parentFolder;
137    this.collaboratorLevel = builder.collaboratorLevel;
138    this.shortId = builder.shortId;
139    this.createdAt = builder.createdAt;
140    this.finishedAt = builder.finishedAt;
141    this.senderEmail = builder.senderEmail;
142    this.senderId = builder.senderId;
143    markNullableFieldsAsSet(builder.getExplicitlySetNullableFields());
144  }
145
146  public EnumWrapper<SignRequestTypeField> getType() {
147    return type;
148  }
149
150  public List<FileBase> getSourceFiles() {
151    return sourceFiles;
152  }
153
154  public List<SignRequestSigner> getSigners() {
155    return signers;
156  }
157
158  public String getSignatureColor() {
159    return signatureColor;
160  }
161
162  public String getId() {
163    return id;
164  }
165
166  public String getPrepareUrl() {
167    return prepareUrl;
168  }
169
170  public FileMini getSigningLog() {
171    return signingLog;
172  }
173
174  public EnumWrapper<SignRequestStatusField> getStatus() {
175    return status;
176  }
177
178  public SignRequestSignFilesField getSignFiles() {
179    return signFiles;
180  }
181
182  public OffsetDateTime getAutoExpireAt() {
183    return autoExpireAt;
184  }
185
186  public FolderMini getParentFolder() {
187    return parentFolder;
188  }
189
190  public String getCollaboratorLevel() {
191    return collaboratorLevel;
192  }
193
194  public String getShortId() {
195    return shortId;
196  }
197
198  public OffsetDateTime getCreatedAt() {
199    return createdAt;
200  }
201
202  public OffsetDateTime getFinishedAt() {
203    return finishedAt;
204  }
205
206  public String getSenderEmail() {
207    return senderEmail;
208  }
209
210  public Long getSenderId() {
211    return senderId;
212  }
213
214  @Override
215  public boolean equals(Object o) {
216    if (this == o) {
217      return true;
218    }
219    if (o == null || getClass() != o.getClass()) {
220      return false;
221    }
222    SignRequest casted = (SignRequest) o;
223    return Objects.equals(isDocumentPreparationNeeded, casted.isDocumentPreparationNeeded)
224        && Objects.equals(redirectUrl, casted.redirectUrl)
225        && Objects.equals(declinedRedirectUrl, casted.declinedRedirectUrl)
226        && Objects.equals(areTextSignaturesEnabled, casted.areTextSignaturesEnabled)
227        && Objects.equals(emailSubject, casted.emailSubject)
228        && Objects.equals(emailMessage, casted.emailMessage)
229        && Objects.equals(areRemindersEnabled, casted.areRemindersEnabled)
230        && Objects.equals(name, casted.name)
231        && Objects.equals(prefillTags, casted.prefillTags)
232        && Objects.equals(daysValid, casted.daysValid)
233        && Objects.equals(externalId, casted.externalId)
234        && Objects.equals(templateId, casted.templateId)
235        && Objects.equals(externalSystemName, casted.externalSystemName)
236        && Objects.equals(type, casted.type)
237        && Objects.equals(sourceFiles, casted.sourceFiles)
238        && Objects.equals(signers, casted.signers)
239        && Objects.equals(signatureColor, casted.signatureColor)
240        && Objects.equals(id, casted.id)
241        && Objects.equals(prepareUrl, casted.prepareUrl)
242        && Objects.equals(signingLog, casted.signingLog)
243        && Objects.equals(status, casted.status)
244        && Objects.equals(signFiles, casted.signFiles)
245        && Objects.equals(autoExpireAt, casted.autoExpireAt)
246        && Objects.equals(parentFolder, casted.parentFolder)
247        && Objects.equals(collaboratorLevel, casted.collaboratorLevel)
248        && Objects.equals(shortId, casted.shortId)
249        && Objects.equals(createdAt, casted.createdAt)
250        && Objects.equals(finishedAt, casted.finishedAt)
251        && Objects.equals(senderEmail, casted.senderEmail)
252        && Objects.equals(senderId, casted.senderId);
253  }
254
255  @Override
256  public int hashCode() {
257    return Objects.hash(
258        isDocumentPreparationNeeded,
259        redirectUrl,
260        declinedRedirectUrl,
261        areTextSignaturesEnabled,
262        emailSubject,
263        emailMessage,
264        areRemindersEnabled,
265        name,
266        prefillTags,
267        daysValid,
268        externalId,
269        templateId,
270        externalSystemName,
271        type,
272        sourceFiles,
273        signers,
274        signatureColor,
275        id,
276        prepareUrl,
277        signingLog,
278        status,
279        signFiles,
280        autoExpireAt,
281        parentFolder,
282        collaboratorLevel,
283        shortId,
284        createdAt,
285        finishedAt,
286        senderEmail,
287        senderId);
288  }
289
290  @Override
291  public String toString() {
292    return "SignRequest{"
293        + "isDocumentPreparationNeeded='"
294        + isDocumentPreparationNeeded
295        + '\''
296        + ", "
297        + "redirectUrl='"
298        + redirectUrl
299        + '\''
300        + ", "
301        + "declinedRedirectUrl='"
302        + declinedRedirectUrl
303        + '\''
304        + ", "
305        + "areTextSignaturesEnabled='"
306        + areTextSignaturesEnabled
307        + '\''
308        + ", "
309        + "emailSubject='"
310        + emailSubject
311        + '\''
312        + ", "
313        + "emailMessage='"
314        + emailMessage
315        + '\''
316        + ", "
317        + "areRemindersEnabled='"
318        + areRemindersEnabled
319        + '\''
320        + ", "
321        + "name='"
322        + name
323        + '\''
324        + ", "
325        + "prefillTags='"
326        + prefillTags
327        + '\''
328        + ", "
329        + "daysValid='"
330        + daysValid
331        + '\''
332        + ", "
333        + "externalId='"
334        + externalId
335        + '\''
336        + ", "
337        + "templateId='"
338        + templateId
339        + '\''
340        + ", "
341        + "externalSystemName='"
342        + externalSystemName
343        + '\''
344        + ", "
345        + "type='"
346        + type
347        + '\''
348        + ", "
349        + "sourceFiles='"
350        + sourceFiles
351        + '\''
352        + ", "
353        + "signers='"
354        + signers
355        + '\''
356        + ", "
357        + "signatureColor='"
358        + signatureColor
359        + '\''
360        + ", "
361        + "id='"
362        + id
363        + '\''
364        + ", "
365        + "prepareUrl='"
366        + prepareUrl
367        + '\''
368        + ", "
369        + "signingLog='"
370        + signingLog
371        + '\''
372        + ", "
373        + "status='"
374        + status
375        + '\''
376        + ", "
377        + "signFiles='"
378        + signFiles
379        + '\''
380        + ", "
381        + "autoExpireAt='"
382        + autoExpireAt
383        + '\''
384        + ", "
385        + "parentFolder='"
386        + parentFolder
387        + '\''
388        + ", "
389        + "collaboratorLevel='"
390        + collaboratorLevel
391        + '\''
392        + ", "
393        + "shortId='"
394        + shortId
395        + '\''
396        + ", "
397        + "createdAt='"
398        + createdAt
399        + '\''
400        + ", "
401        + "finishedAt='"
402        + finishedAt
403        + '\''
404        + ", "
405        + "senderEmail='"
406        + senderEmail
407        + '\''
408        + ", "
409        + "senderId='"
410        + senderId
411        + '\''
412        + "}";
413  }
414
415  public static class Builder extends SignRequestBase.Builder {
416
417    protected EnumWrapper<SignRequestTypeField> type;
418
419    protected List<FileBase> sourceFiles;
420
421    protected List<SignRequestSigner> signers;
422
423    protected String signatureColor;
424
425    protected String id;
426
427    protected String prepareUrl;
428
429    protected FileMini signingLog;
430
431    protected EnumWrapper<SignRequestStatusField> status;
432
433    protected SignRequestSignFilesField signFiles;
434
435    protected OffsetDateTime autoExpireAt;
436
437    protected FolderMini parentFolder;
438
439    protected String collaboratorLevel;
440
441    protected String shortId;
442
443    protected OffsetDateTime createdAt;
444
445    protected OffsetDateTime finishedAt;
446
447    protected String senderEmail;
448
449    protected Long senderId;
450
451    public Builder type(SignRequestTypeField type) {
452      this.type = new EnumWrapper<SignRequestTypeField>(type);
453      return this;
454    }
455
456    public Builder type(EnumWrapper<SignRequestTypeField> type) {
457      this.type = type;
458      return this;
459    }
460
461    public Builder sourceFiles(List<FileBase> sourceFiles) {
462      this.sourceFiles = sourceFiles;
463      return this;
464    }
465
466    public Builder signers(List<SignRequestSigner> signers) {
467      this.signers = signers;
468      return this;
469    }
470
471    public Builder signatureColor(String signatureColor) {
472      this.signatureColor = signatureColor;
473      this.markNullableFieldAsSet("signature_color");
474      return this;
475    }
476
477    public Builder id(String id) {
478      this.id = id;
479      return this;
480    }
481
482    public Builder prepareUrl(String prepareUrl) {
483      this.prepareUrl = prepareUrl;
484      this.markNullableFieldAsSet("prepare_url");
485      return this;
486    }
487
488    public Builder signingLog(FileMini signingLog) {
489      this.signingLog = signingLog;
490      return this;
491    }
492
493    public Builder status(SignRequestStatusField status) {
494      this.status = new EnumWrapper<SignRequestStatusField>(status);
495      return this;
496    }
497
498    public Builder status(EnumWrapper<SignRequestStatusField> status) {
499      this.status = status;
500      return this;
501    }
502
503    public Builder signFiles(SignRequestSignFilesField signFiles) {
504      this.signFiles = signFiles;
505      return this;
506    }
507
508    public Builder autoExpireAt(OffsetDateTime autoExpireAt) {
509      this.autoExpireAt = autoExpireAt;
510      this.markNullableFieldAsSet("auto_expire_at");
511      return this;
512    }
513
514    public Builder parentFolder(FolderMini parentFolder) {
515      this.parentFolder = parentFolder;
516      return this;
517    }
518
519    public Builder collaboratorLevel(String collaboratorLevel) {
520      this.collaboratorLevel = collaboratorLevel;
521      this.markNullableFieldAsSet("collaborator_level");
522      return this;
523    }
524
525    public Builder shortId(String shortId) {
526      this.shortId = shortId;
527      return this;
528    }
529
530    public Builder createdAt(OffsetDateTime createdAt) {
531      this.createdAt = createdAt;
532      return this;
533    }
534
535    public Builder finishedAt(OffsetDateTime finishedAt) {
536      this.finishedAt = finishedAt;
537      this.markNullableFieldAsSet("finished_at");
538      return this;
539    }
540
541    public Builder senderEmail(String senderEmail) {
542      this.senderEmail = senderEmail;
543      this.markNullableFieldAsSet("sender_email");
544      return this;
545    }
546
547    public Builder senderId(Long senderId) {
548      this.senderId = senderId;
549      this.markNullableFieldAsSet("sender_id");
550      return this;
551    }
552
553    @Override
554    public Builder isDocumentPreparationNeeded(Boolean isDocumentPreparationNeeded) {
555      this.isDocumentPreparationNeeded = isDocumentPreparationNeeded;
556      return this;
557    }
558
559    @Override
560    public Builder redirectUrl(String redirectUrl) {
561      this.redirectUrl = redirectUrl;
562      this.markNullableFieldAsSet("redirect_url");
563      return this;
564    }
565
566    @Override
567    public Builder declinedRedirectUrl(String declinedRedirectUrl) {
568      this.declinedRedirectUrl = declinedRedirectUrl;
569      this.markNullableFieldAsSet("declined_redirect_url");
570      return this;
571    }
572
573    @Override
574    public Builder areTextSignaturesEnabled(Boolean areTextSignaturesEnabled) {
575      this.areTextSignaturesEnabled = areTextSignaturesEnabled;
576      return this;
577    }
578
579    @Override
580    public Builder emailSubject(String emailSubject) {
581      this.emailSubject = emailSubject;
582      this.markNullableFieldAsSet("email_subject");
583      return this;
584    }
585
586    @Override
587    public Builder emailMessage(String emailMessage) {
588      this.emailMessage = emailMessage;
589      this.markNullableFieldAsSet("email_message");
590      return this;
591    }
592
593    @Override
594    public Builder areRemindersEnabled(Boolean areRemindersEnabled) {
595      this.areRemindersEnabled = areRemindersEnabled;
596      return this;
597    }
598
599    @Override
600    public Builder name(String name) {
601      this.name = name;
602      return this;
603    }
604
605    @Override
606    public Builder prefillTags(List<SignRequestPrefillTag> prefillTags) {
607      this.prefillTags = prefillTags;
608      return this;
609    }
610
611    @Override
612    public Builder daysValid(Long daysValid) {
613      this.daysValid = daysValid;
614      this.markNullableFieldAsSet("days_valid");
615      return this;
616    }
617
618    @Override
619    public Builder externalId(String externalId) {
620      this.externalId = externalId;
621      this.markNullableFieldAsSet("external_id");
622      return this;
623    }
624
625    @Override
626    public Builder templateId(String templateId) {
627      this.templateId = templateId;
628      this.markNullableFieldAsSet("template_id");
629      return this;
630    }
631
632    @Override
633    public Builder externalSystemName(String externalSystemName) {
634      this.externalSystemName = externalSystemName;
635      this.markNullableFieldAsSet("external_system_name");
636      return this;
637    }
638
639    public SignRequest build() {
640      return new SignRequest(this);
641    }
642  }
643}