// Code generated by msgraph-generate.go DO NOT EDIT.

package msgraph

import "context"

// CallAnswerRequestParameter undocumented
type CallAnswerRequestParameter struct {
	// CallbackURI undocumented
	CallbackURI *string `json:"callbackUri,omitempty"`
	// MediaConfig undocumented
	MediaConfig *MediaConfig `json:"mediaConfig,omitempty"`
	// AcceptedModalities undocumented
	AcceptedModalities []Modality `json:"acceptedModalities,omitempty"`
}

// CallCancelMediaProcessingRequestParameter undocumented
type CallCancelMediaProcessingRequestParameter struct {
	// ClientContext undocumented
	ClientContext *string `json:"clientContext,omitempty"`
}

// CallChangeScreenSharingRoleRequestParameter undocumented
type CallChangeScreenSharingRoleRequestParameter struct {
	// Role undocumented
	Role *ScreenSharingRole `json:"role,omitempty"`
}

// CallKeepAliveRequestParameter undocumented
type CallKeepAliveRequestParameter struct {
}

// CallMuteRequestParameter undocumented
type CallMuteRequestParameter struct {
	// ClientContext undocumented
	ClientContext *string `json:"clientContext,omitempty"`
}

// CallPlayPromptRequestParameter undocumented
type CallPlayPromptRequestParameter struct {
	// Prompts undocumented
	Prompts []Prompt `json:"prompts,omitempty"`
	// Loop undocumented
	Loop *bool `json:"loop,omitempty"`
	// ClientContext undocumented
	ClientContext *string `json:"clientContext,omitempty"`
}

// CallRecordRequestParameter undocumented
type CallRecordRequestParameter struct {
	// Prompts undocumented
	Prompts []Prompt `json:"prompts,omitempty"`
	// BargeInAllowed undocumented
	BargeInAllowed *bool `json:"bargeInAllowed,omitempty"`
	// InitialSilenceTimeoutInSeconds undocumented
	InitialSilenceTimeoutInSeconds *int `json:"initialSilenceTimeoutInSeconds,omitempty"`
	// MaxSilenceTimeoutInSeconds undocumented
	MaxSilenceTimeoutInSeconds *int `json:"maxSilenceTimeoutInSeconds,omitempty"`
	// MaxRecordDurationInSeconds undocumented
	MaxRecordDurationInSeconds *int `json:"maxRecordDurationInSeconds,omitempty"`
	// PlayBeep undocumented
	PlayBeep *bool `json:"playBeep,omitempty"`
	// StreamWhileRecording undocumented
	StreamWhileRecording *bool `json:"streamWhileRecording,omitempty"`
	// StopTones undocumented
	StopTones []string `json:"stopTones,omitempty"`
	// ClientContext undocumented
	ClientContext *string `json:"clientContext,omitempty"`
}

// CallRecordResponseRequestParameter undocumented
type CallRecordResponseRequestParameter struct {
	// Prompts undocumented
	Prompts []Prompt `json:"prompts,omitempty"`
	// BargeInAllowed undocumented
	BargeInAllowed *bool `json:"bargeInAllowed,omitempty"`
	// InitialSilenceTimeoutInSeconds undocumented
	InitialSilenceTimeoutInSeconds *int `json:"initialSilenceTimeoutInSeconds,omitempty"`
	// MaxSilenceTimeoutInSeconds undocumented
	MaxSilenceTimeoutInSeconds *int `json:"maxSilenceTimeoutInSeconds,omitempty"`
	// MaxRecordDurationInSeconds undocumented
	MaxRecordDurationInSeconds *int `json:"maxRecordDurationInSeconds,omitempty"`
	// PlayBeep undocumented
	PlayBeep *bool `json:"playBeep,omitempty"`
	// StreamWhileRecording undocumented
	StreamWhileRecording *bool `json:"streamWhileRecording,omitempty"`
	// StopTones undocumented
	StopTones []string `json:"stopTones,omitempty"`
	// ClientContext undocumented
	ClientContext *string `json:"clientContext,omitempty"`
}

