github.com/grokify/go-ringcentral-client@v0.3.31/office/v1/client/api_user_contacts.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  	"strings"
    20  )
    21  
    22  // Linger please
    23  var (
    24  	_ context.Context
    25  )
    26  
    27  type UserContactsApiService service
    28  
    29  /*
    30  UserContactsApiService Get Favorite Contacts
    31   * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
    32   * @param accountId Internal identifier of a RingCentral account or tilde (~) to indicate the account logged-in within the current session
    33   * @param extensionId Internal identifier of an extension or tilde (~) to indicate the extension assigned to the account logged-in within the current session
    34  */
    35  func (a *UserContactsApiService) ContactFavorite(ctx context.Context, accountId string, extensionId string) (*http.Response, error) {
    36  	var (
    37  		localVarHttpMethod   = strings.ToUpper("Get")
    38  		localVarPostBody     interface{}
    39  		localVarFormFileName string
    40  		localVarFileName     string
    41  		localVarFileBytes    []byte
    42  	)
    43  
    44  	// create path and map variables
    45  	localVarPath := a.client.cfg.BasePath + "/restapi/v1.0/account/{accountId}/extension/{extensionId}/favorite"
    46  	localVarPath = strings.Replace(localVarPath, "{"+"accountId"+"}", fmt.Sprintf("%v", accountId), -1)
    47  	localVarPath = strings.Replace(localVarPath, "{"+"extensionId"+"}", fmt.Sprintf("%v", extensionId), -1)
    48  
    49  	localVarHeaderParams := make(map[string]string)
    50  	localVarQueryParams := url.Values{}
    51  	localVarFormParams := url.Values{}
    52  
    53  	// to determine the Content-Type header
    54  	localVarHttpContentTypes := []string{}
    55  
    56  	// set Content-Type header
    57  	localVarHttpContentType := selectHeaderContentType(localVarHttpContentTypes)
    58  	if localVarHttpContentType != "" {
    59  		localVarHeaderParams["Content-Type"] = localVarHttpContentType
    60  	}
    61  
    62  	// to determine the Accept header
    63  	localVarHttpHeaderAccepts := []string{}
    64  
    65  	// set Accept header
    66  	localVarHttpHeaderAccept := selectHeaderAccept(localVarHttpHeaderAccepts)
    67  	if localVarHttpHeaderAccept != "" {
    68  		localVarHeaderParams["Accept"] = localVarHttpHeaderAccept
    69  	}
    70  	r, err := a.client.prepareRequest(ctx, localVarPath, localVarHttpMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFormFileName, localVarFileName, localVarFileBytes)
    71  	if err != nil {
    72  		return nil, err
    73  	}
    74  
    75  	localVarHttpResponse, err := a.client.callAPI(r)
    76  	if err != nil || localVarHttpResponse == nil {
    77  		return localVarHttpResponse, err
    78  	}
    79  
    80  	localVarBody, err := ioutil.ReadAll(localVarHttpResponse.Body)
    81  	localVarHttpResponse.Body.Close()
    82  	if err != nil {
    83  		return localVarHttpResponse, err
    84  	}
    85  
    86  	if localVarHttpResponse.StatusCode >= 300 {
    87  		newErr := GenericOpenAPIError{
    88  			body:  localVarBody,
    89  			error: localVarHttpResponse.Status,
    90  		}
    91  		return localVarHttpResponse, newErr
    92  	}
    93  
    94  	return localVarHttpResponse, nil
    95  }
    96  
    97  /*
    98  UserContactsApiService Create Contact
    99  &lt;p style&#x3D;&#39;font-style:italic;&#39;&gt;&lt;/p&gt;&lt;p&gt;&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;Contacts&lt;/td&gt;&lt;td&gt;Creating, viewing, editing and deleting user personal contacts&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class&#x3D;&#39;code&#39;&gt;ReadContacts&lt;/td&gt;&lt;td&gt;Viewing user personal contacts&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;
   100   * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
   101   * @param accountId Internal identifier of a RingCentral account or tilde (~) to indicate the account logged-in within the current session
   102   * @param extensionId Internal identifier of an extension or tilde (~) to indicate the extension assigned to the account logged-in within the current session
   103   * @param optional nil or *CreateContactOpts - Optional Parameters:
   104   * @param "PersonalContactResource" (optional.Interface of PersonalContactResource) -
   105  @return PersonalContactResource
   106  */
   107  
   108  type CreateContactOpts struct {
   109  	PersonalContactResource optional.Interface
   110  }
   111  
   112  func (a *UserContactsApiService) CreateContact(ctx context.Context, accountId string, extensionId string, localVarOptionals *CreateContactOpts) (PersonalContactResource, *http.Response, error) {
   113  	var (
   114  		localVarHttpMethod   = strings.ToUpper("Post")
   115  		localVarPostBody     interface{}
   116  		localVarFormFileName string
   117  		localVarFileName     string
   118  		localVarFileBytes    []byte
   119  		localVarReturnValue  PersonalContactResource
   120  	)
   121  
   122  	// create path and map variables
   123  	localVarPath := a.client.cfg.BasePath + "/restapi/v1.0/account/{accountId}/extension/{extensionId}/address-book/contact"
   124  	localVarPath = strings.Replace(localVarPath, "{"+"accountId"+"}", fmt.Sprintf("%v", accountId), -1)
   125  	localVarPath = strings.Replace(localVarPath, "{"+"extensionId"+"}", fmt.Sprintf("%v", extensionId), -1)
   126  
   127  	localVarHeaderParams := make(map[string]string)
   128  	localVarQueryParams := url.Values{}
   129  	localVarFormParams := url.Values{}
   130  
   131  	// to determine the Content-Type header
   132  	localVarHttpContentTypes := []string{"application/json"}
   133  
   134  	// set Content-Type header
   135  	localVarHttpContentType := selectHeaderContentType(localVarHttpContentTypes)
   136  	if localVarHttpContentType != "" {
   137  		localVarHeaderParams["Content-Type"] = localVarHttpContentType
   138  	}
   139  
   140  	// to determine the Accept header
   141  	localVarHttpHeaderAccepts := []string{"application/json"}
   142  
   143  	// set Accept header
   144  	localVarHttpHeaderAccept := selectHeaderAccept(localVarHttpHeaderAccepts)
   145  	if localVarHttpHeaderAccept != "" {
   146  		localVarHeaderParams["Accept"] = localVarHttpHeaderAccept
   147  	}
   148  	// body params
   149  	if localVarOptionals != nil && localVarOptionals.PersonalContactResource.IsSet() {
   150  		localVarOptionalPersonalContactResource, localVarOptionalPersonalContactResourceok := localVarOptionals.PersonalContactResource.Value().(PersonalContactResource)
   151  		if !localVarOptionalPersonalContactResourceok {
   152  			return localVarReturnValue, nil, reportError("personalContactResource should be PersonalContactResource")
   153  		}
   154  		localVarPostBody = &localVarOptionalPersonalContactResource
   155  	}
   156  
   157  	r, err := a.client.prepareRequest(ctx, localVarPath, localVarHttpMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFormFileName, localVarFileName, localVarFileBytes)
   158  	if err != nil {
   159  		return localVarReturnValue, nil, err
   160  	}
   161  
   162  	localVarHttpResponse, err := a.client.callAPI(r)
   163  	if err != nil || localVarHttpResponse == nil {
   164  		return localVarReturnValue, localVarHttpResponse, err
   165  	}
   166  
   167  	localVarBody, err := ioutil.ReadAll(localVarHttpResponse.Body)
   168  	localVarHttpResponse.Body.Close()
   169  	if err != nil {
   170  		return localVarReturnValue, localVarHttpResponse, err
   171  	}
   172  
   173  	if localVarHttpResponse.StatusCode >= 300 {
   174  		newErr := GenericOpenAPIError{
   175  			body:  localVarBody,
   176  			error: localVarHttpResponse.Status,
   177  		}
   178  		if localVarHttpResponse.StatusCode == 0 {
   179  			var v PersonalContactResource
   180  			err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type"))
   181  			if err != nil {
   182  				newErr.error = err.Error()
   183  				return localVarReturnValue, localVarHttpResponse, newErr
   184  			}
   185  			newErr.model = v
   186  			return localVarReturnValue, localVarHttpResponse, newErr
   187  		}
   188  		return localVarReturnValue, localVarHttpResponse, newErr
   189  	}
   190  
   191  	err = a.client.decode(&localVarReturnValue, localVarBody, localVarHttpResponse.Header.Get("Content-Type"))
   192  	if err != nil {
   193  		newErr := GenericOpenAPIError{
   194  			body:  localVarBody,
   195  			error: err.Error(),
   196  		}
   197  		return localVarReturnValue, localVarHttpResponse, newErr
   198  	}
   199  
   200  	return localVarReturnValue, localVarHttpResponse, nil
   201  }
   202  
   203  /*
   204  UserContactsApiService Update Favorite Contacts
   205   * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
   206   * @param accountId Internal identifier of a RingCentral account or tilde (~) to indicate the account logged-in within the current session
   207   * @param extensionId Internal identifier of an extension or tilde (~) to indicate the extension assigned to the account logged-in within the current session
   208   * @param optional nil or *CreateContactsOpts - Optional Parameters:
   209   * @param "FavoriteCollection" (optional.Interface of FavoriteCollection) -
   210  */
   211  
   212  type CreateContactsOpts struct {
   213  	FavoriteCollection optional.Interface
   214  }
   215  
   216  func (a *UserContactsApiService) CreateContacts(ctx context.Context, accountId string, extensionId string, localVarOptionals *CreateContactsOpts) (*http.Response, error) {
   217  	var (
   218  		localVarHttpMethod   = strings.ToUpper("Put")
   219  		localVarPostBody     interface{}
   220  		localVarFormFileName string
   221  		localVarFileName     string
   222  		localVarFileBytes    []byte
   223  	)
   224  
   225  	// create path and map variables
   226  	localVarPath := a.client.cfg.BasePath + "/restapi/v1.0/account/{accountId}/extension/{extensionId}/favorite"
   227  	localVarPath = strings.Replace(localVarPath, "{"+"accountId"+"}", fmt.Sprintf("%v", accountId), -1)
   228  	localVarPath = strings.Replace(localVarPath, "{"+"extensionId"+"}", fmt.Sprintf("%v", extensionId), -1)
   229  
   230  	localVarHeaderParams := make(map[string]string)
   231  	localVarQueryParams := url.Values{}
   232  	localVarFormParams := url.Values{}
   233  
   234  	// to determine the Content-Type header
   235  	localVarHttpContentTypes := []string{"application/json"}
   236  
   237  	// set Content-Type header
   238  	localVarHttpContentType := selectHeaderContentType(localVarHttpContentTypes)
   239  	if localVarHttpContentType != "" {
   240  		localVarHeaderParams["Content-Type"] = localVarHttpContentType
   241  	}
   242  
   243  	// to determine the Accept header
   244  	localVarHttpHeaderAccepts := []string{}
   245  
   246  	// set Accept header
   247  	localVarHttpHeaderAccept := selectHeaderAccept(localVarHttpHeaderAccepts)
   248  	if localVarHttpHeaderAccept != "" {
   249  		localVarHeaderParams["Accept"] = localVarHttpHeaderAccept
   250  	}
   251  	// body params
   252  	if localVarOptionals != nil && localVarOptionals.FavoriteCollection.IsSet() {
   253  		localVarOptionalFavoriteCollection, localVarOptionalFavoriteCollectionok := localVarOptionals.FavoriteCollection.Value().(FavoriteCollection)
   254  		if !localVarOptionalFavoriteCollectionok {
   255  			return nil, reportError("favoriteCollection should be FavoriteCollection")
   256  		}
   257  		localVarPostBody = &localVarOptionalFavoriteCollection
   258  	}
   259  
   260  	r, err := a.client.prepareRequest(ctx, localVarPath, localVarHttpMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFormFileName, localVarFileName, localVarFileBytes)
   261  	if err != nil {
   262  		return nil, err
   263  	}
   264  
   265  	localVarHttpResponse, err := a.client.callAPI(r)
   266  	if err != nil || localVarHttpResponse == nil {
   267  		return localVarHttpResponse, err
   268  	}
   269  
   270  	localVarBody, err := ioutil.ReadAll(localVarHttpResponse.Body)
   271  	localVarHttpResponse.Body.Close()
   272  	if err != nil {
   273  		return localVarHttpResponse, err
   274  	}
   275  
   276  	if localVarHttpResponse.StatusCode >= 300 {
   277  		newErr := GenericOpenAPIError{
   278  			body:  localVarBody,
   279  			error: localVarHttpResponse.Status,
   280  		}
   281  		return localVarHttpResponse, newErr
   282  	}
   283  
   284  	return localVarHttpResponse, nil
   285  }
   286  
   287  /*
   288  UserContactsApiService Delete Contact(s) by ID
   289  &lt;p style&#x3D;&#39;font-style:italic;&#39;&gt;&lt;/p&gt;&lt;p&gt;&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;Contacts&lt;/td&gt;&lt;td&gt;Creating, viewing, editing and deleting user personal contacts&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class&#x3D;&#39;code&#39;&gt;ReadContacts&lt;/td&gt;&lt;td&gt;Viewing user personal contacts&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;
   290   * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
   291   * @param accountId Internal identifier of a RingCentral account or tilde (~) to indicate the account logged-in within the current session
   292   * @param extensionId Internal identifier of an extension or tilde (~) to indicate the extension assigned to the account logged-in within the current session
   293   * @param contactId Internal identifier of a contact record in the RingCentral database
   294  */
   295  func (a *UserContactsApiService) DeleteContact(ctx context.Context, accountId string, extensionId string, contactId int32) (*http.Response, error) {
   296  	var (
   297  		localVarHttpMethod   = strings.ToUpper("Delete")
   298  		localVarPostBody     interface{}
   299  		localVarFormFileName string
   300  		localVarFileName     string
   301  		localVarFileBytes    []byte
   302  	)
   303  
   304  	// create path and map variables
   305  	localVarPath := a.client.cfg.BasePath + "/restapi/v1.0/account/{accountId}/extension/{extensionId}/address-book/contact/{contactId}"
   306  	localVarPath = strings.Replace(localVarPath, "{"+"accountId"+"}", fmt.Sprintf("%v", accountId), -1)
   307  	localVarPath = strings.Replace(localVarPath, "{"+"extensionId"+"}", fmt.Sprintf("%v", extensionId), -1)
   308  	localVarPath = strings.Replace(localVarPath, "{"+"contactId"+"}", fmt.Sprintf("%v", contactId), -1)
   309  
   310  	localVarHeaderParams := make(map[string]string)
   311  	localVarQueryParams := url.Values{}
   312  	localVarFormParams := url.Values{}
   313  
   314  	// to determine the Content-Type header
   315  	localVarHttpContentTypes := []string{}
   316  
   317  	// set Content-Type header
   318  	localVarHttpContentType := selectHeaderContentType(localVarHttpContentTypes)
   319  	if localVarHttpContentType != "" {
   320  		localVarHeaderParams["Content-Type"] = localVarHttpContentType
   321  	}
   322  
   323  	// to determine the Accept header
   324  	localVarHttpHeaderAccepts := []string{}
   325  
   326  	// set Accept header
   327  	localVarHttpHeaderAccept := selectHeaderAccept(localVarHttpHeaderAccepts)
   328  	if localVarHttpHeaderAccept != "" {
   329  		localVarHeaderParams["Accept"] = localVarHttpHeaderAccept
   330  	}
   331  	r, err := a.client.prepareRequest(ctx, localVarPath, localVarHttpMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFormFileName, localVarFileName, localVarFileBytes)
   332  	if err != nil {
   333  		return nil, err
   334  	}
   335  
   336  	localVarHttpResponse, err := a.client.callAPI(r)
   337  	if err != nil || localVarHttpResponse == nil {
   338  		return localVarHttpResponse, err
   339  	}
   340  
   341  	localVarBody, err := ioutil.ReadAll(localVarHttpResponse.Body)
   342  	localVarHttpResponse.Body.Close()
   343  	if err != nil {
   344  		return localVarHttpResponse, err
   345  	}
   346  
   347  	if localVarHttpResponse.StatusCode >= 300 {
   348  		newErr := GenericOpenAPIError{
   349  			body:  localVarBody,
   350  			error: localVarHttpResponse.Status,
   351  		}
   352  		return localVarHttpResponse, newErr
   353  	}
   354  
   355  	return localVarHttpResponse, nil
   356  }
   357  
   358  /*
   359  UserContactsApiService Get Contacts
   360  &lt;p style&#x3D;&#39;font-style:italic;&#39;&gt;&lt;/p&gt;&lt;p&gt;&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;ReadContacts&lt;/td&gt;&lt;td&gt;Viewing user personal contacts&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;
   361   * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
   362   * @param accountId Internal identifier of a RingCentral account or tilde (~) to indicate the account logged-in within the current session
   363   * @param extensionId Internal identifier of an extension or tilde (~) to indicate the extension assigned to the account logged-in within the current session
   364   * @param optional nil or *ListContactsOpts - Optional Parameters:
   365   * @param "StartsWith" (optional.String) -  If specified, only contacts whose First name or Last name start with the mentioned substring are returned. Case-insensitive
   366   * @param "SortBy" (optional.Interface of []string) -  Sorts results by the specified property. The default is 'First Name'
   367   * @param "Page" (optional.Int32) -  Indicates the page number to retrieve. Only positive number values are allowed. Default value is '1'
   368   * @param "PerPage" (optional.Int32) -  Indicates the page size (number of items). If not specified, the value is '100' by default
   369   * @param "PhoneNumber" (optional.Interface of []string) -
   370  @return ContactList
   371  */
   372  
   373  type ListContactsOpts struct {
   374  	StartsWith  optional.String
   375  	SortBy      optional.Interface
   376  	Page        optional.Int32
   377  	PerPage     optional.Int32
   378  	PhoneNumber optional.Interface
   379  }
   380  
   381  func (a *UserContactsApiService) ListContacts(ctx context.Context, accountId string, extensionId string, localVarOptionals *ListContactsOpts) (ContactList, *http.Response, error) {
   382  	var (
   383  		localVarHttpMethod   = strings.ToUpper("Get")
   384  		localVarPostBody     interface{}
   385  		localVarFormFileName string
   386  		localVarFileName     string
   387  		localVarFileBytes    []byte
   388  		localVarReturnValue  ContactList
   389  	)
   390  
   391  	// create path and map variables
   392  	localVarPath := a.client.cfg.BasePath + "/restapi/v1.0/account/{accountId}/extension/{extensionId}/address-book/contact"
   393  	localVarPath = strings.Replace(localVarPath, "{"+"accountId"+"}", fmt.Sprintf("%v", accountId), -1)
   394  	localVarPath = strings.Replace(localVarPath, "{"+"extensionId"+"}", fmt.Sprintf("%v", extensionId), -1)
   395  
   396  	localVarHeaderParams := make(map[string]string)
   397  	localVarQueryParams := url.Values{}
   398  	localVarFormParams := url.Values{}
   399  
   400  	if localVarOptionals != nil && localVarOptionals.StartsWith.IsSet() {
   401  		localVarQueryParams.Add("startsWith", parameterToString(localVarOptionals.StartsWith.Value(), ""))
   402  	}
   403  	if localVarOptionals != nil && localVarOptionals.SortBy.IsSet() {
   404  		localVarQueryParams.Add("sortBy", parameterToString(localVarOptionals.SortBy.Value(), "multi"))
   405  	}
   406  	if localVarOptionals != nil && localVarOptionals.Page.IsSet() {
   407  		localVarQueryParams.Add("page", parameterToString(localVarOptionals.Page.Value(), ""))
   408  	}
   409  	if localVarOptionals != nil && localVarOptionals.PerPage.IsSet() {
   410  		localVarQueryParams.Add("perPage", parameterToString(localVarOptionals.PerPage.Value(), ""))
   411  	}
   412  	if localVarOptionals != nil && localVarOptionals.PhoneNumber.IsSet() {
   413  		localVarQueryParams.Add("phoneNumber", parameterToString(localVarOptionals.PhoneNumber.Value(), "multi"))
   414  	}
   415  	// to determine the Content-Type header
   416  	localVarHttpContentTypes := []string{}
   417  
   418  	// set Content-Type header
   419  	localVarHttpContentType := selectHeaderContentType(localVarHttpContentTypes)
   420  	if localVarHttpContentType != "" {
   421  		localVarHeaderParams["Content-Type"] = localVarHttpContentType
   422  	}
   423  
   424  	// to determine the Accept header
   425  	localVarHttpHeaderAccepts := []string{"application/json"}
   426  
   427  	// set Accept header
   428  	localVarHttpHeaderAccept := selectHeaderAccept(localVarHttpHeaderAccepts)
   429  	if localVarHttpHeaderAccept != "" {
   430  		localVarHeaderParams["Accept"] = localVarHttpHeaderAccept
   431  	}
   432  	r, err := a.client.prepareRequest(ctx, localVarPath, localVarHttpMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFormFileName, localVarFileName, localVarFileBytes)
   433  	if err != nil {
   434  		return localVarReturnValue, nil, err
   435  	}
   436  
   437  	localVarHttpResponse, err := a.client.callAPI(r)
   438  	if err != nil || localVarHttpResponse == nil {
   439  		return localVarReturnValue, localVarHttpResponse, err
   440  	}
   441  
   442  	localVarBody, err := ioutil.ReadAll(localVarHttpResponse.Body)
   443  	localVarHttpResponse.Body.Close()
   444  	if err != nil {
   445  		return localVarReturnValue, localVarHttpResponse, err
   446  	}
   447  
   448  	if localVarHttpResponse.StatusCode >= 300 {
   449  		newErr := GenericOpenAPIError{
   450  			body:  localVarBody,
   451  			error: localVarHttpResponse.Status,
   452  		}
   453  		if localVarHttpResponse.StatusCode == 0 {
   454  			var v ContactList
   455  			err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type"))
   456  			if err != nil {
   457  				newErr.error = err.Error()
   458  				return localVarReturnValue, localVarHttpResponse, newErr
   459  			}
   460  			newErr.model = v
   461  			return localVarReturnValue, localVarHttpResponse, newErr
   462  		}
   463  		return localVarReturnValue, localVarHttpResponse, newErr
   464  	}
   465  
   466  	err = a.client.decode(&localVarReturnValue, localVarBody, localVarHttpResponse.Header.Get("Content-Type"))
   467  	if err != nil {
   468  		newErr := GenericOpenAPIError{
   469  			body:  localVarBody,
   470  			error: err.Error(),
   471  		}
   472  		return localVarReturnValue, localVarHttpResponse, newErr
   473  	}
   474  
   475  	return localVarReturnValue, localVarHttpResponse, nil
   476  }
   477  
   478  /*
   479  UserContactsApiService Get Contact(s) by ID
   480  &lt;p style&#x3D;&#39;font-style:italic;&#39;&gt;&lt;/p&gt;&lt;p&gt;&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;ReadContacts&lt;/td&gt;&lt;td&gt;Viewing user personal contacts&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;
   481   * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
   482   * @param accountId Internal identifier of a RingCentral account or tilde (~) to indicate the account logged-in within the current session
   483   * @param extensionId Internal identifier of an extension or tilde (~) to indicate the extension assigned to the account logged-in within the current session
   484   * @param contactId Internal identifier of a contact record in the RingCentral database
   485  @return PersonalContactResource
   486  */
   487  func (a *UserContactsApiService) LoadContact(ctx context.Context, accountId string, extensionId string, contactId int32) (PersonalContactResource, *http.Response, error) {
   488  	var (
   489  		localVarHttpMethod   = strings.ToUpper("Get")
   490  		localVarPostBody     interface{}
   491  		localVarFormFileName string
   492  		localVarFileName     string
   493  		localVarFileBytes    []byte
   494  		localVarReturnValue  PersonalContactResource
   495  	)
   496  
   497  	// create path and map variables
   498  	localVarPath := a.client.cfg.BasePath + "/restapi/v1.0/account/{accountId}/extension/{extensionId}/address-book/contact/{contactId}"
   499  	localVarPath = strings.Replace(localVarPath, "{"+"accountId"+"}", fmt.Sprintf("%v", accountId), -1)
   500  	localVarPath = strings.Replace(localVarPath, "{"+"extensionId"+"}", fmt.Sprintf("%v", extensionId), -1)
   501  	localVarPath = strings.Replace(localVarPath, "{"+"contactId"+"}", fmt.Sprintf("%v", contactId), -1)
   502  
   503  	localVarHeaderParams := make(map[string]string)
   504  	localVarQueryParams := url.Values{}
   505  	localVarFormParams := url.Values{}
   506  
   507  	// to determine the Content-Type header
   508  	localVarHttpContentTypes := []string{}
   509  
   510  	// set Content-Type header
   511  	localVarHttpContentType := selectHeaderContentType(localVarHttpContentTypes)
   512  	if localVarHttpContentType != "" {
   513  		localVarHeaderParams["Content-Type"] = localVarHttpContentType
   514  	}
   515  
   516  	// to determine the Accept header
   517  	localVarHttpHeaderAccepts := []string{"application/json"}
   518  
   519  	// set Accept header
   520  	localVarHttpHeaderAccept := selectHeaderAccept(localVarHttpHeaderAccepts)
   521  	if localVarHttpHeaderAccept != "" {
   522  		localVarHeaderParams["Accept"] = localVarHttpHeaderAccept
   523  	}
   524  	r, err := a.client.prepareRequest(ctx, localVarPath, localVarHttpMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFormFileName, localVarFileName, localVarFileBytes)
   525  	if err != nil {
   526  		return localVarReturnValue, nil, err
   527  	}
   528  
   529  	localVarHttpResponse, err := a.client.callAPI(r)
   530  	if err != nil || localVarHttpResponse == nil {
   531  		return localVarReturnValue, localVarHttpResponse, err
   532  	}
   533  
   534  	localVarBody, err := ioutil.ReadAll(localVarHttpResponse.Body)
   535  	localVarHttpResponse.Body.Close()
   536  	if err != nil {
   537  		return localVarReturnValue, localVarHttpResponse, err
   538  	}
   539  
   540  	if localVarHttpResponse.StatusCode >= 300 {
   541  		newErr := GenericOpenAPIError{
   542  			body:  localVarBody,
   543  			error: localVarHttpResponse.Status,
   544  		}
   545  		if localVarHttpResponse.StatusCode == 0 {
   546  			var v PersonalContactResource
   547  			err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type"))
   548  			if err != nil {
   549  				newErr.error = err.Error()
   550  				return localVarReturnValue, localVarHttpResponse, newErr
   551  			}
   552  			newErr.model = v
   553  			return localVarReturnValue, localVarHttpResponse, newErr
   554  		}
   555  		return localVarReturnValue, localVarHttpResponse, newErr
   556  	}
   557  
   558  	err = a.client.decode(&localVarReturnValue, localVarBody, localVarHttpResponse.Header.Get("Content-Type"))
   559  	if err != nil {
   560  		newErr := GenericOpenAPIError{
   561  			body:  localVarBody,
   562  			error: err.Error(),
   563  		}
   564  		return localVarReturnValue, localVarHttpResponse, newErr
   565  	}
   566  
   567  	return localVarReturnValue, localVarHttpResponse, nil
   568  }
   569  
   570  /*
   571  UserContactsApiService Address Book Synchronization
   572  &lt;p style&#x3D;&#39;font-style:italic;&#39;&gt;&lt;/p&gt;&lt;p&gt;&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;ReadContacts&lt;/td&gt;&lt;td&gt;Viewing user personal contacts&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;
   573   * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
   574   * @param accountId Internal identifier of a RingCentral account or tilde (~) to indicate the account logged-in within the current session
   575   * @param extensionId Internal identifier of an extension or tilde (~) to indicate the extension assigned to the account logged-in within the current session
   576   * @param optional nil or *SyncAddressBookOpts - Optional Parameters:
   577   * @param "SyncType" (optional.Interface of []string) -  Type of synchronization. The default value is 'FSync'
   578   * @param "SyncToken" (optional.String) -  Value of syncToken property of the last sync request response
   579   * @param "PerPage" (optional.Int32) -  Number of records per page to be returned. The max number of records is 250, which is also the default. For FSync ??? if the number of records exceeds the parameter value (either specified or default), all of the pages can be retrieved in several requests. For ISync ??? if the number of records exceeds the page size, the number of incoming changes to this number is limited
   580   * @param "PageId" (optional.Int32) -  Internal identifier of a page. It can be obtained from the 'nextPageId' parameter passed in response body
   581  @return AddressBookSync
   582  */
   583  
   584  type SyncAddressBookOpts struct {
   585  	SyncType  optional.Interface
   586  	SyncToken optional.String
   587  	PerPage   optional.Int32
   588  	PageId    optional.Int32
   589  }
   590  
   591  func (a *UserContactsApiService) SyncAddressBook(ctx context.Context, accountId string, extensionId string, localVarOptionals *SyncAddressBookOpts) (AddressBookSync, *http.Response, error) {
   592  	var (
   593  		localVarHttpMethod   = strings.ToUpper("Get")
   594  		localVarPostBody     interface{}
   595  		localVarFormFileName string
   596  		localVarFileName     string
   597  		localVarFileBytes    []byte
   598  		localVarReturnValue  AddressBookSync
   599  	)
   600  
   601  	// create path and map variables
   602  	localVarPath := a.client.cfg.BasePath + "/restapi/v1.0/account/{accountId}/extension/{extensionId}/address-book-sync"
   603  	localVarPath = strings.Replace(localVarPath, "{"+"accountId"+"}", fmt.Sprintf("%v", accountId), -1)
   604  	localVarPath = strings.Replace(localVarPath, "{"+"extensionId"+"}", fmt.Sprintf("%v", extensionId), -1)
   605  
   606  	localVarHeaderParams := make(map[string]string)
   607  	localVarQueryParams := url.Values{}
   608  	localVarFormParams := url.Values{}
   609  
   610  	if localVarOptionals != nil && localVarOptionals.SyncType.IsSet() {
   611  		localVarQueryParams.Add("syncType", parameterToString(localVarOptionals.SyncType.Value(), "multi"))
   612  	}
   613  	if localVarOptionals != nil && localVarOptionals.SyncToken.IsSet() {
   614  		localVarQueryParams.Add("syncToken", parameterToString(localVarOptionals.SyncToken.Value(), ""))
   615  	}
   616  	if localVarOptionals != nil && localVarOptionals.PerPage.IsSet() {
   617  		localVarQueryParams.Add("perPage", parameterToString(localVarOptionals.PerPage.Value(), ""))
   618  	}
   619  	if localVarOptionals != nil && localVarOptionals.PageId.IsSet() {
   620  		localVarQueryParams.Add("pageId", parameterToString(localVarOptionals.PageId.Value(), ""))
   621  	}
   622  	// to determine the Content-Type header
   623  	localVarHttpContentTypes := []string{}
   624  
   625  	// set Content-Type header
   626  	localVarHttpContentType := selectHeaderContentType(localVarHttpContentTypes)
   627  	if localVarHttpContentType != "" {
   628  		localVarHeaderParams["Content-Type"] = localVarHttpContentType
   629  	}
   630  
   631  	// to determine the Accept header
   632  	localVarHttpHeaderAccepts := []string{"application/json"}
   633  
   634  	// set Accept header
   635  	localVarHttpHeaderAccept := selectHeaderAccept(localVarHttpHeaderAccepts)
   636  	if localVarHttpHeaderAccept != "" {
   637  		localVarHeaderParams["Accept"] = localVarHttpHeaderAccept
   638  	}
   639  	r, err := a.client.prepareRequest(ctx, localVarPath, localVarHttpMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFormFileName, localVarFileName, localVarFileBytes)
   640  	if err != nil {
   641  		return localVarReturnValue, nil, err
   642  	}
   643  
   644  	localVarHttpResponse, err := a.client.callAPI(r)
   645  	if err != nil || localVarHttpResponse == nil {
   646  		return localVarReturnValue, localVarHttpResponse, err
   647  	}
   648  
   649  	localVarBody, err := ioutil.ReadAll(localVarHttpResponse.Body)
   650  	localVarHttpResponse.Body.Close()
   651  	if err != nil {
   652  		return localVarReturnValue, localVarHttpResponse, err
   653  	}
   654  
   655  	if localVarHttpResponse.StatusCode >= 300 {
   656  		newErr := GenericOpenAPIError{
   657  			body:  localVarBody,
   658  			error: localVarHttpResponse.Status,
   659  		}
   660  		if localVarHttpResponse.StatusCode == 0 {
   661  			var v AddressBookSync
   662  			err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type"))
   663  			if err != nil {
   664  				newErr.error = err.Error()
   665  				return localVarReturnValue, localVarHttpResponse, newErr
   666  			}
   667  			newErr.model = v
   668  			return localVarReturnValue, localVarHttpResponse, newErr
   669  		}
   670  		return localVarReturnValue, localVarHttpResponse, newErr
   671  	}
   672  
   673  	err = a.client.decode(&localVarReturnValue, localVarBody, localVarHttpResponse.Header.Get("Content-Type"))
   674  	if err != nil {
   675  		newErr := GenericOpenAPIError{
   676  			body:  localVarBody,
   677  			error: err.Error(),
   678  		}
   679  		return localVarReturnValue, localVarHttpResponse, newErr
   680  	}
   681  
   682  	return localVarReturnValue, localVarHttpResponse, nil
   683  }
   684  
   685  /*
   686  UserContactsApiService Update Contact(s) by ID
   687  &lt;p style&#x3D;&#39;font-style:italic;&#39;&gt;&lt;/p&gt;&lt;p&gt;&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;Contacts&lt;/td&gt;&lt;td&gt;Creating, viewing, editing and deleting user personal contacts&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class&#x3D;&#39;code&#39;&gt;ReadContacts&lt;/td&gt;&lt;td&gt;Viewing user personal contacts&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;
   688   * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
   689   * @param accountId Internal identifier of a RingCentral account or tilde (~) to indicate the account logged-in within the current session
   690   * @param extensionId Internal identifier of an extension or tilde (~) to indicate the extension assigned to the account logged-in within the current session
   691   * @param contactId Internal identifier of a contact record in the RingCentral database
   692   * @param optional nil or *UpdateContactOpts - Optional Parameters:
   693   * @param "PersonalContactResource" (optional.Interface of PersonalContactResource) -
   694  @return PersonalContactResource
   695  */
   696  
   697  type UpdateContactOpts struct {
   698  	PersonalContactResource optional.Interface
   699  }
   700  
   701  func (a *UserContactsApiService) UpdateContact(ctx context.Context, accountId string, extensionId string, contactId int32, localVarOptionals *UpdateContactOpts) (PersonalContactResource, *http.Response, error) {
   702  	var (
   703  		localVarHttpMethod   = strings.ToUpper("Put")
   704  		localVarPostBody     interface{}
   705  		localVarFormFileName string
   706  		localVarFileName     string
   707  		localVarFileBytes    []byte
   708  		localVarReturnValue  PersonalContactResource
   709  	)
   710  
   711  	// create path and map variables
   712  	localVarPath := a.client.cfg.BasePath + "/restapi/v1.0/account/{accountId}/extension/{extensionId}/address-book/contact/{contactId}"
   713  	localVarPath = strings.Replace(localVarPath, "{"+"accountId"+"}", fmt.Sprintf("%v", accountId), -1)
   714  	localVarPath = strings.Replace(localVarPath, "{"+"extensionId"+"}", fmt.Sprintf("%v", extensionId), -1)
   715  	localVarPath = strings.Replace(localVarPath, "{"+"contactId"+"}", fmt.Sprintf("%v", contactId), -1)
   716  
   717  	localVarHeaderParams := make(map[string]string)
   718  	localVarQueryParams := url.Values{}
   719  	localVarFormParams := url.Values{}
   720  
   721  	// to determine the Content-Type header
   722  	localVarHttpContentTypes := []string{"application/json"}
   723  
   724  	// set Content-Type header
   725  	localVarHttpContentType := selectHeaderContentType(localVarHttpContentTypes)
   726  	if localVarHttpContentType != "" {
   727  		localVarHeaderParams["Content-Type"] = localVarHttpContentType
   728  	}
   729  
   730  	// to determine the Accept header
   731  	localVarHttpHeaderAccepts := []string{"application/json"}
   732  
   733  	// set Accept header
   734  	localVarHttpHeaderAccept := selectHeaderAccept(localVarHttpHeaderAccepts)
   735  	if localVarHttpHeaderAccept != "" {
   736  		localVarHeaderParams["Accept"] = localVarHttpHeaderAccept
   737  	}
   738  	// body params
   739  	if localVarOptionals != nil && localVarOptionals.PersonalContactResource.IsSet() {
   740  		localVarOptionalPersonalContactResource, localVarOptionalPersonalContactResourceok := localVarOptionals.PersonalContactResource.Value().(PersonalContactResource)
   741  		if !localVarOptionalPersonalContactResourceok {
   742  			return localVarReturnValue, nil, reportError("personalContactResource should be PersonalContactResource")
   743  		}
   744  		localVarPostBody = &localVarOptionalPersonalContactResource
   745  	}
   746  
   747  	r, err := a.client.prepareRequest(ctx, localVarPath, localVarHttpMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFormFileName, localVarFileName, localVarFileBytes)
   748  	if err != nil {
   749  		return localVarReturnValue, nil, err
   750  	}
   751  
   752  	localVarHttpResponse, err := a.client.callAPI(r)
   753  	if err != nil || localVarHttpResponse == nil {
   754  		return localVarReturnValue, localVarHttpResponse, err
   755  	}
   756  
   757  	localVarBody, err := ioutil.ReadAll(localVarHttpResponse.Body)
   758  	localVarHttpResponse.Body.Close()
   759  	if err != nil {
   760  		return localVarReturnValue, localVarHttpResponse, err
   761  	}
   762  
   763  	if localVarHttpResponse.StatusCode >= 300 {
   764  		newErr := GenericOpenAPIError{
   765  			body:  localVarBody,
   766  			error: localVarHttpResponse.Status,
   767  		}
   768  		if localVarHttpResponse.StatusCode == 0 {
   769  			var v PersonalContactResource
   770  			err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type"))
   771  			if err != nil {
   772  				newErr.error = err.Error()
   773  				return localVarReturnValue, localVarHttpResponse, newErr
   774  			}
   775  			newErr.model = v
   776  			return localVarReturnValue, localVarHttpResponse, newErr
   777  		}
   778  		return localVarReturnValue, localVarHttpResponse, newErr
   779  	}
   780  
   781  	err = a.client.decode(&localVarReturnValue, localVarBody, localVarHttpResponse.Header.Get("Content-Type"))
   782  	if err != nil {
   783  		newErr := GenericOpenAPIError{
   784  			body:  localVarBody,
   785  			error: err.Error(),
   786  		}
   787  		return localVarReturnValue, localVarHttpResponse, newErr
   788  	}
   789  
   790  	return localVarReturnValue, localVarHttpResponse, nil
   791  }