All Downloads are FREE. Search and download functionalities are using the official Maven repository.

odata.msgraph.client.entity.OnlineMeeting Maven / Gradle / Ivy

package odata.msgraph.client.entity;

import com.fasterxml.jackson.annotation.JsonAnyGetter;
import com.fasterxml.jackson.annotation.JsonAnySetter;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonInclude.Include;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonPropertyOrder;
import com.github.davidmoten.odata.client.ClientException;
import com.github.davidmoten.odata.client.HttpMethod;
import com.github.davidmoten.odata.client.NameValue;
import com.github.davidmoten.odata.client.ODataEntityType;
import com.github.davidmoten.odata.client.RequestOptions;
import com.github.davidmoten.odata.client.StreamProvider;
import com.github.davidmoten.odata.client.StreamUploader;
import com.github.davidmoten.odata.client.StreamUploaderChunked;
import com.github.davidmoten.odata.client.StreamUploaderSingleCall;
import com.github.davidmoten.odata.client.UnmappedFields;
import com.github.davidmoten.odata.client.UploadStrategy;
import com.github.davidmoten.odata.client.Util;
import com.github.davidmoten.odata.client.annotation.NavigationProperty;
import com.github.davidmoten.odata.client.annotation.Property;
import com.github.davidmoten.odata.client.internal.ChangedFields;
import com.github.davidmoten.odata.client.internal.RequestHelper;
import com.github.davidmoten.odata.client.internal.UnmappedFieldsImpl;

import java.lang.Boolean;
import java.lang.Object;
import java.lang.Override;
import java.lang.String;
import java.lang.StringBuilder;
import java.time.OffsetDateTime;
import java.util.Optional;

import odata.msgraph.client.complex.AudioConferencing;
import odata.msgraph.client.complex.BroadcastMeetingSettings;
import odata.msgraph.client.complex.ChatInfo;
import odata.msgraph.client.complex.ItemBody;
import odata.msgraph.client.complex.LobbyBypassSettings;
import odata.msgraph.client.complex.MeetingParticipants;
import odata.msgraph.client.entity.collection.request.MeetingAttendanceReportCollectionRequest;
import odata.msgraph.client.enums.MeetingChatMode;
import odata.msgraph.client.enums.OnlineMeetingPresenters;

@JsonPropertyOrder({
    "@odata.type", 
    "allowAttendeeToEnableCamera", 
    "allowAttendeeToEnableMic", 
    "allowedPresenters", 
    "allowMeetingChat", 
    "allowTeamworkReactions", 
    "attendeeReport", 
    "audioConferencing", 
    "broadcastSettings", 
    "chatInfo", 
    "creationDateTime", 
    "endDateTime", 
    "externalId", 
    "isBroadcast", 
    "isEntryExitAnnounced", 
    "joinInformation", 
    "joinWebUrl", 
    "lobbyBypassSettings", 
    "participants", 
    "recordAutomatically", 
    "startDateTime", 
    "subject", 
    "videoTeleconferenceId"})
@JsonInclude(Include.NON_NULL)
public class OnlineMeeting extends Entity implements ODataEntityType {

    @Override
    public String odataTypeName() {
        return "microsoft.graph.onlineMeeting";
    }

    @JsonProperty("allowAttendeeToEnableCamera")
    protected Boolean allowAttendeeToEnableCamera;

    @JsonProperty("allowAttendeeToEnableMic")
    protected Boolean allowAttendeeToEnableMic;

    @JsonProperty("allowedPresenters")
    protected OnlineMeetingPresenters allowedPresenters;

    @JsonProperty("allowMeetingChat")
    protected MeetingChatMode allowMeetingChat;

    @JsonProperty("allowTeamworkReactions")
    protected Boolean allowTeamworkReactions;

    @JsonProperty("attendeeReport")
    protected String attendeeReport;

    @JsonProperty("audioConferencing")
    protected AudioConferencing audioConferencing;

    @JsonProperty("broadcastSettings")
    protected BroadcastMeetingSettings broadcastSettings;

    @JsonProperty("chatInfo")
    protected ChatInfo chatInfo;

    @JsonProperty("creationDateTime")
    protected OffsetDateTime creationDateTime;