// CallRedirectRequestParameter undocumented
type CallRedirectRequestParameter struct {
	// Targets undocumented
	Targets []InvitationParticipantInfo `json:"targets,omitempty"`
	// TargetDisposition undocumented
	TargetDisposition *CallDisposition `json:"targetDisposition,omitempty"`
	// Timeout undocumented
	Timeout *int `json:"timeout,omitempty"`
	// MaskCallee undocumented
	MaskCallee *bool `json:"maskCallee,omitempty"`
	// MaskCaller undocumented
	MaskCaller *bool `json:"maskCaller,omitempty"`
	// CallbackURI undocumented
	CallbackURI *string `json:"callbackUri,omitempty"`
}

// CallRejectRequestParameter undocumented
type CallRejectRequestParameter struct {
	// Reason undocumented
	Reason *RejectReason `json:"reason,omitempty"`
	// CallbackURI undocumented
	CallbackURI *string `json:"callbackUri,omitempty"`
}

// CallSubscribeToToneRequestParameter undocumented
type CallSubscribeToToneRequestParameter struct {
	// ClientContext undocumented
	ClientContext *string `json:"clientContext,omitempty"`
}

// CallTransferRequestParameter undocumented
type CallTransferRequestParameter struct {
	// TransferTarget undocumented
	TransferTarget *InvitationParticipantInfo `json:"transferTarget,omitempty"`
}

// CallUnmuteRequestParameter undocumented
type CallUnmuteRequestParameter struct {
	// ClientContext undocumented
	ClientContext *string `json:"clientContext,omitempty"`
}

// CallUpdateRecordingStatusRequestParameter undocumented
type CallUpdateRecordingStatusRequestParameter struct {
	// Status undocumented
	Status *RecordingStatus `json:"status,omitempty"`
	// ClientContext undocumented
	ClientContext *string `json:"clientContext,omitempty"`
}

//
type CallAnswerRequestBuilder struct{ BaseRequestBuilder }

// Answer action undocumented
func (b *CallRequestBuilder) Answer(reqObj *CallAnswerRequestParameter) *CallAnswerRequestBuilder {
	bb := &CallAnswerRequestBuilder{BaseRequestBuilder: b.BaseRequestBuilder}
	bb.BaseRequestBuilder.baseURL += "/answer"
	bb.BaseRequestBuilder.requestObject = reqObj
	return bb
}

//
type CallAnswerRequest struct{ BaseRequest }

//
func (b *CallAnswerRequestBuilder) Request() *CallAnswerRequest {
	return &CallAnswerRequest{
		BaseRequest: BaseRequest{baseURL: b.baseURL, client: b.client, requestObject: b.requestObject},
	}
}

//
func (r *CallAnswerRequest) Post(ctx context.Context) error {
	return r.JSONRequest(ctx, "POST", "", r.requestObject, nil)
}

//
type CallCancelMediaProcessingRequestBuilder struct{ BaseRequestBuilder }

// CancelMediaProcessing action undocumented
func (b *CallRequestBuilder) CancelMediaProcessing(reqObj *CallCancelMediaProcessingRequestParameter) *CallCancelMediaProcessingRequestBuilder {
	bb := &CallCancelMediaProcessingRequestBuilder{BaseRequestBuilder: b.BaseRequestBuilder}
	bb.BaseRequestBuilder.baseURL += "/cancelMediaProcessing"
	bb.BaseRequestBuilder.requestObject = reqObj
	return bb
}

//
type CallCancelMediaProcessingRequest struct{ BaseRequest }

//
func (b *CallCancelMediaProcessingRequestBuilder) Request() *CallCancelMediaProcessingRequest {
	return &CallCancelMediaProcessingRequest{
		BaseRequest: BaseRequest{baseURL: b.baseURL, client: b.client, requestObject: b.requestObject},
	}
}

//
func (r *CallCancelMediaProcessingRequest) Post(ctx context.Context) (resObj *CancelMediaProcessingOperation, err error) {
	err = r.JSONRequest(ctx, "POST", "", r.requestObject, &resObj)
	return
}

//
type CallChangeScreenSharingRoleRequestBuilder struct{ BaseRequestBuilder }

