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

     1  /*
     2   * Engage Digital API
     3   *
     4   * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
     5   *
     6   * API version: 1.0
     7   * Generated by: OpenAPI Generator (https://openapi-generator.tech)
     8   */
     9  
    10  package engagedigital
    11  
    12  import (
    13  	"context"
    14  	"fmt"
    15  	"github.com/antihax/optional"
    16  	"io/ioutil"
    17  	"net/http"
    18  	"net/url"
    19  	"reflect"
    20  	"strings"
    21  )
    22  
    23  // Linger please
    24  var (
    25  	_ context.Context
    26  )
    27  
    28  type UsersApiService service
    29  
    30  /*
    31  UsersApiService Creating a user
    32  This method creates a new user. In case of success it renders the created user, otherwise, it renders an error (422 HTTP code).
    33   * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
    34   * @param email User email (mandatory).
    35   * @param firstname User firstname (mandatory).
    36   * @param lastname User lastname (mandatory).
    37   * @param password User plain password (mandatory).
    38   * @param roleId User role id (mandatory).
    39   * @param optional nil or *CreateUserOpts - Optional Parameters:
    40   * @param "CategoryIds" (optional.Interface of []string) -  User list of category ids (multiple).
    41   * @param "Enabled" (optional.Bool) -  Whether the user is enabled or not (boolean).
    42   * @param "ExternalId" (optional.String) -  User external id, used for SSO.
    43   * @param "Gender" (optional.String) -  User gender (\"man\" or \"woman\").
    44   * @param "IdentityIds" (optional.Interface of []string) -  User list of identity ids (multiple).
    45   * @param "Locale" (optional.String) -  Language for the user interface.
    46   * @param "Nickname" (optional.String) -  User nickname.
    47   * @param "TeamIds" (optional.Interface of []string) -  User list of team ids (multiple).
    48   * @param "Timezone" (optional.String) -  Use the timezone endpoint to get the timezone name (String), default is empty for domain timezone.
    49   * @param "SpokenLanguages" (optional.Interface of []string) -  List of locales corresponding to the languages spoken by the user (multiple).
    50  @return User
    51  */
    52  
    53  type CreateUserOpts struct {
    54  	CategoryIds     optional.Interface
    55  	Enabled         optional.Bool
    56  	ExternalId      optional.String
    57  	Gender          optional.String
    58  	IdentityIds     optional.Interface
    59  	Locale          optional.String
    60  	Nickname        optional.String
    61  	TeamIds         optional.Interface
    62  	Timezone        optional.String
    63  	SpokenLanguages optional.Interface
    64  }
    65  
    66  func (a *UsersApiService) CreateUser(ctx context.Context, email string, firstname string, lastname string, password string, roleId string, localVarOptionals *CreateUserOpts) (User, *http.Response, error) {
    67  	var (
    68  		localVarHttpMethod   = http.MethodPost
    69  		localVarPostBody     interface{}
    70  		localVarFormFileName string
    71  		localVarFileName     string
    72  		localVarFileBytes    []byte
    73  		localVarReturnValue  User
    74  	)
    75  
    76  	// create path and map variables
    77  	localVarPath := a.client.cfg.BasePath + "/users"
    78  
    79  	localVarHeaderParams := make(map[string]string)
    80  	localVarQueryParams := url.Values{}
    81  	localVarFormParams := url.Values{}
    82  
    83  	if localVarOptionals != nil && localVarOptionals.CategoryIds.IsSet() {
    84  		t := localVarOptionals.CategoryIds.Value()
    85  		if reflect.TypeOf(t).Kind() == reflect.Slice {
    86  			s := reflect.ValueOf(t)
    87  			for i := 0; i < s.Len(); i++ {
    88  				localVarQueryParams.Add("category_ids[]", parameterToString(s.Index(i), "multi"))
    89  			}
    90  		} else {
    91  			localVarQueryParams.Add("category_ids[]", parameterToString(t, "multi"))
    92  		}
    93  	}
    94  	localVarQueryParams.Add("email", parameterToString(email, ""))
    95  	if localVarOptionals != nil && localVarOptionals.Enabled.IsSet() {
    96  		localVarQueryParams.Add("enabled", parameterToString(localVarOptionals.Enabled.Value(), ""))
    97  	}
    98  	if localVarOptionals != nil && localVarOptionals.ExternalId.IsSet() {
    99  		localVarQueryParams.Add("external_id", parameterToString(localVarOptionals.ExternalId.Value(), ""))
   100  	}
   101  	localVarQueryParams.Add("firstname", parameterToString(firstname, ""))
   102  	if localVarOptionals != nil && localVarOptionals.Gender.IsSet() {
   103  		localVarQueryParams.Add("gender", parameterToString(localVarOptionals.Gender.Value(), ""))
   104  	}
   105  	if localVarOptionals != nil && localVarOptionals.IdentityIds.IsSet() {
   106  		t := localVarOptionals.IdentityIds.Value()
   107  		if reflect.TypeOf(t).Kind() == reflect.Slice {
   108  			s := reflect.ValueOf(t)
   109  			for i := 0; i < s.Len(); i++ {
   110  				localVarQueryParams.Add("identity_ids[]", parameterToString(s.Index(i), "multi"))
   111  			}
   112  		} else {
   113  			localVarQueryParams.Add("identity_ids[]", parameterToString(t, "multi"))
   114  		}
   115  	}
   116  	localVarQueryParams.Add("lastname", parameterToString(lastname, ""))
   117  	if localVarOptionals != nil && localVarOptionals.Locale.IsSet() {
   118  		localVarQueryParams.Add("locale", parameterToString(localVarOptionals.Locale.Value(), ""))
   119  	}
   120  	if localVarOptionals != nil && localVarOptionals.Nickname.IsSet() {
   121  		localVarQueryParams.Add("nickname", parameterToString(localVarOptionals.Nickname.Value(), ""))
   122  	}
   123  	localVarQueryParams.Add("password", parameterToString(password, ""))
   124  	localVarQueryParams.Add("role_id", parameterToString(roleId, ""))
   125  	if localVarOptionals != nil && localVarOptionals.TeamIds.IsSet() {
   126  		t := localVarOptionals.TeamIds.Value()
   127  		if reflect.TypeOf(t).Kind() == reflect.Slice {
   128  			s := reflect.ValueOf(t)
   129  			for i := 0; i < s.Len(); i++ {
   130  				localVarQueryParams.Add("team_ids[]", parameterToString(s.Index(i), "multi"))
   131  			}
   132  		} else {
   133  			localVarQueryParams.Add("team_ids[]", parameterToString(t, "multi"))
   134  		}
   135  	}
   136  	if localVarOptionals != nil && localVarOptionals.Timezone.IsSet() {
   137  		localVarQueryParams.Add("timezone", parameterToString(localVarOptionals.Timezone.Value(), ""))
   138  	}
   139  	if localVarOptionals != nil && localVarOptionals.SpokenLanguages.IsSet() {
   140  		t := localVarOptionals.SpokenLanguages.Value()
   141  		if reflect.TypeOf(t).Kind() == reflect.Slice {
   142  			s := reflect.ValueOf(t)
   143  			for i := 0; i < s.Len(); i++ {
   144  				localVarQueryParams.Add("spoken_languages[]", parameterToString(s.Index(i), "multi"))
   145  			}
   146  		} else {
   147  			localVarQueryParams.Add("spoken_languages[]", parameterToString(t, "multi"))
   148  		}
   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{"application/json"}
   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 localVarReturnValue, nil, err
   170  	}
   171  
   172  	localVarHttpResponse, err := a.client.callAPI(r)
   173  	if err != nil || localVarHttpResponse == nil {
   174  		return localVarReturnValue, localVarHttpResponse, err
   175  	}
   176  
   177  	localVarBody, err := ioutil.ReadAll(localVarHttpResponse.Body)
   178  	localVarHttpResponse.Body.Close()
   179  	if err != nil {
   180  		return localVarReturnValue, localVarHttpResponse, err
   181  	}
   182  
   183  	if localVarHttpResponse.StatusCode >= 300 {
   184  		newErr := GenericOpenAPIError{
   185  			body:  localVarBody,
   186  			error: localVarHttpResponse.Status,
   187  		}
   188  		if localVarHttpResponse.StatusCode == 200 {
   189  			var v User
   190  			err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type"))
   191  			if err != nil {
   192  				newErr.error = err.Error()
   193  				return localVarReturnValue, localVarHttpResponse, newErr
   194  			}
   195  			newErr.model = v
   196  			return localVarReturnValue, localVarHttpResponse, newErr
   197  		}
   198  		return localVarReturnValue, localVarHttpResponse, newErr
   199  	}
   200  
   201  	err = a.client.decode(&localVarReturnValue, localVarBody, localVarHttpResponse.Header.Get("Content-Type"))
   202  	if err != nil {
   203  		newErr := GenericOpenAPIError{
   204  			body:  localVarBody,
   205  			error: err.Error(),
   206  		}
   207  		return localVarReturnValue, localVarHttpResponse, newErr
   208  	}
   209  
   210  	return localVarReturnValue, localVarHttpResponse, nil
   211  }
   212  
   213  /*
   214  UsersApiService Deleting a user
   215  This method deletes the given user. In case of success it renders the deleted user, otherwise, it renders an error (422 HTTP code).  Authorization​: only users that can update users. The user affiliated to the token must have at least all the permissions of the other user. If the user affiliated to the token has the manage_users_of_my_teams permission, the deleted user will need to belong to at least one of the teams he’s the leader of.
   216   * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
   217   * @param userId
   218  @return User
   219  */
   220  func (a *UsersApiService) DeleteUser(ctx context.Context, userId string) (User, *http.Response, error) {
   221  	var (
   222  		localVarHttpMethod   = http.MethodDelete
   223  		localVarPostBody     interface{}
   224  		localVarFormFileName string
   225  		localVarFileName     string
   226  		localVarFileBytes    []byte
   227  		localVarReturnValue  User
   228  	)
   229  
   230  	// create path and map variables
   231  	localVarPath := a.client.cfg.BasePath + "/users/{userId}"
   232  	localVarPath = strings.Replace(localVarPath, "{"+"userId"+"}", fmt.Sprintf("%v", userId), -1)
   233  
   234  	localVarHeaderParams := make(map[string]string)
   235  	localVarQueryParams := url.Values{}
   236  	localVarFormParams := url.Values{}
   237  
   238  	// to determine the Content-Type header
   239  	localVarHttpContentTypes := []string{}
   240  
   241  	// set Content-Type header
   242  	localVarHttpContentType := selectHeaderContentType(localVarHttpContentTypes)
   243  	if localVarHttpContentType != "" {
   244  		localVarHeaderParams["Content-Type"] = localVarHttpContentType
   245  	}
   246  
   247  	// to determine the Accept header
   248  	localVarHttpHeaderAccepts := []string{"application/json"}
   249  
   250  	// set Accept header
   251  	localVarHttpHeaderAccept := selectHeaderAccept(localVarHttpHeaderAccepts)
   252  	if localVarHttpHeaderAccept != "" {
   253  		localVarHeaderParams["Accept"] = localVarHttpHeaderAccept
   254  	}
   255  	r, err := a.client.prepareRequest(ctx, localVarPath, localVarHttpMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFormFileName, localVarFileName, localVarFileBytes)
   256  	if err != nil {
   257  		return localVarReturnValue, nil, err
   258  	}
   259  
   260  	localVarHttpResponse, err := a.client.callAPI(r)
   261  	if err != nil || localVarHttpResponse == nil {
   262  		return localVarReturnValue, localVarHttpResponse, err
   263  	}
   264  
   265  	localVarBody, err := ioutil.ReadAll(localVarHttpResponse.Body)
   266  	localVarHttpResponse.Body.Close()
   267  	if err != nil {
   268  		return localVarReturnValue, localVarHttpResponse, err
   269  	}
   270  
   271  	if localVarHttpResponse.StatusCode >= 300 {
   272  		newErr := GenericOpenAPIError{
   273  			body:  localVarBody,
   274  			error: localVarHttpResponse.Status,
   275  		}
   276  		if localVarHttpResponse.StatusCode == 200 {
   277  			var v User
   278  			err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type"))
   279  			if err != nil {
   280  				newErr.error = err.Error()
   281  				return localVarReturnValue, localVarHttpResponse, newErr
   282  			}
   283  			newErr.model = v
   284  			return localVarReturnValue, localVarHttpResponse, newErr
   285  		}
   286  		return localVarReturnValue, localVarHttpResponse, newErr
   287  	}
   288  
   289  	err = a.client.decode(&localVarReturnValue, localVarBody, localVarHttpResponse.Header.Get("Content-Type"))
   290  	if err != nil {
   291  		newErr := GenericOpenAPIError{
   292  			body:  localVarBody,
   293  			error: err.Error(),
   294  		}
   295  		return localVarReturnValue, localVarHttpResponse, newErr
   296  	}
   297  
   298  	return localVarReturnValue, localVarHttpResponse, nil
   299  }
   300  
   301  /*
   302  UsersApiService Getting all users
   303  This method renders users ordered by creation date (descending).  Authorization​: only users that can view users. If the user affiliated to the token has the manage_users_of_my_teams permission, only the users belonging to at least one of the teams he’s the leader of will be returned.
   304   * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
   305   * @param optional nil or *GetAllUsersOpts - Optional Parameters:
   306   * @param "Email" (optional.String) -  To filter users on given email.
   307   * @param "CategoryId" (optional.String) -  To filter users on given category id.
   308   * @param "IdentityId" (optional.String) -  To filter users on given identity id.
   309   * @param "ExternalId" (optional.String) -  To filter users on given external id.
   310   * @param "RoleId" (optional.String) -  To filter users on given role id.
   311   * @param "TeamId" (optional.String) -  To filter users on given team id.
   312   * @param "Offset" (optional.Int32) -  The record index to start. Default value is 0.
   313   * @param "Limit" (optional.Int32) -  The max number of records to return. Default value is 30, max value is 150.
   314  @return GetAllUsersResponse
   315  */
   316  
   317  type GetAllUsersOpts struct {
   318  	Email      optional.String
   319  	CategoryId optional.String
   320  	IdentityId optional.String
   321  	ExternalId optional.String
   322  	RoleId     optional.String
   323  	TeamId     optional.String
   324  	Offset     optional.Int32
   325  	Limit      optional.Int32
   326  }
   327  
   328  func (a *UsersApiService) GetAllUsers(ctx context.Context, localVarOptionals *GetAllUsersOpts) (GetAllUsersResponse, *http.Response, error) {
   329  	var (
   330  		localVarHttpMethod   = http.MethodGet
   331  		localVarPostBody     interface{}
   332  		localVarFormFileName string
   333  		localVarFileName     string
   334  		localVarFileBytes    []byte
   335  		localVarReturnValue  GetAllUsersResponse
   336  	)
   337  
   338  	// create path and map variables
   339  	localVarPath := a.client.cfg.BasePath + "/users"
   340  
   341  	localVarHeaderParams := make(map[string]string)
   342  	localVarQueryParams := url.Values{}
   343  	localVarFormParams := url.Values{}
   344  
   345  	if localVarOptionals != nil && localVarOptionals.Email.IsSet() {
   346  		localVarQueryParams.Add("email", parameterToString(localVarOptionals.Email.Value(), ""))
   347  	}
   348  	if localVarOptionals != nil && localVarOptionals.CategoryId.IsSet() {
   349  		localVarQueryParams.Add("category_id", parameterToString(localVarOptionals.CategoryId.Value(), ""))
   350  	}
   351  	if localVarOptionals != nil && localVarOptionals.IdentityId.IsSet() {
   352  		localVarQueryParams.Add("identity_id", parameterToString(localVarOptionals.IdentityId.Value(), ""))
   353  	}
   354  	if localVarOptionals != nil && localVarOptionals.ExternalId.IsSet() {
   355  		localVarQueryParams.Add("external_id", parameterToString(localVarOptionals.ExternalId.Value(), ""))
   356  	}
   357  	if localVarOptionals != nil && localVarOptionals.RoleId.IsSet() {
   358  		localVarQueryParams.Add("role_id", parameterToString(localVarOptionals.RoleId.Value(), ""))
   359  	}
   360  	if localVarOptionals != nil && localVarOptionals.TeamId.IsSet() {
   361  		localVarQueryParams.Add("team_id", parameterToString(localVarOptionals.TeamId.Value(), ""))
   362  	}
   363  	if localVarOptionals != nil && localVarOptionals.Offset.IsSet() {
   364  		localVarQueryParams.Add("offset", parameterToString(localVarOptionals.Offset.Value(), ""))
   365  	}
   366  	if localVarOptionals != nil && localVarOptionals.Limit.IsSet() {
   367  		localVarQueryParams.Add("limit", parameterToString(localVarOptionals.Limit.Value(), ""))
   368  	}
   369  	// to determine the Content-Type header
   370  	localVarHttpContentTypes := []string{}
   371  
   372  	// set Content-Type header
   373  	localVarHttpContentType := selectHeaderContentType(localVarHttpContentTypes)
   374  	if localVarHttpContentType != "" {
   375  		localVarHeaderParams["Content-Type"] = localVarHttpContentType
   376  	}
   377  
   378  	// to determine the Accept header
   379  	localVarHttpHeaderAccepts := []string{"application/json"}
   380  
   381  	// set Accept header
   382  	localVarHttpHeaderAccept := selectHeaderAccept(localVarHttpHeaderAccepts)
   383  	if localVarHttpHeaderAccept != "" {
   384  		localVarHeaderParams["Accept"] = localVarHttpHeaderAccept
   385  	}
   386  	r, err := a.client.prepareRequest(ctx, localVarPath, localVarHttpMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFormFileName, localVarFileName, localVarFileBytes)
   387  	if err != nil {
   388  		return localVarReturnValue, nil, err
   389  	}
   390  
   391  	localVarHttpResponse, err := a.client.callAPI(r)
   392  	if err != nil || localVarHttpResponse == nil {
   393  		return localVarReturnValue, localVarHttpResponse, err
   394  	}
   395  
   396  	localVarBody, err := ioutil.ReadAll(localVarHttpResponse.Body)
   397  	localVarHttpResponse.Body.Close()
   398  	if err != nil {
   399  		return localVarReturnValue, localVarHttpResponse, err
   400  	}
   401  
   402  	if localVarHttpResponse.StatusCode >= 300 {
   403  		newErr := GenericOpenAPIError{
   404  			body:  localVarBody,
   405  			error: localVarHttpResponse.Status,
   406  		}
   407  		if localVarHttpResponse.StatusCode == 200 {
   408  			var v GetAllUsersResponse
   409  			err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type"))
   410  			if err != nil {
   411  				newErr.error = err.Error()
   412  				return localVarReturnValue, localVarHttpResponse, newErr
   413  			}
   414  			newErr.model = v
   415  			return localVarReturnValue, localVarHttpResponse, newErr
   416  		}
   417  		return localVarReturnValue, localVarHttpResponse, newErr
   418  	}
   419  
   420  	err = a.client.decode(&localVarReturnValue, localVarBody, localVarHttpResponse.Header.Get("Content-Type"))
   421  	if err != nil {
   422  		newErr := GenericOpenAPIError{
   423  			body:  localVarBody,
   424  			error: err.Error(),
   425  		}
   426  		return localVarReturnValue, localVarHttpResponse, newErr
   427  	}
   428  
   429  	return localVarReturnValue, localVarHttpResponse, nil
   430  }
   431  
   432  /*
   433  UsersApiService Getting a user from its id
   434  This method renders a user from given id.
   435   * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
   436   * @param userId
   437  @return User
   438  */
   439  func (a *UsersApiService) GetUser(ctx context.Context, userId string) (User, *http.Response, error) {
   440  	var (
   441  		localVarHttpMethod   = http.MethodGet
   442  		localVarPostBody     interface{}
   443  		localVarFormFileName string
   444  		localVarFileName     string
   445  		localVarFileBytes    []byte
   446  		localVarReturnValue  User
   447  	)
   448  
   449  	// create path and map variables
   450  	localVarPath := a.client.cfg.BasePath + "/users/{userId}"
   451  	localVarPath = strings.Replace(localVarPath, "{"+"userId"+"}", fmt.Sprintf("%v", userId), -1)
   452  
   453  	localVarHeaderParams := make(map[string]string)
   454  	localVarQueryParams := url.Values{}
   455  	localVarFormParams := url.Values{}
   456  
   457  	// to determine the Content-Type header
   458  	localVarHttpContentTypes := []string{}
   459  
   460  	// set Content-Type header
   461  	localVarHttpContentType := selectHeaderContentType(localVarHttpContentTypes)
   462  	if localVarHttpContentType != "" {
   463  		localVarHeaderParams["Content-Type"] = localVarHttpContentType
   464  	}
   465  
   466  	// to determine the Accept header
   467  	localVarHttpHeaderAccepts := []string{"application/json"}
   468  
   469  	// set Accept header
   470  	localVarHttpHeaderAccept := selectHeaderAccept(localVarHttpHeaderAccepts)
   471  	if localVarHttpHeaderAccept != "" {
   472  		localVarHeaderParams["Accept"] = localVarHttpHeaderAccept
   473  	}
   474  	r, err := a.client.prepareRequest(ctx, localVarPath, localVarHttpMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFormFileName, localVarFileName, localVarFileBytes)
   475  	if err != nil {
   476  		return localVarReturnValue, nil, err
   477  	}
   478  
   479  	localVarHttpResponse, err := a.client.callAPI(r)
   480  	if err != nil || localVarHttpResponse == nil {
   481  		return localVarReturnValue, localVarHttpResponse, err
   482  	}
   483  
   484  	localVarBody, err := ioutil.ReadAll(localVarHttpResponse.Body)
   485  	localVarHttpResponse.Body.Close()
   486  	if err != nil {
   487  		return localVarReturnValue, localVarHttpResponse, err
   488  	}
   489  
   490  	if localVarHttpResponse.StatusCode >= 300 {
   491  		newErr := GenericOpenAPIError{
   492  			body:  localVarBody,
   493  			error: localVarHttpResponse.Status,
   494  		}
   495  		if localVarHttpResponse.StatusCode == 200 {
   496  			var v User
   497  			err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type"))
   498  			if err != nil {
   499  				newErr.error = err.Error()
   500  				return localVarReturnValue, localVarHttpResponse, newErr
   501  			}
   502  			newErr.model = v
   503  			return localVarReturnValue, localVarHttpResponse, newErr
   504  		}
   505  		return localVarReturnValue, localVarHttpResponse, newErr
   506  	}
   507  
   508  	err = a.client.decode(&localVarReturnValue, localVarBody, localVarHttpResponse.Header.Get("Content-Type"))
   509  	if err != nil {
   510  		newErr := GenericOpenAPIError{
   511  			body:  localVarBody,
   512  			error: err.Error(),
   513  		}
   514  		return localVarReturnValue, localVarHttpResponse, newErr
   515  	}
   516  
   517  	return localVarReturnValue, localVarHttpResponse, nil
   518  }
   519  
   520  /*
   521  UsersApiService Inviting a user
   522  This method invites a new user. In case of success it renders the created user, otherwise, it renders an error (422 HTTP code).  Authorization​: only users that can invite other users. If the user affiliated to the token has the manage_users_of_my_teams permission, the invited user will need to belong to at least one of the teams he’s the leader of. It will not be possible to assign the user to other teams.
   523   * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
   524   * @param email User email (mandatory).
   525   * @param firstname User firstname (mandatory).
   526   * @param lastname User lastname (mandatory).
   527   * @param roleId User role id (mandatory).
   528   * @param optional nil or *InviteUserOpts - Optional Parameters:
   529   * @param "CategoryIds" (optional.Interface of []string) -  User list of category ids (multiple).
   530   * @param "Enabled" (optional.Bool) -  Whether the user is enabled or not (boolean).
   531   * @param "ExternalId" (optional.String) -  User external id.
   532   * @param "Gender" (optional.String) -  User gender (\"man\" or \"woman\").
   533   * @param "IdentityIds" (optional.Interface of []string) -  User list of identity ids (multiple).
   534   * @param "Locale" (optional.String) -  Language for the user interface.
   535   * @param "Nickname" (optional.String) -  User nickname.
   536   * @param "TeamIds" (optional.Interface of []string) -  User list of team ids (multiple).
   537   * @param "Timezone" (optional.String) -  Use the timezone endpoint to get the timezone name (String), default is empty for
   538   * @param "SpokenLanguages" (optional.Interface of []string) -  List of locales corresponding to the languages spoken by the user (multiple).
   539  @return User
   540  */
   541  
   542  type InviteUserOpts struct {
   543  	CategoryIds     optional.Interface
   544  	Enabled         optional.Bool
   545  	ExternalId      optional.String
   546  	Gender          optional.String
   547  	IdentityIds     optional.Interface
   548  	Locale          optional.String
   549  	Nickname        optional.String
   550  	TeamIds         optional.Interface
   551  	Timezone        optional.String
   552  	SpokenLanguages optional.Interface
   553  }
   554  
   555  func (a *UsersApiService) InviteUser(ctx context.Context, email string, firstname string, lastname string, roleId string, localVarOptionals *InviteUserOpts) (User, *http.Response, error) {
   556  	var (
   557  		localVarHttpMethod   = http.MethodPost
   558  		localVarPostBody     interface{}
   559  		localVarFormFileName string
   560  		localVarFileName     string
   561  		localVarFileBytes    []byte
   562  		localVarReturnValue  User
   563  	)
   564  
   565  	// create path and map variables
   566  	localVarPath := a.client.cfg.BasePath + "/users/invite"
   567  
   568  	localVarHeaderParams := make(map[string]string)
   569  	localVarQueryParams := url.Values{}
   570  	localVarFormParams := url.Values{}
   571  
   572  	if localVarOptionals != nil && localVarOptionals.CategoryIds.IsSet() {
   573  		t := localVarOptionals.CategoryIds.Value()
   574  		if reflect.TypeOf(t).Kind() == reflect.Slice {
   575  			s := reflect.ValueOf(t)
   576  			for i := 0; i < s.Len(); i++ {
   577  				localVarQueryParams.Add("category_ids", parameterToString(s.Index(i), "multi"))
   578  			}
   579  		} else {
   580  			localVarQueryParams.Add("category_ids", parameterToString(t, "multi"))
   581  		}
   582  	}
   583  	localVarQueryParams.Add("email", parameterToString(email, ""))
   584  	if localVarOptionals != nil && localVarOptionals.Enabled.IsSet() {
   585  		localVarQueryParams.Add("enabled", parameterToString(localVarOptionals.Enabled.Value(), ""))
   586  	}
   587  	if localVarOptionals != nil && localVarOptionals.ExternalId.IsSet() {
   588  		localVarQueryParams.Add("external_id", parameterToString(localVarOptionals.ExternalId.Value(), ""))
   589  	}
   590  	localVarQueryParams.Add("firstname", parameterToString(firstname, ""))
   591  	if localVarOptionals != nil && localVarOptionals.Gender.IsSet() {
   592  		localVarQueryParams.Add("gender", parameterToString(localVarOptionals.Gender.Value(), ""))
   593  	}
   594  	if localVarOptionals != nil && localVarOptionals.IdentityIds.IsSet() {
   595  		t := localVarOptionals.IdentityIds.Value()
   596  		if reflect.TypeOf(t).Kind() == reflect.Slice {
   597  			s := reflect.ValueOf(t)
   598  			for i := 0; i < s.Len(); i++ {
   599  				localVarQueryParams.Add("identity_ids", parameterToString(s.Index(i), "multi"))
   600  			}
   601  		} else {
   602  			localVarQueryParams.Add("identity_ids", parameterToString(t, "multi"))
   603  		}
   604  	}
   605  	localVarQueryParams.Add("lastname", parameterToString(lastname, ""))
   606  	if localVarOptionals != nil && localVarOptionals.Locale.IsSet() {
   607  		localVarQueryParams.Add("locale", parameterToString(localVarOptionals.Locale.Value(), ""))
   608  	}
   609  	if localVarOptionals != nil && localVarOptionals.Nickname.IsSet() {
   610  		localVarQueryParams.Add("nickname", parameterToString(localVarOptionals.Nickname.Value(), ""))
   611  	}
   612  	localVarQueryParams.Add("role_id", parameterToString(roleId, ""))
   613  	if localVarOptionals != nil && localVarOptionals.TeamIds.IsSet() {
   614  		t := localVarOptionals.TeamIds.Value()
   615  		if reflect.TypeOf(t).Kind() == reflect.Slice {
   616  			s := reflect.ValueOf(t)
   617  			for i := 0; i < s.Len(); i++ {
   618  				localVarQueryParams.Add("team_ids", parameterToString(s.Index(i), "multi"))
   619  			}
   620  		} else {
   621  			localVarQueryParams.Add("team_ids", parameterToString(t, "multi"))
   622  		}
   623  	}
   624  	if localVarOptionals != nil && localVarOptionals.Timezone.IsSet() {
   625  		localVarQueryParams.Add("timezone", parameterToString(localVarOptionals.Timezone.Value(), ""))
   626  	}
   627  	if localVarOptionals != nil && localVarOptionals.SpokenLanguages.IsSet() {
   628  		t := localVarOptionals.SpokenLanguages.Value()
   629  		if reflect.TypeOf(t).Kind() == reflect.Slice {
   630  			s := reflect.ValueOf(t)
   631  			for i := 0; i < s.Len(); i++ {
   632  				localVarQueryParams.Add("spoken_languages", parameterToString(s.Index(i), "multi"))
   633  			}
   634  		} else {
   635  			localVarQueryParams.Add("spoken_languages", parameterToString(t, "multi"))
   636  		}
   637  	}
   638  	// to determine the Content-Type header
   639  	localVarHttpContentTypes := []string{}
   640  
   641  	// set Content-Type header
   642  	localVarHttpContentType := selectHeaderContentType(localVarHttpContentTypes)
   643  	if localVarHttpContentType != "" {
   644  		localVarHeaderParams["Content-Type"] = localVarHttpContentType
   645  	}
   646  
   647  	// to determine the Accept header
   648  	localVarHttpHeaderAccepts := []string{"application/json"}
   649  
   650  	// set Accept header
   651  	localVarHttpHeaderAccept := selectHeaderAccept(localVarHttpHeaderAccepts)
   652  	if localVarHttpHeaderAccept != "" {
   653  		localVarHeaderParams["Accept"] = localVarHttpHeaderAccept
   654  	}
   655  	r, err := a.client.prepareRequest(ctx, localVarPath, localVarHttpMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFormFileName, localVarFileName, localVarFileBytes)
   656  	if err != nil {
   657  		return localVarReturnValue, nil, err
   658  	}
   659  
   660  	localVarHttpResponse, err := a.client.callAPI(r)
   661  	if err != nil || localVarHttpResponse == nil {
   662  		return localVarReturnValue, localVarHttpResponse, err
   663  	}
   664  
   665  	localVarBody, err := ioutil.ReadAll(localVarHttpResponse.Body)
   666  	localVarHttpResponse.Body.Close()
   667  	if err != nil {
   668  		return localVarReturnValue, localVarHttpResponse, err
   669  	}
   670  
   671  	if localVarHttpResponse.StatusCode >= 300 {
   672  		newErr := GenericOpenAPIError{
   673  			body:  localVarBody,
   674  			error: localVarHttpResponse.Status,
   675  		}
   676  		if localVarHttpResponse.StatusCode == 200 {
   677  			var v User
   678  			err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type"))
   679  			if err != nil {
   680  				newErr.error = err.Error()
   681  				return localVarReturnValue, localVarHttpResponse, newErr
   682  			}
   683  			newErr.model = v
   684  			return localVarReturnValue, localVarHttpResponse, newErr
   685  		}
   686  		return localVarReturnValue, localVarHttpResponse, newErr
   687  	}
   688  
   689  	err = a.client.decode(&localVarReturnValue, localVarBody, localVarHttpResponse.Header.Get("Content-Type"))
   690  	if err != nil {
   691  		newErr := GenericOpenAPIError{
   692  			body:  localVarBody,
   693  			error: err.Error(),
   694  		}
   695  		return localVarReturnValue, localVarHttpResponse, newErr
   696  	}
   697  
   698  	return localVarReturnValue, localVarHttpResponse, nil
   699  }
   700  
   701  /*
   702  UsersApiService Updating a user
   703  This method updates users from given attributes and renders it in case of success.  Authorization​: only users that can update users. If the user affiliated to the token has the &#x60;manage_users_of_my_teams&#x60; permission, the updated user will need to belong to at least one of the teams he’s the leader of. The teams the user affiliated to the token is the leader of will be the only ones which can be added or removed.
   704   * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
   705   * @param userId
   706   * @param optional nil or *UpdateUserOpts - Optional Parameters:
   707   * @param "CategoryIds" (optional.Interface of []string) -  User list of category ids (multiple).
   708   * @param "Email" (optional.String) -  User email.
   709   * @param "Enabled" (optional.Bool) -  Whether the user is enabled or not (boolean).
   710   * @param "ExternalId" (optional.String) -  User external id, used for SSO.
   711   * @param "Firstname" (optional.String) -  User firstname.
   712   * @param "Gender" (optional.String) -  User gender (\"man\" or \"woman\").
   713   * @param "IdentityIds" (optional.Interface of []string) -  User list of identity ids (multiple).
   714   * @param "Lastname" (optional.String) -  User lastname.
   715   * @param "Locale" (optional.String) -  Language for the user interface.
   716   * @param "Nickname" (optional.String) -  User nickname.
   717   * @param "Password" (optional.String) -  User plain password.
   718   * @param "RoleId" (optional.String) -  User role id.
   719   * @param "TeamIds" (optional.Interface of []string) -  User list of team ids (multiple).
   720   * @param "Timezone" (optional.String) -  Use the timezone endpoint to get the timezone name (String), default is empty for domain timezone.
   721   * @param "SpokenLanguages" (optional.Interface of []string) -  List of locales corresponding to the languages spoken by the user (multiple).
   722  @return User
   723  */
   724  
   725  type UpdateUserOpts struct {
   726  	CategoryIds     optional.Interface
   727  	Email           optional.String
   728  	Enabled         optional.Bool
   729  	ExternalId      optional.String
   730  	Firstname       optional.String
   731  	Gender          optional.String
   732  	IdentityIds     optional.Interface
   733  	Lastname        optional.String
   734  	Locale          optional.String
   735  	Nickname        optional.String
   736  	Password        optional.String
   737  	RoleId          optional.String
   738  	TeamIds         optional.Interface
   739  	Timezone        optional.String
   740  	SpokenLanguages optional.Interface
   741  }
   742  
   743  func (a *UsersApiService) UpdateUser(ctx context.Context, userId string, localVarOptionals *UpdateUserOpts) (User, *http.Response, error) {
   744  	var (
   745  		localVarHttpMethod   = http.MethodPut
   746  		localVarPostBody     interface{}
   747  		localVarFormFileName string
   748  		localVarFileName     string
   749  		localVarFileBytes    []byte
   750  		localVarReturnValue  User
   751  	)
   752  
   753  	// create path and map variables
   754  	localVarPath := a.client.cfg.BasePath + "/users/{userId}"
   755  	localVarPath = strings.Replace(localVarPath, "{"+"userId"+"}", fmt.Sprintf("%v", userId), -1)
   756  
   757  	localVarHeaderParams := make(map[string]string)
   758  	localVarQueryParams := url.Values{}
   759  	localVarFormParams := url.Values{}
   760  
   761  	if localVarOptionals != nil && localVarOptionals.CategoryIds.IsSet() {
   762  		t := localVarOptionals.CategoryIds.Value()
   763  		if reflect.TypeOf(t).Kind() == reflect.Slice {
   764  			s := reflect.ValueOf(t)
   765  			for i := 0; i < s.Len(); i++ {
   766  				localVarQueryParams.Add("category_ids[]", parameterToString(s.Index(i), "multi"))
   767  			}
   768  		} else {
   769  			localVarQueryParams.Add("category_ids[]", parameterToString(t, "multi"))
   770  		}
   771  	}
   772  	if localVarOptionals != nil && localVarOptionals.Email.IsSet() {
   773  		localVarQueryParams.Add("email", parameterToString(localVarOptionals.Email.Value(), ""))
   774  	}
   775  	if localVarOptionals != nil && localVarOptionals.Enabled.IsSet() {
   776  		localVarQueryParams.Add("enabled", parameterToString(localVarOptionals.Enabled.Value(), ""))
   777  	}
   778  	if localVarOptionals != nil && localVarOptionals.ExternalId.IsSet() {
   779  		localVarQueryParams.Add("external_id", parameterToString(localVarOptionals.ExternalId.Value(), ""))
   780  	}
   781  	if localVarOptionals != nil && localVarOptionals.Firstname.IsSet() {
   782  		localVarQueryParams.Add("firstname", parameterToString(localVarOptionals.Firstname.Value(), ""))
   783  	}
   784  	if localVarOptionals != nil && localVarOptionals.Gender.IsSet() {
   785  		localVarQueryParams.Add("gender", parameterToString(localVarOptionals.Gender.Value(), ""))
   786  	}
   787  	if localVarOptionals != nil && localVarOptionals.IdentityIds.IsSet() {
   788  		t := localVarOptionals.IdentityIds.Value()
   789  		if reflect.TypeOf(t).Kind() == reflect.Slice {
   790  			s := reflect.ValueOf(t)
   791  			for i := 0; i < s.Len(); i++ {
   792  				localVarQueryParams.Add("identity_ids[]", parameterToString(s.Index(i), "multi"))
   793  			}
   794  		} else {
   795  			localVarQueryParams.Add("identity_ids[]", parameterToString(t, "multi"))
   796  		}
   797  	}
   798  	if localVarOptionals != nil && localVarOptionals.Lastname.IsSet() {
   799  		localVarQueryParams.Add("lastname", parameterToString(localVarOptionals.Lastname.Value(), ""))
   800  	}
   801  	if localVarOptionals != nil && localVarOptionals.Locale.IsSet() {
   802  		localVarQueryParams.Add("locale", parameterToString(localVarOptionals.Locale.Value(), ""))
   803  	}
   804  	if localVarOptionals != nil && localVarOptionals.Nickname.IsSet() {
   805  		localVarQueryParams.Add("nickname", parameterToString(localVarOptionals.Nickname.Value(), ""))
   806  	}
   807  	if localVarOptionals != nil && localVarOptionals.Password.IsSet() {
   808  		localVarQueryParams.Add("password", parameterToString(localVarOptionals.Password.Value(), ""))
   809  	}
   810  	if localVarOptionals != nil && localVarOptionals.RoleId.IsSet() {
   811  		localVarQueryParams.Add("role_id", parameterToString(localVarOptionals.RoleId.Value(), ""))
   812  	}
   813  	if localVarOptionals != nil && localVarOptionals.TeamIds.IsSet() {
   814  		t := localVarOptionals.TeamIds.Value()
   815  		if reflect.TypeOf(t).Kind() == reflect.Slice {
   816  			s := reflect.ValueOf(t)
   817  			for i := 0; i < s.Len(); i++ {
   818  				localVarQueryParams.Add("team_ids[]", parameterToString(s.Index(i), "multi"))
   819  			}
   820  		} else {
   821  			localVarQueryParams.Add("team_ids[]", parameterToString(t, "multi"))
   822  		}
   823  	}
   824  	if localVarOptionals != nil && localVarOptionals.Timezone.IsSet() {
   825  		localVarQueryParams.Add("timezone", parameterToString(localVarOptionals.Timezone.Value(), ""))
   826  	}
   827  	if localVarOptionals != nil && localVarOptionals.SpokenLanguages.IsSet() {
   828  		t := localVarOptionals.SpokenLanguages.Value()
   829  		if reflect.TypeOf(t).Kind() == reflect.Slice {
   830  			s := reflect.ValueOf(t)
   831  			for i := 0; i < s.Len(); i++ {
   832  				localVarQueryParams.Add("spoken_languages[]", parameterToString(s.Index(i), "multi"))
   833  			}
   834  		} else {
   835  			localVarQueryParams.Add("spoken_languages[]", parameterToString(t, "multi"))
   836  		}
   837  	}
   838  	// to determine the Content-Type header
   839  	localVarHttpContentTypes := []string{}
   840  
   841  	// set Content-Type header
   842  	localVarHttpContentType := selectHeaderContentType(localVarHttpContentTypes)
   843  	if localVarHttpContentType != "" {
   844  		localVarHeaderParams["Content-Type"] = localVarHttpContentType
   845  	}
   846  
   847  	// to determine the Accept header
   848  	localVarHttpHeaderAccepts := []string{"application/json"}
   849  
   850  	// set Accept header
   851  	localVarHttpHeaderAccept := selectHeaderAccept(localVarHttpHeaderAccepts)
   852  	if localVarHttpHeaderAccept != "" {
   853  		localVarHeaderParams["Accept"] = localVarHttpHeaderAccept
   854  	}
   855  	r, err := a.client.prepareRequest(ctx, localVarPath, localVarHttpMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFormFileName, localVarFileName, localVarFileBytes)
   856  	if err != nil {
   857  		return localVarReturnValue, nil, err
   858  	}
   859  
   860  	localVarHttpResponse, err := a.client.callAPI(r)
   861  	if err != nil || localVarHttpResponse == nil {
   862  		return localVarReturnValue, localVarHttpResponse, err
   863  	}
   864  
   865  	localVarBody, err := ioutil.ReadAll(localVarHttpResponse.Body)
   866  	localVarHttpResponse.Body.Close()
   867  	if err != nil {
   868  		return localVarReturnValue, localVarHttpResponse, err
   869  	}
   870  
   871  	if localVarHttpResponse.StatusCode >= 300 {
   872  		newErr := GenericOpenAPIError{
   873  			body:  localVarBody,
   874  			error: localVarHttpResponse.Status,
   875  		}
   876  		if localVarHttpResponse.StatusCode == 200 {
   877  			var v User
   878  			err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type"))
   879  			if err != nil {
   880  				newErr.error = err.Error()
   881  				return localVarReturnValue, localVarHttpResponse, newErr
   882  			}
   883  			newErr.model = v
   884  			return localVarReturnValue, localVarHttpResponse, newErr
   885  		}
   886  		return localVarReturnValue, localVarHttpResponse, newErr
   887  	}
   888  
   889  	err = a.client.decode(&localVarReturnValue, localVarBody, localVarHttpResponse.Header.Get("Content-Type"))
   890  	if err != nil {
   891  		newErr := GenericOpenAPIError{
   892  			body:  localVarBody,
   893  			error: err.Error(),
   894  		}
   895  		return localVarReturnValue, localVarHttpResponse, newErr
   896  	}
   897  
   898  	return localVarReturnValue, localVarHttpResponse, nil
   899  }