    @JsonProperty("endDateTime")
    protected OffsetDateTime endDateTime;

    @JsonProperty("externalId")
    protected String externalId;

    @JsonProperty("isBroadcast")
    protected Boolean isBroadcast;

    @JsonProperty("isEntryExitAnnounced")
    protected Boolean isEntryExitAnnounced;

    @JsonProperty("joinInformation")
    protected ItemBody joinInformation;

    @JsonProperty("joinWebUrl")
    protected String joinWebUrl;

    @JsonProperty("lobbyBypassSettings")
    protected LobbyBypassSettings lobbyBypassSettings;

    @JsonProperty("participants")
    protected MeetingParticipants participants;

    @JsonProperty("recordAutomatically")
    protected Boolean recordAutomatically;

    @JsonProperty("startDateTime")
    protected OffsetDateTime startDateTime;

    @JsonProperty("subject")
    protected String subject;

    @JsonProperty("videoTeleconferenceId")
    protected String videoTeleconferenceId;

    protected OnlineMeeting() {
        super();
    }

    /**
     * Returns a builder which is used to create a new
     * instance of this class (given that this class is immutable).
     *
     * @return a new Builder for this class
     */
    // Suffix used on builder factory method to differentiate the method
    // from static builder methods on superclasses
    public static Builder builderOnlineMeeting() {
        return new Builder();
    }

    public static final class Builder {
        private String id;
        private Boolean allowAttendeeToEnableCamera;
        private Boolean allowAttendeeToEnableMic;
        private OnlineMeetingPresenters allowedPresenters;
        private MeetingChatMode allowMeetingChat;
        private Boolean allowTeamworkReactions;
        private String attendeeReport;
        private AudioConferencing audioConferencing;
        private BroadcastMeetingSettings broadcastSettings;
        private ChatInfo chatInfo;
        private OffsetDateTime creationDateTime;
        private OffsetDateTime endDateTime;
        private String externalId;
        private Boolean isBroadcast;
        private Boolean isEntryExitAnnounced;
        private ItemBody joinInformation;
        private String joinWebUrl;
        private LobbyBypassSettings lobbyBypassSettings;
        private MeetingParticipants participants;
        private Boolean recordAutomatically;
        private OffsetDateTime startDateTime;
        private String subject;
        private String videoTeleconferenceId;
        private ChangedFields changedFields = ChangedFields.EMPTY;

        Builder() {
            // prevent instantiation
        }

        public Builder id(String id) {
            this.id = id;
            this.changedFields = changedFields.add("id");
            return this;
        }

        public Builder allowAttendeeToEnableCamera(Boolean allowAttendeeToEnableCamera) {
            this.allowAttendeeToEnableCamera = allowAttendeeToEnableCamera;
            this.changedFields = changedFields.add("allowAttendeeToEnableCamera");
            return this;
        }

        public Builder allowAttendeeToEnableMic(Boolean allowAttendeeToEnableMic) {
            this.allowAttendeeToEnableMic = allowAttendeeToEnableMic;
            this.changedFields = changedFields.add("allowAttendeeToEnableMic");
            return this;
        }

        public Builder allowedPresenters(OnlineMeetingPresenters allowedPresenters) {
            this.allowedPresenters = allowedPresenters;
            this.changedFields = changedFields.add("allowedPresenters");
            return this;
        }

        public Builder allowMeetingChat(MeetingChatMode allowMeetingChat) {
            this.allowMeetingChat = allowMeetingChat;
            this.changedFields = changedFields.add("allowMeetingChat");
            return this;
        }

        public Builder allowTeamworkReactions(Boolean allowTeamworkReactions) {
            this.allowTeamworkReactions = allowTeamworkReactions;
            this.changedFields = changedFields.add("allowTeamworkReactions");
            return this;
        }

        public Builder attendeeReport(String attendeeReport) {
            this.attendeeReport = attendeeReport;
            this.changedFields = changedFields.add("attendeeReport");
            return this;
        }

        public Builder audioConferencing(AudioConferencing audioConferencing) {
            this.audioConferencing = audioConferencing;
            this.changedFields = changedFields.add("audioConferencing");
            return this;
        }