// ChangeScreenSharingRole action undocumented
func (b *CallRequestBuilder) ChangeScreenSharingRole(reqObj *CallChangeScreenSharingRoleRequestParameter) *CallChangeScreenSharingRoleRequestBuilder {
	bb := &CallChangeScreenSharingRoleRequestBuilder{BaseRequestBuilder: b.BaseRequestBuilder}
	bb.BaseRequestBuilder.baseURL += "/changeScreenSharingRole"
	bb.BaseRequestBuilder.requestObject = reqObj
	return bb
}

//
type CallChangeScreenSharingRoleRequest struct{ BaseRequest }

//
func (b *CallChangeScreenSharingRoleRequestBuilder) Request() *CallChangeScreenSharingRoleRequest {
	return &CallChangeScreenSharingRoleRequest{
		BaseRequest: BaseRequest{baseURL: b.baseURL, client: b.client, requestObject: b.requestObject},
	}
}

//
func (r *CallChangeScreenSharingRoleRequest) Post(ctx context.Context) error {
	return r.JSONRequest(ctx, "POST", "", r.requestObject, nil)
}

//
type CallKeepAliveRequestBuilder struct{ BaseRequestBuilder }

// KeepAlive action undocumented
func (b *CallRequestBuilder) KeepAlive(reqObj *CallKeepAliveRequestParameter) *CallKeepAliveRequestBuilder {
	bb := &CallKeepAliveRequestBuilder{BaseRequestBuilder: b.BaseRequestBuilder}
	bb.BaseRequestBuilder.baseURL += "/keepAlive"
	bb.BaseRequestBuilder.requestObject = reqObj
	return bb
}

//
type CallKeepAliveRequest struct{ BaseRequest }

//
func (b *CallKeepAliveRequestBuilder) Request() *CallKeepAliveRequest {
	return &CallKeepAliveRequest{
		BaseRequest: BaseRequest{baseURL: b.baseURL, client: b.client, requestObject: b.requestObject},
	}
}

//
func (r *CallKeepAliveRequest) Post(ctx context.Context) error {
	return r.JSONRequest(ctx, "POST", "", r.requestObject, nil)
}

//
type CallMuteRequestBuilder struct{ BaseRequestBuilder }

// Mute action undocumented
func (b *CallRequestBuilder) Mute(reqObj *CallMuteRequestParameter) *CallMuteRequestBuilder {
	bb := &CallMuteRequestBuilder{BaseRequestBuilder: b.BaseRequestBuilder}
	bb.BaseRequestBuilder.baseURL += "/mute"
	bb.BaseRequestBuilder.requestObject = reqObj
	return bb
}

//
type CallMuteRequest struct{ BaseRequest }

//
func (b *CallMuteRequestBuilder) Request() *CallMuteRequest {
	return &CallMuteRequest{
		BaseRequest: BaseRequest{baseURL: b.baseURL, client: b.client, requestObject: b.requestObject},
	}
}

//
func (r *CallMuteRequest) Post(ctx context.Context) (resObj *MuteParticipantOperation, err error) {
	err = r.JSONRequest(ctx, "POST", "", r.requestObject, &resObj)
	return
}

//
type CallPlayPromptRequestBuilder struct{ BaseRequestBuilder }

// PlayPrompt action undocumented
func (b *CallRequestBuilder) PlayPrompt(reqObj *CallPlayPromptRequestParameter) *CallPlayPromptRequestBuilder {
	bb := &CallPlayPromptRequestBuilder{BaseRequestBuilder: b.BaseRequestBuilder}
	bb.BaseRequestBuilder.baseURL += "/playPrompt"
	bb.BaseRequestBuilder.requestObject = reqObj
	return bb
}

//
type CallPlayPromptRequest struct{ BaseRequest }

//
func (b *CallPlayPromptRequestBuilder) Request() *CallPlayPromptRequest {
	return &CallPlayPromptRequest{
		BaseRequest: BaseRequest{baseURL: b.baseURL, client: b.client, requestObject: b.requestObject},
	}
}

//
func (r *CallPlayPromptRequest) Post(ctx context.Context) (resObj *PlayPromptOperation, err error) {
	err = r.JSONRequest(ctx, "POST", "", r.requestObject, &resObj)
	return
}

//
type CallRecordRequestBuilder struct{ BaseRequestBuilder }

