## # This code was generated by # ___ _ _ _ _ _ _ ____ ____ ____ _ ____ ____ _ _ ____ ____ ____ ___ __ __ # | | | | | | | | | __ | | |__| | __ | __ |___ |\ | |___ |__/ |__| | | | |__/ # | |_|_| | |___ | |__| |__| | | | |__] |___ | \| |___ | \ | | | |__| | \ # # Twilio - Trunking # 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 Trunking < TrunkingBase class V1 < Version class TrunkList < ListResource ## # Initialize the TrunkList # @param [Version] version Version that contains the resource # @return [TrunkList] TrunkList def initialize(version) super(version) # Path Solution @solution = { } @uri = "/Trunks" end ## # Create the TrunkInstance # @param [String] friendly_name A descriptive string that you create to describe the resource. It can be up to 64 characters long. # @param [String] domain_name The unique address you reserve on Twilio to which you route your SIP traffic. Domain names can contain letters, digits, and `-` and must end with `pstn.twilio.com`. See [Termination Settings](https://www.twilio.com/docs/sip-trunking#termination) for more information. # @param [String] disaster_recovery_url The URL we should call using the `disaster_recovery_method` if an error occurs while sending SIP traffic towards the configured Origination URL. We retrieve TwiML from the URL and execute the instructions like any other normal TwiML call. See [Disaster Recovery](https://www.twilio.com/docs/sip-trunking#disaster-recovery) for more information. # @param [String] disaster_recovery_method The HTTP method we should use to call the `disaster_recovery_url`. Can be: `GET` or `POST`. # @param [TransferSetting] transfer_mode # @param [Boolean] secure Whether Secure Trunking is enabled for the trunk. If enabled, all calls going through the trunk will be secure using SRTP for media and TLS for signaling. If disabled, then RTP will be used for media. See [Secure Trunking](https://www.twilio.com/docs/sip-trunking#securetrunking) for more information. # @param [Boolean] cnam_lookup_enabled Whether Caller ID Name (CNAM) lookup should be enabled for the trunk. If enabled, all inbound calls to the SIP Trunk from the United States and Canada automatically perform a CNAM Lookup and display Caller ID data on your phone. See [CNAM Lookups](https://www.twilio.com/docs/sip-trunking#CNAM) for more information. # @param [TransferCallerId] transfer_caller_id # @return [TrunkInstance] Created TrunkInstance def create( friendly_name: :unset, domain_name: :unset, disaster_recovery_url: :unset, disaster_recovery_method: :unset, transfer_mode: :unset, secure: :unset, cnam_lookup_enabled: :unset, transfer_caller_id: :unset ) data = Twilio::Values.of({ 'FriendlyName' => friendly_name, 'DomainName' => domain_name, 'DisasterRecoveryUrl' => disaster_recovery_url, 'DisasterRecoveryMethod' => disaster_recovery_method, 'TransferMode' => transfer_mode, 'Secure' => secure, 'CnamLookupEnabled' => cnam_lookup_enabled, 'TransferCallerId' => transfer_caller_id, }) payload = @version.create('POST', @uri, data: data) TrunkInstance.new( @version, payload, ) end ## # Lists TrunkInstance records from the API as a list. # Unlike stream(), this operation is eager and will load `limit` records into # memory before returning. # @param [Integer] limit Upper limit for the number of records to return. stream() # guarantees to never return more than limit. Default is no limit # @param [Integer] page_size Number of records to fetch per request, when # not set will use the default value of 50 records. If no page_size is defined # but a limit is defined, stream() will attempt to read the limit with the most # efficient page size, i.e. min(limit, 1000) # @return [Array] Array of up to limit results def list(limit: nil, page_size: nil) self.stream( limit: limit, page_size: page_size ).entries end ## # Streams Instance records from the API as an Enumerable. # This operation lazily loads records as efficiently as possible until the limit # is reached. # @param [Integer] limit Upper limit for the number of records to return. stream() # guarantees to never return more than limit. Default is no limit # @param [Integer] page_size Number of records to fetch per request, when # not set will use the default value of 50 records. If no page_size is defined # but a limit is defined, stream() will attempt to read the limit with the most # efficient page size, i.e. min(limit, 1000) # @return [Enumerable] Enumerable that will yield up to limit results def stream(limit: nil, page_size: nil) limits = @version.read_limits(limit, page_size) page = self.page( page_size: limits[:page_size], ) @version.stream(page, limit: limits[:limit], page_limit: limits[:page_limit]) end ## # When passed a block, yields TrunkInstance records from the API. # This operation lazily loads records as efficiently as possible until the limit # is reached. def each limits = @version.read_limits page = self.page(page_size: limits[:page_size], ) @version.stream(page, limit: limits[:limit], page_limit: limits[:page_limit]).each {|x| yield x} end ## # Retrieve a single page of TrunkInstance records from the API. # Request is executed immediately. # @param [String] page_token PageToken provided by the API # @param [Integer] page_number Page Number, this value is simply for client state # @param [Integer] page_size Number of records to return, defaults to 50 # @return [Page] Page of TrunkInstance def page(page_token: :unset, page_number: :unset, page_size: :unset) params = Twilio::Values.of({ 'PageToken' => page_token, 'Page' => page_number, 'PageSize' => page_size, }) response = @version.page('GET', @uri, params: params) TrunkPage.new(@version, response, @solution) end ## # Retrieve a single page of TrunkInstance records from the API. # Request is executed immediately. # @param [String] target_url API-generated URL for the requested results page # @return [Page] Page of TrunkInstance def get_page(target_url) response = @version.domain.request( 'GET', target_url ) TrunkPage.new(@version, response, @solution) end # Provide a user friendly representation def to_s '#' end end class TrunkContext < InstanceContext ## # Initialize the TrunkContext # @param [Version] version Version that contains the resource # @param [String] sid The unique string that we created to identify the OriginationUrl resource to update. # @return [TrunkContext] TrunkContext def initialize(version, sid) super(version) # Path Solution @solution = { sid: sid, } @uri = "/Trunks/#{@solution[:sid]}" # Dependents @recordings = nil @credentials_lists = nil @ip_access_control_lists = nil @phone_numbers = nil @origination_urls = nil end ## # Delete the TrunkInstance # @return [Boolean] True if delete succeeds, false otherwise def delete @version.delete('DELETE', @uri) end ## # Fetch the TrunkInstance # @return [TrunkInstance] Fetched TrunkInstance def fetch payload = @version.fetch('GET', @uri) TrunkInstance.new( @version, payload, sid: @solution[:sid], ) end ## # Update the TrunkInstance # @param [String] friendly_name A descriptive string that you create to describe the resource. It can be up to 64 characters long. # @param [String] domain_name The unique address you reserve on Twilio to which you route your SIP traffic. Domain names can contain letters, digits, and `-` and must end with `pstn.twilio.com`. See [Termination Settings](https://www.twilio.com/docs/sip-trunking#termination) for more information. # @param [String] disaster_recovery_url The URL we should call using the `disaster_recovery_method` if an error occurs while sending SIP traffic towards the configured Origination URL. We retrieve TwiML from the URL and execute the instructions like any other normal TwiML call. See [Disaster Recovery](https://www.twilio.com/docs/sip-trunking#disaster-recovery) for more information. # @param [String] disaster_recovery_method The HTTP method we should use to call the `disaster_recovery_url`. Can be: `GET` or `POST`. # @param [TransferSetting] transfer_mode # @param [Boolean] secure Whether Secure Trunking is enabled for the trunk. If enabled, all calls going through the trunk will be secure using SRTP for media and TLS for signaling. If disabled, then RTP will be used for media. See [Secure Trunking](https://www.twilio.com/docs/sip-trunking#securetrunking) for more information. # @param [Boolean] cnam_lookup_enabled Whether Caller ID Name (CNAM) lookup should be enabled for the trunk. If enabled, all inbound calls to the SIP Trunk from the United States and Canada automatically perform a CNAM Lookup and display Caller ID data on your phone. See [CNAM Lookups](https://www.twilio.com/docs/sip-trunking#CNAM) for more information. # @param [TransferCallerId] transfer_caller_id # @return [TrunkInstance] Updated TrunkInstance def update( friendly_name: :unset, domain_name: :unset, disaster_recovery_url: :unset, disaster_recovery_method: :unset, transfer_mode: :unset, secure: :unset, cnam_lookup_enabled: :unset, transfer_caller_id: :unset ) data = Twilio::Values.of({ 'FriendlyName' => friendly_name, 'DomainName' => domain_name, 'DisasterRecoveryUrl' => disaster_recovery_url, 'DisasterRecoveryMethod' => disaster_recovery_method, 'TransferMode' => transfer_mode, 'Secure' => secure, 'CnamLookupEnabled' => cnam_lookup_enabled, 'TransferCallerId' => transfer_caller_id, }) payload = @version.update('POST', @uri, data: data) TrunkInstance.new( @version, payload, sid: @solution[:sid], ) end ## # Access the recordings # @return [RecordingList] # @return [RecordingContext] def recordings RecordingContext.new( @version, @solution[:sid] ) end ## # Access the credentials_lists # @return [CredentialListList] # @return [CredentialListContext] if sid was passed. def credentials_lists(sid=:unset) raise ArgumentError, 'sid cannot be nil' if sid.nil? if sid != :unset return CredentialListContext.new(@version, @solution[:sid],sid ) end unless @credentials_lists @credentials_lists = CredentialListList.new( @version, trunk_sid: @solution[:sid] ) end @credentials_lists end ## # Access the ip_access_control_lists # @return [IpAccessControlListList] # @return [IpAccessControlListContext] if sid was passed. def ip_access_control_lists(sid=:unset) raise ArgumentError, 'sid cannot be nil' if sid.nil? if sid != :unset return IpAccessControlListContext.new(@version, @solution[:sid],sid ) end unless @ip_access_control_lists @ip_access_control_lists = IpAccessControlListList.new( @version, trunk_sid: @solution[:sid] ) end @ip_access_control_lists end ## # Access the phone_numbers # @return [PhoneNumberList] # @return [PhoneNumberContext] if sid was passed. def phone_numbers(sid=:unset) raise ArgumentError, 'sid cannot be nil' if sid.nil? if sid != :unset return PhoneNumberContext.new(@version, @solution[:sid],sid ) end unless @phone_numbers @phone_numbers = PhoneNumberList.new( @version, trunk_sid: @solution[:sid] ) end @phone_numbers end ## # Access the origination_urls # @return [OriginationUrlList] # @return [OriginationUrlContext] if sid was passed. def origination_urls(sid=:unset) raise ArgumentError, 'sid cannot be nil' if sid.nil? if sid != :unset return OriginationUrlContext.new(@version, @solution[:sid],sid ) end unless @origination_urls @origination_urls = OriginationUrlList.new( @version, trunk_sid: @solution[:sid] ) end @origination_urls end ## # Provide a user friendly representation def to_s context = @solution.map{|k, v| "#{k}: #{v}"}.join(',') "#" end ## # Provide a detailed, user friendly representation def inspect context = @solution.map{|k, v| "#{k}: #{v}"}.join(',') "#" end end class TrunkPage < Page ## # Initialize the TrunkPage # @param [Version] version Version that contains the resource # @param [Response] response Response from the API # @param [Hash] solution Path solution for the resource # @return [TrunkPage] TrunkPage def initialize(version, response, solution) super(version, response) # Path Solution @solution = solution end ## # Build an instance of TrunkInstance # @param [Hash] payload Payload response from the API # @return [TrunkInstance] TrunkInstance def get_instance(payload) TrunkInstance.new(@version, payload) end ## # Provide a user friendly representation def to_s '' end end class TrunkInstance < InstanceResource ## # Initialize the TrunkInstance # @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 Trunk # resource. # @param [String] sid The SID of the Call resource to fetch. # @return [TrunkInstance] TrunkInstance def initialize(version, payload , sid: nil) super(version) # Marshaled Properties @properties = { 'account_sid' => payload['account_sid'], 'domain_name' => payload['domain_name'], 'disaster_recovery_method' => payload['disaster_recovery_method'], 'disaster_recovery_url' => payload['disaster_recovery_url'], 'friendly_name' => payload['friendly_name'], 'secure' => payload['secure'], 'recording' => payload['recording'], 'transfer_mode' => payload['transfer_mode'], 'transfer_caller_id' => payload['transfer_caller_id'], 'cnam_lookup_enabled' => payload['cnam_lookup_enabled'], 'auth_type' => payload['auth_type'], 'auth_type_set' => payload['auth_type_set'], 'date_created' => Twilio.deserialize_iso8601_datetime(payload['date_created']), 'date_updated' => Twilio.deserialize_iso8601_datetime(payload['date_updated']), 'sid' => payload['sid'], 'url' => payload['url'], 'links' => payload['links'], } # Context @instance_context = nil @params = { 'sid' => sid || @properties['sid'] , } end ## # Generate an instance context for the instance, the context is capable of # performing various actions. All instance actions are proxied to the context # @return [TrunkContext] CallContext for this CallInstance def context unless @instance_context @instance_context = TrunkContext.new(@version , @params['sid']) end @instance_context end ## # @return [String] The SID of the [Account](https://www.twilio.com/docs/iam/api/account) that created the Trunk resource. def account_sid @properties['account_sid'] end ## # @return [String] The unique address you reserve on Twilio to which you route your SIP traffic. Domain names can contain letters, digits, and `-` and must end with `pstn.twilio.com`. See [Termination Settings](https://www.twilio.com/docs/sip-trunking#termination) for more information. def domain_name @properties['domain_name'] end ## # @return [String] The HTTP method we use to call the `disaster_recovery_url`. Can be: `GET` or `POST`. def disaster_recovery_method @properties['disaster_recovery_method'] end ## # @return [String] The URL we call using the `disaster_recovery_method` if an error occurs while sending SIP traffic towards the configured Origination URL. We retrieve TwiML from this URL and execute the instructions like any other normal TwiML call. See [Disaster Recovery](https://www.twilio.com/docs/sip-trunking#disaster-recovery) for more information. def disaster_recovery_url @properties['disaster_recovery_url'] end ## # @return [String] The string that you assigned to describe the resource. def friendly_name @properties['friendly_name'] end ## # @return [Boolean] Whether Secure Trunking is enabled for the trunk. If enabled, all calls going through the trunk will be secure using SRTP for media and TLS for signaling. If disabled, then RTP will be used for media. See [Secure Trunking](https://www.twilio.com/docs/sip-trunking#securetrunking) for more information. def secure @properties['secure'] end ## # @return [Hash] The recording settings for the trunk. Can be: `do-not-record`, `record-from-ringing`, `record-from-answer`. If set to `record-from-ringing` or `record-from-answer`, all calls going through the trunk will be recorded. The only way to change recording parameters is on a sub-resource of a Trunk after it has been created. e.g.`/Trunks/[Trunk_SID]/Recording -XPOST -d'Mode=record-from-answer'`. See [Recording](https://www.twilio.com/docs/sip-trunking#recording) for more information. def recording @properties['recording'] end ## # @return [TransferSetting] def transfer_mode @properties['transfer_mode'] end ## # @return [TransferCallerId] def transfer_caller_id @properties['transfer_caller_id'] end ## # @return [Boolean] Whether Caller ID Name (CNAM) lookup is enabled for the trunk. If enabled, all inbound calls to the SIP Trunk from the United States and Canada automatically perform a CNAM Lookup and display Caller ID data on your phone. See [CNAM Lookups](https://www.twilio.com/docs/sip-trunking#CNAM) for more information. def cnam_lookup_enabled @properties['cnam_lookup_enabled'] end ## # @return [String] The types of authentication mapped to the domain. Can be: `IP_ACL` and `CREDENTIAL_LIST`. If both are mapped, the values are returned in a comma delimited list. If empty, the domain will not receive any traffic. def auth_type @properties['auth_type'] end ## # @return [Array] Reserved. def auth_type_set @properties['auth_type_set'] end ## # @return [Time] The date and time in GMT when the resource was created specified in [RFC 2822](https://www.ietf.org/rfc/rfc2822.txt) format. def date_created @properties['date_created'] end ## # @return [Time] The date and time in GMT when the resource was last updated specified in [RFC 2822](https://www.ietf.org/rfc/rfc2822.txt) format. def date_updated @properties['date_updated'] end ## # @return [String] The unique string that we created to identify the Trunk resource. def sid @properties['sid'] end ## # @return [String] The absolute URL of the resource. def url @properties['url'] end ## # @return [Hash] The URLs of related resources. def links @properties['links'] end ## # Delete the TrunkInstance # @return [Boolean] True if delete succeeds, false otherwise def delete context.delete end ## # Fetch the TrunkInstance # @return [TrunkInstance] Fetched TrunkInstance def fetch context.fetch end ## # Update the TrunkInstance # @param [String] friendly_name A descriptive string that you create to describe the resource. It can be up to 64 characters long. # @param [String] domain_name The unique address you reserve on Twilio to which you route your SIP traffic. Domain names can contain letters, digits, and `-` and must end with `pstn.twilio.com`. See [Termination Settings](https://www.twilio.com/docs/sip-trunking#termination) for more information. # @param [String] disaster_recovery_url The URL we should call using the `disaster_recovery_method` if an error occurs while sending SIP traffic towards the configured Origination URL. We retrieve TwiML from the URL and execute the instructions like any other normal TwiML call. See [Disaster Recovery](https://www.twilio.com/docs/sip-trunking#disaster-recovery) for more information. # @param [String] disaster_recovery_method The HTTP method we should use to call the `disaster_recovery_url`. Can be: `GET` or `POST`. # @param [TransferSetting] transfer_mode # @param [Boolean] secure Whether Secure Trunking is enabled for the trunk. If enabled, all calls going through the trunk will be secure using SRTP for media and TLS for signaling. If disabled, then RTP will be used for media. See [Secure Trunking](https://www.twilio.com/docs/sip-trunking#securetrunking) for more information. # @param [Boolean] cnam_lookup_enabled Whether Caller ID Name (CNAM) lookup should be enabled for the trunk. If enabled, all inbound calls to the SIP Trunk from the United States and Canada automatically perform a CNAM Lookup and display Caller ID data on your phone. See [CNAM Lookups](https://www.twilio.com/docs/sip-trunking#CNAM) for more information. # @param [TransferCallerId] transfer_caller_id # @return [TrunkInstance] Updated TrunkInstance def update( friendly_name: :unset, domain_name: :unset, disaster_recovery_url: :unset, disaster_recovery_method: :unset, transfer_mode: :unset, secure: :unset, cnam_lookup_enabled: :unset, transfer_caller_id: :unset ) context.update( friendly_name: friendly_name, domain_name: domain_name, disaster_recovery_url: disaster_recovery_url, disaster_recovery_method: disaster_recovery_method, transfer_mode: transfer_mode, secure: secure, cnam_lookup_enabled: cnam_lookup_enabled, transfer_caller_id: transfer_caller_id, ) end ## # Access the recordings # @return [recordings] recordings def recordings context.recordings end ## # Access the credentials_lists # @return [credentials_lists] credentials_lists def credentials_lists context.credentials_lists end ## # Access the ip_access_control_lists # @return [ip_access_control_lists] ip_access_control_lists def ip_access_control_lists context.ip_access_control_lists end ## # Access the phone_numbers # @return [phone_numbers] phone_numbers def phone_numbers context.phone_numbers end ## # Access the origination_urls # @return [origination_urls] origination_urls def origination_urls context.origination_urls end ## # Provide a user friendly representation def to_s values = @params.map{|k, v| "#{k}: #{v}"}.join(" ") "" end ## # Provide a detailed, user friendly representation def inspect values = @properties.map{|k, v| "#{k}: #{v}"}.join(" ") "" end end end end end end