        public Builder broadcastSettings(BroadcastMeetingSettings broadcastSettings) {
            this.broadcastSettings = broadcastSettings;
            this.changedFields = changedFields.add("broadcastSettings");
            return this;
        }

        public Builder chatInfo(ChatInfo chatInfo) {
            this.chatInfo = chatInfo;
            this.changedFields = changedFields.add("chatInfo");
            return this;
        }

        public Builder creationDateTime(OffsetDateTime creationDateTime) {
            this.creationDateTime = creationDateTime;
            this.changedFields = changedFields.add("creationDateTime");
            return this;
        }

        public Builder endDateTime(OffsetDateTime endDateTime) {
            this.endDateTime = endDateTime;
            this.changedFields = changedFields.add("endDateTime");
            return this;
        }

        public Builder externalId(String externalId) {
            this.externalId = externalId;
            this.changedFields = changedFields.add("externalId");
            return this;
        }

        public Builder isBroadcast(Boolean isBroadcast) {
            this.isBroadcast = isBroadcast;
            this.changedFields = changedFields.add("isBroadcast");
            return this;
        }

        public Builder isEntryExitAnnounced(Boolean isEntryExitAnnounced) {
            this.isEntryExitAnnounced = isEntryExitAnnounced;
            this.changedFields = changedFields.add("isEntryExitAnnounced");
            return this;
        }

        public Builder joinInformation(ItemBody joinInformation) {
            this.joinInformation = joinInformation;
            this.changedFields = changedFields.add("joinInformation");
            return this;
        }

        public Builder joinWebUrl(String joinWebUrl) {
            this.joinWebUrl = joinWebUrl;
            this.changedFields = changedFields.add("joinWebUrl");
            return this;
        }

        public Builder lobbyBypassSettings(LobbyBypassSettings lobbyBypassSettings) {
            this.lobbyBypassSettings = lobbyBypassSettings;
            this.changedFields = changedFields.add("lobbyBypassSettings");
            return this;
        }

        public Builder participants(MeetingParticipants participants) {
            this.participants = participants;
            this.changedFields = changedFields.add("participants");
            return this;
        }

        public Builder recordAutomatically(Boolean recordAutomatically) {
            this.recordAutomatically = recordAutomatically;
            this.changedFields = changedFields.add("recordAutomatically");
            return this;
        }

        public Builder startDateTime(OffsetDateTime startDateTime) {
            this.startDateTime = startDateTime;
            this.changedFields = changedFields.add("startDateTime");
            return this;
        }

        public Builder subject(String subject) {
            this.subject = subject;
            this.changedFields = changedFields.add("subject");
            return this;
        }

        public Builder videoTeleconferenceId(String videoTeleconferenceId) {
            this.videoTeleconferenceId = videoTeleconferenceId;
            this.changedFields = changedFields.add("videoTeleconferenceId");
            return this;
        }

        public OnlineMeeting build() {
            OnlineMeeting _x = new OnlineMeeting();
            _x.contextPath = null;
            _x.changedFields = changedFields;
            _x.unmappedFields = new UnmappedFieldsImpl();
            _x.odataType = "microsoft.graph.onlineMeeting";
            _x.id = id;
            _x.allowAttendeeToEnableCamera = allowAttendeeToEnableCamera;
            _x.allowAttendeeToEnableMic = allowAttendeeToEnableMic;
            _x.allowedPresenters = allowedPresenters;
            _x.allowMeetingChat = allowMeetingChat;
            _x.allowTeamworkReactions = allowTeamworkReactions;
            _x.attendeeReport = attendeeReport;
            _x.audioConferencing = audioConferencing;
            _x.broadcastSettings = broadcastSettings;
            _x.chatInfo = chatInfo;
            _x.creationDateTime = creationDateTime;
            _x.endDateTime = endDateTime;
            _x.externalId = externalId;
            _x.isBroadcast = isBroadcast;
            _x.isEntryExitAnnounced = isEntryExitAnnounced;
            _x.joinInformation = joinInformation;
            _x.joinWebUrl = joinWebUrl;
            _x.lobbyBypassSettings = lobbyBypassSettings;
            _x.participants = participants;
            _x.recordAutomatically = recordAutomatically;
            _x.startDateTime = startDateTime;
            _x.subject = subject;
            _x.videoTeleconferenceId = videoTeleconferenceId;
            return _x;
        }
    }

