// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
// Code generated by Microsoft (R) AutoRest Code Generator.

package com.azure.communication.callautomation.implementation.models;

import com.azure.core.annotation.Fluent;
import com.fasterxml.jackson.annotation.JsonProperty;
import java.util.List;

/** The PlayRequest model. */
@Fluent
public final class PlayRequest {
    /*
     * The source of the audio to be played.
     */
    @JsonProperty(value = "playSourceInfo", required = true)
    private PlaySourceInternal playSourceInfo;

    /*
     * The list of call participants play provided audio to.
     * Plays to everyone in the call when not provided.
     */
    @JsonProperty(value = "playTo")
    private List<CommunicationIdentifierModel> playTo;

    /*
     * Defines options for playing the audio.
     */
    @JsonProperty(value = "playOptions")
    private PlayOptionsInternal playOptions;

    /*
     * The value to identify context of the operation.
     */
    @JsonProperty(value = "operationContext")
    private String operationContext;

    /*
     * The callback URI to override the main callback URI.
     */
    @JsonProperty(value = "callbackUri")
    private String callbackUri;

    /**
     * Get the playSourceInfo property: The source of the audio to be played.
     *
     * @return the playSourceInfo value.
     */
    public PlaySourceInternal getPlaySourceInfo() {
        return this.playSourceInfo;
    }

    /**
     * Set the playSourceInfo property: The source of the audio to be played.
     *
     * @param playSourceInfo the playSourceInfo value to set.
     * @return the PlayRequest object itself.
     */
    public PlayRequest setPlaySourceInfo(PlaySourceInternal playSourceInfo) {
        this.playSourceInfo = playSourceInfo;
        return this;
    }

    /**
     * Get the playTo property: The list of call participants play provided audio to. Plays to everyone in the call when
     * not provided.
     *
     * @return the playTo value.
     */
    public List<CommunicationIdentifierModel> getPlayTo() {
        return this.playTo;
    }

    /**
     * Set the playTo property: The list of call participants play provided audio to. Plays to everyone in the call when
     * not provided.
     *
     * @param playTo the playTo value to set.
     * @return the PlayRequest object itself.
     */
    public PlayRequest setPlayTo(List<CommunicationIdentifierModel> playTo) {
        this.playTo = playTo;
        return this;
    }

    /**
     * Get the playOptions property: Defines options for playing the audio.
     *
     * @return the playOptions value.
     */
    public PlayOptionsInternal getPlayOptions() {
        return this.playOptions;
    }

    /**
     * Set the playOptions property: Defines options for playing the audio.
     *
     * @param playOptions the playOptions value to set.
     * @return the PlayRequest object itself.
     */
    public PlayRequest setPlayOptions(PlayOptionsInternal playOptions) {
        this.playOptions = playOptions;
        return this;
    }

    /**
     * Get the operationContext property: The value to identify context of the operation.
     *
     * @return the operationContext value.
     */
    public String getOperationContext() {
        return this.operationContext;
    }

    /**
     * Set the operationContext property: The value to identify context of the operation.
     *
     * @param operationContext the operationContext value to set.
     * @return the PlayRequest object itself.
     */
    public PlayRequest setOperationContext(String operationContext) {
        this.operationContext = operationContext;
        return this;
    }

    /**
     * Get the callbackUri property: The callback URI to override the main callback URI.
     *
     * @return the callbackUri value.
     */
    public String getCallbackUri() {
        return this.callbackUri;
    }

    /**
     * Set the callbackUri property: The callback URI to override the main callback URI.
     *
     * @param callbackUri the callbackUri value to set.
     * @return the PlayRequest object itself.
     */
    public PlayRequest setCallbackUri(String callbackUri) {
        this.callbackUri = callbackUri;
        return this;
    }
}
