=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://elasticemail.com/account#/settings/new/manage-api\">here</a>). Remember to keep it safe. Required access levels are listed in the given request’s description.    This is the documentation for REST API. If you’d like to read our legacy documentation regarding Web API v2 click <a target=\"_blank\" href=\"https://api.elasticemail.com/public/help\">here</a>.    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
OpenAPI Generator version: 5.2.1

=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_hist_event_type'
require 'ElasticEmail/models/contact_history'
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_message_data'
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