    @Override
    @JsonIgnore
    public ChangedFields getChangedFields() {
        return changedFields;
    }

    @Override
    public void postInject(boolean addKeysToContextPath) {
        if (addKeysToContextPath && id != null) {
            contextPath = contextPath.clearQueries().addKeys(new NameValue(id.toString()));
        }
    }

    @Property(name="allowAttendeeToEnableCamera")
    @JsonIgnore
    public Optional getAllowAttendeeToEnableCamera() {
        return Optional.ofNullable(allowAttendeeToEnableCamera);
    }

    public OnlineMeeting withAllowAttendeeToEnableCamera(Boolean allowAttendeeToEnableCamera) {
        OnlineMeeting _x = _copy();
        _x.changedFields = changedFields.add("allowAttendeeToEnableCamera");
        _x.odataType = Util.nvl(odataType, "microsoft.graph.onlineMeeting");
        _x.allowAttendeeToEnableCamera = allowAttendeeToEnableCamera;
        return _x;
    }

    @Property(name="allowAttendeeToEnableMic")
    @JsonIgnore
    public Optional getAllowAttendeeToEnableMic() {
        return Optional.ofNullable(allowAttendeeToEnableMic);
    }

    public OnlineMeeting withAllowAttendeeToEnableMic(Boolean allowAttendeeToEnableMic) {
        OnlineMeeting _x = _copy();
        _x.changedFields = changedFields.add("allowAttendeeToEnableMic");
        _x.odataType = Util.nvl(odataType, "microsoft.graph.onlineMeeting");
        _x.allowAttendeeToEnableMic = allowAttendeeToEnableMic;
        return _x;
    }

    @Property(name="allowedPresenters")
    @JsonIgnore
    public Optional getAllowedPresenters() {
        return Optional.ofNullable(allowedPresenters);
    }

    public OnlineMeeting withAllowedPresenters(OnlineMeetingPresenters allowedPresenters) {
        OnlineMeeting _x = _copy();
        _x.changedFields = changedFields.add("allowedPresenters");
        _x.odataType = Util.nvl(odataType, "microsoft.graph.onlineMeeting");
        _x.allowedPresenters = allowedPresenters;
        return _x;
    }

    @Property(name="allowMeetingChat")
    @JsonIgnore
    public Optional getAllowMeetingChat() {
        return Optional.ofNullable(allowMeetingChat);
    }

    public OnlineMeeting withAllowMeetingChat(MeetingChatMode allowMeetingChat) {
        OnlineMeeting _x = _copy();
        _x.changedFields = changedFields.add("allowMeetingChat");
        _x.odataType = Util.nvl(odataType, "microsoft.graph.onlineMeeting");
        _x.allowMeetingChat = allowMeetingChat;
        return _x;
    }

    @Property(name="allowTeamworkReactions")
    @JsonIgnore
    public Optional getAllowTeamworkReactions() {
        return Optional.ofNullable(allowTeamworkReactions);
    }

    public OnlineMeeting withAllowTeamworkReactions(Boolean allowTeamworkReactions) {
        OnlineMeeting _x = _copy();
        _x.changedFields = changedFields.add("allowTeamworkReactions");
        _x.odataType = Util.nvl(odataType, "microsoft.graph.onlineMeeting");
        _x.allowTeamworkReactions = allowTeamworkReactions;
        return _x;
    }

    @Property(name="attendeeReport")
    @JsonIgnore
    public Optional getAttendeeReport() {
        return RequestHelper.createStreamForEdmStream(contextPath, this, "attendeeReport", attendeeReport);
    }

    /**
     * If metadata indicate that the stream is editable then returns
     * a {@link StreamUploader} which can be used to upload the stream
     * to the {@code attendeeReport} property, using HTTP POST.
     *
     * @return a StreamUploader if upload permitted
     */
    @Property(name="attendeeReport")
    public Optional postAttendeeReport() {
        return postAttendeeReport(UploadStrategy.singleCall());
    }

