##
#    This code was generated by
#    ___ _ _ _ _ _    _ ____    ____ ____ _    ____ ____ _  _ ____ ____ ____ ___ __   __
#     |  | | | | |    | |  | __ |  | |__| | __ | __ |___ |\ | |___ |__/ |__|  | |  | |__/
#     |  |_|_| | |___ | |__|    |__| |  | |    |__] |___ | \| |___ |  \ |  |  | |__| |  \
#
#    Twilio - Trusthub
#    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 Trusthub < TrusthubBase
            class V1 < Version
                class ComplianceTollfreeInquiriesList < ListResource
                
                    ##
                    # Initialize the ComplianceTollfreeInquiriesList
                    # @param [Version] version Version that contains the resource
                    # @return [ComplianceTollfreeInquiriesList] ComplianceTollfreeInquiriesList
                    def initialize(version)
                        super(version)
                        # Path Solution
                        @solution = {  }
                        @uri = "/ComplianceInquiries/Tollfree/Initialize"
                        
                    end
                    ##
                    # Create the ComplianceTollfreeInquiriesInstance
                    # @param [String] tollfree_phone_number The Tollfree phone number to be verified
                    # @param [String] notification_email The email address to receive the notification about the verification result.
                    # @param [String] business_name The name of the business or organization using the Tollfree number.
                    # @param [String] business_website The website of the business or organization using the Tollfree number.
                    # @param [Array[String]] use_case_categories The category of the use case for the Tollfree Number. List as many are applicable..
                    # @param [String] use_case_summary Use this to further explain how messaging is used by the business or organization.
                    # @param [String] production_message_sample An example of message content, i.e. a sample message.
                    # @param [Array[String]] opt_in_image_urls Link to an image that shows the opt-in workflow. Multiple images allowed and must be a publicly hosted URL.
                    # @param [OptInType] opt_in_type 
                    # @param [String] message_volume Estimate monthly volume of messages from the Tollfree Number.
                    # @param [String] business_street_address The address of the business or organization using the Tollfree number.
                    # @param [String] business_street_address2 The address of the business or organization using the Tollfree number.
                    # @param [String] business_city The city of the business or organization using the Tollfree number.
                    # @param [String] business_state_province_region The state/province/region of the business or organization using the Tollfree number.
                    # @param [String] business_postal_code The postal code of the business or organization using the Tollfree number.
                    # @param [String] business_country The country of the business or organization using the Tollfree number.
                    # @param [String] additional_information Additional information to be provided for verification.
                    # @param [String] business_contact_first_name The first name of the contact for the business or organization using the Tollfree number.
                    # @param [String] business_contact_last_name The last name of the contact for the business or organization using the Tollfree number.
                    # @param [String] business_contact_email The email address of the contact for the business or organization using the Tollfree number.
                    # @param [String] business_contact_phone The phone number of the contact for the business or organization using the Tollfree number.
                    # @param [String] theme_set_id Theme id for styling the inquiry form.
                    # @param [Boolean] skip_messaging_use_case Skip the messaging use case screen of the inquiry form.
                    # @return [ComplianceTollfreeInquiriesInstance] Created ComplianceTollfreeInquiriesInstance
                    def create(
                        tollfree_phone_number: nil, 
                        notification_email: nil, 
                        business_name: :unset, 
                        business_website: :unset, 
                        use_case_categories: :unset, 
                        use_case_summary: :unset, 
                        production_message_sample: :unset, 
                        opt_in_image_urls: :unset, 
                        opt_in_type: :unset, 
                        message_volume: :unset, 
                        business_street_address: :unset, 
                        business_street_address2: :unset, 
                        business_city: :unset, 
                        business_state_province_region: :unset, 
                        business_postal_code: :unset, 
                        business_country: :unset, 
                        additional_information: :unset, 
                        business_contact_first_name: :unset, 
                        business_contact_last_name: :unset, 
                        business_contact_email: :unset, 
                        business_contact_phone: :unset, 
                        theme_set_id: :unset, 
                        skip_messaging_use_case: :unset
                    )

                        data = Twilio::Values.of({
                            'TollfreePhoneNumber' => tollfree_phone_number,
                            'NotificationEmail' => notification_email,
                            'BusinessName' => business_name,
                            'BusinessWebsite' => business_website,
                            'UseCaseCategories' => Twilio.serialize_list(use_case_categories) { |e| e },
                            'UseCaseSummary' => use_case_summary,
                            'ProductionMessageSample' => production_message_sample,
                            'OptInImageUrls' => Twilio.serialize_list(opt_in_image_urls) { |e| e },
                            'OptInType' => opt_in_type,
                            'MessageVolume' => message_volume,
                            'BusinessStreetAddress' => business_street_address,
                            'BusinessStreetAddress2' => business_street_address2,
                            'BusinessCity' => business_city,
                            'BusinessStateProvinceRegion' => business_state_province_region,
                            'BusinessPostalCode' => business_postal_code,
                            'BusinessCountry' => business_country,
                            'AdditionalInformation' => additional_information,
                            'BusinessContactFirstName' => business_contact_first_name,
                            'BusinessContactLastName' => business_contact_last_name,
                            'BusinessContactEmail' => business_contact_email,
                            'BusinessContactPhone' => business_contact_phone,
                            'ThemeSetId' => theme_set_id,
                            'SkipMessagingUseCase' => skip_messaging_use_case,
                        })

                        headers = Twilio::Values.of({'Content-Type' => 'application/x-www-form-urlencoded', })
                        
                        
                        
                        
                        
                        payload = @version.create('POST', @uri, data: data, headers: headers)
                        ComplianceTollfreeInquiriesInstance.new(
                            @version,
                            payload,
                        )
                    end

                


                    # Provide a user friendly representation
                    def to_s
                        '#<Twilio.Trusthub.V1.ComplianceTollfreeInquiriesList>'
                    end
                end

                class ComplianceTollfreeInquiriesPage < Page
                    ##
                    # Initialize the ComplianceTollfreeInquiriesPage
                    # @param [Version] version Version that contains the resource
                    # @param [Response] response Response from the API
                    # @param [Hash] solution Path solution for the resource
                    # @return [ComplianceTollfreeInquiriesPage] ComplianceTollfreeInquiriesPage
                    def initialize(version, response, solution)
                        super(version, response)

                        # Path Solution
                        @solution = solution
                    end

                    ##
                    # Build an instance of ComplianceTollfreeInquiriesInstance
                    # @param [Hash] payload Payload response from the API
                    # @return [ComplianceTollfreeInquiriesInstance] ComplianceTollfreeInquiriesInstance
                    def get_instance(payload)
                        ComplianceTollfreeInquiriesInstance.new(@version, payload)
                    end

                    ##
                    # Provide a user friendly representation
                    def to_s
                        '<Twilio.Trusthub.V1.ComplianceTollfreeInquiriesPage>'
                    end
                end
                class ComplianceTollfreeInquiriesInstance < InstanceResource
                    ##
                    # Initialize the ComplianceTollfreeInquiriesInstance
                    # @param [Version] version Version that contains the resource
                    # @param [Hash] payload payload that contains response from Twilio
                    # @param [String] account_sid The SID of the
                    #   {Account}[https://www.twilio.com/docs/iam/api/account] that created this ComplianceTollfreeInquiries
                    #   resource.
                    # @param [String] sid The SID of the Call resource to fetch.
                    # @return [ComplianceTollfreeInquiriesInstance] ComplianceTollfreeInquiriesInstance
                    def initialize(version, payload )
                        super(version)
                        
                        # Marshaled Properties
                        @properties = { 
                            'inquiry_id' => payload['inquiry_id'],
                            'inquiry_session_token' => payload['inquiry_session_token'],
                            'registration_id' => payload['registration_id'],
                            'url' => payload['url'],
                        }
                    end

                    
                    ##
                    # @return [String] The unique ID used to start an embedded compliance registration session.
                    def inquiry_id
                        @properties['inquiry_id']
                    end
                    
                    ##
                    # @return [String] The session token used to start an embedded compliance registration session.
                    def inquiry_session_token
                        @properties['inquiry_session_token']
                    end
                    
                    ##
                    # @return [String] The TolfreeId matching the Tollfree Profile that should be resumed or resubmitted for editing.
                    def registration_id
                        @properties['registration_id']
                    end
                    
                    ##
                    # @return [String] The URL of this resource.
                    def url
                        @properties['url']
                    end
                    
                    ##
                    # Provide a user friendly representation
                    def to_s
                        "<Twilio.Trusthub.V1.ComplianceTollfreeInquiriesInstance>"
                    end

                    ##
                    # Provide a detailed, user friendly representation
                    def inspect
                        "<Twilio.Trusthub.V1.ComplianceTollfreeInquiriesInstance>"
                    end
                end

            end
        end
    end
end
