001package com.box.sdkgen.schemas.filerequestupdaterequest; 002 003import com.box.sdkgen.internal.NullableFieldTracker; 004import com.box.sdkgen.internal.SerializableObject; 005import com.box.sdkgen.internal.utils.DateTimeUtils; 006import com.box.sdkgen.serialization.json.EnumWrapper; 007import com.fasterxml.jackson.annotation.JsonFilter; 008import com.fasterxml.jackson.annotation.JsonProperty; 009import com.fasterxml.jackson.databind.annotation.JsonDeserialize; 010import com.fasterxml.jackson.databind.annotation.JsonSerialize; 011import java.time.OffsetDateTime; 012import java.util.Objects; 013 014/** The request body to update a file request. */ 015@JsonFilter("nullablePropertyFilter") 016public class FileRequestUpdateRequest extends SerializableObject { 017 018 /** 019 * An optional new title for the file request. This can be used to change the title of the file 020 * request. 021 * 022 * <p>This will default to the value on the existing file request. 023 */ 024 protected String title; 025 026 /** 027 * An optional new description for the file request. This can be used to change the description of 028 * the file request. 029 * 030 * <p>This will default to the value on the existing file request. 031 */ 032 protected String description; 033 034 /** 035 * An optional new status of the file request. 036 * 037 * <p>When the status is set to `inactive`, the file request will no longer accept new 038 * submissions, and any visitor to the file request URL will receive a `HTTP 404` status code. 039 * 040 * <p>This will default to the value on the existing file request. 041 */ 042 @JsonDeserialize( 043 using = 044 FileRequestUpdateRequestStatusField.FileRequestUpdateRequestStatusFieldDeserializer.class) 045 @JsonSerialize( 046 using = 047 FileRequestUpdateRequestStatusField.FileRequestUpdateRequestStatusFieldSerializer.class) 048 protected EnumWrapper<FileRequestUpdateRequestStatusField> status; 049 050 /** 051 * Whether a file request submitter is required to provide their email address. 052 * 053 * <p>When this setting is set to true, the Box UI will show an email field on the file request 054 * form. 055 * 056 * <p>This will default to the value on the existing file request. 057 */ 058 @JsonProperty("is_email_required") 059 protected Boolean isEmailRequired; 060 061 /** 062 * Whether a file request submitter is required to provide a description of the files they are 063 * submitting. 064 * 065 * <p>When this setting is set to true, the Box UI will show a description field on the file 066 * request form. 067 * 068 * <p>This will default to the value on the existing file request. 069 */ 070 @JsonProperty("is_description_required") 071 protected Boolean isDescriptionRequired; 072 073 /** 074 * The date after which a file request will no longer accept new submissions. 075 * 076 * <p>After this date, the `status` will automatically be set to `inactive`. 077 * 078 * <p>This will default to the value on the existing file request. 079 */ 080 @JsonProperty("expires_at") 081 @JsonSerialize(using = DateTimeUtils.DateTimeSerializer.class) 082 @JsonDeserialize(using = DateTimeUtils.DateTimeDeserializer.class) 083 protected OffsetDateTime expiresAt; 084 085 public FileRequestUpdateRequest() { 086 super(); 087 } 088 089 protected FileRequestUpdateRequest(Builder builder) { 090 super(); 091 this.title = builder.title; 092 this.description = builder.description; 093 this.status = builder.status; 094 this.isEmailRequired = builder.isEmailRequired; 095 this.isDescriptionRequired = builder.isDescriptionRequired; 096 this.expiresAt = builder.expiresAt; 097 markNullableFieldsAsSet(builder.getExplicitlySetNullableFields()); 098 } 099 100 public String getTitle() { 101 return title; 102 } 103 104 public String getDescription() { 105 return description; 106 } 107 108 public EnumWrapper<FileRequestUpdateRequestStatusField> getStatus() { 109 return status; 110 } 111 112 public Boolean getIsEmailRequired() { 113 return isEmailRequired; 114 } 115 116 public Boolean getIsDescriptionRequired() { 117 return isDescriptionRequired; 118 } 119 120 public OffsetDateTime getExpiresAt() { 121 return expiresAt; 122 } 123 124 @Override 125 public boolean equals(Object o) { 126 if (this == o) { 127 return true; 128 } 129 if (o == null || getClass() != o.getClass()) { 130 return false; 131 } 132 FileRequestUpdateRequest casted = (FileRequestUpdateRequest) o; 133 return Objects.equals(title, casted.title) 134 && Objects.equals(description, casted.description) 135 && Objects.equals(status, casted.status) 136 && Objects.equals(isEmailRequired, casted.isEmailRequired) 137 && Objects.equals(isDescriptionRequired, casted.isDescriptionRequired) 138 && Objects.equals(expiresAt, casted.expiresAt); 139 } 140 141 @Override 142 public int hashCode() { 143 return Objects.hash( 144 title, description, status, isEmailRequired, isDescriptionRequired, expiresAt); 145 } 146 147 @Override 148 public String toString() { 149 return "FileRequestUpdateRequest{" 150 + "title='" 151 + title 152 + '\'' 153 + ", " 154 + "description='" 155 + description 156 + '\'' 157 + ", " 158 + "status='" 159 + status 160 + '\'' 161 + ", " 162 + "isEmailRequired='" 163 + isEmailRequired 164 + '\'' 165 + ", " 166 + "isDescriptionRequired='" 167 + isDescriptionRequired 168 + '\'' 169 + ", " 170 + "expiresAt='" 171 + expiresAt 172 + '\'' 173 + "}"; 174 } 175 176 public static class Builder extends NullableFieldTracker { 177 178 protected String title; 179 180 protected String description; 181 182 protected EnumWrapper<FileRequestUpdateRequestStatusField> status; 183 184 protected Boolean isEmailRequired; 185 186 protected Boolean isDescriptionRequired; 187 188 protected OffsetDateTime expiresAt; 189 190 public Builder title(String title) { 191 this.title = title; 192 return this; 193 } 194 195 public Builder description(String description) { 196 this.description = description; 197 return this; 198 } 199 200 public Builder status(FileRequestUpdateRequestStatusField status) { 201 this.status = new EnumWrapper<FileRequestUpdateRequestStatusField>(status); 202 return this; 203 } 204 205 public Builder status(EnumWrapper<FileRequestUpdateRequestStatusField> status) { 206 this.status = status; 207 return this; 208 } 209 210 public Builder isEmailRequired(Boolean isEmailRequired) { 211 this.isEmailRequired = isEmailRequired; 212 return this; 213 } 214 215 public Builder isDescriptionRequired(Boolean isDescriptionRequired) { 216 this.isDescriptionRequired = isDescriptionRequired; 217 return this; 218 } 219 220 public Builder expiresAt(OffsetDateTime expiresAt) { 221 this.expiresAt = expiresAt; 222 return this; 223 } 224 225 public FileRequestUpdateRequest build() { 226 return new FileRequestUpdateRequest(this); 227 } 228 } 229}