github.com/grokify/go-ringcentral-client@v0.3.31/office/v1/client/api_messages.go (about)

     1  /*
     2   * RingCentral Connect Platform API Explorer
     3   *
     4   * <p>This is a beta interactive API explorer for the RingCentral Connect Platform. To use this service, you will need to have an account with the proper credentials to generate an OAuth2 access token.</p><p><h2>Quick Start</h2></p><ol><li>1) Go to <b>Authentication > /oauth/token</b></li><li>2) Enter <b>app_key, app_secret, username, password</b> fields and then click \"Try it out!\"</li><li>3) Upon success, your access_token is loaded and you can access any form requiring authorization.</li></ol><h2>Links</h2><ul><li><a href=\"https://github.com/ringcentral\" target=\"_blank\">RingCentral SDKs on Github</a></li><li><a href=\"mailto:devsupport@ringcentral.com\">RingCentral Developer Support Email</a></li></ul>
     5   *
     6   * API version: 1.0
     7   * Generated by: OpenAPI Generator (https://openapi-generator.tech)
     8   */
     9  
    10  package ringcentral
    11  
    12  import (
    13  	"context"
    14  	"fmt"
    15  	"github.com/antihax/optional"
    16  	"io/ioutil"
    17  	"net/http"
    18  	"net/url"
    19  	"os"
    20  	"strings"
    21  )
    22  
    23  // Linger please
    24  var (
    25  	_ context.Context
    26  )
    27  
    28  type MessagesApiService service
    29  
    30  /*
    31  MessagesApiService Delete Message(s) by ID
    32  &lt;p style&#x3D;&#39;font-style:italic;&#39;&gt;&lt;/p&gt;&lt;p&gt;Deletes message(s) by the given message ID(s). The first call of this method transfers the message to the &#39;Delete&#39; status. The second call transfers the deleted message to the &#39;Purged&#39; status. If it is required to make the message &#39;Purged&#39; immediately (from the first call), then set the query parameter purge to &#39;True&#39;.&lt;/p&gt;&lt;h4&gt;Required Permissions&lt;/h4&gt;&lt;table class&#x3D;&#39;fullwidth&#39;&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Permission&lt;/th&gt;&lt;th&gt;Description&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class&#x3D;&#39;code&#39;&gt;EditMessages&lt;/td&gt;&lt;td&gt;Viewing and updating user messages&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class&#x3D;&#39;code&#39;&gt;ReadMessages&lt;/td&gt;&lt;td&gt;Viewing user messages&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;h4&gt;Usage Plan Group&lt;/h4&gt;&lt;p&gt;Medium&lt;/p&gt;
    33   * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
    34   * @param accountId Internal identifier of a RingCentral account or tilde (~) to indicate the account logged-in within the current session
    35   * @param extensionId Internal identifier of an extension or tilde (~) to indicate the extension assigned to the account logged-in within the current session
    36   * @param messageId Internal identifier of a message
    37   * @param optional nil or *DeleteMessageOpts - Optional Parameters:
    38   * @param "Purge" (optional.Bool) -  If the value is 'True', then the message is purged immediately with all the attachments. The default value is 'False'
    39   * @param "ConversationId" (optional.Int32) -  Internal identifier of a message thread
    40  */
    41  
    42  type DeleteMessageOpts struct {
    43  	Purge          optional.Bool
    44  	ConversationId optional.Int32
    45  }
    46  
    47  func (a *MessagesApiService) DeleteMessage(ctx context.Context, accountId string, extensionId string, messageId int32, localVarOptionals *DeleteMessageOpts) (*http.Response, error) {
    48  	var (
    49  		localVarHttpMethod   = strings.ToUpper("Delete")
    50  		localVarPostBody     interface{}
    51  		localVarFormFileName string
    52  		localVarFileName     string
    53  		localVarFileBytes    []byte
    54  	)
    55  
    56  	// create path and map variables
    57  	localVarPath := a.client.cfg.BasePath + "/restapi/v1.0/account/{accountId}/extension/{extensionId}/message-store/{messageId}"
    58  	localVarPath = strings.Replace(localVarPath, "{"+"accountId"+"}", fmt.Sprintf("%v", accountId), -1)
    59  	localVarPath = strings.Replace(localVarPath, "{"+"extensionId"+"}", fmt.Sprintf("%v", extensionId), -1)
    60  	localVarPath = strings.Replace(localVarPath, "{"+"messageId"+"}", fmt.Sprintf("%v", messageId), -1)
    61  
    62  	localVarHeaderParams := make(map[string]string)
    63  	localVarQueryParams := url.Values{}
    64  	localVarFormParams := url.Values{}
    65  
    66  	if localVarOptionals != nil && localVarOptionals.Purge.IsSet() {
    67  		localVarQueryParams.Add("purge", parameterToString(localVarOptionals.Purge.Value(), ""))
    68  	}
    69  	if localVarOptionals != nil && localVarOptionals.ConversationId.IsSet() {
    70  		localVarQueryParams.Add("conversationId", parameterToString(localVarOptionals.ConversationId.Value(), ""))
    71  	}
    72  	// to determine the Content-Type header
    73  	localVarHttpContentTypes := []string{}
    74  
    75  	// set Content-Type header
    76  	localVarHttpContentType := selectHeaderContentType(localVarHttpContentTypes)
    77  	if localVarHttpContentType != "" {
    78  		localVarHeaderParams["Content-Type"] = localVarHttpContentType
    79  	}
    80  
    81  	// to determine the Accept header
    82  	localVarHttpHeaderAccepts := []string{}
    83  
    84  	// set Accept header
    85  	localVarHttpHeaderAccept := selectHeaderAccept(localVarHttpHeaderAccepts)
    86  	if localVarHttpHeaderAccept != "" {
    87  		localVarHeaderParams["Accept"] = localVarHttpHeaderAccept
    88  	}
    89  	r, err := a.client.prepareRequest(ctx, localVarPath, localVarHttpMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFormFileName, localVarFileName, localVarFileBytes)
    90  	if err != nil {
    91  		return nil, err
    92  	}
    93  
    94  	localVarHttpResponse, err := a.client.callAPI(r)
    95  	if err != nil || localVarHttpResponse == nil {
    96  		return localVarHttpResponse, err
    97  	}
    98  
    99  	localVarBody, err := ioutil.ReadAll(localVarHttpResponse.Body)
   100  	localVarHttpResponse.Body.Close()
   101  	if err != nil {
   102  		return localVarHttpResponse, err
   103  	}
   104  
   105  	if localVarHttpResponse.StatusCode >= 300 {
   106  		newErr := GenericOpenAPIError{
   107  			body:  localVarBody,
   108  			error: localVarHttpResponse.Status,
   109  		}
   110  		return localVarHttpResponse, newErr
   111  	}
   112  
   113  	return localVarHttpResponse, nil
   114  }
   115  
   116  /*
   117  MessagesApiService Delete Conversations by ID's
   118   * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
   119   * @param extensionId
   120   * @param accountId
   121   * @param optional nil or *DeleteMessagesByFilterOpts - Optional Parameters:
   122   * @param "ConversationId" (optional.Interface of []string) -
   123  */
   124  
   125  type DeleteMessagesByFilterOpts struct {
   126  	ConversationId optional.Interface
   127  }
   128  
   129  func (a *MessagesApiService) DeleteMessagesByFilter(ctx context.Context, extensionId string, accountId string, localVarOptionals *DeleteMessagesByFilterOpts) (*http.Response, error) {
   130  	var (
   131  		localVarHttpMethod   = strings.ToUpper("Delete")
   132  		localVarPostBody     interface{}
   133  		localVarFormFileName string
   134  		localVarFileName     string
   135  		localVarFileBytes    []byte
   136  	)
   137  
   138  	// create path and map variables
   139  	localVarPath := a.client.cfg.BasePath + "/restapi/v1.0/account/{accountId}/extension/{extensionId}/message-store"
   140  	localVarPath = strings.Replace(localVarPath, "{"+"extensionId"+"}", fmt.Sprintf("%v", extensionId), -1)
   141  	localVarPath = strings.Replace(localVarPath, "{"+"accountId"+"}", fmt.Sprintf("%v", accountId), -1)
   142  
   143  	localVarHeaderParams := make(map[string]string)
   144  	localVarQueryParams := url.Values{}
   145  	localVarFormParams := url.Values{}
   146  
   147  	if localVarOptionals != nil && localVarOptionals.ConversationId.IsSet() {
   148  		localVarQueryParams.Add("conversationId", parameterToString(localVarOptionals.ConversationId.Value(), "multi"))
   149  	}
   150  	// to determine the Content-Type header
   151  	localVarHttpContentTypes := []string{}
   152  
   153  	// set Content-Type header
   154  	localVarHttpContentType := selectHeaderContentType(localVarHttpContentTypes)
   155  	if localVarHttpContentType != "" {
   156  		localVarHeaderParams["Content-Type"] = localVarHttpContentType
   157  	}
   158  
   159  	// to determine the Accept header
   160  	localVarHttpHeaderAccepts := []string{}
   161  
   162  	// set Accept header
   163  	localVarHttpHeaderAccept := selectHeaderAccept(localVarHttpHeaderAccepts)
   164  	if localVarHttpHeaderAccept != "" {
   165  		localVarHeaderParams["Accept"] = localVarHttpHeaderAccept
   166  	}
   167  	r, err := a.client.prepareRequest(ctx, localVarPath, localVarHttpMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFormFileName, localVarFileName, localVarFileBytes)
   168  	if err != nil {
   169  		return nil, err
   170  	}
   171  
   172  	localVarHttpResponse, err := a.client.callAPI(r)
   173  	if err != nil || localVarHttpResponse == nil {
   174  		return localVarHttpResponse, err
   175  	}
   176  
   177  	localVarBody, err := ioutil.ReadAll(localVarHttpResponse.Body)
   178  	localVarHttpResponse.Body.Close()
   179  	if err != nil {
   180  		return localVarHttpResponse, err
   181  	}
   182  
   183  	if localVarHttpResponse.StatusCode >= 300 {
   184  		newErr := GenericOpenAPIError{
   185  			body:  localVarBody,
   186  			error: localVarHttpResponse.Status,
   187  		}
   188  		return localVarHttpResponse, newErr
   189  	}
   190  
   191  	return localVarHttpResponse, nil
   192  }
   193  
   194  /*
   195  MessagesApiService Get Fax Cover Pages
   196   * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
   197   * @param optional nil or *GetFaxCoverPagesOpts - Optional Parameters:
   198   * @param "Page" (optional.Int32) -  Indicates the page number to retrieve. Only positive number values are allowed. Default value is '1'
   199   * @param "PerPage" (optional.Int32) -  Indicates the page size (number of items). If not specified, the value is '100' by default
   200  */
   201  
   202  type GetFaxCoverPagesOpts struct {
   203  	Page    optional.Int32
   204  	PerPage optional.Int32
   205  }
   206  
   207  func (a *MessagesApiService) GetFaxCoverPages(ctx context.Context, localVarOptionals *GetFaxCoverPagesOpts) (*http.Response, error) {
   208  	var (
   209  		localVarHttpMethod   = strings.ToUpper("Get")
   210  		localVarPostBody     interface{}
   211  		localVarFormFileName string
   212  		localVarFileName     string
   213  		localVarFileBytes    []byte
   214  	)
   215  
   216  	// create path and map variables
   217  	localVarPath := a.client.cfg.BasePath + "/restapi/v1.0/dictionary/fax-cover-page"
   218  
   219  	localVarHeaderParams := make(map[string]string)
   220  	localVarQueryParams := url.Values{}
   221  	localVarFormParams := url.Values{}
   222  
   223  	if localVarOptionals != nil && localVarOptionals.Page.IsSet() {
   224  		localVarQueryParams.Add("page", parameterToString(localVarOptionals.Page.Value(), ""))
   225  	}
   226  	if localVarOptionals != nil && localVarOptionals.PerPage.IsSet() {
   227  		localVarQueryParams.Add("perPage", parameterToString(localVarOptionals.PerPage.Value(), ""))
   228  	}
   229  	// to determine the Content-Type header
   230  	localVarHttpContentTypes := []string{}
   231  
   232  	// set Content-Type header
   233  	localVarHttpContentType := selectHeaderContentType(localVarHttpContentTypes)
   234  	if localVarHttpContentType != "" {
   235  		localVarHeaderParams["Content-Type"] = localVarHttpContentType
   236  	}
   237  
   238  	// to determine the Accept header
   239  	localVarHttpHeaderAccepts := []string{}
   240  
   241  	// set Accept header
   242  	localVarHttpHeaderAccept := selectHeaderAccept(localVarHttpHeaderAccepts)
   243  	if localVarHttpHeaderAccept != "" {
   244  		localVarHeaderParams["Accept"] = localVarHttpHeaderAccept
   245  	}
   246  	r, err := a.client.prepareRequest(ctx, localVarPath, localVarHttpMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFormFileName, localVarFileName, localVarFileBytes)
   247  	if err != nil {
   248  		return nil, err
   249  	}
   250  
   251  	localVarHttpResponse, err := a.client.callAPI(r)
   252  	if err != nil || localVarHttpResponse == nil {
   253  		return localVarHttpResponse, err
   254  	}
   255  
   256  	localVarBody, err := ioutil.ReadAll(localVarHttpResponse.Body)
   257  	localVarHttpResponse.Body.Close()
   258  	if err != nil {
   259  		return localVarHttpResponse, err
   260  	}
   261  
   262  	if localVarHttpResponse.StatusCode >= 300 {
   263  		newErr := GenericOpenAPIError{
   264  			body:  localVarBody,
   265  			error: localVarHttpResponse.Status,
   266  		}
   267  		return localVarHttpResponse, newErr
   268  	}
   269  
   270  	return localVarHttpResponse, nil
   271  }
   272  
   273  /*
   274  MessagesApiService Get Message List
   275  &lt;p style&#x3D;&#39;font-style:italic;&#39;&gt;Since 1.0.2&lt;/p&gt;&lt;p&gt;Returns the list of messages from an extension mailbox.&lt;/p&gt;&lt;h4&gt;Required Permissions&lt;/h4&gt;&lt;table class&#x3D;&#39;fullwidth&#39;&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Permission&lt;/th&gt;&lt;th&gt;Description&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class&#x3D;&#39;code&#39;&gt;ReadMessages&lt;/td&gt;&lt;td&gt;Viewing user messages&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;h4&gt;Usage Plan Group&lt;/h4&gt;&lt;p&gt;Light&lt;/p&gt;
   276   * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
   277   * @param accountId Internal identifier of a RingCentral account or tilde (~) to indicate the account logged-in within the current session
   278   * @param extensionId Internal identifier of an extension or tilde (~) to indicate the extension assigned to the account logged-in within the current session
   279   * @param optional nil or *ListMessagesOpts - Optional Parameters:
   280   * @param "Availability" (optional.Interface of []string) -  Specifies the availability status for the resulting messages. Default value is 'Alive'. Multiple values are accepted
   281   * @param "ConversationId" (optional.Int32) -  Specifies the conversation identifier for the resulting messages
   282   * @param "DateFrom" (optional.Time) -  The start datetime for resulting messages in ISO 8601 format including timezone, for example 2016-03-10T18:07:52.534Z. The default value is dateTo minus 24 hours
   283   * @param "DateTo" (optional.Time) -  The end datetime for resulting messages in ISO 8601 format including timezone, for example 2016-03-10T18:07:52.534Z. The default value is current time
   284   * @param "Direction" (optional.Interface of []string) -  The direction for the resulting messages. If not specified, both inbound and outbound messages are returned. Multiple values are accepted
   285   * @param "DistinctConversations" (optional.Bool) -  If 'True', then the latest messages per every conversation ID are returned
   286   * @param "MessageType" (optional.Interface of []string) -  The type of the resulting messages. If not specified, all messages without message type filtering are returned. Multiple values are accepted
   287   * @param "ReadStatus" (optional.Interface of []string) -  The read status for the resulting messages. Multiple values are accepted
   288   * @param "Page" (optional.Int32) -  Indicates the page number to retrieve. Only positive number values are allowed. Default value is '1'
   289   * @param "PerPage" (optional.Int32) -  Indicates the page size (number of items). If not specified, the value is '100' by default
   290   * @param "PhoneNumber" (optional.String) -  The phone number. If specified, messages are returned for this particular phone number only
   291  @return GetMessageList
   292  */
   293  
   294  type ListMessagesOpts struct {
   295  	Availability          optional.Interface
   296  	ConversationId        optional.Int32
   297  	DateFrom              optional.Time
   298  	DateTo                optional.Time
   299  	Direction             optional.Interface
   300  	DistinctConversations optional.Bool
   301  	MessageType           optional.Interface
   302  	ReadStatus            optional.Interface
   303  	Page                  optional.Int32
   304  	PerPage               optional.Int32
   305  	PhoneNumber           optional.String
   306  }
   307  
   308  func (a *MessagesApiService) ListMessages(ctx context.Context, accountId string, extensionId string, localVarOptionals *ListMessagesOpts) (GetMessageList, *http.Response, error) {
   309  	var (
   310  		localVarHttpMethod   = strings.ToUpper("Get")
   311  		localVarPostBody     interface{}
   312  		localVarFormFileName string
   313  		localVarFileName     string
   314  		localVarFileBytes    []byte
   315  		localVarReturnValue  GetMessageList
   316  	)
   317  
   318  	// create path and map variables
   319  	localVarPath := a.client.cfg.BasePath + "/restapi/v1.0/account/{accountId}/extension/{extensionId}/message-store"
   320  	localVarPath = strings.Replace(localVarPath, "{"+"accountId"+"}", fmt.Sprintf("%v", accountId), -1)
   321  	localVarPath = strings.Replace(localVarPath, "{"+"extensionId"+"}", fmt.Sprintf("%v", extensionId), -1)
   322  
   323  	localVarHeaderParams := make(map[string]string)
   324  	localVarQueryParams := url.Values{}
   325  	localVarFormParams := url.Values{}
   326  
   327  	if localVarOptionals != nil && localVarOptionals.Availability.IsSet() {
   328  		localVarQueryParams.Add("availability", parameterToString(localVarOptionals.Availability.Value(), "multi"))
   329  	}
   330  	if localVarOptionals != nil && localVarOptionals.ConversationId.IsSet() {
   331  		localVarQueryParams.Add("conversationId", parameterToString(localVarOptionals.ConversationId.Value(), ""))
   332  	}
   333  	if localVarOptionals != nil && localVarOptionals.DateFrom.IsSet() {
   334  		localVarQueryParams.Add("dateFrom", parameterToString(localVarOptionals.DateFrom.Value(), ""))
   335  	}
   336  	if localVarOptionals != nil && localVarOptionals.DateTo.IsSet() {
   337  		localVarQueryParams.Add("dateTo", parameterToString(localVarOptionals.DateTo.Value(), ""))
   338  	}
   339  	if localVarOptionals != nil && localVarOptionals.Direction.IsSet() {
   340  		localVarQueryParams.Add("direction", parameterToString(localVarOptionals.Direction.Value(), "multi"))
   341  	}
   342  	if localVarOptionals != nil && localVarOptionals.DistinctConversations.IsSet() {
   343  		localVarQueryParams.Add("distinctConversations", parameterToString(localVarOptionals.DistinctConversations.Value(), ""))
   344  	}
   345  	if localVarOptionals != nil && localVarOptionals.MessageType.IsSet() {
   346  		localVarQueryParams.Add("messageType", parameterToString(localVarOptionals.MessageType.Value(), "multi"))
   347  	}
   348  	if localVarOptionals != nil && localVarOptionals.ReadStatus.IsSet() {
   349  		localVarQueryParams.Add("readStatus", parameterToString(localVarOptionals.ReadStatus.Value(), "multi"))
   350  	}
   351  	if localVarOptionals != nil && localVarOptionals.Page.IsSet() {
   352  		localVarQueryParams.Add("page", parameterToString(localVarOptionals.Page.Value(), ""))
   353  	}
   354  	if localVarOptionals != nil && localVarOptionals.PerPage.IsSet() {
   355  		localVarQueryParams.Add("perPage", parameterToString(localVarOptionals.PerPage.Value(), ""))
   356  	}
   357  	if localVarOptionals != nil && localVarOptionals.PhoneNumber.IsSet() {
   358  		localVarQueryParams.Add("phoneNumber", parameterToString(localVarOptionals.PhoneNumber.Value(), ""))
   359  	}
   360  	// to determine the Content-Type header
   361  	localVarHttpContentTypes := []string{}
   362  
   363  	// set Content-Type header
   364  	localVarHttpContentType := selectHeaderContentType(localVarHttpContentTypes)
   365  	if localVarHttpContentType != "" {
   366  		localVarHeaderParams["Content-Type"] = localVarHttpContentType
   367  	}
   368  
   369  	// to determine the Accept header
   370  	localVarHttpHeaderAccepts := []string{"application/json"}
   371  
   372  	// set Accept header
   373  	localVarHttpHeaderAccept := selectHeaderAccept(localVarHttpHeaderAccepts)
   374  	if localVarHttpHeaderAccept != "" {
   375  		localVarHeaderParams["Accept"] = localVarHttpHeaderAccept
   376  	}
   377  	r, err := a.client.prepareRequest(ctx, localVarPath, localVarHttpMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFormFileName, localVarFileName, localVarFileBytes)
   378  	if err != nil {
   379  		return localVarReturnValue, nil, err
   380  	}
   381  
   382  	localVarHttpResponse, err := a.client.callAPI(r)
   383  	if err != nil || localVarHttpResponse == nil {
   384  		return localVarReturnValue, localVarHttpResponse, err
   385  	}
   386  
   387  	localVarBody, err := ioutil.ReadAll(localVarHttpResponse.Body)
   388  	localVarHttpResponse.Body.Close()
   389  	if err != nil {
   390  		return localVarReturnValue, localVarHttpResponse, err
   391  	}
   392  
   393  	if localVarHttpResponse.StatusCode >= 300 {
   394  		newErr := GenericOpenAPIError{
   395  			body:  localVarBody,
   396  			error: localVarHttpResponse.Status,
   397  		}
   398  		if localVarHttpResponse.StatusCode == 0 {
   399  			var v GetMessageList
   400  			err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type"))
   401  			if err != nil {
   402  				newErr.error = err.Error()
   403  				return localVarReturnValue, localVarHttpResponse, newErr
   404  			}
   405  			newErr.model = v
   406  			return localVarReturnValue, localVarHttpResponse, newErr
   407  		}
   408  		return localVarReturnValue, localVarHttpResponse, newErr
   409  	}
   410  
   411  	err = a.client.decode(&localVarReturnValue, localVarBody, localVarHttpResponse.Header.Get("Content-Type"))
   412  	if err != nil {
   413  		newErr := GenericOpenAPIError{
   414  			body:  localVarBody,
   415  			error: err.Error(),
   416  		}
   417  		return localVarReturnValue, localVarHttpResponse, newErr
   418  	}
   419  
   420  	return localVarReturnValue, localVarHttpResponse, nil
   421  }
   422  
   423  /*
   424  MessagesApiService Get Message(s) by ID
   425  &lt;p style&#x3D;&#39;font-style:italic;&#39;&gt;Since 1.0.2&lt;/p&gt;&lt;p&gt;Returns individual message record(s) by the given message ID(s). The length of inbound messages is unlimited. Batch request is supported, see Batch Requests for details.&lt;/p&gt;&lt;h4&gt;Required Permissions&lt;/h4&gt;&lt;table class&#x3D;&#39;fullwidth&#39;&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Permission&lt;/th&gt;&lt;th&gt;Description&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class&#x3D;&#39;code&#39;&gt;ReadMessages&lt;/td&gt;&lt;td&gt;Viewing user messages&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;h4&gt;Usage Plan Group&lt;/h4&gt;&lt;p&gt;Light&lt;/p&gt;
   426   * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
   427   * @param accountId Internal identifier of a RingCentral account or tilde (~) to indicate the account logged-in within the current session
   428   * @param extensionId Internal identifier of an extension or tilde (~) to indicate the extension assigned to the account logged-in within the current session
   429   * @param messageId Internal identifier of a message
   430  @return GetMessageInfoResponse
   431  */
   432  func (a *MessagesApiService) LoadMessage(ctx context.Context, accountId string, extensionId string, messageId int32) (GetMessageInfoResponse, *http.Response, error) {
   433  	var (
   434  		localVarHttpMethod   = strings.ToUpper("Get")
   435  		localVarPostBody     interface{}
   436  		localVarFormFileName string
   437  		localVarFileName     string
   438  		localVarFileBytes    []byte
   439  		localVarReturnValue  GetMessageInfoResponse
   440  	)
   441  
   442  	// create path and map variables
   443  	localVarPath := a.client.cfg.BasePath + "/restapi/v1.0/account/{accountId}/extension/{extensionId}/message-store/{messageId}"
   444  	localVarPath = strings.Replace(localVarPath, "{"+"accountId"+"}", fmt.Sprintf("%v", accountId), -1)
   445  	localVarPath = strings.Replace(localVarPath, "{"+"extensionId"+"}", fmt.Sprintf("%v", extensionId), -1)
   446  	localVarPath = strings.Replace(localVarPath, "{"+"messageId"+"}", fmt.Sprintf("%v", messageId), -1)
   447  
   448  	localVarHeaderParams := make(map[string]string)
   449  	localVarQueryParams := url.Values{}
   450  	localVarFormParams := url.Values{}
   451  
   452  	// to determine the Content-Type header
   453  	localVarHttpContentTypes := []string{}
   454  
   455  	// set Content-Type header
   456  	localVarHttpContentType := selectHeaderContentType(localVarHttpContentTypes)
   457  	if localVarHttpContentType != "" {
   458  		localVarHeaderParams["Content-Type"] = localVarHttpContentType
   459  	}
   460  
   461  	// to determine the Accept header
   462  	localVarHttpHeaderAccepts := []string{"application/json"}
   463  
   464  	// set Accept header
   465  	localVarHttpHeaderAccept := selectHeaderAccept(localVarHttpHeaderAccepts)
   466  	if localVarHttpHeaderAccept != "" {
   467  		localVarHeaderParams["Accept"] = localVarHttpHeaderAccept
   468  	}
   469  	r, err := a.client.prepareRequest(ctx, localVarPath, localVarHttpMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFormFileName, localVarFileName, localVarFileBytes)
   470  	if err != nil {
   471  		return localVarReturnValue, nil, err
   472  	}
   473  
   474  	localVarHttpResponse, err := a.client.callAPI(r)
   475  	if err != nil || localVarHttpResponse == nil {
   476  		return localVarReturnValue, localVarHttpResponse, err
   477  	}
   478  
   479  	localVarBody, err := ioutil.ReadAll(localVarHttpResponse.Body)
   480  	localVarHttpResponse.Body.Close()
   481  	if err != nil {
   482  		return localVarReturnValue, localVarHttpResponse, err
   483  	}
   484  
   485  	if localVarHttpResponse.StatusCode >= 300 {
   486  		newErr := GenericOpenAPIError{
   487  			body:  localVarBody,
   488  			error: localVarHttpResponse.Status,
   489  		}
   490  		if localVarHttpResponse.StatusCode == 0 {
   491  			var v GetMessageInfoResponse
   492  			err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type"))
   493  			if err != nil {
   494  				newErr.error = err.Error()
   495  				return localVarReturnValue, localVarHttpResponse, newErr
   496  			}
   497  			newErr.model = v
   498  			return localVarReturnValue, localVarHttpResponse, newErr
   499  		}
   500  		return localVarReturnValue, localVarHttpResponse, newErr
   501  	}
   502  
   503  	err = a.client.decode(&localVarReturnValue, localVarBody, localVarHttpResponse.Header.Get("Content-Type"))
   504  	if err != nil {
   505  		newErr := GenericOpenAPIError{
   506  			body:  localVarBody,
   507  			error: err.Error(),
   508  		}
   509  		return localVarReturnValue, localVarHttpResponse, newErr
   510  	}
   511  
   512  	return localVarReturnValue, localVarHttpResponse, nil
   513  }
   514  
   515  /*
   516  MessagesApiService Get Message Attachment
   517  &lt;p style&#x3D;&#39;font-style:italic;&#39;&gt;Since 1.0.4 (Release 5.13)&lt;/p&gt;&lt;p&gt;Returns particular message attachment data as a media stream.&lt;/p&gt;&lt;h4&gt;Required Permissions&lt;/h4&gt;&lt;table class&#x3D;&#39;fullwidth&#39;&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Permission&lt;/th&gt;&lt;th&gt;Description&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class&#x3D;&#39;code&#39;&gt;ReadMessages&lt;/td&gt;&lt;td&gt;Viewing user messages&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;h4&gt;Usage Plan Group&lt;/h4&gt;&lt;p&gt;Medium&lt;/p&gt;
   518   * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
   519   * @param accountId Internal identifier of a RingCentral account or tilde (~) to indicate the account logged-in within the current session
   520   * @param extensionId Internal identifier of an extension or tilde (~) to indicate the extension assigned to the account logged-in within the current session
   521   * @param attachmentId Internal identifier of a message attachment
   522   * @param messageId Internal identifier of a message
   523   * @param optional nil or *LoadMessageAttachmentOpts - Optional Parameters:
   524   * @param "Range_" (optional.String) -
   525  */
   526  
   527  type LoadMessageAttachmentOpts struct {
   528  	Range_ optional.String
   529  }
   530  
   531  func (a *MessagesApiService) LoadMessageAttachment(ctx context.Context, accountId string, extensionId string, attachmentId int32, messageId int32, localVarOptionals *LoadMessageAttachmentOpts) (*http.Response, error) {
   532  	var (
   533  		localVarHttpMethod   = strings.ToUpper("Get")
   534  		localVarPostBody     interface{}
   535  		localVarFormFileName string
   536  		localVarFileName     string
   537  		localVarFileBytes    []byte
   538  	)
   539  
   540  	// create path and map variables
   541  	localVarPath := a.client.cfg.BasePath + "/restapi/v1.0/account/{accountId}/extension/{extensionId}/message-store/{messageId}/content/{attachmentId}"
   542  	localVarPath = strings.Replace(localVarPath, "{"+"accountId"+"}", fmt.Sprintf("%v", accountId), -1)
   543  	localVarPath = strings.Replace(localVarPath, "{"+"extensionId"+"}", fmt.Sprintf("%v", extensionId), -1)
   544  	localVarPath = strings.Replace(localVarPath, "{"+"attachmentId"+"}", fmt.Sprintf("%v", attachmentId), -1)
   545  	localVarPath = strings.Replace(localVarPath, "{"+"messageId"+"}", fmt.Sprintf("%v", messageId), -1)
   546  
   547  	localVarHeaderParams := make(map[string]string)
   548  	localVarQueryParams := url.Values{}
   549  	localVarFormParams := url.Values{}
   550  
   551  	// to determine the Content-Type header
   552  	localVarHttpContentTypes := []string{}
   553  
   554  	// set Content-Type header
   555  	localVarHttpContentType := selectHeaderContentType(localVarHttpContentTypes)
   556  	if localVarHttpContentType != "" {
   557  		localVarHeaderParams["Content-Type"] = localVarHttpContentType
   558  	}
   559  
   560  	// to determine the Accept header
   561  	localVarHttpHeaderAccepts := []string{}
   562  
   563  	// set Accept header
   564  	localVarHttpHeaderAccept := selectHeaderAccept(localVarHttpHeaderAccepts)
   565  	if localVarHttpHeaderAccept != "" {
   566  		localVarHeaderParams["Accept"] = localVarHttpHeaderAccept
   567  	}
   568  	if localVarOptionals != nil && localVarOptionals.Range_.IsSet() {
   569  		localVarHeaderParams["Range"] = parameterToString(localVarOptionals.Range_.Value(), "")
   570  	}
   571  	r, err := a.client.prepareRequest(ctx, localVarPath, localVarHttpMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFormFileName, localVarFileName, localVarFileBytes)
   572  	if err != nil {
   573  		return nil, err
   574  	}
   575  
   576  	localVarHttpResponse, err := a.client.callAPI(r)
   577  	if err != nil || localVarHttpResponse == nil {
   578  		return localVarHttpResponse, err
   579  	}
   580  
   581  	localVarBody, err := ioutil.ReadAll(localVarHttpResponse.Body)
   582  	localVarHttpResponse.Body.Close()
   583  	if err != nil {
   584  		return localVarHttpResponse, err
   585  	}
   586  
   587  	if localVarHttpResponse.StatusCode >= 300 {
   588  		newErr := GenericOpenAPIError{
   589  			body:  localVarBody,
   590  			error: localVarHttpResponse.Status,
   591  		}
   592  		return localVarHttpResponse, newErr
   593  	}
   594  
   595  	return localVarHttpResponse, nil
   596  }
   597  
   598  /*
   599  MessagesApiService Create Fax Message
   600  &lt;p style&#x3D;&#39;font-style:italic;&#39;&gt;Since 1.0.2&lt;/p&gt;&lt;p&gt;Creates and sends/resends new fax message. Resend can be done if sending failed.&lt;/p&gt;&lt;h4&gt;Required Permissions&lt;/h4&gt;&lt;table class&#x3D;&#39;fullwidth&#39;&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Permission&lt;/th&gt;&lt;th&gt;Description&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class&#x3D;&#39;code&#39;&gt;Faxes&lt;/td&gt;&lt;td&gt;Sending and receiving faxes&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class&#x3D;&#39;code&#39;&gt;ReadMessages&lt;/td&gt;&lt;td&gt;Viewing user messages&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;h4&gt;Usage Plan Group&lt;/h4&gt;&lt;p&gt;Heavy&lt;/p&gt;
   601   * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
   602   * @param accountId Internal identifier of a RingCentral account (integer) or tilde (~) to indicate the account which was logged-in within the current session.
   603   * @param extensionId Internal identifier of an extension (integer) or tilde (~) to indicate the extension assigned to the account logged-in within the current session
   604   * @param to To Phone Number
   605   * @param optional nil or *SendFaxMessageOpts - Optional Parameters:
   606   * @param "Attachment" (optional.Interface of *os.File) -  File to upload
   607   * @param "FaxResolution" (optional.String) -  Resolution of Fax
   608   * @param "SendTime" (optional.Time) -  Optional. Timestamp to send fax at. If not specified (current or the past), the fax is sent immediately
   609   * @param "IsoCode" (optional.String) -  ISO Code. e.g UK
   610   * @param "CoverIndex" (optional.Int32) -  Cover page identifier. For the list of available cover page identifiers please call the method Fax Cover Pages. If not specified, the default cover page which is configured in 'Outbound Fax Settings' is attached
   611   * @param "CoverPageText" (optional.String) -  Cover page text, entered by the fax sender and printed on the cover page. Maximum length is limited to 1024 symbols
   612  @return FaxResponse
   613  */
   614  
   615  type SendFaxMessageOpts struct {
   616  	Attachment    optional.Interface
   617  	FaxResolution optional.String
   618  	SendTime      optional.Time
   619  	IsoCode       optional.String
   620  	CoverIndex    optional.Int32
   621  	CoverPageText optional.String
   622  }
   623  
   624  func (a *MessagesApiService) SendFaxMessage(ctx context.Context, accountId string, extensionId string, to []string, localVarOptionals *SendFaxMessageOpts) (FaxResponse, *http.Response, error) {
   625  	var (
   626  		localVarHttpMethod   = strings.ToUpper("Post")
   627  		localVarPostBody     interface{}
   628  		localVarFormFileName string
   629  		localVarFileName     string
   630  		localVarFileBytes    []byte
   631  		localVarReturnValue  FaxResponse
   632  	)
   633  
   634  	// create path and map variables
   635  	localVarPath := a.client.cfg.BasePath + "/restapi/v1.0/account/{accountId}/extension/{extensionId}/fax"
   636  	localVarPath = strings.Replace(localVarPath, "{"+"accountId"+"}", fmt.Sprintf("%v", accountId), -1)
   637  	localVarPath = strings.Replace(localVarPath, "{"+"extensionId"+"}", fmt.Sprintf("%v", extensionId), -1)
   638  
   639  	localVarHeaderParams := make(map[string]string)
   640  	localVarQueryParams := url.Values{}
   641  	localVarFormParams := url.Values{}
   642  
   643  	// to determine the Content-Type header
   644  	localVarHttpContentTypes := []string{"multipart/form-data"}
   645  
   646  	// set Content-Type header
   647  	localVarHttpContentType := selectHeaderContentType(localVarHttpContentTypes)
   648  	if localVarHttpContentType != "" {
   649  		localVarHeaderParams["Content-Type"] = localVarHttpContentType
   650  	}
   651  
   652  	// to determine the Accept header
   653  	localVarHttpHeaderAccepts := []string{"application/json"}
   654  
   655  	// set Accept header
   656  	localVarHttpHeaderAccept := selectHeaderAccept(localVarHttpHeaderAccepts)
   657  	if localVarHttpHeaderAccept != "" {
   658  		localVarHeaderParams["Accept"] = localVarHttpHeaderAccept
   659  	}
   660  	localVarFormParams.Add("to", parameterToString(to, "csv"))
   661  	localVarFormFileName = "attachment"
   662  	var localVarFile *os.File
   663  	if localVarOptionals != nil && localVarOptionals.Attachment.IsSet() {
   664  		localVarFileOk := false
   665  		localVarFile, localVarFileOk = localVarOptionals.Attachment.Value().(*os.File)
   666  		if !localVarFileOk {
   667  			return localVarReturnValue, nil, reportError("attachment should be *os.File")
   668  		}
   669  	}
   670  	if localVarFile != nil {
   671  		fbs, _ := ioutil.ReadAll(localVarFile)
   672  		localVarFileBytes = fbs
   673  		localVarFileName = localVarFile.Name()
   674  		localVarFile.Close()
   675  	}
   676  	if localVarOptionals != nil && localVarOptionals.FaxResolution.IsSet() {
   677  		localVarFormParams.Add("faxResolution", parameterToString(localVarOptionals.FaxResolution.Value(), ""))
   678  	}
   679  	if localVarOptionals != nil && localVarOptionals.SendTime.IsSet() {
   680  		localVarFormParams.Add("sendTime", parameterToString(localVarOptionals.SendTime.Value(), ""))
   681  	}
   682  	if localVarOptionals != nil && localVarOptionals.IsoCode.IsSet() {
   683  		localVarFormParams.Add("isoCode", parameterToString(localVarOptionals.IsoCode.Value(), ""))
   684  	}
   685  	if localVarOptionals != nil && localVarOptionals.CoverIndex.IsSet() {
   686  		localVarFormParams.Add("coverIndex", parameterToString(localVarOptionals.CoverIndex.Value(), ""))
   687  	}
   688  	if localVarOptionals != nil && localVarOptionals.CoverPageText.IsSet() {
   689  		localVarFormParams.Add("coverPageText", parameterToString(localVarOptionals.CoverPageText.Value(), ""))
   690  	}
   691  	r, err := a.client.prepareRequest(ctx, localVarPath, localVarHttpMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFormFileName, localVarFileName, localVarFileBytes)
   692  	if err != nil {
   693  		return localVarReturnValue, nil, err
   694  	}
   695  
   696  	localVarHttpResponse, err := a.client.callAPI(r)
   697  	if err != nil || localVarHttpResponse == nil {
   698  		return localVarReturnValue, localVarHttpResponse, err
   699  	}
   700  
   701  	localVarBody, err := ioutil.ReadAll(localVarHttpResponse.Body)
   702  	localVarHttpResponse.Body.Close()
   703  	if err != nil {
   704  		return localVarReturnValue, localVarHttpResponse, err
   705  	}
   706  
   707  	if localVarHttpResponse.StatusCode >= 300 {
   708  		newErr := GenericOpenAPIError{
   709  			body:  localVarBody,
   710  			error: localVarHttpResponse.Status,
   711  		}
   712  		if localVarHttpResponse.StatusCode == 0 {
   713  			var v FaxResponse
   714  			err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type"))
   715  			if err != nil {
   716  				newErr.error = err.Error()
   717  				return localVarReturnValue, localVarHttpResponse, newErr
   718  			}
   719  			newErr.model = v
   720  			return localVarReturnValue, localVarHttpResponse, newErr
   721  		}
   722  		return localVarReturnValue, localVarHttpResponse, newErr
   723  	}
   724  
   725  	err = a.client.decode(&localVarReturnValue, localVarBody, localVarHttpResponse.Header.Get("Content-Type"))
   726  	if err != nil {
   727  		newErr := GenericOpenAPIError{
   728  			body:  localVarBody,
   729  			error: err.Error(),
   730  		}
   731  		return localVarReturnValue, localVarHttpResponse, newErr
   732  	}
   733  
   734  	return localVarReturnValue, localVarHttpResponse, nil
   735  }
   736  
   737  /*
   738  MessagesApiService Create Pager Message
   739  &lt;p style&#x3D;&#39;font-style:italic;&#39;&gt;Since 1.0.2&lt;/p&gt;&lt;p&gt;Creates and sends a pager message.&lt;/p&gt;&lt;h4&gt;Required Permissions&lt;/h4&gt;&lt;table class&#x3D;&#39;fullwidth&#39;&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Permission&lt;/th&gt;&lt;th&gt;Description&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class&#x3D;&#39;code&#39;&gt;InternalMessages&lt;/td&gt;&lt;td&gt;Sending and receiving intra-company text messages&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class&#x3D;&#39;code&#39;&gt;ReadMessages&lt;/td&gt;&lt;td&gt;Viewing user messages&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;h4&gt;Usage Plan Group&lt;/h4&gt;&lt;p&gt;Medium&lt;/p&gt;
   740   * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
   741   * @param accountId Internal identifier of a RingCentral account or tilde (~) to indicate the account logged-in within the current session
   742   * @param extensionId Internal identifier of an extension or tilde (~) to indicate the extension assigned to the account logged-in within the current session
   743   * @param createPagerMessageRequest JSON body
   744  @return GetMessageInfoResponse
   745  */
   746  func (a *MessagesApiService) SendInternalMessage(ctx context.Context, accountId string, extensionId string, createPagerMessageRequest CreatePagerMessageRequest) (GetMessageInfoResponse, *http.Response, error) {
   747  	var (
   748  		localVarHttpMethod   = strings.ToUpper("Post")
   749  		localVarPostBody     interface{}
   750  		localVarFormFileName string
   751  		localVarFileName     string
   752  		localVarFileBytes    []byte
   753  		localVarReturnValue  GetMessageInfoResponse
   754  	)
   755  
   756  	// create path and map variables
   757  	localVarPath := a.client.cfg.BasePath + "/restapi/v1.0/account/{accountId}/extension/{extensionId}/company-pager"
   758  	localVarPath = strings.Replace(localVarPath, "{"+"accountId"+"}", fmt.Sprintf("%v", accountId), -1)
   759  	localVarPath = strings.Replace(localVarPath, "{"+"extensionId"+"}", fmt.Sprintf("%v", extensionId), -1)
   760  
   761  	localVarHeaderParams := make(map[string]string)
   762  	localVarQueryParams := url.Values{}
   763  	localVarFormParams := url.Values{}
   764  
   765  	// to determine the Content-Type header
   766  	localVarHttpContentTypes := []string{"application/json"}
   767  
   768  	// set Content-Type header
   769  	localVarHttpContentType := selectHeaderContentType(localVarHttpContentTypes)
   770  	if localVarHttpContentType != "" {
   771  		localVarHeaderParams["Content-Type"] = localVarHttpContentType
   772  	}
   773  
   774  	// to determine the Accept header
   775  	localVarHttpHeaderAccepts := []string{"application/json"}
   776  
   777  	// set Accept header
   778  	localVarHttpHeaderAccept := selectHeaderAccept(localVarHttpHeaderAccepts)
   779  	if localVarHttpHeaderAccept != "" {
   780  		localVarHeaderParams["Accept"] = localVarHttpHeaderAccept
   781  	}
   782  	// body params
   783  	localVarPostBody = &createPagerMessageRequest
   784  	r, err := a.client.prepareRequest(ctx, localVarPath, localVarHttpMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFormFileName, localVarFileName, localVarFileBytes)
   785  	if err != nil {
   786  		return localVarReturnValue, nil, err
   787  	}
   788  
   789  	localVarHttpResponse, err := a.client.callAPI(r)
   790  	if err != nil || localVarHttpResponse == nil {
   791  		return localVarReturnValue, localVarHttpResponse, err
   792  	}
   793  
   794  	localVarBody, err := ioutil.ReadAll(localVarHttpResponse.Body)
   795  	localVarHttpResponse.Body.Close()
   796  	if err != nil {
   797  		return localVarReturnValue, localVarHttpResponse, err
   798  	}
   799  
   800  	if localVarHttpResponse.StatusCode >= 300 {
   801  		newErr := GenericOpenAPIError{
   802  			body:  localVarBody,
   803  			error: localVarHttpResponse.Status,
   804  		}
   805  		if localVarHttpResponse.StatusCode == 0 {
   806  			var v GetMessageInfoResponse
   807  			err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type"))
   808  			if err != nil {
   809  				newErr.error = err.Error()
   810  				return localVarReturnValue, localVarHttpResponse, newErr
   811  			}
   812  			newErr.model = v
   813  			return localVarReturnValue, localVarHttpResponse, newErr
   814  		}
   815  		return localVarReturnValue, localVarHttpResponse, newErr
   816  	}
   817  
   818  	err = a.client.decode(&localVarReturnValue, localVarBody, localVarHttpResponse.Header.Get("Content-Type"))
   819  	if err != nil {
   820  		newErr := GenericOpenAPIError{
   821  			body:  localVarBody,
   822  			error: err.Error(),
   823  		}
   824  		return localVarReturnValue, localVarHttpResponse, newErr
   825  	}
   826  
   827  	return localVarReturnValue, localVarHttpResponse, nil
   828  }
   829  
   830  /*
   831  MessagesApiService Create SMS Message
   832  &lt;p style&#x3D;&#39;font-style:italic;&#39;&gt;Since 1.0.2&lt;/p&gt;&lt;p&gt;Creates and sends new SMS message. Sending SMS messages simultaneously to different recipients is limited up to 50 requests per minute; relevant for all client applications.&lt;/p&gt;&lt;h4&gt;Required Permissions&lt;/h4&gt;&lt;table class&#x3D;&#39;fullwidth&#39;&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Permission&lt;/th&gt;&lt;th&gt;Description&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class&#x3D;&#39;code&#39;&gt;SMS&lt;/td&gt;&lt;td&gt;Sending and receiving SMS (text) messages&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class&#x3D;&#39;code&#39;&gt;ReadMessages&lt;/td&gt;&lt;td&gt;Viewing user messages&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;h4&gt;Usage Plan Group&lt;/h4&gt;&lt;p&gt;Medium&lt;/p&gt;
   833   * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
   834   * @param accountId Internal identifier of a RingCentral account or tilde (~) to indicate the account logged-in within the current session
   835   * @param extensionId Internal identifier of an extension or tilde (~) to indicate the extension assigned to the account logged-in within the current session
   836   * @param createSmsMessage JSON body
   837  @return GetMessageInfoResponseIntId
   838  */
   839  func (a *MessagesApiService) SendSMS(ctx context.Context, accountId string, extensionId string, createSmsMessage CreateSmsMessage) (GetMessageInfoResponseIntId, *http.Response, error) {
   840  	var (
   841  		localVarHttpMethod   = strings.ToUpper("Post")
   842  		localVarPostBody     interface{}
   843  		localVarFormFileName string
   844  		localVarFileName     string
   845  		localVarFileBytes    []byte
   846  		localVarReturnValue  GetMessageInfoResponseIntId
   847  	)
   848  
   849  	// create path and map variables
   850  	localVarPath := a.client.cfg.BasePath + "/restapi/v1.0/account/{accountId}/extension/{extensionId}/sms"
   851  	localVarPath = strings.Replace(localVarPath, "{"+"accountId"+"}", fmt.Sprintf("%v", accountId), -1)
   852  	localVarPath = strings.Replace(localVarPath, "{"+"extensionId"+"}", fmt.Sprintf("%v", extensionId), -1)
   853  
   854  	localVarHeaderParams := make(map[string]string)
   855  	localVarQueryParams := url.Values{}
   856  	localVarFormParams := url.Values{}
   857  
   858  	// to determine the Content-Type header
   859  	localVarHttpContentTypes := []string{"application/json"}
   860  
   861  	// set Content-Type header
   862  	localVarHttpContentType := selectHeaderContentType(localVarHttpContentTypes)
   863  	if localVarHttpContentType != "" {
   864  		localVarHeaderParams["Content-Type"] = localVarHttpContentType
   865  	}
   866  
   867  	// to determine the Accept header
   868  	localVarHttpHeaderAccepts := []string{"application/json"}
   869  
   870  	// set Accept header
   871  	localVarHttpHeaderAccept := selectHeaderAccept(localVarHttpHeaderAccepts)
   872  	if localVarHttpHeaderAccept != "" {
   873  		localVarHeaderParams["Accept"] = localVarHttpHeaderAccept
   874  	}
   875  	// body params
   876  	localVarPostBody = &createSmsMessage
   877  	r, err := a.client.prepareRequest(ctx, localVarPath, localVarHttpMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFormFileName, localVarFileName, localVarFileBytes)
   878  	if err != nil {
   879  		return localVarReturnValue, nil, err
   880  	}
   881  
   882  	localVarHttpResponse, err := a.client.callAPI(r)
   883  	if err != nil || localVarHttpResponse == nil {
   884  		return localVarReturnValue, localVarHttpResponse, err
   885  	}
   886  
   887  	localVarBody, err := ioutil.ReadAll(localVarHttpResponse.Body)
   888  	localVarHttpResponse.Body.Close()
   889  	if err != nil {
   890  		return localVarReturnValue, localVarHttpResponse, err
   891  	}
   892  
   893  	if localVarHttpResponse.StatusCode >= 300 {
   894  		newErr := GenericOpenAPIError{
   895  			body:  localVarBody,
   896  			error: localVarHttpResponse.Status,
   897  		}
   898  		if localVarHttpResponse.StatusCode == 0 {
   899  			var v GetMessageInfoResponseIntId
   900  			err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type"))
   901  			if err != nil {
   902  				newErr.error = err.Error()
   903  				return localVarReturnValue, localVarHttpResponse, newErr
   904  			}
   905  			newErr.model = v
   906  			return localVarReturnValue, localVarHttpResponse, newErr
   907  		}
   908  		return localVarReturnValue, localVarHttpResponse, newErr
   909  	}
   910  
   911  	err = a.client.decode(&localVarReturnValue, localVarBody, localVarHttpResponse.Header.Get("Content-Type"))
   912  	if err != nil {
   913  		newErr := GenericOpenAPIError{
   914  			body:  localVarBody,
   915  			error: err.Error(),
   916  		}
   917  		return localVarReturnValue, localVarHttpResponse, newErr
   918  	}
   919  
   920  	return localVarReturnValue, localVarHttpResponse, nil
   921  }
   922  
   923  /*
   924  MessagesApiService Get Message Sync
   925  &lt;p style&#x3D;&#39;font-style:italic;&#39;&gt;Since 1.0.4 (Release 5.13)&lt;/p&gt;&lt;p&gt;Provides facilities to synchronize mailbox content stored externally with server state.&lt;/p&gt;&lt;h4&gt;Required Permissions&lt;/h4&gt;&lt;table class&#x3D;&#39;fullwidth&#39;&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Permission&lt;/th&gt;&lt;th&gt;Description&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class&#x3D;&#39;code&#39;&gt;ReadMessages&lt;/td&gt;&lt;td&gt;Viewing user messages&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;h4&gt;Usage Plan Group&lt;/h4&gt;&lt;p&gt;Light&lt;/p&gt;
   926   * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
   927   * @param accountId Internal identifier of a RingCentral account or tilde (~) to indicate the account logged-in within the current session
   928   * @param extensionId Internal identifier of an extension or tilde (~) to indicate the extension assigned to the account logged-in within the current session
   929   * @param optional nil or *SyncMessagesOpts - Optional Parameters:
   930   * @param "ConversationId" (optional.Int32) -  Conversation identifier for the resulting messages. Meaningful for SMS and Pager messages only.
   931   * @param "DateFrom" (optional.String) -  The start datetime for resulting messages in ISO 8601 format including timezone, for example 2016-03-10T18:07:52.534Z. The default value is dateTo minus 24 hours
   932   * @param "DateTo" (optional.String) -  The end datetime for resulting messages in ISO 8601 format including timezone, for example 2016-03-10T18:07:52.534Z. The default value is current time
   933   * @param "Direction" (optional.Interface of []string) -  Direction for the resulting messages. If not specified, both inbound and outbound messages are returned. Multiple values are accepted
   934   * @param "DistinctConversations" (optional.Bool) -  If 'True', then the latest messages per every conversation ID are returned
   935   * @param "MessageType" (optional.Interface of []string) -  Type for the resulting messages. If not specified, all types of messages are returned. Multiple values are accepted
   936   * @param "RecordCount" (optional.Int32) -  Limits the number of records to be returned (works in combination with dateFrom and dateTo if specified)
   937   * @param "SyncToken" (optional.String) -  Value of syncToken property of last sync request response
   938   * @param "SyncType" (optional.Interface of []string) -  Type of message synchronization
   939  @return GetMessageSyncResponse
   940  */
   941  
   942  type SyncMessagesOpts struct {
   943  	ConversationId        optional.Int32
   944  	DateFrom              optional.String
   945  	DateTo                optional.String
   946  	Direction             optional.Interface
   947  	DistinctConversations optional.Bool
   948  	MessageType           optional.Interface
   949  	RecordCount           optional.Int32
   950  	SyncToken             optional.String
   951  	SyncType              optional.Interface
   952  }
   953  
   954  func (a *MessagesApiService) SyncMessages(ctx context.Context, accountId string, extensionId string, localVarOptionals *SyncMessagesOpts) (GetMessageSyncResponse, *http.Response, error) {
   955  	var (
   956  		localVarHttpMethod   = strings.ToUpper("Get")
   957  		localVarPostBody     interface{}
   958  		localVarFormFileName string
   959  		localVarFileName     string
   960  		localVarFileBytes    []byte
   961  		localVarReturnValue  GetMessageSyncResponse
   962  	)
   963  
   964  	// create path and map variables
   965  	localVarPath := a.client.cfg.BasePath + "/restapi/v1.0/account/{accountId}/extension/{extensionId}/message-sync"
   966  	localVarPath = strings.Replace(localVarPath, "{"+"accountId"+"}", fmt.Sprintf("%v", accountId), -1)
   967  	localVarPath = strings.Replace(localVarPath, "{"+"extensionId"+"}", fmt.Sprintf("%v", extensionId), -1)
   968  
   969  	localVarHeaderParams := make(map[string]string)
   970  	localVarQueryParams := url.Values{}
   971  	localVarFormParams := url.Values{}
   972  
   973  	if localVarOptionals != nil && localVarOptionals.ConversationId.IsSet() {
   974  		localVarQueryParams.Add("conversationId", parameterToString(localVarOptionals.ConversationId.Value(), ""))
   975  	}
   976  	if localVarOptionals != nil && localVarOptionals.DateFrom.IsSet() {
   977  		localVarQueryParams.Add("dateFrom", parameterToString(localVarOptionals.DateFrom.Value(), ""))
   978  	}
   979  	if localVarOptionals != nil && localVarOptionals.DateTo.IsSet() {
   980  		localVarQueryParams.Add("dateTo", parameterToString(localVarOptionals.DateTo.Value(), ""))
   981  	}
   982  	if localVarOptionals != nil && localVarOptionals.Direction.IsSet() {
   983  		localVarQueryParams.Add("direction", parameterToString(localVarOptionals.Direction.Value(), "multi"))
   984  	}
   985  	if localVarOptionals != nil && localVarOptionals.DistinctConversations.IsSet() {
   986  		localVarQueryParams.Add("distinctConversations", parameterToString(localVarOptionals.DistinctConversations.Value(), ""))
   987  	}
   988  	if localVarOptionals != nil && localVarOptionals.MessageType.IsSet() {
   989  		localVarQueryParams.Add("messageType", parameterToString(localVarOptionals.MessageType.Value(), "multi"))
   990  	}
   991  	if localVarOptionals != nil && localVarOptionals.RecordCount.IsSet() {
   992  		localVarQueryParams.Add("recordCount", parameterToString(localVarOptionals.RecordCount.Value(), ""))
   993  	}
   994  	if localVarOptionals != nil && localVarOptionals.SyncToken.IsSet() {
   995  		localVarQueryParams.Add("syncToken", parameterToString(localVarOptionals.SyncToken.Value(), ""))
   996  	}
   997  	if localVarOptionals != nil && localVarOptionals.SyncType.IsSet() {
   998  		localVarQueryParams.Add("syncType", parameterToString(localVarOptionals.SyncType.Value(), "multi"))
   999  	}
  1000  	// to determine the Content-Type header
  1001  	localVarHttpContentTypes := []string{}
  1002  
  1003  	// set Content-Type header
  1004  	localVarHttpContentType := selectHeaderContentType(localVarHttpContentTypes)
  1005  	if localVarHttpContentType != "" {
  1006  		localVarHeaderParams["Content-Type"] = localVarHttpContentType
  1007  	}
  1008  
  1009  	// to determine the Accept header
  1010  	localVarHttpHeaderAccepts := []string{"application/json"}
  1011  
  1012  	// set Accept header
  1013  	localVarHttpHeaderAccept := selectHeaderAccept(localVarHttpHeaderAccepts)
  1014  	if localVarHttpHeaderAccept != "" {
  1015  		localVarHeaderParams["Accept"] = localVarHttpHeaderAccept
  1016  	}
  1017  	r, err := a.client.prepareRequest(ctx, localVarPath, localVarHttpMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFormFileName, localVarFileName, localVarFileBytes)
  1018  	if err != nil {
  1019  		return localVarReturnValue, nil, err
  1020  	}
  1021  
  1022  	localVarHttpResponse, err := a.client.callAPI(r)
  1023  	if err != nil || localVarHttpResponse == nil {
  1024  		return localVarReturnValue, localVarHttpResponse, err
  1025  	}
  1026  
  1027  	localVarBody, err := ioutil.ReadAll(localVarHttpResponse.Body)
  1028  	localVarHttpResponse.Body.Close()
  1029  	if err != nil {
  1030  		return localVarReturnValue, localVarHttpResponse, err
  1031  	}
  1032  
  1033  	if localVarHttpResponse.StatusCode >= 300 {
  1034  		newErr := GenericOpenAPIError{
  1035  			body:  localVarBody,
  1036  			error: localVarHttpResponse.Status,
  1037  		}
  1038  		if localVarHttpResponse.StatusCode == 0 {
  1039  			var v GetMessageSyncResponse
  1040  			err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type"))
  1041  			if err != nil {
  1042  				newErr.error = err.Error()
  1043  				return localVarReturnValue, localVarHttpResponse, newErr
  1044  			}
  1045  			newErr.model = v
  1046  			return localVarReturnValue, localVarHttpResponse, newErr
  1047  		}
  1048  		return localVarReturnValue, localVarHttpResponse, newErr
  1049  	}
  1050  
  1051  	err = a.client.decode(&localVarReturnValue, localVarBody, localVarHttpResponse.Header.Get("Content-Type"))
  1052  	if err != nil {
  1053  		newErr := GenericOpenAPIError{
  1054  			body:  localVarBody,
  1055  			error: err.Error(),
  1056  		}
  1057  		return localVarReturnValue, localVarHttpResponse, newErr
  1058  	}
  1059  
  1060  	return localVarReturnValue, localVarHttpResponse, nil
  1061  }
  1062  
  1063  /*
  1064  MessagesApiService Update Message(s) by ID
  1065  &lt;p style&#x3D;&#39;font-style:italic;&#39;&gt;Since 1.0.2&lt;/p&gt;&lt;p&gt;Updates message(s) by ID(s). Batch request is supported, see Batch Requests for details. Currently, only the message read status updating is supported.&lt;/p&gt;&lt;h4&gt;Required Permissions&lt;/h4&gt;&lt;table class&#x3D;&#39;fullwidth&#39;&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Permission&lt;/th&gt;&lt;th&gt;Description&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class&#x3D;&#39;code&#39;&gt;EditMessages&lt;/td&gt;&lt;td&gt;Viewing and updating user messages&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class&#x3D;&#39;code&#39;&gt;ReadMessages&lt;/td&gt;&lt;td&gt;Viewing user messages&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;h4&gt;Usage Plan Group&lt;/h4&gt;&lt;p&gt;Medium&lt;/p&gt;
  1066   * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
  1067   * @param accountId Internal identifier of a RingCentral account or tilde (~) to indicate the account logged-in within the current session
  1068   * @param extensionId Internal identifier of an extension or tilde (~) to indicate the extension assigned to the account logged-in within the current session
  1069   * @param messageId Internal identifier of a message
  1070   * @param updateMessageRequest JSON body
  1071  @return GetMessageInfoResponse
  1072  */
  1073  func (a *MessagesApiService) UpdateMessage(ctx context.Context, accountId string, extensionId string, messageId int32, updateMessageRequest UpdateMessageRequest) (GetMessageInfoResponse, *http.Response, error) {
  1074  	var (
  1075  		localVarHttpMethod   = strings.ToUpper("Put")
  1076  		localVarPostBody     interface{}
  1077  		localVarFormFileName string
  1078  		localVarFileName     string
  1079  		localVarFileBytes    []byte
  1080  		localVarReturnValue  GetMessageInfoResponse
  1081  	)
  1082  
  1083  	// create path and map variables
  1084  	localVarPath := a.client.cfg.BasePath + "/restapi/v1.0/account/{accountId}/extension/{extensionId}/message-store/{messageId}"
  1085  	localVarPath = strings.Replace(localVarPath, "{"+"accountId"+"}", fmt.Sprintf("%v", accountId), -1)
  1086  	localVarPath = strings.Replace(localVarPath, "{"+"extensionId"+"}", fmt.Sprintf("%v", extensionId), -1)
  1087  	localVarPath = strings.Replace(localVarPath, "{"+"messageId"+"}", fmt.Sprintf("%v", messageId), -1)
  1088  
  1089  	localVarHeaderParams := make(map[string]string)
  1090  	localVarQueryParams := url.Values{}
  1091  	localVarFormParams := url.Values{}
  1092  
  1093  	// to determine the Content-Type header
  1094  	localVarHttpContentTypes := []string{"application/json"}
  1095  
  1096  	// set Content-Type header
  1097  	localVarHttpContentType := selectHeaderContentType(localVarHttpContentTypes)
  1098  	if localVarHttpContentType != "" {
  1099  		localVarHeaderParams["Content-Type"] = localVarHttpContentType
  1100  	}
  1101  
  1102  	// to determine the Accept header
  1103  	localVarHttpHeaderAccepts := []string{"application/json"}
  1104  
  1105  	// set Accept header
  1106  	localVarHttpHeaderAccept := selectHeaderAccept(localVarHttpHeaderAccepts)
  1107  	if localVarHttpHeaderAccept != "" {
  1108  		localVarHeaderParams["Accept"] = localVarHttpHeaderAccept
  1109  	}
  1110  	// body params
  1111  	localVarPostBody = &updateMessageRequest
  1112  	r, err := a.client.prepareRequest(ctx, localVarPath, localVarHttpMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFormFileName, localVarFileName, localVarFileBytes)
  1113  	if err != nil {
  1114  		return localVarReturnValue, nil, err
  1115  	}
  1116  
  1117  	localVarHttpResponse, err := a.client.callAPI(r)
  1118  	if err != nil || localVarHttpResponse == nil {
  1119  		return localVarReturnValue, localVarHttpResponse, err
  1120  	}
  1121  
  1122  	localVarBody, err := ioutil.ReadAll(localVarHttpResponse.Body)
  1123  	localVarHttpResponse.Body.Close()
  1124  	if err != nil {
  1125  		return localVarReturnValue, localVarHttpResponse, err
  1126  	}
  1127  
  1128  	if localVarHttpResponse.StatusCode >= 300 {
  1129  		newErr := GenericOpenAPIError{
  1130  			body:  localVarBody,
  1131  			error: localVarHttpResponse.Status,
  1132  		}
  1133  		if localVarHttpResponse.StatusCode == 0 {
  1134  			var v GetMessageInfoResponse
  1135  			err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type"))
  1136  			if err != nil {
  1137  				newErr.error = err.Error()
  1138  				return localVarReturnValue, localVarHttpResponse, newErr
  1139  			}
  1140  			newErr.model = v
  1141  			return localVarReturnValue, localVarHttpResponse, newErr
  1142  		}
  1143  		return localVarReturnValue, localVarHttpResponse, newErr
  1144  	}
  1145  
  1146  	err = a.client.decode(&localVarReturnValue, localVarBody, localVarHttpResponse.Header.Get("Content-Type"))
  1147  	if err != nil {
  1148  		newErr := GenericOpenAPIError{
  1149  			body:  localVarBody,
  1150  			error: err.Error(),
  1151  		}
  1152  		return localVarReturnValue, localVarHttpResponse, newErr
  1153  	}
  1154  
  1155  	return localVarReturnValue, localVarHttpResponse, nil
  1156  }