    /**
     * If metadata indicate that the stream is editable then returns
     * a {@link StreamUploaderChunked} which can be used to upload the stream
     * to the {@code attendeeReport} property, using HTTP POST.
     *
     * @return a StreamUploaderChunked if upload permitted
     */
    @Property(name="attendeeReport")
    public Optional postChunkedAttendeeReport() {
        return postAttendeeReport(UploadStrategy.chunked());
    }

    @Property(name="attendeeReport")
    public > Optional postAttendeeReport(UploadStrategy strategy) {
        return strategy.builder(contextPath.addSegment("attendeeReport"), this, "attendeeReport", HttpMethod.POST);
    }

    /**
     * If metadata indicate that the stream is editable then returns
     * a {@link StreamUploader} which can be used to upload the stream
     * to the {@code attendeeReport} property, using HTTP PATCH.
     *
     * @return a StreamUploader if upload permitted
     */
    @Property(name="attendeeReport")
    public Optional patchAttendeeReport() {
        return patchAttendeeReport(UploadStrategy.singleCall());
    }

    /**
     * If metadata indicate that the stream is editable then returns
     * a {@link StreamUploaderChunked} which can be used to upload the stream
     * to the {@code attendeeReport} property, using HTTP PATCH.
     *
     * @return a StreamUploaderChunked if upload permitted
     */
    @Property(name="attendeeReport")
    public Optional patchChunkedAttendeeReport() {
        return patchAttendeeReport(UploadStrategy.chunked());
    }

    @Property(name="attendeeReport")
    public > Optional patchAttendeeReport(UploadStrategy strategy) {
        return strategy.builder(contextPath.addSegment("attendeeReport"), this, "attendeeReport", HttpMethod.PATCH);
    }

    /**
     * If metadata indicate that the stream is editable then returns
     * a {@link StreamUploader} which can be used to upload the stream
     * to the {@code attendeeReport} property, using HTTP PUT.
     *
     * @return a StreamUploader if upload permitted
     */
    @Property(name="attendeeReport")
    public Optional putAttendeeReport() {
        return putAttendeeReport(UploadStrategy.singleCall());
    }

    /**
     * If metadata indicate that the stream is editable then returns
     * a {@link StreamUploaderChunked} which can be used to upload the stream
     * to the {@code attendeeReport} property, using HTTP PUT.
     *
     * @return a StreamUploaderChunked if upload permitted
     */
    @Property(name="attendeeReport")
    public Optional putChunkedAttendeeReport() {
        return putAttendeeReport(UploadStrategy.chunked());
    }

    @Property(name="attendeeReport")
    public > Optional putAttendeeReport(UploadStrategy strategy) {
        return strategy.builder(contextPath.addSegment("attendeeReport"), this, "attendeeReport", HttpMethod.PUT);
    }

    @Property(name="audioConferencing")
    @JsonIgnore
    public Optional getAudioConferencing() {
        return Optional.ofNullable(audioConferencing);
    }

    public OnlineMeeting withAudioConferencing(AudioConferencing audioConferencing) {
        OnlineMeeting _x = _copy();
        _x.changedFields = changedFields.add("audioConferencing");
        _x.odataType = Util.nvl(odataType, "microsoft.graph.onlineMeeting");
        _x.audioConferencing = audioConferencing;
        return _x;
    }

    @Property(name="broadcastSettings")
    @JsonIgnore
    public Optional getBroadcastSettings() {
        return Optional.ofNullable(broadcastSettings);
    }

    public OnlineMeeting withBroadcastSettings(BroadcastMeetingSettings broadcastSettings) {
        OnlineMeeting _x = _copy();
        _x.changedFields = changedFields.add("broadcastSettings");
        _x.odataType = Util.nvl(odataType, "microsoft.graph.onlineMeeting");
        _x.broadcastSettings = broadcastSettings;
        return _x;
    }

    @Property(name="chatInfo")
    @JsonIgnore
    public Optional getChatInfo() {
        return Optional.ofNullable(chatInfo);
    }

    public OnlineMeeting withChatInfo(ChatInfo chatInfo) {
        OnlineMeeting _x = _copy();
        _x.changedFields = changedFields.add("chatInfo");
        _x.odataType = Util.nvl(odataType, "microsoft.graph.onlineMeeting");
        _x.chatInfo = chatInfo;
        return _x;
    }

