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}