001package com.box.sdkgen.schemas.v2025r0.enterpriseconfigurationv2025r0;
002
003import com.box.sdkgen.internal.NullableFieldTracker;
004import com.box.sdkgen.internal.SerializableObject;
005import com.box.sdkgen.schemas.v2025r0.enterpriseconfigurationcontentandsharingv2025r0.EnterpriseConfigurationContentAndSharingV2025R0;
006import com.box.sdkgen.schemas.v2025r0.enterpriseconfigurationsecurityv2025r0.EnterpriseConfigurationSecurityV2025R0;
007import com.box.sdkgen.schemas.v2025r0.enterpriseconfigurationshieldv2025r0.EnterpriseConfigurationShieldV2025R0;
008import com.box.sdkgen.schemas.v2025r0.enterpriseconfigurationusersettingsv2025r0.EnterpriseConfigurationUserSettingsV2025R0;
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/** The enterprise configuration for a given enterprise. */
017@JsonFilter("nullablePropertyFilter")
018public class EnterpriseConfigurationV2025R0 extends SerializableObject {
019
020  /** The identifier of the enterprise configuration which is the ID of the enterprise. */
021  protected String id;
022
023  /** The value will always be `enterprise_configuration`. */
024  @JsonDeserialize(
025      using =
026          EnterpriseConfigurationV2025R0TypeField
027              .EnterpriseConfigurationV2025R0TypeFieldDeserializer.class)
028  @JsonSerialize(
029      using =
030          EnterpriseConfigurationV2025R0TypeField.EnterpriseConfigurationV2025R0TypeFieldSerializer
031              .class)
032  protected EnumWrapper<EnterpriseConfigurationV2025R0TypeField> type;
033
034  protected EnterpriseConfigurationSecurityV2025R0 security;
035
036  @JsonProperty("content_and_sharing")
037  protected EnterpriseConfigurationContentAndSharingV2025R0 contentAndSharing;
038
039  @JsonProperty("user_settings")
040  protected EnterpriseConfigurationUserSettingsV2025R0 userSettings;
041
042  protected EnterpriseConfigurationShieldV2025R0 shield;
043
044  public EnterpriseConfigurationV2025R0() {
045    super();
046  }
047
048  protected EnterpriseConfigurationV2025R0(Builder builder) {
049    super();
050    this.id = builder.id;
051    this.type = builder.type;
052    this.security = builder.security;
053    this.contentAndSharing = builder.contentAndSharing;
054    this.userSettings = builder.userSettings;
055    this.shield = builder.shield;
056    markNullableFieldsAsSet(builder.getExplicitlySetNullableFields());
057  }
058
059  public String getId() {
060    return id;
061  }
062
063  public EnumWrapper<EnterpriseConfigurationV2025R0TypeField> getType() {
064    return type;
065  }
066
067  public EnterpriseConfigurationSecurityV2025R0 getSecurity() {
068    return security;
069  }
070
071  public EnterpriseConfigurationContentAndSharingV2025R0 getContentAndSharing() {
072    return contentAndSharing;
073  }
074
075  public EnterpriseConfigurationUserSettingsV2025R0 getUserSettings() {
076    return userSettings;
077  }
078
079  public EnterpriseConfigurationShieldV2025R0 getShield() {
080    return shield;
081  }
082
083  @Override
084  public boolean equals(Object o) {
085    if (this == o) {
086      return true;
087    }
088    if (o == null || getClass() != o.getClass()) {
089      return false;
090    }
091    EnterpriseConfigurationV2025R0 casted = (EnterpriseConfigurationV2025R0) o;
092    return Objects.equals(id, casted.id)
093        && Objects.equals(type, casted.type)
094        && Objects.equals(security, casted.security)
095        && Objects.equals(contentAndSharing, casted.contentAndSharing)
096        && Objects.equals(userSettings, casted.userSettings)
097        && Objects.equals(shield, casted.shield);
098  }
099
100  @Override
101  public int hashCode() {
102    return Objects.hash(id, type, security, contentAndSharing, userSettings, shield);
103  }
104
105  @Override
106  public String toString() {
107    return "EnterpriseConfigurationV2025R0{"
108        + "id='"
109        + id
110        + '\''
111        + ", "
112        + "type='"
113        + type
114        + '\''
115        + ", "
116        + "security='"
117        + security
118        + '\''
119        + ", "
120        + "contentAndSharing='"
121        + contentAndSharing
122        + '\''
123        + ", "
124        + "userSettings='"
125        + userSettings
126        + '\''
127        + ", "
128        + "shield='"
129        + shield
130        + '\''
131        + "}";
132  }
133
134  public static class Builder extends NullableFieldTracker {
135
136    protected String id;
137
138    protected EnumWrapper<EnterpriseConfigurationV2025R0TypeField> type;
139
140    protected EnterpriseConfigurationSecurityV2025R0 security;
141
142    protected EnterpriseConfigurationContentAndSharingV2025R0 contentAndSharing;
143
144    protected EnterpriseConfigurationUserSettingsV2025R0 userSettings;
145
146    protected EnterpriseConfigurationShieldV2025R0 shield;
147
148    public Builder id(String id) {
149      this.id = id;
150      return this;
151    }
152
153    public Builder type(EnterpriseConfigurationV2025R0TypeField type) {
154      this.type = new EnumWrapper<EnterpriseConfigurationV2025R0TypeField>(type);
155      return this;
156    }
157
158    public Builder type(EnumWrapper<EnterpriseConfigurationV2025R0TypeField> type) {
159      this.type = type;
160      return this;
161    }
162
163    public Builder security(EnterpriseConfigurationSecurityV2025R0 security) {
164      this.security = security;
165      return this;
166    }
167
168    public Builder contentAndSharing(
169        EnterpriseConfigurationContentAndSharingV2025R0 contentAndSharing) {
170      this.contentAndSharing = contentAndSharing;
171      return this;
172    }
173
174    public Builder userSettings(EnterpriseConfigurationUserSettingsV2025R0 userSettings) {
175      this.userSettings = userSettings;
176      return this;
177    }
178
179    public Builder shield(EnterpriseConfigurationShieldV2025R0 shield) {
180      this.shield = shield;
181      return this;
182    }
183
184    public EnterpriseConfigurationV2025R0 build() {
185      return new EnterpriseConfigurationV2025R0(this);
186    }
187  }
188}