    @Property(name="creationDateTime")
    @JsonIgnore
    public Optional getCreationDateTime() {
        return Optional.ofNullable(creationDateTime);
    }

    public OnlineMeeting withCreationDateTime(OffsetDateTime creationDateTime) {
        OnlineMeeting _x = _copy();
        _x.changedFields = changedFields.add("creationDateTime");
        _x.odataType = Util.nvl(odataType, "microsoft.graph.onlineMeeting");
        _x.creationDateTime = creationDateTime;
        return _x;
    }

    @Property(name="endDateTime")
    @JsonIgnore
    public Optional getEndDateTime() {
        return Optional.ofNullable(endDateTime);
    }

    public OnlineMeeting withEndDateTime(OffsetDateTime endDateTime) {
        OnlineMeeting _x = _copy();
        _x.changedFields = changedFields.add("endDateTime");
        _x.odataType = Util.nvl(odataType, "microsoft.graph.onlineMeeting");
        _x.endDateTime = endDateTime;
        return _x;
    }

    @Property(name="externalId")
    @JsonIgnore
    public Optional getExternalId() {
        return Optional.ofNullable(externalId);
    }

    public OnlineMeeting withExternalId(String externalId) {
        OnlineMeeting _x = _copy();
        _x.changedFields = changedFields.add("externalId");
        _x.odataType = Util.nvl(odataType, "microsoft.graph.onlineMeeting");
        _x.externalId = externalId;
        return _x;
    }

    @Property(name="isBroadcast")
    @JsonIgnore
    public Optional getIsBroadcast() {
        return Optional.ofNullable(isBroadcast);
    }

    public OnlineMeeting withIsBroadcast(Boolean isBroadcast) {
        OnlineMeeting _x = _copy();
        _x.changedFields = changedFields.add("isBroadcast");
        _x.odataType = Util.nvl(odataType, "microsoft.graph.onlineMeeting");
        _x.isBroadcast = isBroadcast;
        return _x;
    }

    @Property(name="isEntryExitAnnounced")
    @JsonIgnore
    public Optional getIsEntryExitAnnounced() {
        return Optional.ofNullable(isEntryExitAnnounced);
    }

    public OnlineMeeting withIsEntryExitAnnounced(Boolean isEntryExitAnnounced) {
        OnlineMeeting _x = _copy();
        _x.changedFields = changedFields.add("isEntryExitAnnounced");
        _x.odataType = Util.nvl(odataType, "microsoft.graph.onlineMeeting");
        _x.isEntryExitAnnounced = isEntryExitAnnounced;
        return _x;
    }

    @Property(name="joinInformation")
    @JsonIgnore
    public Optional getJoinInformation() {
        return Optional.ofNullable(joinInformation);
    }

    public OnlineMeeting withJoinInformation(ItemBody joinInformation) {
        OnlineMeeting _x = _copy();
        _x.changedFields = changedFields.add("joinInformation");
        _x.odataType = Util.nvl(odataType, "microsoft.graph.onlineMeeting");
        _x.joinInformation = joinInformation;
        return _x;
    }

    @Property(name="joinWebUrl")
    @JsonIgnore
    public Optional getJoinWebUrl() {
        return Optional.ofNullable(joinWebUrl);
    }

    public OnlineMeeting withJoinWebUrl(String joinWebUrl) {
        OnlineMeeting _x = _copy();
        _x.changedFields = changedFields.add("joinWebUrl");
        _x.odataType = Util.nvl(odataType, "microsoft.graph.onlineMeeting");
        _x.joinWebUrl = joinWebUrl;
        return _x;
    }

    @Property(name="lobbyBypassSettings")
    @JsonIgnore
    public Optional getLobbyBypassSettings() {
        return Optional.ofNullable(lobbyBypassSettings);
    }

    public OnlineMeeting withLobbyBypassSettings(LobbyBypassSettings lobbyBypassSettings) {
        OnlineMeeting _x = _copy();
        _x.changedFields = changedFields.add("lobbyBypassSettings");
        _x.odataType = Util.nvl(odataType, "microsoft.graph.onlineMeeting");
        _x.lobbyBypassSettings = lobbyBypassSettings;
        return _x;
    }

