=begin
#Cms Content Audit

#Use this endpoint to query audit logs of CMS changes that occurred on your HubSpot account.

The version of the OpenAPI document: v3

Generated by: https://openapi-generator.tech
OpenAPI Generator version: 6.2.1

=end

require 'cgi'

module Hubspot
  module Cms
    module AuditLogs
      class AuditLogsApi
        attr_accessor :api_client

        def initialize(api_client = ApiClient.default)
          @api_client = api_client
        end
        # Query audit logs
        # Returns audit logs based on filters.
        # @param [Hash] opts the optional parameters
        # @option opts [Array<String>] :user_id Comma separated list of user ids to filter by.
        # @option opts [Array<String>] :event_type Comma separated list of event types to filter by (CREATED, UPDATED, PUBLISHED, DELETED, UNPUBLISHED).
        # @option opts [Array<String>] :object_type Comma separated list of object types to filter by (BLOG, LANDING_PAGE, DOMAIN, HUBDB_TABLE etc.)
        # @option opts [Array<String>] :object_id Comma separated list of object ids to filter by.
        # @option opts [String] :after Timestamp after which audit logs will be returned
        # @option opts [String] :before Timestamp before which audit logs will be returned
        # @option opts [Integer] :limit The number of logs to return.
        # @option opts [Array<String>] :sort The sort direction for the audit logs. (Can only sort by timestamp).
        # @return [CollectionResponsePublicAuditLog]
        def get_page(opts = {})
          data, _status_code, _headers = get_page_with_http_info(opts)
          data
        end

        # Query audit logs
        # Returns audit logs based on filters.
        # @param [Hash] opts the optional parameters
        # @option opts [Array<String>] :user_id Comma separated list of user ids to filter by.
        # @option opts [Array<String>] :event_type Comma separated list of event types to filter by (CREATED, UPDATED, PUBLISHED, DELETED, UNPUBLISHED).
        # @option opts [Array<String>] :object_type Comma separated list of object types to filter by (BLOG, LANDING_PAGE, DOMAIN, HUBDB_TABLE etc.)
        # @option opts [Array<String>] :object_id Comma separated list of object ids to filter by.
        # @option opts [String] :after Timestamp after which audit logs will be returned
        # @option opts [String] :before Timestamp before which audit logs will be returned
        # @option opts [Integer] :limit The number of logs to return.
        # @option opts [Array<String>] :sort The sort direction for the audit logs. (Can only sort by timestamp).
        # @return [Array<(CollectionResponsePublicAuditLog, Integer, Hash)>] CollectionResponsePublicAuditLog data, response status code and response headers
        def get_page_with_http_info(opts = {})
          if @api_client.config.debugging
            @api_client.config.logger.debug 'Calling API: AuditLogsApi.get_page ...'
          end
          # resource path
          local_var_path = '/cms/v3/audit-logs/'

          # query parameters
          query_params = opts[:query_params] || {}
          query_params[:'userId'] = @api_client.build_collection_param(opts[:'user_id'], :multi) if !opts[:'user_id'].nil?
          query_params[:'eventType'] = @api_client.build_collection_param(opts[:'event_type'], :multi) if !opts[:'event_type'].nil?
          query_params[:'objectType'] = @api_client.build_collection_param(opts[:'object_type'], :multi) if !opts[:'object_type'].nil?
          query_params[:'objectId'] = @api_client.build_collection_param(opts[:'object_id'], :multi) if !opts[:'object_id'].nil?
          query_params[:'after'] = opts[:'after'] if !opts[:'after'].nil?
          query_params[:'before'] = opts[:'before'] if !opts[:'before'].nil?
          query_params[:'limit'] = opts[:'limit'] if !opts[:'limit'].nil?
          query_params[:'sort'] = @api_client.build_collection_param(opts[:'sort'], :multi) if !opts[:'sort'].nil?

          # header parameters
          header_params = opts[:header_params] || {}
          # HTTP header 'Accept' (if needed)
          header_params['Accept'] = @api_client.select_header_accept(['application/json', '*/*'])

          # form parameters
          form_params = opts[:form_params] || {}

          # http body (model)
          post_body = opts[:debug_body]

          # return_type
          return_type = opts[:debug_return_type] || 'CollectionResponsePublicAuditLog'

          # auth_names
          auth_names = opts[:debug_auth_names] || ['oauth2']

          new_options = opts.merge(
            :operation => :"AuditLogsApi.get_page",
            :header_params => header_params,
            :query_params => query_params,
            :form_params => form_params,
            :body => post_body,
            :auth_names => auth_names,
            :return_type => return_type
          )

          data, status_code, headers = @api_client.call_api(:GET, local_var_path, new_options)
          if @api_client.config.debugging
            @api_client.config.logger.debug "API called: AuditLogsApi#get_page\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
          end
          return data, status_code, headers
        end
      end
    end
  end
end
