001package com.box.sdkgen.managers.sharedlinksfolders; 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@JsonFilter("nullablePropertyFilter") 015public class UpdateSharedLinkOnFolderRequestBodySharedLinkField extends SerializableObject { 016 017 /** 018 * The level of access for the shared link. This can be restricted to anyone with the link 019 * (`open`), only people within the company (`company`) and only those who have been invited to 020 * the folder (`collaborators`). 021 * 022 * <p>If not set, this field defaults to the access level specified by the enterprise admin. To 023 * create a shared link with this default setting pass the `shared_link` object with no `access` 024 * field, for example `{ "shared_link": {} }`. 025 * 026 * <p>The `company` access level is only available to paid accounts. 027 */ 028 @JsonDeserialize( 029 using = 030 UpdateSharedLinkOnFolderRequestBodySharedLinkAccessField 031 .UpdateSharedLinkOnFolderRequestBodySharedLinkAccessFieldDeserializer.class) 032 @JsonSerialize( 033 using = 034 UpdateSharedLinkOnFolderRequestBodySharedLinkAccessField 035 .UpdateSharedLinkOnFolderRequestBodySharedLinkAccessFieldSerializer.class) 036 protected EnumWrapper<UpdateSharedLinkOnFolderRequestBodySharedLinkAccessField> access; 037 038 /** 039 * The password required to access the shared link. Set the password to `null` to remove it. 040 * Passwords must now be at least eight characters long and include a number, upper case letter, 041 * or a non-numeric or non-alphabetic character. A password can only be set when `access` is set 042 * to `open`. 043 */ 044 protected String password; 045 046 /** 047 * Defines a custom vanity name to use in the shared link URL, for example 048 * `https://app.box.com/v/my-shared-link`. 049 * 050 * <p>Custom URLs should not be used when sharing sensitive content as vanity URLs are a lot 051 * easier to guess than regular shared links. 052 */ 053 @JsonProperty("vanity_name") 054 protected String vanityName; 055 056 /** 057 * The timestamp at which this shared link will expire. This field can only be set by users with 058 * paid accounts. The value must be greater than the current date and time. 059 */ 060 @JsonProperty("unshared_at") 061 @JsonSerialize(using = DateTimeUtils.DateTimeSerializer.class) 062 @JsonDeserialize(using = DateTimeUtils.DateTimeDeserializer.class) 063 protected OffsetDateTime unsharedAt; 064 065 protected UpdateSharedLinkOnFolderRequestBodySharedLinkPermissionsField permissions; 066 067 public UpdateSharedLinkOnFolderRequestBodySharedLinkField() { 068 super(); 069 } 070 071 protected UpdateSharedLinkOnFolderRequestBodySharedLinkField(Builder builder) { 072 super(); 073 this.access = builder.access; 074 this.password = builder.password; 075 this.vanityName = builder.vanityName; 076 this.unsharedAt = builder.unsharedAt; 077 this.permissions = builder.permissions; 078 markNullableFieldsAsSet(builder.getExplicitlySetNullableFields()); 079 } 080 081 public EnumWrapper<UpdateSharedLinkOnFolderRequestBodySharedLinkAccessField> getAccess() { 082 return access; 083 } 084 085 public String getPassword() { 086 return password; 087 } 088 089 public String getVanityName() { 090 return vanityName; 091 } 092 093 public OffsetDateTime getUnsharedAt() { 094 return unsharedAt; 095 } 096 097 public UpdateSharedLinkOnFolderRequestBodySharedLinkPermissionsField getPermissions() { 098 return permissions; 099 } 100 101 @Override 102 public boolean equals(Object o) { 103 if (this == o) { 104 return true; 105 } 106 if (o == null || getClass() != o.getClass()) { 107 return false; 108 } 109 UpdateSharedLinkOnFolderRequestBodySharedLinkField casted = 110 (UpdateSharedLinkOnFolderRequestBodySharedLinkField) o; 111 return Objects.equals(access, casted.access) 112 && Objects.equals(password, casted.password) 113 && Objects.equals(vanityName, casted.vanityName) 114 && Objects.equals(unsharedAt, casted.unsharedAt) 115 && Objects.equals(permissions, casted.permissions); 116 } 117 118 @Override 119 public int hashCode() { 120 return Objects.hash(access, password, vanityName, unsharedAt, permissions); 121 } 122 123 @Override 124 public String toString() { 125 return "UpdateSharedLinkOnFolderRequestBodySharedLinkField{" 126 + "access='" 127 + access 128 + '\'' 129 + ", " 130 + "password='" 131 + password 132 + '\'' 133 + ", " 134 + "vanityName='" 135 + vanityName 136 + '\'' 137 + ", " 138 + "unsharedAt='" 139 + unsharedAt 140 + '\'' 141 + ", " 142 + "permissions='" 143 + permissions 144 + '\'' 145 + "}"; 146 } 147 148 public static class Builder extends NullableFieldTracker { 149 150 protected EnumWrapper<UpdateSharedLinkOnFolderRequestBodySharedLinkAccessField> access; 151 152 protected String password; 153 154 protected String vanityName; 155 156 protected OffsetDateTime unsharedAt; 157 158 protected UpdateSharedLinkOnFolderRequestBodySharedLinkPermissionsField permissions; 159 160 public Builder access(UpdateSharedLinkOnFolderRequestBodySharedLinkAccessField access) { 161 this.access = 162 new EnumWrapper<UpdateSharedLinkOnFolderRequestBodySharedLinkAccessField>(access); 163 return this; 164 } 165 166 public Builder access( 167 EnumWrapper<UpdateSharedLinkOnFolderRequestBodySharedLinkAccessField> access) { 168 this.access = access; 169 return this; 170 } 171 172 public Builder password(String password) { 173 this.password = password; 174 return this; 175 } 176 177 public Builder vanityName(String vanityName) { 178 this.vanityName = vanityName; 179 return this; 180 } 181 182 public Builder unsharedAt(OffsetDateTime unsharedAt) { 183 this.unsharedAt = unsharedAt; 184 return this; 185 } 186 187 public Builder permissions( 188 UpdateSharedLinkOnFolderRequestBodySharedLinkPermissionsField permissions) { 189 this.permissions = permissions; 190 return this; 191 } 192 193 public UpdateSharedLinkOnFolderRequestBodySharedLinkField build() { 194 return new UpdateSharedLinkOnFolderRequestBodySharedLinkField(this); 195 } 196 } 197}