=begin
#Elastic Email REST API

#This API is based on the REST API architecture, allowing the user to easily manage their data with this resource-based approach.    Every API call is established on which specific request type (GET, POST, PUT, DELETE) will be used.    The API has a limit of 20 concurrent connections and a hard timeout of 600 seconds per request.    To start using this API, you will need your Access Token (available <a target=\"_blank\" href=\"https://app.elasticemail.com/marketing/settings/new/manage-api\">here</a>). Remember to keep it safe. Required access levels are listed in the given request’s description.    Downloadable library clients can be found in our Github repository <a target=\"_blank\" href=\"https://github.com/ElasticEmail?tab=repositories&q=%22rest+api%22+in%3Areadme\">here</a>

The version of the OpenAPI document: 4.0.0
Contact: support@elasticemail.com
Generated by: https://openapi-generator.tech
Generator version: 7.7.0

=end

# Common files
require 'ElasticEmail/api_client'
require 'ElasticEmail/api_error'
require 'ElasticEmail/version'
require 'ElasticEmail/configuration'

# Models
require 'ElasticEmail/models/access_level'
require 'ElasticEmail/models/account_status_enum'
require 'ElasticEmail/models/api_key'
require 'ElasticEmail/models/api_key_payload'
require 'ElasticEmail/models/body_content_type'
require 'ElasticEmail/models/body_part'
require 'ElasticEmail/models/campaign'
require 'ElasticEmail/models/campaign_options'
require 'ElasticEmail/models/campaign_recipient'
require 'ElasticEmail/models/campaign_status'
require 'ElasticEmail/models/campaign_template'
require 'ElasticEmail/models/channel_log_status_summary'
require 'ElasticEmail/models/compression_format'
require 'ElasticEmail/models/consent_data'
require 'ElasticEmail/models/consent_tracking'
require 'ElasticEmail/models/contact'
require 'ElasticEmail/models/contact_activity'
require 'ElasticEmail/models/contact_payload'
require 'ElasticEmail/models/contact_source'
require 'ElasticEmail/models/contact_status'
require 'ElasticEmail/models/contact_update_payload'
require 'ElasticEmail/models/contacts_list'
require 'ElasticEmail/models/delivery_optimization_type'
require 'ElasticEmail/models/email_content'
require 'ElasticEmail/models/email_data'
require 'ElasticEmail/models/email_job_failed_status'
require 'ElasticEmail/models/email_job_status'
require 'ElasticEmail/models/email_message_data'
require 'ElasticEmail/models/email_predicted_validation_status'
require 'ElasticEmail/models/email_recipient'
require 'ElasticEmail/models/email_send'
require 'ElasticEmail/models/email_status'
require 'ElasticEmail/models/email_transactional_message_data'
require 'ElasticEmail/models/email_validation_result'
require 'ElasticEmail/models/email_validation_status'
require 'ElasticEmail/models/email_view'
require 'ElasticEmail/models/emails_payload'
require 'ElasticEmail/models/encoding_type'
require 'ElasticEmail/models/event_type'
require 'ElasticEmail/models/events_order_by'
require 'ElasticEmail/models/export_file_formats'
require 'ElasticEmail/models/export_link'
require 'ElasticEmail/models/export_status'
require 'ElasticEmail/models/file_info'
require 'ElasticEmail/models/file_payload'
require 'ElasticEmail/models/file_upload_result'
require 'ElasticEmail/models/inbound_payload'
require 'ElasticEmail/models/inbound_route'
require 'ElasticEmail/models/inbound_route_action_type'
require 'ElasticEmail/models/inbound_route_filter_type'
require 'ElasticEmail/models/list_payload'
require 'ElasticEmail/models/list_update_payload'
require 'ElasticEmail/models/log_job_status'
require 'ElasticEmail/models/log_status_summary'
require 'ElasticEmail/models/merge_email_payload'
require 'ElasticEmail/models/message_attachment'
require 'ElasticEmail/models/message_category'
require 'ElasticEmail/models/new_api_key'
require 'ElasticEmail/models/new_smtp_credentials'
require 'ElasticEmail/models/options'
require 'ElasticEmail/models/recipient_event'
require 'ElasticEmail/models/segment'
require 'ElasticEmail/models/segment_payload'
require 'ElasticEmail/models/smtp_credentials'
require 'ElasticEmail/models/smtp_credentials_payload'
require 'ElasticEmail/models/sort_order_item'
require 'ElasticEmail/models/split_optimization_type'
require 'ElasticEmail/models/split_options'
require 'ElasticEmail/models/sub_account_info'
require 'ElasticEmail/models/subaccount_email_credits_payload'
require 'ElasticEmail/models/subaccount_email_settings'
require 'ElasticEmail/models/subaccount_email_settings_payload'
require 'ElasticEmail/models/subaccount_payload'
require 'ElasticEmail/models/subaccount_settings_info'
require 'ElasticEmail/models/subaccount_settings_info_payload'
require 'ElasticEmail/models/suppression'
require 'ElasticEmail/models/template'
require 'ElasticEmail/models/template_payload'
require 'ElasticEmail/models/template_scope'
require 'ElasticEmail/models/template_type'
require 'ElasticEmail/models/transactional_recipient'
require 'ElasticEmail/models/utm'
require 'ElasticEmail/models/verification_file_result'
require 'ElasticEmail/models/verification_file_result_details'
require 'ElasticEmail/models/verification_status'

# APIs
require 'ElasticEmail/api/campaigns_api'
require 'ElasticEmail/api/contacts_api'
require 'ElasticEmail/api/emails_api'
require 'ElasticEmail/api/events_api'
require 'ElasticEmail/api/files_api'
require 'ElasticEmail/api/inbound_route_api'
require 'ElasticEmail/api/lists_api'
require 'ElasticEmail/api/security_api'
require 'ElasticEmail/api/segments_api'
require 'ElasticEmail/api/statistics_api'
require 'ElasticEmail/api/sub_accounts_api'
require 'ElasticEmail/api/suppressions_api'
require 'ElasticEmail/api/templates_api'
require 'ElasticEmail/api/verifications_api'

module ElasticEmail
  class << self
    # Customize default settings for the SDK using block.
    #   ElasticEmail.configure do |config|
    #     config.username = "xxx"
    #     config.password = "xxx"
    #   end
    # If no block given, return the default Configuration object.
    def configure
      if block_given?
        yield(Configuration.default)
      else
        Configuration.default
      end
    end
  end
end