// Record action undocumented
func (b *CallRequestBuilder) Record(reqObj *CallRecordRequestParameter) *CallRecordRequestBuilder {
	bb := &CallRecordRequestBuilder{BaseRequestBuilder: b.BaseRequestBuilder}
	bb.BaseRequestBuilder.baseURL += "/record"
	bb.BaseRequestBuilder.requestObject = reqObj
	return bb
}

//
type CallRecordRequest struct{ BaseRequest }

//
func (b *CallRecordRequestBuilder) Request() *CallRecordRequest {
	return &CallRecordRequest{
		BaseRequest: BaseRequest{baseURL: b.baseURL, client: b.client, requestObject: b.requestObject},
	}
}

//
func (r *CallRecordRequest) Post(ctx context.Context) (resObj *RecordOperation, err error) {
	err = r.JSONRequest(ctx, "POST", "", r.requestObject, &resObj)
	return
}

//
type CallRecordResponseRequestBuilder struct{ BaseRequestBuilder }

// RecordResponse action undocumented
func (b *CallRequestBuilder) RecordResponse(reqObj *CallRecordResponseRequestParameter) *CallRecordResponseRequestBuilder {
	bb := &CallRecordResponseRequestBuilder{BaseRequestBuilder: b.BaseRequestBuilder}
	bb.BaseRequestBuilder.baseURL += "/recordResponse"
	bb.BaseRequestBuilder.requestObject = reqObj
	return bb
}

//
type CallRecordResponseRequest struct{ BaseRequest }

//
func (b *CallRecordResponseRequestBuilder) Request() *CallRecordResponseRequest {
	return &CallRecordResponseRequest{
		BaseRequest: BaseRequest{baseURL: b.baseURL, client: b.client, requestObject: b.requestObject},
	}
}

//
func (r *CallRecordResponseRequest) Post(ctx context.Context) (resObj *RecordOperation, err error) {
	err = r.JSONRequest(ctx, "POST", "", r.requestObject, &resObj)
	return
}

//
type CallRedirectRequestBuilder struct{ BaseRequestBuilder }

// Redirect action undocumented
func (b *CallRequestBuilder) Redirect(reqObj *CallRedirectRequestParameter) *CallRedirectRequestBuilder {
	bb := &CallRedirectRequestBuilder{BaseRequestBuilder: b.BaseRequestBuilder}
	bb.BaseRequestBuilder.baseURL += "/redirect"
	bb.BaseRequestBuilder.requestObject = reqObj
	return bb
}

//
type CallRedirectRequest struct{ BaseRequest }

//
func (b *CallRedirectRequestBuilder) Request() *CallRedirectRequest {
	return &CallRedirectRequest{
		BaseRequest: BaseRequest{baseURL: b.baseURL, client: b.client, requestObject: b.requestObject},
	}
}

//
func (r *CallRedirectRequest) Post(ctx context.Context) error {
	return r.JSONRequest(ctx, "POST", "", r.requestObject, nil)
}

//
type CallRejectRequestBuilder struct{ BaseRequestBuilder }

// Reject action undocumented
func (b *CallRequestBuilder) Reject(reqObj *CallRejectRequestParameter) *CallRejectRequestBuilder {
	bb := &CallRejectRequestBuilder{BaseRequestBuilder: b.BaseRequestBuilder}
	bb.BaseRequestBuilder.baseURL += "/reject"
	bb.BaseRequestBuilder.requestObject = reqObj
	return bb
}

//
type CallRejectRequest struct{ BaseRequest }

//
func (b *CallRejectRequestBuilder) Request() *CallRejectRequest {
	return &CallRejectRequest{
		BaseRequest: BaseRequest{baseURL: b.baseURL, client: b.client, requestObject: b.requestObject},
	}
}

//
func (r *CallRejectRequest) Post(ctx context.Context) error {
	return r.JSONRequest(ctx, "POST", "", r.requestObject, nil)
}

//
type CallSubscribeToToneRequestBuilder struct{ BaseRequestBuilder }

