=begin
#Phone.com API

#This is a Phone.com api PhoneCom definition

OpenAPI spec version: 1.0.0
Contact: apisupport@phone.com
Generated by: https://github.com/swagger-api/swagger-codegen.git
PhoneCom Codegen version: 2.4.4

=end

require 'uri'

module PhoneComClient
  class OauthClientsRedirectUrisApi
    attr_accessor :api_client

    def initialize(api_client = ApiClient.default)
      @api_client = api_client
    end
    # Create an OAuth Client Redirect URI record.
    # Create an OAuth Client Redirect URI record.
    # @param account_id Account ID
    # @param client_id Client ID
    # @param [Hash] opts the optional parameters
    # @option opts [CreateRedirectUriParams] :data Redirect Uri data
    # @return [OauthClientRedirectUriFull]
    def create_account_oauth_clients_redirect_uri(account_id, client_id, opts = {})
      data, _status_code, _headers = create_account_oauth_clients_redirect_uri_with_http_info(account_id, client_id, opts)
      data
    end

    # Create an OAuth Client Redirect URI record.
    # Create an OAuth Client Redirect URI record.
    # @param account_id Account ID
    # @param client_id Client ID
    # @param [Hash] opts the optional parameters
    # @option opts [CreateRedirectUriParams] :data Redirect Uri data
    # @return [Array<(OauthClientRedirectUriFull, Fixnum, Hash)>] OauthClientRedirectUriFull data, response status code and response headers
    def create_account_oauth_clients_redirect_uri_with_http_info(account_id, client_id, opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug 'Calling API: OauthClientsRedirectUrisApi.create_account_oauth_clients_redirect_uri ...'
      end
      # verify the required parameter 'account_id' is set
      if @api_client.config.client_side_validation && account_id.nil?
        fail ArgumentError, "Missing the required parameter 'account_id' when calling OauthClientsRedirectUrisApi.create_account_oauth_clients_redirect_uri"
      end
      # verify the required parameter 'client_id' is set
      if @api_client.config.client_side_validation && client_id.nil?
        fail ArgumentError, "Missing the required parameter 'client_id' when calling OauthClientsRedirectUrisApi.create_account_oauth_clients_redirect_uri"
      end
      # resource path
      local_var_path = '/accounts/{account_id}/oauth/clients/{client_id}/redirect-uris'.sub('{' + 'account_id' + '}', account_id.to_s).sub('{' + 'client_id' + '}', client_id.to_s)

      # query parameters
      query_params = {}

      # header parameters
      header_params = {}
      # HTTP header 'Accept' (if needed)
      header_params['Accept'] = @api_client.select_header_accept(['application/json'])
      # HTTP header 'Content-Type'
      header_params['Content-Type'] = @api_client.select_header_content_type(['application/json'])

      # form parameters
      form_params = {}

      # http body (model)
      post_body = @api_client.object_to_http_body(opts[:'data'])
      auth_names = ['apiKey']
      data, status_code, headers = @api_client.call_api(:POST, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => 'OauthClientRedirectUriFull')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: OauthClientsRedirectUrisApi#create_account_oauth_clients_redirect_uri\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end
    # Delete an OAuth Client Redirect URI record.
    # Delete an OAuth Client Redirect URI record.
    # @param account_id Account ID
    # @param client_id Client ID
    # @param uri_id Redirect URI ID
    # @param [Hash] opts the optional parameters
    # @return [DeleteEntry]
    def delete_account_oauth_clients_redirect_uri(account_id, client_id, uri_id, opts = {})
      data, _status_code, _headers = delete_account_oauth_clients_redirect_uri_with_http_info(account_id, client_id, uri_id, opts)
      data
    end

    # Delete an OAuth Client Redirect URI record.
    # Delete an OAuth Client Redirect URI record.
    # @param account_id Account ID
    # @param client_id Client ID
    # @param uri_id Redirect URI ID
    # @param [Hash] opts the optional parameters
    # @return [Array<(DeleteEntry, Fixnum, Hash)>] DeleteEntry data, response status code and response headers
    def delete_account_oauth_clients_redirect_uri_with_http_info(account_id, client_id, uri_id, opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug 'Calling API: OauthClientsRedirectUrisApi.delete_account_oauth_clients_redirect_uri ...'
      end
      # verify the required parameter 'account_id' is set
      if @api_client.config.client_side_validation && account_id.nil?
        fail ArgumentError, "Missing the required parameter 'account_id' when calling OauthClientsRedirectUrisApi.delete_account_oauth_clients_redirect_uri"
      end
      # verify the required parameter 'client_id' is set
      if @api_client.config.client_side_validation && client_id.nil?
        fail ArgumentError, "Missing the required parameter 'client_id' when calling OauthClientsRedirectUrisApi.delete_account_oauth_clients_redirect_uri"
      end
      # verify the required parameter 'uri_id' is set
      if @api_client.config.client_side_validation && uri_id.nil?
        fail ArgumentError, "Missing the required parameter 'uri_id' when calling OauthClientsRedirectUrisApi.delete_account_oauth_clients_redirect_uri"
      end
      # resource path
      local_var_path = '/accounts/{account_id}/oauth/clients/{client_id}/redirect-uris/{uri_id}'.sub('{' + 'account_id' + '}', account_id.to_s).sub('{' + 'client_id' + '}', client_id.to_s).sub('{' + 'uri_id' + '}', uri_id.to_s)

      # query parameters
      query_params = {}

      # header parameters
      header_params = {}
      # HTTP header 'Accept' (if needed)
      header_params['Accept'] = @api_client.select_header_accept(['application/json'])
      # HTTP header 'Content-Type'
      header_params['Content-Type'] = @api_client.select_header_content_type(['application/json'])

      # form parameters
      form_params = {}

      # http body (model)
      post_body = nil
      auth_names = ['apiKey']
      data, status_code, headers = @api_client.call_api(:DELETE, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => 'DeleteEntry')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: OauthClientsRedirectUrisApi#delete_account_oauth_clients_redirect_uri\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end
    # Get details of an OAuth Client Redirect URI record.
    # Get details of an OAuth Client Redirect URI record.
    # @param account_id Account ID
    # @param client_id Client ID
    # @param uri_id Redirect URI ID
    # @param [Hash] opts the optional parameters
    # @return [OauthClientRedirectUriFull]
    def get_account_oauth_clients_redirect_uri(account_id, client_id, uri_id, opts = {})
      data, _status_code, _headers = get_account_oauth_clients_redirect_uri_with_http_info(account_id, client_id, uri_id, opts)
      data
    end

    # Get details of an OAuth Client Redirect URI record.
    # Get details of an OAuth Client Redirect URI record.
    # @param account_id Account ID
    # @param client_id Client ID
    # @param uri_id Redirect URI ID
    # @param [Hash] opts the optional parameters
    # @return [Array<(OauthClientRedirectUriFull, Fixnum, Hash)>] OauthClientRedirectUriFull data, response status code and response headers
    def get_account_oauth_clients_redirect_uri_with_http_info(account_id, client_id, uri_id, opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug 'Calling API: OauthClientsRedirectUrisApi.get_account_oauth_clients_redirect_uri ...'
      end
      # verify the required parameter 'account_id' is set
      if @api_client.config.client_side_validation && account_id.nil?
        fail ArgumentError, "Missing the required parameter 'account_id' when calling OauthClientsRedirectUrisApi.get_account_oauth_clients_redirect_uri"
      end
      # verify the required parameter 'client_id' is set
      if @api_client.config.client_side_validation && client_id.nil?
        fail ArgumentError, "Missing the required parameter 'client_id' when calling OauthClientsRedirectUrisApi.get_account_oauth_clients_redirect_uri"
      end
      # verify the required parameter 'uri_id' is set
      if @api_client.config.client_side_validation && uri_id.nil?
        fail ArgumentError, "Missing the required parameter 'uri_id' when calling OauthClientsRedirectUrisApi.get_account_oauth_clients_redirect_uri"
      end
      # resource path
      local_var_path = '/accounts/{account_id}/oauth/clients/{client_id}/redirect-uris/{uri_id}'.sub('{' + 'account_id' + '}', account_id.to_s).sub('{' + 'client_id' + '}', client_id.to_s).sub('{' + 'uri_id' + '}', uri_id.to_s)

      # query parameters
      query_params = {}

      # header parameters
      header_params = {}
      # HTTP header 'Accept' (if needed)
      header_params['Accept'] = @api_client.select_header_accept(['application/json'])
      # HTTP header 'Content-Type'
      header_params['Content-Type'] = @api_client.select_header_content_type(['application/json'])

      # form parameters
      form_params = {}

      # http body (model)
      post_body = nil
      auth_names = ['apiKey']
      data, status_code, headers = @api_client.call_api(:GET, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => 'OauthClientRedirectUriFull')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: OauthClientsRedirectUrisApi#get_account_oauth_clients_redirect_uri\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end
    # Get a list of OAuth Client Redirect URIs for an account.
    # Get a list of OAuth Client Redirect URIs for an account.
    # @param account_id Account ID
    # @param client_id Client ID
    # @param [Hash] opts the optional parameters
    # @option opts [Array<String>] :filters_id ID filter
    # @option opts [String] :sort_id ID sorting
    # @option opts [Integer] :limit Max results
    # @option opts [Integer] :offset Results to skip
    # @option opts [String] :fields Field set
    # @return [ListOauthClientsRedirectUris]
    def list_account_oauth_clients_redirect_uris(account_id, client_id, opts = {})
      data, _status_code, _headers = list_account_oauth_clients_redirect_uris_with_http_info(account_id, client_id, opts)
      data
    end

    # Get a list of OAuth Client Redirect URIs for an account.
    # Get a list of OAuth Client Redirect URIs for an account.
    # @param account_id Account ID
    # @param client_id Client ID
    # @param [Hash] opts the optional parameters
    # @option opts [Array<String>] :filters_id ID filter
    # @option opts [String] :sort_id ID sorting
    # @option opts [Integer] :limit Max results
    # @option opts [Integer] :offset Results to skip
    # @option opts [String] :fields Field set
    # @return [Array<(ListOauthClientsRedirectUris, Fixnum, Hash)>] ListOauthClientsRedirectUris data, response status code and response headers
    def list_account_oauth_clients_redirect_uris_with_http_info(account_id, client_id, opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug 'Calling API: OauthClientsRedirectUrisApi.list_account_oauth_clients_redirect_uris ...'
      end
      # verify the required parameter 'account_id' is set
      if @api_client.config.client_side_validation && account_id.nil?
        fail ArgumentError, "Missing the required parameter 'account_id' when calling OauthClientsRedirectUrisApi.list_account_oauth_clients_redirect_uris"
      end
      # verify the required parameter 'client_id' is set
      if @api_client.config.client_side_validation && client_id.nil?
        fail ArgumentError, "Missing the required parameter 'client_id' when calling OauthClientsRedirectUrisApi.list_account_oauth_clients_redirect_uris"
      end
      if @api_client.config.client_side_validation && !opts[:'sort_id'].nil? && opts[:'sort_id'] !~ Regexp.new(/asc|desc/)
        fail ArgumentError, "invalid value for 'opts[:\"sort_id\"]' when calling OauthClientsRedirectUrisApi.list_account_oauth_clients_redirect_uris, must conform to the pattern /asc|desc/."
      end

      # resource path
      local_var_path = '/accounts/{account_id}/oauth/clients/{client_id}/redirect-uris'.sub('{' + 'account_id' + '}', account_id.to_s).sub('{' + 'client_id' + '}', client_id.to_s)

      # query parameters
      query_params = {}
      query_params[:'filters[id]'] = @api_client.build_collection_param(opts[:'filters_id'], :multi) if !opts[:'filters_id'].nil?
      query_params[:'sort[id]'] = opts[:'sort_id'] if !opts[:'sort_id'].nil?
      query_params[:'limit'] = opts[:'limit'] if !opts[:'limit'].nil?
      query_params[:'offset'] = opts[:'offset'] if !opts[:'offset'].nil?
      query_params[:'fields'] = opts[:'fields'] if !opts[:'fields'].nil?

      # header parameters
      header_params = {}
      # HTTP header 'Accept' (if needed)
      header_params['Accept'] = @api_client.select_header_accept(['application/json'])
      # HTTP header 'Content-Type'
      header_params['Content-Type'] = @api_client.select_header_content_type(['application/json'])

      # form parameters
      form_params = {}

      # http body (model)
      post_body = nil
      auth_names = ['apiKey']
      data, status_code, headers = @api_client.call_api(:GET, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => 'ListOauthClientsRedirectUris')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: OauthClientsRedirectUrisApi#list_account_oauth_clients_redirect_uris\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end
  end
end