    @Property(name="participants")
    @JsonIgnore
    public Optional getParticipants() {
        return Optional.ofNullable(participants);
    }

    public OnlineMeeting withParticipants(MeetingParticipants participants) {
        OnlineMeeting _x = _copy();
        _x.changedFields = changedFields.add("participants");
        _x.odataType = Util.nvl(odataType, "microsoft.graph.onlineMeeting");
        _x.participants = participants;
        return _x;
    }

    @Property(name="recordAutomatically")
    @JsonIgnore
    public Optional getRecordAutomatically() {
        return Optional.ofNullable(recordAutomatically);
    }

    public OnlineMeeting withRecordAutomatically(Boolean recordAutomatically) {
        OnlineMeeting _x = _copy();
        _x.changedFields = changedFields.add("recordAutomatically");
        _x.odataType = Util.nvl(odataType, "microsoft.graph.onlineMeeting");
        _x.recordAutomatically = recordAutomatically;
        return _x;
    }

    @Property(name="startDateTime")
    @JsonIgnore
    public Optional getStartDateTime() {
        return Optional.ofNullable(startDateTime);
    }

    public OnlineMeeting withStartDateTime(OffsetDateTime startDateTime) {
        OnlineMeeting _x = _copy();
        _x.changedFields = changedFields.add("startDateTime");
        _x.odataType = Util.nvl(odataType, "microsoft.graph.onlineMeeting");
        _x.startDateTime = startDateTime;
        return _x;
    }

    @Property(name="subject")
    @JsonIgnore
    public Optional getSubject() {
        return Optional.ofNullable(subject);
    }

    public OnlineMeeting withSubject(String subject) {
        OnlineMeeting _x = _copy();
        _x.changedFields = changedFields.add("subject");
        _x.odataType = Util.nvl(odataType, "microsoft.graph.onlineMeeting");
        _x.subject = subject;
        return _x;
    }

    @Property(name="videoTeleconferenceId")
    @JsonIgnore
    public Optional getVideoTeleconferenceId() {
        return Optional.ofNullable(videoTeleconferenceId);
    }

    public OnlineMeeting withVideoTeleconferenceId(String videoTeleconferenceId) {
        OnlineMeeting _x = _copy();
        _x.changedFields = changedFields.add("videoTeleconferenceId");
        _x.odataType = Util.nvl(odataType, "microsoft.graph.onlineMeeting");
        _x.videoTeleconferenceId = videoTeleconferenceId;
        return _x;
    }

    public OnlineMeeting withUnmappedField(String name, String value) {
        OnlineMeeting _x = _copy();
        _x.setUnmappedField(name, value);
        return _x;
    }

    @NavigationProperty(name="attendanceReports")
    @JsonIgnore
    public MeetingAttendanceReportCollectionRequest getAttendanceReports() {
        return new MeetingAttendanceReportCollectionRequest(
                        contextPath.addSegment("attendanceReports"), RequestHelper.getValue(unmappedFields, "attendanceReports"));
    }

    @JsonAnySetter
    private void setUnmappedField(String name, Object value) {
        if (unmappedFields == null) {
            unmappedFields = new UnmappedFieldsImpl();
        }
        unmappedFields.put(name, value);
    }

    @JsonAnyGetter
    private UnmappedFieldsImpl unmappedFields() {
        return unmappedFields == null ? UnmappedFieldsImpl.EMPTY : unmappedFields;
    }

    @Override
    public UnmappedFields getUnmappedFields() {
        return unmappedFields();
    }

    /**
     * Submits only changed fields for update and returns an 
     * immutable copy of {@code this} with changed fields reset.
     *
     * @return a copy of {@code this} with changed fields reset
     * @throws ClientException if HTTP response is not as expected
     */
    public OnlineMeeting patch() {
        RequestHelper.patch(this, contextPath, RequestOptions.EMPTY);
        OnlineMeeting _x = _copy();
        _x.changedFields = null;
        return _x;
    }

    /**
     * Submits all fields for update and returns an immutable copy of {@code this}
     * with changed fields reset (they were ignored anyway).
     *
     * @return a copy of {@code this} with changed fields reset
     * @throws ClientException if HTTP response is not as expected
     */
    public OnlineMeeting put() {
        RequestHelper.put(this, contextPath, RequestOptions.EMPTY);
        OnlineMeeting _x = _copy();
        _x.changedFields = null;
        return _x;
    }

