001package com.box.sdkgen.schemas.v2025r0.hubcollaborationv2025r0; 002 003import com.box.sdkgen.internal.NullableFieldTracker; 004import com.box.sdkgen.internal.SerializableObject; 005import com.box.sdkgen.schemas.v2025r0.groupminiv2025r0.GroupMiniV2025R0; 006import com.box.sdkgen.schemas.v2025r0.hubaccessgranteev2025r0.HubAccessGranteeV2025R0; 007import com.box.sdkgen.schemas.v2025r0.hubbasev2025r0.HubBaseV2025R0; 008import com.box.sdkgen.schemas.v2025r0.hubcollaborationuserv2025r0.HubCollaborationUserV2025R0; 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.Objects; 015 016/** 017 * A Box Hub collaboration object grants a user or group access to a Box Hub with permissions 018 * defined by a specific role. 019 */ 020@JsonFilter("nullablePropertyFilter") 021public class HubCollaborationV2025R0 extends SerializableObject { 022 023 /** The unique identifier for this collaboration. */ 024 protected final String id; 025 026 /** The value will always be `hub_collaboration`. */ 027 @JsonDeserialize( 028 using = HubCollaborationV2025R0TypeField.HubCollaborationV2025R0TypeFieldDeserializer.class) 029 @JsonSerialize( 030 using = HubCollaborationV2025R0TypeField.HubCollaborationV2025R0TypeFieldSerializer.class) 031 protected EnumWrapper<HubCollaborationV2025R0TypeField> type; 032 033 protected HubBaseV2025R0 hub; 034 035 @JsonProperty("accessible_by") 036 protected HubAccessGranteeV2025R0 accessibleBy; 037 038 /** 039 * The level of access granted to a Box Hub. Possible values are `editor`, `viewer`, and 040 * `co-owner`. 041 */ 042 protected String role; 043 044 /** 045 * The status of the collaboration invitation. If the status is `pending`, `login` and `name` 046 * return an empty string. 047 */ 048 @JsonDeserialize( 049 using = 050 HubCollaborationV2025R0StatusField.HubCollaborationV2025R0StatusFieldDeserializer.class) 051 @JsonSerialize( 052 using = HubCollaborationV2025R0StatusField.HubCollaborationV2025R0StatusFieldSerializer.class) 053 protected EnumWrapper<HubCollaborationV2025R0StatusField> status; 054 055 @JsonProperty("acceptance_requirements_status") 056 protected HubCollaborationV2025R0AcceptanceRequirementsStatusField acceptanceRequirementsStatus; 057 058 public HubCollaborationV2025R0(@JsonProperty("id") String id) { 059 super(); 060 this.id = id; 061 this.type = 062 new EnumWrapper<HubCollaborationV2025R0TypeField>( 063 HubCollaborationV2025R0TypeField.HUB_COLLABORATION); 064 } 065 066 protected HubCollaborationV2025R0(Builder builder) { 067 super(); 068 this.id = builder.id; 069 this.type = builder.type; 070 this.hub = builder.hub; 071 this.accessibleBy = builder.accessibleBy; 072 this.role = builder.role; 073 this.status = builder.status; 074 this.acceptanceRequirementsStatus = builder.acceptanceRequirementsStatus; 075 markNullableFieldsAsSet(builder.getExplicitlySetNullableFields()); 076 } 077 078 public String getId() { 079 return id; 080 } 081 082 public EnumWrapper<HubCollaborationV2025R0TypeField> getType() { 083 return type; 084 } 085 086 public HubBaseV2025R0 getHub() { 087 return hub; 088 } 089 090 public HubAccessGranteeV2025R0 getAccessibleBy() { 091 return accessibleBy; 092 } 093 094 public String getRole() { 095 return role; 096 } 097 098 public EnumWrapper<HubCollaborationV2025R0StatusField> getStatus() { 099 return status; 100 } 101 102 public HubCollaborationV2025R0AcceptanceRequirementsStatusField 103 getAcceptanceRequirementsStatus() { 104 return acceptanceRequirementsStatus; 105 } 106 107 @Override 108 public boolean equals(Object o) { 109 if (this == o) { 110 return true; 111 } 112 if (o == null || getClass() != o.getClass()) { 113 return false; 114 } 115 HubCollaborationV2025R0 casted = (HubCollaborationV2025R0) o; 116 return Objects.equals(id, casted.id) 117 && Objects.equals(type, casted.type) 118 && Objects.equals(hub, casted.hub) 119 && Objects.equals(accessibleBy, casted.accessibleBy) 120 && Objects.equals(role, casted.role) 121 && Objects.equals(status, casted.status) 122 && Objects.equals(acceptanceRequirementsStatus, casted.acceptanceRequirementsStatus); 123 } 124 125 @Override 126 public int hashCode() { 127 return Objects.hash(id, type, hub, accessibleBy, role, status, acceptanceRequirementsStatus); 128 } 129 130 @Override 131 public String toString() { 132 return "HubCollaborationV2025R0{" 133 + "id='" 134 + id 135 + '\'' 136 + ", " 137 + "type='" 138 + type 139 + '\'' 140 + ", " 141 + "hub='" 142 + hub 143 + '\'' 144 + ", " 145 + "accessibleBy='" 146 + accessibleBy 147 + '\'' 148 + ", " 149 + "role='" 150 + role 151 + '\'' 152 + ", " 153 + "status='" 154 + status 155 + '\'' 156 + ", " 157 + "acceptanceRequirementsStatus='" 158 + acceptanceRequirementsStatus 159 + '\'' 160 + "}"; 161 } 162 163 public static class Builder extends NullableFieldTracker { 164 165 protected final String id; 166 167 protected EnumWrapper<HubCollaborationV2025R0TypeField> type; 168 169 protected HubBaseV2025R0 hub; 170 171 protected HubAccessGranteeV2025R0 accessibleBy; 172 173 protected String role; 174 175 protected EnumWrapper<HubCollaborationV2025R0StatusField> status; 176 177 protected HubCollaborationV2025R0AcceptanceRequirementsStatusField acceptanceRequirementsStatus; 178 179 public Builder(String id) { 180 super(); 181 this.id = id; 182 } 183 184 public Builder type(HubCollaborationV2025R0TypeField type) { 185 this.type = new EnumWrapper<HubCollaborationV2025R0TypeField>(type); 186 return this; 187 } 188 189 public Builder type(EnumWrapper<HubCollaborationV2025R0TypeField> type) { 190 this.type = type; 191 return this; 192 } 193 194 public Builder hub(HubBaseV2025R0 hub) { 195 this.hub = hub; 196 return this; 197 } 198 199 public Builder accessibleBy(HubCollaborationUserV2025R0 accessibleBy) { 200 this.accessibleBy = new HubAccessGranteeV2025R0(accessibleBy); 201 return this; 202 } 203 204 public Builder accessibleBy(GroupMiniV2025R0 accessibleBy) { 205 this.accessibleBy = new HubAccessGranteeV2025R0(accessibleBy); 206 return this; 207 } 208 209 public Builder accessibleBy(HubAccessGranteeV2025R0 accessibleBy) { 210 this.accessibleBy = accessibleBy; 211 return this; 212 } 213 214 public Builder role(String role) { 215 this.role = role; 216 return this; 217 } 218 219 public Builder status(HubCollaborationV2025R0StatusField status) { 220 this.status = new EnumWrapper<HubCollaborationV2025R0StatusField>(status); 221 return this; 222 } 223 224 public Builder status(EnumWrapper<HubCollaborationV2025R0StatusField> status) { 225 this.status = status; 226 return this; 227 } 228 229 public Builder acceptanceRequirementsStatus( 230 HubCollaborationV2025R0AcceptanceRequirementsStatusField acceptanceRequirementsStatus) { 231 this.acceptanceRequirementsStatus = acceptanceRequirementsStatus; 232 return this; 233 } 234 235 public HubCollaborationV2025R0 build() { 236 if (this.type == null) { 237 this.type = 238 new EnumWrapper<HubCollaborationV2025R0TypeField>( 239 HubCollaborationV2025R0TypeField.HUB_COLLABORATION); 240 } 241 return new HubCollaborationV2025R0(this); 242 } 243 } 244}