/// <summary>
        /// Authorize a client with OAuth This method uses the OAuth protocol to authorize a client. For details on OAuth client authorization, see our [Working with Authentication](/api/authentication) guide or the [OAuth spec](https://tools.ietf.org/html/draft-ietf-oauth-v2-31#section-4.4).
        /// </summary>
        /// <exception cref="VimeoOpenApi.Client.ApiException">Thrown when fails to make API call</exception>
        /// <param name="inlineObject28"></param>
        /// <returns>ApiResponse of Auth</returns>
        public VimeoOpenApi.Client.ApiResponse <Auth> ClientAuthWithHttpInfo(InlineObject28 inlineObject28)
        {
            // verify the required parameter 'inlineObject28' is set
            if (inlineObject28 == null)
            {
                throw new VimeoOpenApi.Client.ApiException(400, "Missing required parameter 'inlineObject28' when calling AuthenticationExtrasAuthenticateApi->ClientAuth");
            }

            VimeoOpenApi.Client.RequestOptions localVarRequestOptions = new VimeoOpenApi.Client.RequestOptions();

            String[] _contentTypes = new String[] {
                "application/vnd.vimeo.auth+json"
            };

            // to determine the Accept header
            String[] _accepts = new String[] {
                "application/vnd.vimeo.auth+json"
            };

            var localVarContentType = VimeoOpenApi.Client.ClientUtils.SelectHeaderContentType(_contentTypes);

            if (localVarContentType != null)
            {
                localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType);
            }

            var localVarAccept = VimeoOpenApi.Client.ClientUtils.SelectHeaderAccept(_accepts);

            if (localVarAccept != null)
            {
                localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept);
            }

            localVarRequestOptions.Data = inlineObject28;

            // authentication (oauth2) required
            // oauth required
            if (!String.IsNullOrEmpty(this.Configuration.AccessToken))
            {
                localVarRequestOptions.HeaderParameters.Add("Authorization", "Bearer " + this.Configuration.AccessToken);
            }

            // make the HTTP request
            var localVarResponse = this.Client.Post <Auth>("/oauth/authorize/client", localVarRequestOptions, this.Configuration);

            if (this.ExceptionFactory != null)
            {
                Exception _exception = this.ExceptionFactory("ClientAuth", localVarResponse);
                if (_exception != null)
                {
                    throw _exception;
                }
            }

            return(localVarResponse);
        }
        /// <summary>
        /// Authorize a client with OAuth This method uses the OAuth protocol to authorize a client. For details on OAuth client authorization, see our [Working with Authentication](/api/authentication) guide or the [OAuth spec](https://tools.ietf.org/html/draft-ietf-oauth-v2-31#section-4.4).
        /// </summary>
        /// <exception cref="VimeoOpenApi.Client.ApiException">Thrown when fails to make API call</exception>
        /// <param name="inlineObject28"></param>
        /// <returns>Task of ApiResponse (Auth)</returns>
        public async System.Threading.Tasks.Task <VimeoOpenApi.Client.ApiResponse <Auth> > ClientAuthAsyncWithHttpInfo(InlineObject28 inlineObject28)
        {
            // verify the required parameter 'inlineObject28' is set
            if (inlineObject28 == null)
            {
                throw new VimeoOpenApi.Client.ApiException(400, "Missing required parameter 'inlineObject28' when calling AuthenticationExtrasAuthenticateApi->ClientAuth");
            }


            VimeoOpenApi.Client.RequestOptions localVarRequestOptions = new VimeoOpenApi.Client.RequestOptions();

            String[] _contentTypes = new String[] {
                "application/vnd.vimeo.auth+json"
            };

            // to determine the Accept header
            String[] _accepts = new String[] {
                "application/vnd.vimeo.auth+json"
            };

            foreach (var _contentType in _contentTypes)
            {
                localVarRequestOptions.HeaderParameters.Add("Content-Type", _contentType);
            }

            foreach (var _accept in _accepts)
            {
                localVarRequestOptions.HeaderParameters.Add("Accept", _accept);
            }

            localVarRequestOptions.Data = inlineObject28;

            // authentication (oauth2) required
            // oauth required
            if (!String.IsNullOrEmpty(this.Configuration.AccessToken))
            {
                localVarRequestOptions.HeaderParameters.Add("Authorization", "Bearer " + this.Configuration.AccessToken);
            }

            // make the HTTP request

            var localVarResponse = await this.AsynchronousClient.PostAsync <Auth>("/oauth/authorize/client", localVarRequestOptions, this.Configuration);

            if (this.ExceptionFactory != null)
            {
                Exception _exception = this.ExceptionFactory("ClientAuth", localVarResponse);
                if (_exception != null)
                {
                    throw _exception;
                }
            }

            return(localVarResponse);
        }
        /// <summary>
        /// Authorize a client with OAuth This method uses the OAuth protocol to authorize a client. For details on OAuth client authorization, see our [Working with Authentication](/api/authentication) guide or the [OAuth spec](https://tools.ietf.org/html/draft-ietf-oauth-v2-31#section-4.4).
        /// </summary>
        /// <exception cref="VimeoOpenApi.Client.ApiException">Thrown when fails to make API call</exception>
        /// <param name="inlineObject28"></param>
        /// <returns>Task of Auth</returns>
        public async System.Threading.Tasks.Task <Auth> ClientAuthAsync(InlineObject28 inlineObject28)
        {
            VimeoOpenApi.Client.ApiResponse <Auth> localVarResponse = await ClientAuthAsyncWithHttpInfo(inlineObject28);

            return(localVarResponse.Data);
        }
 /// <summary>
 /// Authorize a client with OAuth This method uses the OAuth protocol to authorize a client. For details on OAuth client authorization, see our [Working with Authentication](/api/authentication) guide or the [OAuth spec](https://tools.ietf.org/html/draft-ietf-oauth-v2-31#section-4.4).
 /// </summary>
 /// <exception cref="VimeoOpenApi.Client.ApiException">Thrown when fails to make API call</exception>
 /// <param name="inlineObject28"></param>
 /// <returns>Auth</returns>
 public Auth ClientAuth(InlineObject28 inlineObject28)
 {
     VimeoOpenApi.Client.ApiResponse <Auth> localVarResponse = ClientAuthWithHttpInfo(inlineObject28);
     return(localVarResponse.Data);
 }