github.com/twilio/twilio-go@v1.20.1/rest/taskrouter/v1/workspaces_tasks_reservations.go (about)

     1  /*
     2   * This code was generated by
     3   * ___ _ _ _ _ _    _ ____    ____ ____ _    ____ ____ _  _ ____ ____ ____ ___ __   __
     4   *  |  | | | | |    | |  | __ |  | |__| | __ | __ |___ |\ | |___ |__/ |__|  | |  | |__/
     5   *  |  |_|_| | |___ | |__|    |__| |  | |    |__] |___ | \| |___ |  \ |  |  | |__| |  \
     6   *
     7   * Twilio - Taskrouter
     8   * This is the public Twilio REST API.
     9   *
    10   * NOTE: This class is auto generated by OpenAPI Generator.
    11   * https://openapi-generator.tech
    12   * Do not edit the class manually.
    13   */
    14  
    15  package openapi
    16  
    17  import (
    18  	"encoding/json"
    19  	"fmt"
    20  	"net/url"
    21  	"strings"
    22  
    23  	"github.com/twilio/twilio-go/client"
    24  )
    25  
    26  //
    27  func (c *ApiService) FetchTaskReservation(WorkspaceSid string, TaskSid string, Sid string) (*TaskrouterV1TaskReservation, error) {
    28  	path := "/v1/Workspaces/{WorkspaceSid}/Tasks/{TaskSid}/Reservations/{Sid}"
    29  	path = strings.Replace(path, "{"+"WorkspaceSid"+"}", WorkspaceSid, -1)
    30  	path = strings.Replace(path, "{"+"TaskSid"+"}", TaskSid, -1)
    31  	path = strings.Replace(path, "{"+"Sid"+"}", Sid, -1)
    32  
    33  	data := url.Values{}
    34  	headers := make(map[string]interface{})
    35  
    36  	resp, err := c.requestHandler.Get(c.baseURL+path, data, headers)
    37  	if err != nil {
    38  		return nil, err
    39  	}
    40  
    41  	defer resp.Body.Close()
    42  
    43  	ps := &TaskrouterV1TaskReservation{}
    44  	if err := json.NewDecoder(resp.Body).Decode(ps); err != nil {
    45  		return nil, err
    46  	}
    47  
    48  	return ps, err
    49  }
    50  
    51  // Optional parameters for the method 'ListTaskReservation'
    52  type ListTaskReservationParams struct {
    53  	// Returns the list of reservations for a task with a specified ReservationStatus.  Can be: `pending`, `accepted`, `rejected`, or `timeout`.
    54  	ReservationStatus *string `json:"ReservationStatus,omitempty"`
    55  	// The SID of the reserved Worker resource to read.
    56  	WorkerSid *string `json:"WorkerSid,omitempty"`
    57  	// How many resources to return in each list page. The default is 50, and the maximum is 1000.
    58  	PageSize *int `json:"PageSize,omitempty"`
    59  	// Max number of records to return.
    60  	Limit *int `json:"limit,omitempty"`
    61  }
    62  
    63  func (params *ListTaskReservationParams) SetReservationStatus(ReservationStatus string) *ListTaskReservationParams {
    64  	params.ReservationStatus = &ReservationStatus
    65  	return params
    66  }
    67  func (params *ListTaskReservationParams) SetWorkerSid(WorkerSid string) *ListTaskReservationParams {
    68  	params.WorkerSid = &WorkerSid
    69  	return params
    70  }
    71  func (params *ListTaskReservationParams) SetPageSize(PageSize int) *ListTaskReservationParams {
    72  	params.PageSize = &PageSize
    73  	return params
    74  }
    75  func (params *ListTaskReservationParams) SetLimit(Limit int) *ListTaskReservationParams {
    76  	params.Limit = &Limit
    77  	return params
    78  }
    79  
    80  // Retrieve a single page of TaskReservation records from the API. Request is executed immediately.
    81  func (c *ApiService) PageTaskReservation(WorkspaceSid string, TaskSid string, params *ListTaskReservationParams, pageToken, pageNumber string) (*ListTaskReservationResponse, error) {
    82  	path := "/v1/Workspaces/{WorkspaceSid}/Tasks/{TaskSid}/Reservations"
    83  
    84  	path = strings.Replace(path, "{"+"WorkspaceSid"+"}", WorkspaceSid, -1)
    85  	path = strings.Replace(path, "{"+"TaskSid"+"}", TaskSid, -1)
    86  
    87  	data := url.Values{}
    88  	headers := make(map[string]interface{})
    89  
    90  	if params != nil && params.ReservationStatus != nil {
    91  		data.Set("ReservationStatus", *params.ReservationStatus)
    92  	}
    93  	if params != nil && params.WorkerSid != nil {
    94  		data.Set("WorkerSid", *params.WorkerSid)
    95  	}
    96  	if params != nil && params.PageSize != nil {
    97  		data.Set("PageSize", fmt.Sprint(*params.PageSize))
    98  	}
    99  
   100  	if pageToken != "" {
   101  		data.Set("PageToken", pageToken)
   102  	}
   103  	if pageNumber != "" {
   104  		data.Set("Page", pageNumber)
   105  	}
   106  
   107  	resp, err := c.requestHandler.Get(c.baseURL+path, data, headers)
   108  	if err != nil {
   109  		return nil, err
   110  	}
   111  
   112  	defer resp.Body.Close()
   113  
   114  	ps := &ListTaskReservationResponse{}
   115  	if err := json.NewDecoder(resp.Body).Decode(ps); err != nil {
   116  		return nil, err
   117  	}
   118  
   119  	return ps, err
   120  }
   121  
   122  // Lists TaskReservation records from the API as a list. Unlike stream, this operation is eager and loads 'limit' records into memory before returning.
   123  func (c *ApiService) ListTaskReservation(WorkspaceSid string, TaskSid string, params *ListTaskReservationParams) ([]TaskrouterV1TaskReservation, error) {
   124  	response, errors := c.StreamTaskReservation(WorkspaceSid, TaskSid, params)
   125  
   126  	records := make([]TaskrouterV1TaskReservation, 0)
   127  	for record := range response {
   128  		records = append(records, record)
   129  	}
   130  
   131  	if err := <-errors; err != nil {
   132  		return nil, err
   133  	}
   134  
   135  	return records, nil
   136  }
   137  
   138  // Streams TaskReservation records from the API as a channel stream. This operation lazily loads records as efficiently as possible until the limit is reached.
   139  func (c *ApiService) StreamTaskReservation(WorkspaceSid string, TaskSid string, params *ListTaskReservationParams) (chan TaskrouterV1TaskReservation, chan error) {
   140  	if params == nil {
   141  		params = &ListTaskReservationParams{}
   142  	}
   143  	params.SetPageSize(client.ReadLimits(params.PageSize, params.Limit))
   144  
   145  	recordChannel := make(chan TaskrouterV1TaskReservation, 1)
   146  	errorChannel := make(chan error, 1)
   147  
   148  	response, err := c.PageTaskReservation(WorkspaceSid, TaskSid, params, "", "")
   149  	if err != nil {
   150  		errorChannel <- err
   151  		close(recordChannel)
   152  		close(errorChannel)
   153  	} else {
   154  		go c.streamTaskReservation(response, params, recordChannel, errorChannel)
   155  	}
   156  
   157  	return recordChannel, errorChannel
   158  }
   159  
   160  func (c *ApiService) streamTaskReservation(response *ListTaskReservationResponse, params *ListTaskReservationParams, recordChannel chan TaskrouterV1TaskReservation, errorChannel chan error) {
   161  	curRecord := 1
   162  
   163  	for response != nil {
   164  		responseRecords := response.Reservations
   165  		for item := range responseRecords {
   166  			recordChannel <- responseRecords[item]
   167  			curRecord += 1
   168  			if params.Limit != nil && *params.Limit < curRecord {
   169  				close(recordChannel)
   170  				close(errorChannel)
   171  				return
   172  			}
   173  		}
   174  
   175  		record, err := client.GetNext(c.baseURL, response, c.getNextListTaskReservationResponse)
   176  		if err != nil {
   177  			errorChannel <- err
   178  			break
   179  		} else if record == nil {
   180  			break
   181  		}
   182  
   183  		response = record.(*ListTaskReservationResponse)
   184  	}
   185  
   186  	close(recordChannel)
   187  	close(errorChannel)
   188  }
   189  
   190  func (c *ApiService) getNextListTaskReservationResponse(nextPageUrl string) (interface{}, error) {
   191  	if nextPageUrl == "" {
   192  		return nil, nil
   193  	}
   194  	resp, err := c.requestHandler.Get(nextPageUrl, nil, nil)
   195  	if err != nil {
   196  		return nil, err
   197  	}
   198  
   199  	defer resp.Body.Close()
   200  
   201  	ps := &ListTaskReservationResponse{}
   202  	if err := json.NewDecoder(resp.Body).Decode(ps); err != nil {
   203  		return nil, err
   204  	}
   205  	return ps, nil
   206  }
   207  
   208  // Optional parameters for the method 'UpdateTaskReservation'
   209  type UpdateTaskReservationParams struct {
   210  	// The If-Match HTTP request header
   211  	IfMatch *string `json:"If-Match,omitempty"`
   212  	//
   213  	ReservationStatus *string `json:"ReservationStatus,omitempty"`
   214  	// The new worker activity SID if rejecting a reservation.
   215  	WorkerActivitySid *string `json:"WorkerActivitySid,omitempty"`
   216  	// The assignment instruction for reservation.
   217  	Instruction *string `json:"Instruction,omitempty"`
   218  	// The SID of the Activity resource to start after executing a Dequeue instruction.
   219  	DequeuePostWorkActivitySid *string `json:"DequeuePostWorkActivitySid,omitempty"`
   220  	// The Caller ID of the call to the worker when executing a Dequeue instruction.
   221  	DequeueFrom *string `json:"DequeueFrom,omitempty"`
   222  	// Whether to record both legs of a call when executing a Dequeue instruction or which leg to record.
   223  	DequeueRecord *string `json:"DequeueRecord,omitempty"`
   224  	// Timeout for call when executing a Dequeue instruction.
   225  	DequeueTimeout *int `json:"DequeueTimeout,omitempty"`
   226  	// The Contact URI of the worker when executing a Dequeue instruction. Can be the URI of the Twilio Client, the SIP URI for Programmable SIP, or the [E.164](https://www.twilio.com/docs/glossary/what-e164) formatted phone number, depending on the destination.
   227  	DequeueTo *string `json:"DequeueTo,omitempty"`
   228  	// The Callback URL for completed call event when executing a Dequeue instruction.
   229  	DequeueStatusCallbackUrl *string `json:"DequeueStatusCallbackUrl,omitempty"`
   230  	// The Caller ID of the outbound call when executing a Call instruction.
   231  	CallFrom *string `json:"CallFrom,omitempty"`
   232  	// Whether to record both legs of a call when executing a Call instruction or which leg to record.
   233  	CallRecord *string `json:"CallRecord,omitempty"`
   234  	// Timeout for call when executing a Call instruction.
   235  	CallTimeout *int `json:"CallTimeout,omitempty"`
   236  	// The Contact URI of the worker when executing a Call instruction.  Can be the URI of the Twilio Client, the SIP URI for Programmable SIP, or the [E.164](https://www.twilio.com/docs/glossary/what-e164) formatted phone number, depending on the destination.
   237  	CallTo *string `json:"CallTo,omitempty"`
   238  	// TwiML URI executed on answering the worker's leg as a result of the Call instruction.
   239  	CallUrl *string `json:"CallUrl,omitempty"`
   240  	// The URL to call  for the completed call event when executing a Call instruction.
   241  	CallStatusCallbackUrl *string `json:"CallStatusCallbackUrl,omitempty"`
   242  	// Whether to accept a reservation when executing a Call instruction.
   243  	CallAccept *bool `json:"CallAccept,omitempty"`
   244  	// The Call SID of the call parked in the queue when executing a Redirect instruction.
   245  	RedirectCallSid *string `json:"RedirectCallSid,omitempty"`
   246  	// Whether the reservation should be accepted when executing a Redirect instruction.
   247  	RedirectAccept *bool `json:"RedirectAccept,omitempty"`
   248  	// TwiML URI to redirect the call to when executing the Redirect instruction.
   249  	RedirectUrl *string `json:"RedirectUrl,omitempty"`
   250  	// The Contact URI of the worker when executing a Conference instruction. Can be the URI of the Twilio Client, the SIP URI for Programmable SIP, or the [E.164](https://www.twilio.com/docs/glossary/what-e164) formatted phone number, depending on the destination.
   251  	To *string `json:"To,omitempty"`
   252  	// The Caller ID of the call to the worker when executing a Conference instruction.
   253  	From *string `json:"From,omitempty"`
   254  	// The URL we should call using the `status_callback_method` to send status information to your application.
   255  	StatusCallback *string `json:"StatusCallback,omitempty"`
   256  	// The HTTP method we should use to call `status_callback`. Can be: `POST` or `GET` and the default is `POST`.
   257  	StatusCallbackMethod *string `json:"StatusCallbackMethod,omitempty"`
   258  	// The call progress events that we will send to `status_callback`. Can be: `initiated`, `ringing`, `answered`, or `completed`.
   259  	StatusCallbackEvent *[]string `json:"StatusCallbackEvent,omitempty"`
   260  	// Timeout for call when executing a Conference instruction.
   261  	Timeout *int `json:"Timeout,omitempty"`
   262  	// Whether to record the participant and their conferences, including the time between conferences. The default is `false`.
   263  	Record *bool `json:"Record,omitempty"`
   264  	// Whether the agent is muted in the conference. The default is `false`.
   265  	Muted *bool `json:"Muted,omitempty"`
   266  	// Whether to play a notification beep when the participant joins or when to play a beep. Can be: `true`, `false`, `onEnter`, or `onExit`. The default value is `true`.
   267  	Beep *string `json:"Beep,omitempty"`
   268  	// Whether to start the conference when the participant joins, if it has not already started. The default is `true`. If `false` and the conference has not started, the participant is muted and hears background music until another participant starts the conference.
   269  	StartConferenceOnEnter *bool `json:"StartConferenceOnEnter,omitempty"`
   270  	// Whether to end the conference when the agent leaves.
   271  	EndConferenceOnExit *bool `json:"EndConferenceOnExit,omitempty"`
   272  	// The URL we should call using the `wait_method` for the music to play while participants are waiting for the conference to start. The default value is the URL of our standard hold music. [Learn more about hold music](https://www.twilio.com/labs/twimlets/holdmusic).
   273  	WaitUrl *string `json:"WaitUrl,omitempty"`
   274  	// The HTTP method we should use to call `wait_url`. Can be `GET` or `POST` and the default is `POST`. When using a static audio file, this should be `GET` so that we can cache the file.
   275  	WaitMethod *string `json:"WaitMethod,omitempty"`
   276  	// Whether to allow an agent to hear the state of the outbound call, including ringing or disconnect messages. The default is `true`.
   277  	EarlyMedia *bool `json:"EarlyMedia,omitempty"`
   278  	// The maximum number of participants in the conference. Can be a positive integer from `2` to `250`. The default value is `250`.
   279  	MaxParticipants *int `json:"MaxParticipants,omitempty"`
   280  	// The URL we should call using the `conference_status_callback_method` when the conference events in `conference_status_callback_event` occur. Only the value set by the first participant to join the conference is used. Subsequent `conference_status_callback` values are ignored.
   281  	ConferenceStatusCallback *string `json:"ConferenceStatusCallback,omitempty"`
   282  	// The HTTP method we should use to call `conference_status_callback`. Can be: `GET` or `POST` and defaults to `POST`.
   283  	ConferenceStatusCallbackMethod *string `json:"ConferenceStatusCallbackMethod,omitempty"`
   284  	// The conference status events that we will send to `conference_status_callback`. Can be: `start`, `end`, `join`, `leave`, `mute`, `hold`, `speaker`.
   285  	ConferenceStatusCallbackEvent *[]string `json:"ConferenceStatusCallbackEvent,omitempty"`
   286  	// Whether to record the conference the participant is joining or when to record the conference. Can be: `true`, `false`, `record-from-start`, and `do-not-record`. The default value is `false`.
   287  	ConferenceRecord *string `json:"ConferenceRecord,omitempty"`
   288  	// How to trim the leading and trailing silence from your recorded conference audio files. Can be: `trim-silence` or `do-not-trim` and defaults to `trim-silence`.
   289  	ConferenceTrim *string `json:"ConferenceTrim,omitempty"`
   290  	// The recording channels for the final recording. Can be: `mono` or `dual` and the default is `mono`.
   291  	RecordingChannels *string `json:"RecordingChannels,omitempty"`
   292  	// The URL that we should call using the `recording_status_callback_method` when the recording status changes.
   293  	RecordingStatusCallback *string `json:"RecordingStatusCallback,omitempty"`
   294  	// The HTTP method we should use when we call `recording_status_callback`. Can be: `GET` or `POST` and defaults to `POST`.
   295  	RecordingStatusCallbackMethod *string `json:"RecordingStatusCallbackMethod,omitempty"`
   296  	// The URL we should call using the `conference_recording_status_callback_method` when the conference recording is available.
   297  	ConferenceRecordingStatusCallback *string `json:"ConferenceRecordingStatusCallback,omitempty"`
   298  	// The HTTP method we should use to call `conference_recording_status_callback`. Can be: `GET` or `POST` and defaults to `POST`.
   299  	ConferenceRecordingStatusCallbackMethod *string `json:"ConferenceRecordingStatusCallbackMethod,omitempty"`
   300  	// The [region](https://support.twilio.com/hc/en-us/articles/223132167-How-global-low-latency-routing-and-region-selection-work-for-conferences-and-Client-calls) where we should mix the recorded audio. Can be:`us1`, `ie1`, `de1`, `sg1`, `br1`, `au1`, or `jp1`.
   301  	Region *string `json:"Region,omitempty"`
   302  	// The SIP username used for authentication.
   303  	SipAuthUsername *string `json:"SipAuthUsername,omitempty"`
   304  	// The SIP password for authentication.
   305  	SipAuthPassword *string `json:"SipAuthPassword,omitempty"`
   306  	// The Call progress events sent via webhooks as a result of a Dequeue instruction.
   307  	DequeueStatusCallbackEvent *[]string `json:"DequeueStatusCallbackEvent,omitempty"`
   308  	// The new worker activity SID after executing a Conference instruction.
   309  	PostWorkActivitySid *string `json:"PostWorkActivitySid,omitempty"`
   310  	//
   311  	SupervisorMode *string `json:"SupervisorMode,omitempty"`
   312  	// The Supervisor SID/URI when executing the Supervise instruction.
   313  	Supervisor *string `json:"Supervisor,omitempty"`
   314  	// Whether to end the conference when the customer leaves.
   315  	EndConferenceOnCustomerExit *bool `json:"EndConferenceOnCustomerExit,omitempty"`
   316  	// Whether to play a notification beep when the customer joins.
   317  	BeepOnCustomerEntrance *bool `json:"BeepOnCustomerEntrance,omitempty"`
   318  	// The jitter buffer size for conference. Can be: `small`, `medium`, `large`, `off`.
   319  	JitterBufferSize *string `json:"JitterBufferSize,omitempty"`
   320  }
   321  
   322  func (params *UpdateTaskReservationParams) SetIfMatch(IfMatch string) *UpdateTaskReservationParams {
   323  	params.IfMatch = &IfMatch
   324  	return params
   325  }
   326  func (params *UpdateTaskReservationParams) SetReservationStatus(ReservationStatus string) *UpdateTaskReservationParams {
   327  	params.ReservationStatus = &ReservationStatus
   328  	return params
   329  }
   330  func (params *UpdateTaskReservationParams) SetWorkerActivitySid(WorkerActivitySid string) *UpdateTaskReservationParams {
   331  	params.WorkerActivitySid = &WorkerActivitySid
   332  	return params
   333  }
   334  func (params *UpdateTaskReservationParams) SetInstruction(Instruction string) *UpdateTaskReservationParams {
   335  	params.Instruction = &Instruction
   336  	return params
   337  }
   338  func (params *UpdateTaskReservationParams) SetDequeuePostWorkActivitySid(DequeuePostWorkActivitySid string) *UpdateTaskReservationParams {
   339  	params.DequeuePostWorkActivitySid = &DequeuePostWorkActivitySid
   340  	return params
   341  }
   342  func (params *UpdateTaskReservationParams) SetDequeueFrom(DequeueFrom string) *UpdateTaskReservationParams {
   343  	params.DequeueFrom = &DequeueFrom
   344  	return params
   345  }
   346  func (params *UpdateTaskReservationParams) SetDequeueRecord(DequeueRecord string) *UpdateTaskReservationParams {
   347  	params.DequeueRecord = &DequeueRecord
   348  	return params
   349  }
   350  func (params *UpdateTaskReservationParams) SetDequeueTimeout(DequeueTimeout int) *UpdateTaskReservationParams {
   351  	params.DequeueTimeout = &DequeueTimeout
   352  	return params
   353  }
   354  func (params *UpdateTaskReservationParams) SetDequeueTo(DequeueTo string) *UpdateTaskReservationParams {
   355  	params.DequeueTo = &DequeueTo
   356  	return params
   357  }
   358  func (params *UpdateTaskReservationParams) SetDequeueStatusCallbackUrl(DequeueStatusCallbackUrl string) *UpdateTaskReservationParams {
   359  	params.DequeueStatusCallbackUrl = &DequeueStatusCallbackUrl
   360  	return params
   361  }
   362  func (params *UpdateTaskReservationParams) SetCallFrom(CallFrom string) *UpdateTaskReservationParams {
   363  	params.CallFrom = &CallFrom
   364  	return params
   365  }
   366  func (params *UpdateTaskReservationParams) SetCallRecord(CallRecord string) *UpdateTaskReservationParams {
   367  	params.CallRecord = &CallRecord
   368  	return params
   369  }
   370  func (params *UpdateTaskReservationParams) SetCallTimeout(CallTimeout int) *UpdateTaskReservationParams {
   371  	params.CallTimeout = &CallTimeout
   372  	return params
   373  }
   374  func (params *UpdateTaskReservationParams) SetCallTo(CallTo string) *UpdateTaskReservationParams {
   375  	params.CallTo = &CallTo
   376  	return params
   377  }
   378  func (params *UpdateTaskReservationParams) SetCallUrl(CallUrl string) *UpdateTaskReservationParams {
   379  	params.CallUrl = &CallUrl
   380  	return params
   381  }
   382  func (params *UpdateTaskReservationParams) SetCallStatusCallbackUrl(CallStatusCallbackUrl string) *UpdateTaskReservationParams {
   383  	params.CallStatusCallbackUrl = &CallStatusCallbackUrl
   384  	return params
   385  }
   386  func (params *UpdateTaskReservationParams) SetCallAccept(CallAccept bool) *UpdateTaskReservationParams {
   387  	params.CallAccept = &CallAccept
   388  	return params
   389  }
   390  func (params *UpdateTaskReservationParams) SetRedirectCallSid(RedirectCallSid string) *UpdateTaskReservationParams {
   391  	params.RedirectCallSid = &RedirectCallSid
   392  	return params
   393  }
   394  func (params *UpdateTaskReservationParams) SetRedirectAccept(RedirectAccept bool) *UpdateTaskReservationParams {
   395  	params.RedirectAccept = &RedirectAccept
   396  	return params
   397  }
   398  func (params *UpdateTaskReservationParams) SetRedirectUrl(RedirectUrl string) *UpdateTaskReservationParams {
   399  	params.RedirectUrl = &RedirectUrl
   400  	return params
   401  }
   402  func (params *UpdateTaskReservationParams) SetTo(To string) *UpdateTaskReservationParams {
   403  	params.To = &To
   404  	return params
   405  }
   406  func (params *UpdateTaskReservationParams) SetFrom(From string) *UpdateTaskReservationParams {
   407  	params.From = &From
   408  	return params
   409  }
   410  func (params *UpdateTaskReservationParams) SetStatusCallback(StatusCallback string) *UpdateTaskReservationParams {
   411  	params.StatusCallback = &StatusCallback
   412  	return params
   413  }
   414  func (params *UpdateTaskReservationParams) SetStatusCallbackMethod(StatusCallbackMethod string) *UpdateTaskReservationParams {
   415  	params.StatusCallbackMethod = &StatusCallbackMethod
   416  	return params
   417  }
   418  func (params *UpdateTaskReservationParams) SetStatusCallbackEvent(StatusCallbackEvent []string) *UpdateTaskReservationParams {
   419  	params.StatusCallbackEvent = &StatusCallbackEvent
   420  	return params
   421  }
   422  func (params *UpdateTaskReservationParams) SetTimeout(Timeout int) *UpdateTaskReservationParams {
   423  	params.Timeout = &Timeout
   424  	return params
   425  }
   426  func (params *UpdateTaskReservationParams) SetRecord(Record bool) *UpdateTaskReservationParams {
   427  	params.Record = &Record
   428  	return params
   429  }
   430  func (params *UpdateTaskReservationParams) SetMuted(Muted bool) *UpdateTaskReservationParams {
   431  	params.Muted = &Muted
   432  	return params
   433  }
   434  func (params *UpdateTaskReservationParams) SetBeep(Beep string) *UpdateTaskReservationParams {
   435  	params.Beep = &Beep
   436  	return params
   437  }
   438  func (params *UpdateTaskReservationParams) SetStartConferenceOnEnter(StartConferenceOnEnter bool) *UpdateTaskReservationParams {
   439  	params.StartConferenceOnEnter = &StartConferenceOnEnter
   440  	return params
   441  }
   442  func (params *UpdateTaskReservationParams) SetEndConferenceOnExit(EndConferenceOnExit bool) *UpdateTaskReservationParams {
   443  	params.EndConferenceOnExit = &EndConferenceOnExit
   444  	return params
   445  }
   446  func (params *UpdateTaskReservationParams) SetWaitUrl(WaitUrl string) *UpdateTaskReservationParams {
   447  	params.WaitUrl = &WaitUrl
   448  	return params
   449  }
   450  func (params *UpdateTaskReservationParams) SetWaitMethod(WaitMethod string) *UpdateTaskReservationParams {
   451  	params.WaitMethod = &WaitMethod
   452  	return params
   453  }
   454  func (params *UpdateTaskReservationParams) SetEarlyMedia(EarlyMedia bool) *UpdateTaskReservationParams {
   455  	params.EarlyMedia = &EarlyMedia
   456  	return params
   457  }
   458  func (params *UpdateTaskReservationParams) SetMaxParticipants(MaxParticipants int) *UpdateTaskReservationParams {
   459  	params.MaxParticipants = &MaxParticipants
   460  	return params
   461  }
   462  func (params *UpdateTaskReservationParams) SetConferenceStatusCallback(ConferenceStatusCallback string) *UpdateTaskReservationParams {
   463  	params.ConferenceStatusCallback = &ConferenceStatusCallback
   464  	return params
   465  }
   466  func (params *UpdateTaskReservationParams) SetConferenceStatusCallbackMethod(ConferenceStatusCallbackMethod string) *UpdateTaskReservationParams {
   467  	params.ConferenceStatusCallbackMethod = &ConferenceStatusCallbackMethod
   468  	return params
   469  }
   470  func (params *UpdateTaskReservationParams) SetConferenceStatusCallbackEvent(ConferenceStatusCallbackEvent []string) *UpdateTaskReservationParams {
   471  	params.ConferenceStatusCallbackEvent = &ConferenceStatusCallbackEvent
   472  	return params
   473  }
   474  func (params *UpdateTaskReservationParams) SetConferenceRecord(ConferenceRecord string) *UpdateTaskReservationParams {
   475  	params.ConferenceRecord = &ConferenceRecord
   476  	return params
   477  }
   478  func (params *UpdateTaskReservationParams) SetConferenceTrim(ConferenceTrim string) *UpdateTaskReservationParams {
   479  	params.ConferenceTrim = &ConferenceTrim
   480  	return params
   481  }
   482  func (params *UpdateTaskReservationParams) SetRecordingChannels(RecordingChannels string) *UpdateTaskReservationParams {
   483  	params.RecordingChannels = &RecordingChannels
   484  	return params
   485  }
   486  func (params *UpdateTaskReservationParams) SetRecordingStatusCallback(RecordingStatusCallback string) *UpdateTaskReservationParams {
   487  	params.RecordingStatusCallback = &RecordingStatusCallback
   488  	return params
   489  }
   490  func (params *UpdateTaskReservationParams) SetRecordingStatusCallbackMethod(RecordingStatusCallbackMethod string) *UpdateTaskReservationParams {
   491  	params.RecordingStatusCallbackMethod = &RecordingStatusCallbackMethod
   492  	return params
   493  }
   494  func (params *UpdateTaskReservationParams) SetConferenceRecordingStatusCallback(ConferenceRecordingStatusCallback string) *UpdateTaskReservationParams {
   495  	params.ConferenceRecordingStatusCallback = &ConferenceRecordingStatusCallback
   496  	return params
   497  }
   498  func (params *UpdateTaskReservationParams) SetConferenceRecordingStatusCallbackMethod(ConferenceRecordingStatusCallbackMethod string) *UpdateTaskReservationParams {
   499  	params.ConferenceRecordingStatusCallbackMethod = &ConferenceRecordingStatusCallbackMethod
   500  	return params
   501  }
   502  func (params *UpdateTaskReservationParams) SetRegion(Region string) *UpdateTaskReservationParams {
   503  	params.Region = &Region
   504  	return params
   505  }
   506  func (params *UpdateTaskReservationParams) SetSipAuthUsername(SipAuthUsername string) *UpdateTaskReservationParams {
   507  	params.SipAuthUsername = &SipAuthUsername
   508  	return params
   509  }
   510  func (params *UpdateTaskReservationParams) SetSipAuthPassword(SipAuthPassword string) *UpdateTaskReservationParams {
   511  	params.SipAuthPassword = &SipAuthPassword
   512  	return params
   513  }
   514  func (params *UpdateTaskReservationParams) SetDequeueStatusCallbackEvent(DequeueStatusCallbackEvent []string) *UpdateTaskReservationParams {
   515  	params.DequeueStatusCallbackEvent = &DequeueStatusCallbackEvent
   516  	return params
   517  }
   518  func (params *UpdateTaskReservationParams) SetPostWorkActivitySid(PostWorkActivitySid string) *UpdateTaskReservationParams {
   519  	params.PostWorkActivitySid = &PostWorkActivitySid
   520  	return params
   521  }
   522  func (params *UpdateTaskReservationParams) SetSupervisorMode(SupervisorMode string) *UpdateTaskReservationParams {
   523  	params.SupervisorMode = &SupervisorMode
   524  	return params
   525  }
   526  func (params *UpdateTaskReservationParams) SetSupervisor(Supervisor string) *UpdateTaskReservationParams {
   527  	params.Supervisor = &Supervisor
   528  	return params
   529  }
   530  func (params *UpdateTaskReservationParams) SetEndConferenceOnCustomerExit(EndConferenceOnCustomerExit bool) *UpdateTaskReservationParams {
   531  	params.EndConferenceOnCustomerExit = &EndConferenceOnCustomerExit
   532  	return params
   533  }
   534  func (params *UpdateTaskReservationParams) SetBeepOnCustomerEntrance(BeepOnCustomerEntrance bool) *UpdateTaskReservationParams {
   535  	params.BeepOnCustomerEntrance = &BeepOnCustomerEntrance
   536  	return params
   537  }
   538  func (params *UpdateTaskReservationParams) SetJitterBufferSize(JitterBufferSize string) *UpdateTaskReservationParams {
   539  	params.JitterBufferSize = &JitterBufferSize
   540  	return params
   541  }
   542  
   543  //
   544  func (c *ApiService) UpdateTaskReservation(WorkspaceSid string, TaskSid string, Sid string, params *UpdateTaskReservationParams) (*TaskrouterV1TaskReservation, error) {
   545  	path := "/v1/Workspaces/{WorkspaceSid}/Tasks/{TaskSid}/Reservations/{Sid}"
   546  	path = strings.Replace(path, "{"+"WorkspaceSid"+"}", WorkspaceSid, -1)
   547  	path = strings.Replace(path, "{"+"TaskSid"+"}", TaskSid, -1)
   548  	path = strings.Replace(path, "{"+"Sid"+"}", Sid, -1)
   549  
   550  	data := url.Values{}
   551  	headers := make(map[string]interface{})
   552  
   553  	if params != nil && params.ReservationStatus != nil {
   554  		data.Set("ReservationStatus", *params.ReservationStatus)
   555  	}
   556  	if params != nil && params.WorkerActivitySid != nil {
   557  		data.Set("WorkerActivitySid", *params.WorkerActivitySid)
   558  	}
   559  	if params != nil && params.Instruction != nil {
   560  		data.Set("Instruction", *params.Instruction)
   561  	}
   562  	if params != nil && params.DequeuePostWorkActivitySid != nil {
   563  		data.Set("DequeuePostWorkActivitySid", *params.DequeuePostWorkActivitySid)
   564  	}
   565  	if params != nil && params.DequeueFrom != nil {
   566  		data.Set("DequeueFrom", *params.DequeueFrom)
   567  	}
   568  	if params != nil && params.DequeueRecord != nil {
   569  		data.Set("DequeueRecord", *params.DequeueRecord)
   570  	}
   571  	if params != nil && params.DequeueTimeout != nil {
   572  		data.Set("DequeueTimeout", fmt.Sprint(*params.DequeueTimeout))
   573  	}
   574  	if params != nil && params.DequeueTo != nil {
   575  		data.Set("DequeueTo", *params.DequeueTo)
   576  	}
   577  	if params != nil && params.DequeueStatusCallbackUrl != nil {
   578  		data.Set("DequeueStatusCallbackUrl", *params.DequeueStatusCallbackUrl)
   579  	}
   580  	if params != nil && params.CallFrom != nil {
   581  		data.Set("CallFrom", *params.CallFrom)
   582  	}
   583  	if params != nil && params.CallRecord != nil {
   584  		data.Set("CallRecord", *params.CallRecord)
   585  	}
   586  	if params != nil && params.CallTimeout != nil {
   587  		data.Set("CallTimeout", fmt.Sprint(*params.CallTimeout))
   588  	}
   589  	if params != nil && params.CallTo != nil {
   590  		data.Set("CallTo", *params.CallTo)
   591  	}
   592  	if params != nil && params.CallUrl != nil {
   593  		data.Set("CallUrl", *params.CallUrl)
   594  	}
   595  	if params != nil && params.CallStatusCallbackUrl != nil {
   596  		data.Set("CallStatusCallbackUrl", *params.CallStatusCallbackUrl)
   597  	}
   598  	if params != nil && params.CallAccept != nil {
   599  		data.Set("CallAccept", fmt.Sprint(*params.CallAccept))
   600  	}
   601  	if params != nil && params.RedirectCallSid != nil {
   602  		data.Set("RedirectCallSid", *params.RedirectCallSid)
   603  	}
   604  	if params != nil && params.RedirectAccept != nil {
   605  		data.Set("RedirectAccept", fmt.Sprint(*params.RedirectAccept))
   606  	}
   607  	if params != nil && params.RedirectUrl != nil {
   608  		data.Set("RedirectUrl", *params.RedirectUrl)
   609  	}
   610  	if params != nil && params.To != nil {
   611  		data.Set("To", *params.To)
   612  	}
   613  	if params != nil && params.From != nil {
   614  		data.Set("From", *params.From)
   615  	}
   616  	if params != nil && params.StatusCallback != nil {
   617  		data.Set("StatusCallback", *params.StatusCallback)
   618  	}
   619  	if params != nil && params.StatusCallbackMethod != nil {
   620  		data.Set("StatusCallbackMethod", *params.StatusCallbackMethod)
   621  	}
   622  	if params != nil && params.StatusCallbackEvent != nil {
   623  		for _, item := range *params.StatusCallbackEvent {
   624  			data.Add("StatusCallbackEvent", item)
   625  		}
   626  	}
   627  	if params != nil && params.Timeout != nil {
   628  		data.Set("Timeout", fmt.Sprint(*params.Timeout))
   629  	}
   630  	if params != nil && params.Record != nil {
   631  		data.Set("Record", fmt.Sprint(*params.Record))
   632  	}
   633  	if params != nil && params.Muted != nil {
   634  		data.Set("Muted", fmt.Sprint(*params.Muted))
   635  	}
   636  	if params != nil && params.Beep != nil {
   637  		data.Set("Beep", *params.Beep)
   638  	}
   639  	if params != nil && params.StartConferenceOnEnter != nil {
   640  		data.Set("StartConferenceOnEnter", fmt.Sprint(*params.StartConferenceOnEnter))
   641  	}
   642  	if params != nil && params.EndConferenceOnExit != nil {
   643  		data.Set("EndConferenceOnExit", fmt.Sprint(*params.EndConferenceOnExit))
   644  	}
   645  	if params != nil && params.WaitUrl != nil {
   646  		data.Set("WaitUrl", *params.WaitUrl)
   647  	}
   648  	if params != nil && params.WaitMethod != nil {
   649  		data.Set("WaitMethod", *params.WaitMethod)
   650  	}
   651  	if params != nil && params.EarlyMedia != nil {
   652  		data.Set("EarlyMedia", fmt.Sprint(*params.EarlyMedia))
   653  	}
   654  	if params != nil && params.MaxParticipants != nil {
   655  		data.Set("MaxParticipants", fmt.Sprint(*params.MaxParticipants))
   656  	}
   657  	if params != nil && params.ConferenceStatusCallback != nil {
   658  		data.Set("ConferenceStatusCallback", *params.ConferenceStatusCallback)
   659  	}
   660  	if params != nil && params.ConferenceStatusCallbackMethod != nil {
   661  		data.Set("ConferenceStatusCallbackMethod", *params.ConferenceStatusCallbackMethod)
   662  	}
   663  	if params != nil && params.ConferenceStatusCallbackEvent != nil {
   664  		for _, item := range *params.ConferenceStatusCallbackEvent {
   665  			data.Add("ConferenceStatusCallbackEvent", item)
   666  		}
   667  	}
   668  	if params != nil && params.ConferenceRecord != nil {
   669  		data.Set("ConferenceRecord", *params.ConferenceRecord)
   670  	}
   671  	if params != nil && params.ConferenceTrim != nil {
   672  		data.Set("ConferenceTrim", *params.ConferenceTrim)
   673  	}
   674  	if params != nil && params.RecordingChannels != nil {
   675  		data.Set("RecordingChannels", *params.RecordingChannels)
   676  	}
   677  	if params != nil && params.RecordingStatusCallback != nil {
   678  		data.Set("RecordingStatusCallback", *params.RecordingStatusCallback)
   679  	}
   680  	if params != nil && params.RecordingStatusCallbackMethod != nil {
   681  		data.Set("RecordingStatusCallbackMethod", *params.RecordingStatusCallbackMethod)
   682  	}
   683  	if params != nil && params.ConferenceRecordingStatusCallback != nil {
   684  		data.Set("ConferenceRecordingStatusCallback", *params.ConferenceRecordingStatusCallback)
   685  	}
   686  	if params != nil && params.ConferenceRecordingStatusCallbackMethod != nil {
   687  		data.Set("ConferenceRecordingStatusCallbackMethod", *params.ConferenceRecordingStatusCallbackMethod)
   688  	}
   689  	if params != nil && params.Region != nil {
   690  		data.Set("Region", *params.Region)
   691  	}
   692  	if params != nil && params.SipAuthUsername != nil {
   693  		data.Set("SipAuthUsername", *params.SipAuthUsername)
   694  	}
   695  	if params != nil && params.SipAuthPassword != nil {
   696  		data.Set("SipAuthPassword", *params.SipAuthPassword)
   697  	}
   698  	if params != nil && params.DequeueStatusCallbackEvent != nil {
   699  		for _, item := range *params.DequeueStatusCallbackEvent {
   700  			data.Add("DequeueStatusCallbackEvent", item)
   701  		}
   702  	}
   703  	if params != nil && params.PostWorkActivitySid != nil {
   704  		data.Set("PostWorkActivitySid", *params.PostWorkActivitySid)
   705  	}
   706  	if params != nil && params.SupervisorMode != nil {
   707  		data.Set("SupervisorMode", *params.SupervisorMode)
   708  	}
   709  	if params != nil && params.Supervisor != nil {
   710  		data.Set("Supervisor", *params.Supervisor)
   711  	}
   712  	if params != nil && params.EndConferenceOnCustomerExit != nil {
   713  		data.Set("EndConferenceOnCustomerExit", fmt.Sprint(*params.EndConferenceOnCustomerExit))
   714  	}
   715  	if params != nil && params.BeepOnCustomerEntrance != nil {
   716  		data.Set("BeepOnCustomerEntrance", fmt.Sprint(*params.BeepOnCustomerEntrance))
   717  	}
   718  	if params != nil && params.JitterBufferSize != nil {
   719  		data.Set("JitterBufferSize", *params.JitterBufferSize)
   720  	}
   721  
   722  	if params != nil && params.IfMatch != nil {
   723  		headers["If-Match"] = *params.IfMatch
   724  	}
   725  	resp, err := c.requestHandler.Post(c.baseURL+path, data, headers)
   726  	if err != nil {
   727  		return nil, err
   728  	}
   729  
   730  	defer resp.Body.Close()
   731  
   732  	ps := &TaskrouterV1TaskReservation{}
   733  	if err := json.NewDecoder(resp.Body).Decode(ps); err != nil {
   734  		return nil, err
   735  	}
   736  
   737  	return ps, err
   738  }