// SubscribeToTone action undocumented
func (b *CallRequestBuilder) SubscribeToTone(reqObj *CallSubscribeToToneRequestParameter) *CallSubscribeToToneRequestBuilder {
	bb := &CallSubscribeToToneRequestBuilder{BaseRequestBuilder: b.BaseRequestBuilder}
	bb.BaseRequestBuilder.baseURL += "/subscribeToTone"
	bb.BaseRequestBuilder.requestObject = reqObj
	return bb
}

//
type CallSubscribeToToneRequest struct{ BaseRequest }

//
func (b *CallSubscribeToToneRequestBuilder) Request() *CallSubscribeToToneRequest {
	return &CallSubscribeToToneRequest{
		BaseRequest: BaseRequest{baseURL: b.baseURL, client: b.client, requestObject: b.requestObject},
	}
}

//
func (r *CallSubscribeToToneRequest) Post(ctx context.Context) (resObj *SubscribeToToneOperation, err error) {
	err = r.JSONRequest(ctx, "POST", "", r.requestObject, &resObj)
	return
}

//
type CallTransferRequestBuilder struct{ BaseRequestBuilder }

// Transfer action undocumented
func (b *CallRequestBuilder) Transfer(reqObj *CallTransferRequestParameter) *CallTransferRequestBuilder {
	bb := &CallTransferRequestBuilder{BaseRequestBuilder: b.BaseRequestBuilder}
	bb.BaseRequestBuilder.baseURL += "/transfer"
	bb.BaseRequestBuilder.requestObject = reqObj
	return bb
}

//
type CallTransferRequest struct{ BaseRequest }

//
func (b *CallTransferRequestBuilder) Request() *CallTransferRequest {
	return &CallTransferRequest{
		BaseRequest: BaseRequest{baseURL: b.baseURL, client: b.client, requestObject: b.requestObject},
	}
}

//
func (r *CallTransferRequest) Post(ctx context.Context) error {
	return r.JSONRequest(ctx, "POST", "", r.requestObject, nil)
}

//
type CallUnmuteRequestBuilder struct{ BaseRequestBuilder }

// Unmute action undocumented
func (b *CallRequestBuilder) Unmute(reqObj *CallUnmuteRequestParameter) *CallUnmuteRequestBuilder {
	bb := &CallUnmuteRequestBuilder{BaseRequestBuilder: b.BaseRequestBuilder}
	bb.BaseRequestBuilder.baseURL += "/unmute"
	bb.BaseRequestBuilder.requestObject = reqObj
	return bb
}

//
type CallUnmuteRequest struct{ BaseRequest }

//
func (b *CallUnmuteRequestBuilder) Request() *CallUnmuteRequest {
	return &CallUnmuteRequest{
		BaseRequest: BaseRequest{baseURL: b.baseURL, client: b.client, requestObject: b.requestObject},
	}
}

//
func (r *CallUnmuteRequest) Post(ctx context.Context) (resObj *UnmuteParticipantOperation, err error) {
	err = r.JSONRequest(ctx, "POST", "", r.requestObject, &resObj)
	return
}

//
type CallUpdateRecordingStatusRequestBuilder struct{ BaseRequestBuilder }

// UpdateRecordingStatus action undocumented
func (b *CallRequestBuilder) UpdateRecordingStatus(reqObj *CallUpdateRecordingStatusRequestParameter) *CallUpdateRecordingStatusRequestBuilder {
	bb := &CallUpdateRecordingStatusRequestBuilder{BaseRequestBuilder: b.BaseRequestBuilder}
	bb.BaseRequestBuilder.baseURL += "/updateRecordingStatus"
	bb.BaseRequestBuilder.requestObject = reqObj
	return bb
}

//
type CallUpdateRecordingStatusRequest struct{ BaseRequest }

//
func (b *CallUpdateRecordingStatusRequestBuilder) Request() *CallUpdateRecordingStatusRequest {
	return &CallUpdateRecordingStatusRequest{
		BaseRequest: BaseRequest{baseURL: b.baseURL, client: b.client, requestObject: b.requestObject},
	}
}

//
func (r *CallUpdateRecordingStatusRequest) Post(ctx context.Context) (resObj *UpdateRecordingStatusOperation, err error) {
	err = r.JSONRequest(ctx, "POST", "", r.requestObject, &resObj)
	return
}