##
#    This code was generated by
#    ___ _ _ _ _ _    _ ____    ____ ____ _    ____ ____ _  _ ____ ____ ____ ___ __   __
#     |  | | | | |    | |  | __ |  | |__| | __ | __ |___ |\ | |___ |__/ |__|  | |  | |__/
#     |  |_|_| | |___ | |__|    |__| |  | |    |__] |___ | \| |___ |  \ |  |  | |__| |  \
#
#    Twilio - Numbers
#    This is the public Twilio REST API.
#
#    NOTE: This class is auto generated by OpenAPI Generator.
#    https://openapi-generator.tech
#    Do not edit the class manually.
#

module Twilio
    module REST
        class Numbers
            class V1 < Version
                ##
                # Initialize the V1 version of Numbers
                def initialize(domain)
                    super
                    @version = 'v1'
                    @bulk_eligibilities = nil
                    @eligibilities = nil
                    @porting_all_port_ins = nil
                    @porting_port_ins = nil
                    @porting_port_in_phone_number = nil
                    @porting_portabilities = nil
                    @porting_webhook_configurations = nil
                    @porting_webhook_configurations_delete = nil
                    @signing_request_configurations = nil
                    @webhook = nil
                end

                ##
                # @param [String] request_id The SID of the bulk eligibility check that you want to know about.
                # @return [Twilio::REST::Numbers::V1::BulkEligibilityContext] if requestId was passed.
                # @return [Twilio::REST::Numbers::V1::BulkEligibilityList]
                def bulk_eligibilities(request_id=:unset)
                    if request_id.nil?
                        raise ArgumentError, 'request_id cannot be nil'
                    end
                    if request_id == :unset
                        @bulk_eligibilities ||= BulkEligibilityList.new self
                    else
                        BulkEligibilityContext.new(self, request_id)
                    end
                end
                ##
                # @return [Twilio::REST::Numbers::V1::EligibilityList]
                def eligibilities
                    @eligibilities ||= EligibilityList.new self
                end
                ##
                # @return [Twilio::REST::Numbers::V1::PortingAllPortInList]
                def porting_all_port_ins
                    @porting_all_port_ins ||= PortingAllPortInList.new self
                end
                ##
                # @param [String] port_in_request_sid The SID of the Port In request. This is a unique identifier of the port in request.
                # @return [Twilio::REST::Numbers::V1::PortingPortInContext] if portInRequestSid was passed.
                # @return [Twilio::REST::Numbers::V1::PortingPortInList]
                def porting_port_ins(port_in_request_sid=:unset)
                    if port_in_request_sid.nil?
                        raise ArgumentError, 'port_in_request_sid cannot be nil'
                    end
                    if port_in_request_sid == :unset
                        @porting_port_ins ||= PortingPortInList.new self
                    else
                        PortingPortInContext.new(self, port_in_request_sid)
                    end
                end
                ##
                # @param [String] port_in_request_sid The SID of the Port In request. This is a unique identifier of the port in request.
                # @param [String] phone_number_sid The SID of the Phone number. This is a unique identifier of the phone number.
                # @return [Twilio::REST::Numbers::V1::PortingPortInPhoneNumberContext] if portInRequestSid was passed.
                # @return [Twilio::REST::Numbers::V1::PortingPortInPhoneNumberList]
                def porting_port_in_phone_number(port_in_request_sid=:unset, phone_number_sid=:unset)
                    if port_in_request_sid.nil?
                        raise ArgumentError, 'port_in_request_sid cannot be nil'
                    end
                    if phone_number_sid.nil?
                        raise ArgumentError, 'phone_number_sid cannot be nil'
                    end
                    if port_in_request_sid == :unset && phone_number_sid == :unset
                        @porting_port_in_phone_number ||= PortingPortInPhoneNumberList.new self
                    else
                        PortingPortInPhoneNumberContext.new(self, port_in_request_sid, phone_number_sid)
                    end
                end
                ##
                # @param [String] port_in_request_sid The SID of the Port In request. This is a unique identifier of the port in request.
                # @param [String] phone_number_sid The SID of the Phone number. This is a unique identifier of the phone number.
                # @return [Twilio::REST::Numbers::V1::PortingPortInPhoneNumberContext] if phoneNumberSid was passed.
                # @return [Twilio::REST::Numbers::V1::PortingPortInPhoneNumberList]
                def porting_port_in_phone_number(port_in_request_sid=:unset, phone_number_sid=:unset)
                    if port_in_request_sid.nil?
                        raise ArgumentError, 'port_in_request_sid cannot be nil'
                    end
                    if phone_number_sid.nil?
                        raise ArgumentError, 'phone_number_sid cannot be nil'
                    end
                    if port_in_request_sid == :unset && phone_number_sid == :unset
                        @porting_port_in_phone_number ||= PortingPortInPhoneNumberList.new self
                    else
                        PortingPortInPhoneNumberContext.new(self, port_in_request_sid, phone_number_sid)
                    end
                end
                ##
                # @param [String] phone_number Phone number to check portability in e164 format.
                # @return [Twilio::REST::Numbers::V1::PortingPortabilityContext] if phoneNumber was passed.
                # @return [Twilio::REST::Numbers::V1::PortingPortabilityList]
                def porting_portabilities(phone_number=:unset)
                    if phone_number.nil?
                        raise ArgumentError, 'phone_number cannot be nil'
                    end
                    if phone_number == :unset
                        @porting_portabilities ||= PortingPortabilityList.new self
                    else
                        PortingPortabilityContext.new(self, phone_number)
                    end
                end
                ##
                # @return [Twilio::REST::Numbers::V1::PortingWebhookConfigurationList]
                def porting_webhook_configurations
                    @porting_webhook_configurations ||= PortingWebhookConfigurationList.new self
                end
                ##
                # @param [String] webhook_type The webhook type for the configuration to be delete. `PORT_IN`, `PORT_OUT`
                # @return [Twilio::REST::Numbers::V1::PortingWebhookConfigurationDeleteContext] if webhookType was passed.
                # @return [Twilio::REST::Numbers::V1::PortingWebhookConfigurationDeleteList]
                def porting_webhook_configurations_delete(webhook_type=:unset)
                    if webhook_type.nil?
                        raise ArgumentError, 'webhook_type cannot be nil'
                    end
                    if webhook_type == :unset
                        @porting_webhook_configurations_delete ||= PortingWebhookConfigurationDeleteList.new self
                    else
                        PortingWebhookConfigurationDeleteContext.new(self, webhook_type)
                    end
                end
                ##
                # @return [Twilio::REST::Numbers::V1::SigningRequestConfigurationList]
                def signing_request_configurations
                    @signing_request_configurations ||= SigningRequestConfigurationList.new self
                end
                ##
                # @return [Twilio::REST::Numbers::V1::WebhookList]
                def webhook
                    @webhook ||= WebhookList.new self
                end
                ##
                # Provide a user friendly representation
                def to_s
                    '<Twilio::REST::Numbers::V1>';
                end
            end
        end
    end
end