    private OnlineMeeting _copy() {
        OnlineMeeting _x = new OnlineMeeting();
        _x.contextPath = contextPath;
        _x.changedFields = changedFields;
        _x.unmappedFields = unmappedFields.copy();
        _x.odataType = odataType;
        _x.id = id;
        _x.allowAttendeeToEnableCamera = allowAttendeeToEnableCamera;
        _x.allowAttendeeToEnableMic = allowAttendeeToEnableMic;
        _x.allowedPresenters = allowedPresenters;
        _x.allowMeetingChat = allowMeetingChat;
        _x.allowTeamworkReactions = allowTeamworkReactions;
        _x.attendeeReport = attendeeReport;
        _x.audioConferencing = audioConferencing;
        _x.broadcastSettings = broadcastSettings;
        _x.chatInfo = chatInfo;
        _x.creationDateTime = creationDateTime;
        _x.endDateTime = endDateTime;
        _x.externalId = externalId;
        _x.isBroadcast = isBroadcast;
        _x.isEntryExitAnnounced = isEntryExitAnnounced;
        _x.joinInformation = joinInformation;
        _x.joinWebUrl = joinWebUrl;
        _x.lobbyBypassSettings = lobbyBypassSettings;
        _x.participants = participants;
        _x.recordAutomatically = recordAutomatically;
        _x.startDateTime = startDateTime;
        _x.subject = subject;
        _x.videoTeleconferenceId = videoTeleconferenceId;
        return _x;
    }

    @Override
    public String toString() {
        StringBuilder b = new StringBuilder();
        b.append("OnlineMeeting[");
        b.append("id=");
        b.append(this.id);
        b.append(", ");
        b.append("allowAttendeeToEnableCamera=");
        b.append(this.allowAttendeeToEnableCamera);
        b.append(", ");
        b.append("allowAttendeeToEnableMic=");
        b.append(this.allowAttendeeToEnableMic);
        b.append(", ");
        b.append("allowedPresenters=");
        b.append(this.allowedPresenters);
        b.append(", ");
        b.append("allowMeetingChat=");
        b.append(this.allowMeetingChat);
        b.append(", ");
        b.append("allowTeamworkReactions=");
        b.append(this.allowTeamworkReactions);
        b.append(", ");
        b.append("attendeeReport=");
        b.append(this.attendeeReport);
        b.append(", ");
        b.append("audioConferencing=");
        b.append(this.audioConferencing);
        b.append(", ");
        b.append("broadcastSettings=");
        b.append(this.broadcastSettings);
        b.append(", ");
        b.append("chatInfo=");
        b.append(this.chatInfo);
        b.append(", ");
        b.append("creationDateTime=");
        b.append(this.creationDateTime);
        b.append(", ");
        b.append("endDateTime=");
        b.append(this.endDateTime);
        b.append(", ");
        b.append("externalId=");
        b.append(this.externalId);
        b.append(", ");
        b.append("isBroadcast=");
        b.append(this.isBroadcast);
        b.append(", ");
        b.append("isEntryExitAnnounced=");
        b.append(this.isEntryExitAnnounced);
        b.append(", ");
        b.append("joinInformation=");
        b.append(this.joinInformation);
        b.append(", ");
        b.append("joinWebUrl=");
        b.append(this.joinWebUrl);
        b.append(", ");
        b.append("lobbyBypassSettings=");
        b.append(this.lobbyBypassSettings);
        b.append(", ");
        b.append("participants=");
        b.append(this.participants);
        b.append(", ");
        b.append("recordAutomatically=");
        b.append(this.recordAutomatically);
        b.append(", ");
        b.append("startDateTime=");
        b.append(this.startDateTime);
        b.append(", ");
        b.append("subject=");
        b.append(this.subject);
        b.append(", ");
        b.append("videoTeleconferenceId=");
        b.append(this.videoTeleconferenceId);
        b.append("]");
        b.append(",unmappedFields=");
        b.append(unmappedFields);
        b.append(",odataType=");
        b.append(odataType);
        return b.toString();
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy