diff --git a/CHANGES.md b/CHANGES.md index b5c945ab1..c639bc5d0 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -1,6 +1,26 @@ twilio-ruby changelog ===================== +[2022-10-31] Version 5.73.1 +--------------------------- +**Api** +- Added `contentSid` and `contentVariables` to Message resource with public visibility as Beta +- Add `UserDefinedMessageSubscription` and `UserDefinedMessage` resource + +**Proxy** +- Remove FailOnParticipantConflict param from Proxy Session create and update and Proxy Participant create + +**Supersim** +- Update SettingsUpdates resource to remove PackageSid + +**Taskrouter** +- Add `Ordering` query parameter to Workers and TaskQueues for sorting by +- Add `worker_sid` query param for list reservations endpoint + +**Twiml** +- Add `url` and `method` attributes to `` + + [2022-10-19] Version 5.73.0 --------------------------- **Library - Feature** diff --git a/lib/twilio-ruby/rest/api/v2010/account/call.rb b/lib/twilio-ruby/rest/api/v2010/account/call.rb index 0a997fc05..07c074b4a 100644 --- a/lib/twilio-ruby/rest/api/v2010/account/call.rb +++ b/lib/twilio-ruby/rest/api/v2010/account/call.rb @@ -444,6 +444,8 @@ def initialize(version, account_sid, sid) @payments = nil @siprec = nil @streams = nil + @user_defined_message_subscriptions = nil + @user_defined_messages = nil end ## @@ -636,6 +638,49 @@ def streams(sid=:unset) @streams end + ## + # Access the user_defined_message_subscriptions + # @return [UserDefinedMessageSubscriptionList] + # @return [UserDefinedMessageSubscriptionContext] if sid was passed. + def user_defined_message_subscriptions(sid=:unset) + raise ArgumentError, 'sid cannot be nil' if sid.nil? + + if sid != :unset + return UserDefinedMessageSubscriptionContext.new( + @version, + @solution[:account_sid], + @solution[:sid], + sid, + ) + end + + unless @user_defined_message_subscriptions + @user_defined_message_subscriptions = UserDefinedMessageSubscriptionList.new( + @version, + account_sid: @solution[:account_sid], + call_sid: @solution[:sid], + ) + end + + @user_defined_message_subscriptions + end + + ## + # Access the user_defined_messages + # @return [UserDefinedMessageList] + # @return [UserDefinedMessageContext] + def user_defined_messages + unless @user_defined_messages + @user_defined_messages = UserDefinedMessageList.new( + @version, + account_sid: @solution[:account_sid], + call_sid: @solution[:sid], + ) + end + + @user_defined_messages + end + ## # Provide a user friendly representation def to_s @@ -977,6 +1022,20 @@ def streams context.streams end + ## + # Access the user_defined_message_subscriptions + # @return [user_defined_message_subscriptions] user_defined_message_subscriptions + def user_defined_message_subscriptions + context.user_defined_message_subscriptions + end + + ## + # Access the user_defined_messages + # @return [user_defined_messages] user_defined_messages + def user_defined_messages + context.user_defined_messages + end + ## # Provide a user friendly representation def to_s diff --git a/lib/twilio-ruby/rest/api/v2010/account/call/user_defined_message.rb b/lib/twilio-ruby/rest/api/v2010/account/call/user_defined_message.rb new file mode 100644 index 000000000..fc929add6 --- /dev/null +++ b/lib/twilio-ruby/rest/api/v2010/account/call/user_defined_message.rb @@ -0,0 +1,160 @@ +## +# This code was generated by +# \ / _ _ _| _ _ +# | (_)\/(_)(_|\/| |(/_ v1.0.0 +# / / +# +# frozen_string_literal: true + +module Twilio + module REST + class Api < Domain + class V2010 < Version + class AccountContext < InstanceContext + class CallContext < InstanceContext + class UserDefinedMessageList < ListResource + ## + # Initialize the UserDefinedMessageList + # @param [Version] version Version that contains the resource + # @param [String] account_sid The SID of the + # {Account}[https://www.twilio.com/docs/iam/api/account] that created User Defined + # Message. + # @param [String] call_sid The SID of the + # {Call}[https://www.twilio.com/docs/voice/api/call-resource] the User Defined + # Message is associated with. + # @return [UserDefinedMessageList] UserDefinedMessageList + def initialize(version, account_sid: nil, call_sid: nil) + super(version) + + # Path Solution + @solution = {account_sid: account_sid, call_sid: call_sid} + @uri = "/Accounts/#{@solution[:account_sid]}/Calls/#{@solution[:call_sid]}/UserDefinedMessages.json" + end + + ## + # Create the UserDefinedMessageInstance + # @param [String] content A unique string value to identify API call. This should + # be a unique string value per API call and can be a randomly generated. + # @param [String] idempotency_key A unique string value to identify API call. This + # should be a unique string value per API call and can be a randomly generated. + # @return [UserDefinedMessageInstance] Created UserDefinedMessageInstance + def create(content: nil, idempotency_key: :unset) + data = Twilio::Values.of({'Content' => content, 'IdempotencyKey' => idempotency_key, }) + + payload = @version.create('POST', @uri, data: data) + + UserDefinedMessageInstance.new( + @version, + payload, + account_sid: @solution[:account_sid], + call_sid: @solution[:call_sid], + ) + end + + ## + # Provide a user friendly representation + def to_s + '#' + end + end + + class UserDefinedMessagePage < Page + ## + # Initialize the UserDefinedMessagePage + # @param [Version] version Version that contains the resource + # @param [Response] response Response from the API + # @param [Hash] solution Path solution for the resource + # @return [UserDefinedMessagePage] UserDefinedMessagePage + def initialize(version, response, solution) + super(version, response) + + # Path Solution + @solution = solution + end + + ## + # Build an instance of UserDefinedMessageInstance + # @param [Hash] payload Payload response from the API + # @return [UserDefinedMessageInstance] UserDefinedMessageInstance + def get_instance(payload) + UserDefinedMessageInstance.new( + @version, + payload, + account_sid: @solution[:account_sid], + call_sid: @solution[:call_sid], + ) + end + + ## + # Provide a user friendly representation + def to_s + '' + end + end + + class UserDefinedMessageInstance < InstanceResource + ## + # Initialize the UserDefinedMessageInstance + # @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 User Defined + # Message. + # @param [String] call_sid The SID of the + # {Call}[https://www.twilio.com/docs/voice/api/call-resource] the User Defined + # Message is associated with. + # @return [UserDefinedMessageInstance] UserDefinedMessageInstance + def initialize(version, payload, account_sid: nil, call_sid: nil) + super(version) + + # Marshaled Properties + @properties = { + 'account_sid' => payload['account_sid'], + 'call_sid' => payload['call_sid'], + 'sid' => payload['sid'], + 'date_created' => Twilio.deserialize_rfc2822(payload['date_created']), + } + end + + ## + # @return [String] Account Sid. + def account_sid + @properties['account_sid'] + end + + ## + # @return [String] Call Sid. + def call_sid + @properties['call_sid'] + end + + ## + # @return [String] A string that uniquely identifies this User Defined Message. + def sid + @properties['sid'] + end + + ## + # @return [Time] The date this User Defined Message was created + def date_created + @properties['date_created'] + end + + ## + # Provide a user friendly representation + def to_s + "" + end + + ## + # Provide a detailed, user friendly representation + def inspect + "" + end + end + end + end + end + end + end +end \ No newline at end of file diff --git a/lib/twilio-ruby/rest/api/v2010/account/call/user_defined_message_subscription.rb b/lib/twilio-ruby/rest/api/v2010/account/call/user_defined_message_subscription.rb new file mode 100644 index 000000000..ae855db29 --- /dev/null +++ b/lib/twilio-ruby/rest/api/v2010/account/call/user_defined_message_subscription.rb @@ -0,0 +1,251 @@ +## +# This code was generated by +# \ / _ _ _| _ _ +# | (_)\/(_)(_|\/| |(/_ v1.0.0 +# / / +# +# frozen_string_literal: true + +module Twilio + module REST + class Api < Domain + class V2010 < Version + class AccountContext < InstanceContext + class CallContext < InstanceContext + class UserDefinedMessageSubscriptionList < ListResource + ## + # Initialize the UserDefinedMessageSubscriptionList + # @param [Version] version Version that contains the resource + # @param [String] account_sid The SID of the + # {Account}[https://www.twilio.com/docs/iam/api/account] that subscribed to the + # User Defined Messages. + # @param [String] call_sid The SID of the + # {Call}[https://www.twilio.com/docs/voice/api/call-resource] the User Defined + # Messages subscription is associated with. This refers to the call sid that is + # producing the user defined messages. + # @return [UserDefinedMessageSubscriptionList] UserDefinedMessageSubscriptionList + def initialize(version, account_sid: nil, call_sid: nil) + super(version) + + # Path Solution + @solution = {account_sid: account_sid, call_sid: call_sid} + @uri = "/Accounts/#{@solution[:account_sid]}/Calls/#{@solution[:call_sid]}/UserDefinedMessageSubscriptions.json" + end + + ## + # Create the UserDefinedMessageSubscriptionInstance + # @param [String] callback The URL we should call using the `method` to send user + # defined events to your application. URLs must contain a valid hostname + # (underscores are not permitted). + # @param [String] method The HTTP method Twilio will use when requesting the above + # `Url`. Either `GET` or `POST`. + # @param [String] idempotency_key A unique string value to identify API call. This + # should be a unique string value per API call and can be a randomly generated. + # @return [UserDefinedMessageSubscriptionInstance] Created UserDefinedMessageSubscriptionInstance + def create(callback: nil, method: nil, idempotency_key: :unset) + data = Twilio::Values.of({ + 'Callback' => callback, + 'Method' => method, + 'IdempotencyKey' => idempotency_key, + }) + + payload = @version.create('POST', @uri, data: data) + + UserDefinedMessageSubscriptionInstance.new( + @version, + payload, + account_sid: @solution[:account_sid], + call_sid: @solution[:call_sid], + ) + end + + ## + # Provide a user friendly representation + def to_s + '#' + end + end + + class UserDefinedMessageSubscriptionPage < Page + ## + # Initialize the UserDefinedMessageSubscriptionPage + # @param [Version] version Version that contains the resource + # @param [Response] response Response from the API + # @param [Hash] solution Path solution for the resource + # @return [UserDefinedMessageSubscriptionPage] UserDefinedMessageSubscriptionPage + def initialize(version, response, solution) + super(version, response) + + # Path Solution + @solution = solution + end + + ## + # Build an instance of UserDefinedMessageSubscriptionInstance + # @param [Hash] payload Payload response from the API + # @return [UserDefinedMessageSubscriptionInstance] UserDefinedMessageSubscriptionInstance + def get_instance(payload) + UserDefinedMessageSubscriptionInstance.new( + @version, + payload, + account_sid: @solution[:account_sid], + call_sid: @solution[:call_sid], + ) + end + + ## + # Provide a user friendly representation + def to_s + '' + end + end + + class UserDefinedMessageSubscriptionContext < InstanceContext + ## + # Initialize the UserDefinedMessageSubscriptionContext + # @param [Version] version Version that contains the resource + # @param [String] account_sid The SID of the + # {Account}[https://www.twilio.com/docs/iam/api/account] that subscribed to the + # User Defined Messages. + # @param [String] call_sid The SID of the + # {Call}[https://www.twilio.com/docs/voice/api/call-resource] the User Defined + # Messages subscription is associated with. This refers to the call sid that is + # producing the user defined messages. + # @param [String] sid The SID that uniquely identifies this User Defined Message + # Subscription. + # @return [UserDefinedMessageSubscriptionContext] UserDefinedMessageSubscriptionContext + def initialize(version, account_sid, call_sid, sid) + super(version) + + # Path Solution + @solution = {account_sid: account_sid, call_sid: call_sid, sid: sid, } + @uri = "/Accounts/#{@solution[:account_sid]}/Calls/#{@solution[:call_sid]}/UserDefinedMessageSubscriptions/#{@solution[:sid]}.json" + end + + ## + # Delete the UserDefinedMessageSubscriptionInstance + # @return [Boolean] true if delete succeeds, false otherwise + def delete + @version.delete('DELETE', @uri) + 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 UserDefinedMessageSubscriptionInstance < InstanceResource + ## + # Initialize the UserDefinedMessageSubscriptionInstance + # @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 subscribed to the + # User Defined Messages. + # @param [String] call_sid The SID of the + # {Call}[https://www.twilio.com/docs/voice/api/call-resource] the User Defined + # Messages subscription is associated with. This refers to the call sid that is + # producing the user defined messages. + # @param [String] sid The SID that uniquely identifies this User Defined Message + # Subscription. + # @return [UserDefinedMessageSubscriptionInstance] UserDefinedMessageSubscriptionInstance + def initialize(version, payload, account_sid: nil, call_sid: nil, sid: nil) + super(version) + + # Marshaled Properties + @properties = { + 'account_sid' => payload['account_sid'], + 'call_sid' => payload['call_sid'], + 'sid' => payload['sid'], + 'date_created' => Twilio.deserialize_rfc2822(payload['date_created']), + 'uri' => payload['uri'], + } + + # Context + @instance_context = nil + @params = {'account_sid' => account_sid, 'call_sid' => call_sid, '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 [UserDefinedMessageSubscriptionContext] UserDefinedMessageSubscriptionContext for this UserDefinedMessageSubscriptionInstance + def context + unless @instance_context + @instance_context = UserDefinedMessageSubscriptionContext.new( + @version, + @params['account_sid'], + @params['call_sid'], + @params['sid'], + ) + end + @instance_context + end + + ## + # @return [String] Account Sid. + def account_sid + @properties['account_sid'] + end + + ## + # @return [String] Call Sid. + def call_sid + @properties['call_sid'] + end + + ## + # @return [String] User Defined Message Subscription Sid + def sid + @properties['sid'] + end + + ## + # @return [Time] The date this User Defined Message Subscription was created + def date_created + @properties['date_created'] + end + + ## + # @return [String] The URI of the resource, relative to `https://api.twilio.com`. + def uri + @properties['uri'] + end + + ## + # Delete the UserDefinedMessageSubscriptionInstance + # @return [Boolean] true if delete succeeds, false otherwise + def delete + context.delete + 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 + end +end \ No newline at end of file diff --git a/lib/twilio-ruby/rest/api/v2010/account/message.rb b/lib/twilio-ruby/rest/api/v2010/account/message.rb index 4af79fd14..f7cea3758 100644 --- a/lib/twilio-ruby/rest/api/v2010/account/message.rb +++ b/lib/twilio-ruby/rest/api/v2010/account/message.rb @@ -90,6 +90,13 @@ def initialize(version, account_sid: nil) # 8601 format. # @param [Boolean] send_as_mms If set to True, Twilio will deliver the message as # a single MMS message, regardless of the presence of media. + # @param [String] content_sid The SID of the Content object returned at Content + # API content create time + # (https://www.twilio.com/docs/content-api/create-and-send-your-first-content-api-template#create-a-template). + # If this parameter is not specified, then the Content API will not be utilized. + # @param [String] content_variables Key-value pairs of variable names to + # substitution values, used alongside a content_sid. If not specified, Content API + # will default to the default variables defined at create time. # @param [String] from A Twilio phone number in # {E.164}[https://www.twilio.com/docs/glossary/what-e164] format, an {alphanumeric # sender @@ -120,7 +127,7 @@ def initialize(version, account_sid: nil) # parameters in the POST request. You can include up to 10 `media_url` parameters # per message. You can send images in an SMS message in only the US and Canada. # @return [MessageInstance] Created MessageInstance - def create(to: nil, status_callback: :unset, application_sid: :unset, max_price: :unset, provide_feedback: :unset, attempt: :unset, validity_period: :unset, force_delivery: :unset, content_retention: :unset, address_retention: :unset, smart_encoded: :unset, persistent_action: :unset, shorten_urls: :unset, schedule_type: :unset, send_at: :unset, send_as_mms: :unset, from: :unset, messaging_service_sid: :unset, body: :unset, media_url: :unset) + def create(to: nil, status_callback: :unset, application_sid: :unset, max_price: :unset, provide_feedback: :unset, attempt: :unset, validity_period: :unset, force_delivery: :unset, content_retention: :unset, address_retention: :unset, smart_encoded: :unset, persistent_action: :unset, shorten_urls: :unset, schedule_type: :unset, send_at: :unset, send_as_mms: :unset, content_sid: :unset, content_variables: :unset, from: :unset, messaging_service_sid: :unset, body: :unset, media_url: :unset) data = Twilio::Values.of({ 'To' => to, 'From' => from, @@ -142,6 +149,8 @@ def create(to: nil, status_callback: :unset, application_sid: :unset, max_price: 'ScheduleType' => schedule_type, 'SendAt' => Twilio.serialize_iso8601_datetime(send_at), 'SendAsMms' => send_as_mms, + 'ContentSid' => content_sid, + 'ContentVariables' => content_variables, }) payload = @version.create('POST', @uri, data: data) diff --git a/lib/twilio-ruby/rest/proxy/v1/service/session.rb b/lib/twilio-ruby/rest/proxy/v1/service/session.rb index 2a7cf6744..69be148d3 100644 --- a/lib/twilio-ruby/rest/proxy/v1/service/session.rb +++ b/lib/twilio-ruby/rest/proxy/v1/service/session.rb @@ -127,20 +127,8 @@ def get_page(target_url) # on create. # @param [Array[Hash]] participants The Participant objects to include in the new # session. - # @param [Boolean] fail_on_participant_conflict [Experimental] For accounts with - # the ProxyAllowParticipantConflict account flag, setting to true enables - # per-request opt-in to allowing Proxy to reject a Session create (with - # Participants) request that could cause the same Identifier/ProxyIdentifier pair - # to be active in multiple Sessions. Depending on the context, this could be a 409 - # error (Twilio error code 80623) or a 400 error (Twilio error code 80604). If not - # provided, requests will be allowed to succeed and a Debugger notification - # (80802) will be emitted. Having multiple, active Participants with the same - # Identifier/ProxyIdentifier pair causes calls and messages from affected - # Participants to be routed incorrectly. Please note, the default behavior for - # accounts without the ProxyAllowParticipantConflict flag is to reject the request - # as described. This will eventually be the default for all accounts. # @return [SessionInstance] Created SessionInstance - def create(unique_name: :unset, date_expiry: :unset, ttl: :unset, mode: :unset, status: :unset, participants: :unset, fail_on_participant_conflict: :unset) + def create(unique_name: :unset, date_expiry: :unset, ttl: :unset, mode: :unset, status: :unset, participants: :unset) data = Twilio::Values.of({ 'UniqueName' => unique_name, 'DateExpiry' => Twilio.serialize_iso8601_datetime(date_expiry), @@ -148,7 +136,6 @@ def create(unique_name: :unset, date_expiry: :unset, ttl: :unset, mode: :unset, 'Mode' => mode, 'Status' => status, 'Participants' => Twilio.serialize_list(participants) { |e| Twilio.serialize_object(e) }, - 'FailOnParticipantConflict' => fail_on_participant_conflict, }) payload = @version.create('POST', @uri, data: data) @@ -243,24 +230,12 @@ def delete # is measured from the last Session create or the Session's last Interaction. # @param [session.Status] status The new status of the resource. Can be: # `in-progress` to re-open a session or `closed` to close a session. - # @param [Boolean] fail_on_participant_conflict [Experimental] For accounts with - # the ProxyAllowParticipantConflict account flag, setting to true enables - # per-request opt-in to allowing Proxy to return a 400 error (Twilio error code - # 80604) when a request to set a Session to in-progress would cause Participants - # with the same Identifier/ProxyIdentifier pair to be active in multiple Sessions. - # If not provided, requests will be allowed to succeed, and a Debugger - # notification (80801) will be emitted. Having multiple, active Participants with - # the same Identifier/ProxyIdentifier pair causes calls and messages from affected - # Participants to be routed incorrectly. Please note, the default behavior for - # accounts without the ProxyAllowParticipantConflict flag is to reject the request - # as described. This will eventually be the default for all accounts. # @return [SessionInstance] Updated SessionInstance - def update(date_expiry: :unset, ttl: :unset, status: :unset, fail_on_participant_conflict: :unset) + def update(date_expiry: :unset, ttl: :unset, status: :unset) data = Twilio::Values.of({ 'DateExpiry' => Twilio.serialize_iso8601_datetime(date_expiry), 'Ttl' => ttl, 'Status' => status, - 'FailOnParticipantConflict' => fail_on_participant_conflict, }) payload = @version.update('POST', @uri, data: data) @@ -498,25 +473,9 @@ def delete # is measured from the last Session create or the Session's last Interaction. # @param [session.Status] status The new status of the resource. Can be: # `in-progress` to re-open a session or `closed` to close a session. - # @param [Boolean] fail_on_participant_conflict [Experimental] For accounts with - # the ProxyAllowParticipantConflict account flag, setting to true enables - # per-request opt-in to allowing Proxy to return a 400 error (Twilio error code - # 80604) when a request to set a Session to in-progress would cause Participants - # with the same Identifier/ProxyIdentifier pair to be active in multiple Sessions. - # If not provided, requests will be allowed to succeed, and a Debugger - # notification (80801) will be emitted. Having multiple, active Participants with - # the same Identifier/ProxyIdentifier pair causes calls and messages from affected - # Participants to be routed incorrectly. Please note, the default behavior for - # accounts without the ProxyAllowParticipantConflict flag is to reject the request - # as described. This will eventually be the default for all accounts. # @return [SessionInstance] Updated SessionInstance - def update(date_expiry: :unset, ttl: :unset, status: :unset, fail_on_participant_conflict: :unset) - context.update( - date_expiry: date_expiry, - ttl: ttl, - status: status, - fail_on_participant_conflict: fail_on_participant_conflict, - ) + def update(date_expiry: :unset, ttl: :unset, status: :unset) + context.update(date_expiry: date_expiry, ttl: ttl, status: status, ) end ## diff --git a/lib/twilio-ruby/rest/proxy/v1/service/session/participant.rb b/lib/twilio-ruby/rest/proxy/v1/service/session/participant.rb index 110d64ea6..a2bd099a6 100644 --- a/lib/twilio-ruby/rest/proxy/v1/service/session/participant.rb +++ b/lib/twilio-ruby/rest/proxy/v1/service/session/participant.rb @@ -121,26 +121,13 @@ def get_page(target_url) # Participant. If not specified, Proxy will select a number from the pool. # @param [String] proxy_identifier_sid The SID of the Proxy Identifier to assign # to the Participant. - # @param [Boolean] fail_on_participant_conflict [Experimental] For accounts with - # the ProxyAllowParticipantConflict account flag, setting to true enables - # per-request opt-in to allowing Proxy to reject a Participant create request that - # could cause the same Identifier/ProxyIdentifier pair to be active in multiple - # Sessions. Depending on the context, this could be a 409 error (Twilio error code - # 80623) or a 400 error (Twilio error code 80604). If not provided, requests will - # be allowed to succeed and a Debugger notification (80802) will be emitted. - # Having multiple, active Participants with the same Identifier/ProxyIdentifier - # pair causes calls and messages from affected Participants to be routed - # incorrectly. Please note, the default behavior for accounts without the - # ProxyAllowParticipantConflict flag is to reject the request as described. This - # will eventually be the default for all accounts. # @return [ParticipantInstance] Created ParticipantInstance - def create(identifier: nil, friendly_name: :unset, proxy_identifier: :unset, proxy_identifier_sid: :unset, fail_on_participant_conflict: :unset) + def create(identifier: nil, friendly_name: :unset, proxy_identifier: :unset, proxy_identifier_sid: :unset) data = Twilio::Values.of({ 'Identifier' => identifier, 'FriendlyName' => friendly_name, 'ProxyIdentifier' => proxy_identifier, 'ProxyIdentifierSid' => proxy_identifier_sid, - 'FailOnParticipantConflict' => fail_on_participant_conflict, }) payload = @version.create('POST', @uri, data: data) diff --git a/lib/twilio-ruby/rest/taskrouter/v1/workspace/task/reservation.rb b/lib/twilio-ruby/rest/taskrouter/v1/workspace/task/reservation.rb index 9e2a56a10..8470f7be1 100644 --- a/lib/twilio-ruby/rest/taskrouter/v1/workspace/task/reservation.rb +++ b/lib/twilio-ruby/rest/taskrouter/v1/workspace/task/reservation.rb @@ -35,6 +35,7 @@ def initialize(version, workspace_sid: nil, task_sid: nil) # @param [reservation.Status] reservation_status Returns the list of reservations # for a task with a specified ReservationStatus. Can be: `pending`, `accepted`, # `rejected`, or `timeout`. + # @param [String] worker_sid The SID of the reserved Worker resource to read. # @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 @@ -42,8 +43,13 @@ def initialize(version, workspace_sid: nil, task_sid: nil) # 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(reservation_status: :unset, limit: nil, page_size: nil) - self.stream(reservation_status: reservation_status, limit: limit, page_size: page_size).entries + def list(reservation_status: :unset, worker_sid: :unset, limit: nil, page_size: nil) + self.stream( + reservation_status: reservation_status, + worker_sid: worker_sid, + limit: limit, + page_size: page_size + ).entries end ## @@ -53,6 +59,7 @@ def list(reservation_status: :unset, limit: nil, page_size: nil) # @param [reservation.Status] reservation_status Returns the list of reservations # for a task with a specified ReservationStatus. Can be: `pending`, `accepted`, # `rejected`, or `timeout`. + # @param [String] worker_sid The SID of the reserved Worker resource to read. # @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 @@ -60,10 +67,14 @@ def list(reservation_status: :unset, limit: nil, page_size: nil) # 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(reservation_status: :unset, limit: nil, page_size: nil) + def stream(reservation_status: :unset, worker_sid: :unset, limit: nil, page_size: nil) limits = @version.read_limits(limit, page_size) - page = self.page(reservation_status: reservation_status, page_size: limits[:page_size], ) + page = self.page( + reservation_status: reservation_status, + worker_sid: worker_sid, + page_size: limits[:page_size], + ) @version.stream(page, limit: limits[:limit], page_limit: limits[:page_limit]) end @@ -88,13 +99,15 @@ def each # @param [reservation.Status] reservation_status Returns the list of reservations # for a task with a specified ReservationStatus. Can be: `pending`, `accepted`, # `rejected`, or `timeout`. + # @param [String] worker_sid The SID of the reserved Worker resource to read. # @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 ReservationInstance - def page(reservation_status: :unset, page_token: :unset, page_number: :unset, page_size: :unset) + def page(reservation_status: :unset, worker_sid: :unset, page_token: :unset, page_number: :unset, page_size: :unset) params = Twilio::Values.of({ 'ReservationStatus' => reservation_status, + 'WorkerSid' => worker_sid, 'PageToken' => page_token, 'Page' => page_number, 'PageSize' => page_size, diff --git a/lib/twilio-ruby/rest/taskrouter/v1/workspace/task_queue.rb b/lib/twilio-ruby/rest/taskrouter/v1/workspace/task_queue.rb index 26b7ae28c..f7f35b023 100644 --- a/lib/twilio-ruby/rest/taskrouter/v1/workspace/task_queue.rb +++ b/lib/twilio-ruby/rest/taskrouter/v1/workspace/task_queue.rb @@ -40,6 +40,7 @@ def initialize(version, workspace_sid: nil) # this parameter. # @param [String] worker_sid The SID of the Worker with the TaskQueue resources to # read. + # @param [String] ordering Sorting parameter for TaskQueues # @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 @@ -47,11 +48,12 @@ def initialize(version, workspace_sid: nil) # 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(friendly_name: :unset, evaluate_worker_attributes: :unset, worker_sid: :unset, limit: nil, page_size: nil) + def list(friendly_name: :unset, evaluate_worker_attributes: :unset, worker_sid: :unset, ordering: :unset, limit: nil, page_size: nil) self.stream( friendly_name: friendly_name, evaluate_worker_attributes: evaluate_worker_attributes, worker_sid: worker_sid, + ordering: ordering, limit: limit, page_size: page_size ).entries @@ -68,6 +70,7 @@ def list(friendly_name: :unset, evaluate_worker_attributes: :unset, worker_sid: # this parameter. # @param [String] worker_sid The SID of the Worker with the TaskQueue resources to # read. + # @param [String] ordering Sorting parameter for TaskQueues # @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 @@ -75,13 +78,14 @@ def list(friendly_name: :unset, evaluate_worker_attributes: :unset, worker_sid: # 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(friendly_name: :unset, evaluate_worker_attributes: :unset, worker_sid: :unset, limit: nil, page_size: nil) + def stream(friendly_name: :unset, evaluate_worker_attributes: :unset, worker_sid: :unset, ordering: :unset, limit: nil, page_size: nil) limits = @version.read_limits(limit, page_size) page = self.page( friendly_name: friendly_name, evaluate_worker_attributes: evaluate_worker_attributes, worker_sid: worker_sid, + ordering: ordering, page_size: limits[:page_size], ) @@ -112,15 +116,17 @@ def each # this parameter. # @param [String] worker_sid The SID of the Worker with the TaskQueue resources to # read. + # @param [String] ordering Sorting parameter for TaskQueues # @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 TaskQueueInstance - def page(friendly_name: :unset, evaluate_worker_attributes: :unset, worker_sid: :unset, page_token: :unset, page_number: :unset, page_size: :unset) + def page(friendly_name: :unset, evaluate_worker_attributes: :unset, worker_sid: :unset, ordering: :unset, page_token: :unset, page_number: :unset, page_size: :unset) params = Twilio::Values.of({ 'FriendlyName' => friendly_name, 'EvaluateWorkerAttributes' => evaluate_worker_attributes, 'WorkerSid' => worker_sid, + 'Ordering' => ordering, 'PageToken' => page_token, 'Page' => page_number, 'PageSize' => page_size, diff --git a/lib/twilio-ruby/rest/taskrouter/v1/workspace/worker.rb b/lib/twilio-ruby/rest/taskrouter/v1/workspace/worker.rb index e91eb4036..5a9cbf210 100644 --- a/lib/twilio-ruby/rest/taskrouter/v1/workspace/worker.rb +++ b/lib/twilio-ruby/rest/taskrouter/v1/workspace/worker.rb @@ -48,6 +48,7 @@ def initialize(version, workspace_sid: nil) # Workers to read are eligible for. # @param [String] task_queue_sid The SID of the TaskQueue that the Workers to read # are eligible for. + # @param [String] ordering Sorting parameter for Workers # @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 @@ -55,7 +56,7 @@ def initialize(version, workspace_sid: nil) # 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(activity_name: :unset, activity_sid: :unset, available: :unset, friendly_name: :unset, target_workers_expression: :unset, task_queue_name: :unset, task_queue_sid: :unset, limit: nil, page_size: nil) + def list(activity_name: :unset, activity_sid: :unset, available: :unset, friendly_name: :unset, target_workers_expression: :unset, task_queue_name: :unset, task_queue_sid: :unset, ordering: :unset, limit: nil, page_size: nil) self.stream( activity_name: activity_name, activity_sid: activity_sid, @@ -64,6 +65,7 @@ def list(activity_name: :unset, activity_sid: :unset, available: :unset, friendl target_workers_expression: target_workers_expression, task_queue_name: task_queue_name, task_queue_sid: task_queue_sid, + ordering: ordering, limit: limit, page_size: page_size ).entries @@ -89,6 +91,7 @@ def list(activity_name: :unset, activity_sid: :unset, available: :unset, friendl # Workers to read are eligible for. # @param [String] task_queue_sid The SID of the TaskQueue that the Workers to read # are eligible for. + # @param [String] ordering Sorting parameter for Workers # @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 @@ -96,7 +99,7 @@ def list(activity_name: :unset, activity_sid: :unset, available: :unset, friendl # 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(activity_name: :unset, activity_sid: :unset, available: :unset, friendly_name: :unset, target_workers_expression: :unset, task_queue_name: :unset, task_queue_sid: :unset, limit: nil, page_size: nil) + def stream(activity_name: :unset, activity_sid: :unset, available: :unset, friendly_name: :unset, target_workers_expression: :unset, task_queue_name: :unset, task_queue_sid: :unset, ordering: :unset, limit: nil, page_size: nil) limits = @version.read_limits(limit, page_size) page = self.page( @@ -107,6 +110,7 @@ def stream(activity_name: :unset, activity_sid: :unset, available: :unset, frien target_workers_expression: target_workers_expression, task_queue_name: task_queue_name, task_queue_sid: task_queue_sid, + ordering: ordering, page_size: limits[:page_size], ) @@ -146,11 +150,12 @@ def each # Workers to read are eligible for. # @param [String] task_queue_sid The SID of the TaskQueue that the Workers to read # are eligible for. + # @param [String] ordering Sorting parameter for Workers # @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 WorkerInstance - def page(activity_name: :unset, activity_sid: :unset, available: :unset, friendly_name: :unset, target_workers_expression: :unset, task_queue_name: :unset, task_queue_sid: :unset, page_token: :unset, page_number: :unset, page_size: :unset) + def page(activity_name: :unset, activity_sid: :unset, available: :unset, friendly_name: :unset, target_workers_expression: :unset, task_queue_name: :unset, task_queue_sid: :unset, ordering: :unset, page_token: :unset, page_number: :unset, page_size: :unset) params = Twilio::Values.of({ 'ActivityName' => activity_name, 'ActivitySid' => activity_sid, @@ -159,6 +164,7 @@ def page(activity_name: :unset, activity_sid: :unset, available: :unset, friendl 'TargetWorkersExpression' => target_workers_expression, 'TaskQueueName' => task_queue_name, 'TaskQueueSid' => task_queue_sid, + 'Ordering' => ordering, 'PageToken' => page_token, 'Page' => page_number, 'PageSize' => page_size, diff --git a/lib/twilio-ruby/rest/verify/v2/service/verification.rb b/lib/twilio-ruby/rest/verify/v2/service/verification.rb index 64feb5253..989cac8d0 100644 --- a/lib/twilio-ruby/rest/verify/v2/service/verification.rb +++ b/lib/twilio-ruby/rest/verify/v2/service/verification.rb @@ -46,7 +46,7 @@ def initialize(version, service_sid: nil) # @param [String] locale Locale will automatically resolve based on phone number # country code for SMS, WhatsApp and call channel verifications. This parameter # will override the automatic locale. {See supported languages and more - # information here.}[https://www.twilio.com/docs/verify/supported-languages]. + # information here}[https://www.twilio.com/docs/verify/supported-languages]. # @param [String] custom_code A pre-generated code to use for verification. The # code can be between 4 and 10 characters, inclusive. # @param [String] amount The amount of the associated PSD2 compliant transaction. @@ -68,7 +68,7 @@ def initialize(version, service_sid: nil) # Example SMS body: `<#> Your AppName verification code is: 1234 He42w354ol9`. # @param [String] template_sid The message # {template}[https://www.twilio.com/docs/verify/api/templates]. If provided, will - # override the default template for the Service. SMS channel only. + # override the default template for the Service. SMS and Voice channels only. # @param [String] template_custom_substitutions A stringified JSON object in which # the keys are the template's special variables and the values are the variables # substitutions. diff --git a/lib/twilio-ruby/rest/verify/v2/template.rb b/lib/twilio-ruby/rest/verify/v2/template.rb index 8c889ee0e..e8b660d92 100644 --- a/lib/twilio-ruby/rest/verify/v2/template.rb +++ b/lib/twilio-ruby/rest/verify/v2/template.rb @@ -184,7 +184,7 @@ def friendly_name end ## - # @return [Array[String]] The channels + # @return [Array[String]] A list of channels that support the Template def channels @properties['channels'] end diff --git a/lib/twilio-ruby/twiml/voice_response.rb b/lib/twilio-ruby/twiml/voice_response.rb index c5cd694e2..bdbd116ee 100644 --- a/lib/twilio-ruby/twiml/voice_response.rb +++ b/lib/twilio-ruby/twiml/voice_response.rb @@ -1775,6 +1775,8 @@ def virtual_agent(connector_name: nil, language: nil, sentiment_analysis: nil, s # inbound_autocreation:: Inbound autocreation # routing_assignment_timeout:: Routing assignment timeout # inbound_timeout:: Inbound timeout + # url:: TwiML URL + # method:: TwiML URL method # record:: Record # trim:: Trim # recording_status_callback:: Recording status callback URL @@ -1784,8 +1786,8 @@ def virtual_agent(connector_name: nil, language: nil, sentiment_analysis: nil, s # status_callback_method:: Status callback URL method # status_callback_event:: Events to call status callback URL # keyword_args:: additional attributes - def conversation(service_instance_sid: nil, inbound_autocreation: nil, routing_assignment_timeout: nil, inbound_timeout: nil, record: nil, trim: nil, recording_status_callback: nil, recording_status_callback_method: nil, recording_status_callback_event: nil, status_callback: nil, status_callback_method: nil, status_callback_event: nil, **keyword_args) - append(Conversation.new(service_instance_sid: service_instance_sid, inbound_autocreation: inbound_autocreation, routing_assignment_timeout: routing_assignment_timeout, inbound_timeout: inbound_timeout, record: record, trim: trim, recording_status_callback: recording_status_callback, recording_status_callback_method: recording_status_callback_method, recording_status_callback_event: recording_status_callback_event, status_callback: status_callback, status_callback_method: status_callback_method, status_callback_event: status_callback_event, **keyword_args)) + def conversation(service_instance_sid: nil, inbound_autocreation: nil, routing_assignment_timeout: nil, inbound_timeout: nil, url: nil, method: nil, record: nil, trim: nil, recording_status_callback: nil, recording_status_callback_method: nil, recording_status_callback_event: nil, status_callback: nil, status_callback_method: nil, status_callback_event: nil, **keyword_args) + append(Conversation.new(service_instance_sid: service_instance_sid, inbound_autocreation: inbound_autocreation, routing_assignment_timeout: routing_assignment_timeout, inbound_timeout: inbound_timeout, url: url, method: method, record: record, trim: trim, recording_status_callback: recording_status_callback, recording_status_callback_method: recording_status_callback_method, recording_status_callback_event: recording_status_callback_event, status_callback: status_callback, status_callback_method: status_callback_method, status_callback_event: status_callback_event, **keyword_args)) end end diff --git a/spec/integration/api/v2010/account/call/user_defined_message_spec.rb b/spec/integration/api/v2010/account/call/user_defined_message_spec.rb new file mode 100644 index 000000000..df182954c --- /dev/null +++ b/spec/integration/api/v2010/account/call/user_defined_message_spec.rb @@ -0,0 +1,49 @@ +## +# This code was generated by +# \ / _ _ _| _ _ +# | (_)\/(_)(_|\/| |(/_ v1.0.0 +# / / +# +# frozen_string_literal: true + +require 'spec_helper.rb' + +describe 'UserDefinedMessage' do + it "can create" do + @holodeck.mock(Twilio::Response.new(500, '')) + + expect { + @client.api.v2010.accounts('ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX') \ + .calls('CAXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX') \ + .user_defined_messages.create(content: 'content') + }.to raise_exception(Twilio::REST::TwilioError) + + values = {'Content' => 'content', } + expect( + @holodeck.has_request?(Holodeck::Request.new( + method: 'post', + url: 'https://api.twilio.com/2010-04-01/Accounts/ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/Calls/CAXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/UserDefinedMessages.json', + data: values, + ))).to eq(true) + end + + it "receives create responses" do + @holodeck.mock(Twilio::Response.new( + 201, + %q[ + { + "account_sid": "ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", + "call_sid": "CAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", + "sid": "KXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", + "date_created": "Wed, 18 Dec 2019 20:02:01 +0000" + } + ] + )) + + actual = @client.api.v2010.accounts('ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX') \ + .calls('CAXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX') \ + .user_defined_messages.create(content: 'content') + + expect(actual).to_not eq(nil) + end +end \ No newline at end of file diff --git a/spec/integration/api/v2010/account/call/user_defined_message_subscription_spec.rb b/spec/integration/api/v2010/account/call/user_defined_message_subscription_spec.rb new file mode 100644 index 000000000..b9052f651 --- /dev/null +++ b/spec/integration/api/v2010/account/call/user_defined_message_subscription_spec.rb @@ -0,0 +1,79 @@ +## +# This code was generated by +# \ / _ _ _| _ _ +# | (_)\/(_)(_|\/| |(/_ v1.0.0 +# / / +# +# frozen_string_literal: true + +require 'spec_helper.rb' + +describe 'UserDefinedMessageSubscription' do + it "can create" do + @holodeck.mock(Twilio::Response.new(500, '')) + + expect { + @client.api.v2010.accounts('ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX') \ + .calls('CAXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX') \ + .user_defined_message_subscriptions.create(callback: 'https://example.com', method: 'GET') + }.to raise_exception(Twilio::REST::TwilioError) + + values = {'Callback' => 'https://example.com', 'Method' => 'GET', } + expect( + @holodeck.has_request?(Holodeck::Request.new( + method: 'post', + url: 'https://api.twilio.com/2010-04-01/Accounts/ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/Calls/CAXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/UserDefinedMessageSubscriptions.json', + data: values, + ))).to eq(true) + end + + it "receives create responses" do + @holodeck.mock(Twilio::Response.new( + 201, + %q[ + { + "account_sid": "ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", + "call_sid": "CAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", + "sid": "ZYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", + "date_created": "Wed, 18 Dec 2019 20:02:01 +0000", + "uri": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Calls/CAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/UserDefinedMessageSubscriptions/ZYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.json" + } + ] + )) + + actual = @client.api.v2010.accounts('ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX') \ + .calls('CAXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX') \ + .user_defined_message_subscriptions.create(callback: 'https://example.com', method: 'GET') + + expect(actual).to_not eq(nil) + end + + it "can delete" do + @holodeck.mock(Twilio::Response.new(500, '')) + + expect { + @client.api.v2010.accounts('ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX') \ + .calls('CAXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX') \ + .user_defined_message_subscriptions('ZYXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX').delete() + }.to raise_exception(Twilio::REST::TwilioError) + + expect( + @holodeck.has_request?(Holodeck::Request.new( + method: 'delete', + url: 'https://api.twilio.com/2010-04-01/Accounts/ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/Calls/CAXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/UserDefinedMessageSubscriptions/ZYXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.json', + ))).to eq(true) + end + + it "receives delete responses" do + @holodeck.mock(Twilio::Response.new( + 204, + nil, + )) + + actual = @client.api.v2010.accounts('ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX') \ + .calls('CAXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX') \ + .user_defined_message_subscriptions('ZYXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX').delete() + + expect(actual).to eq(true) + end +end \ No newline at end of file diff --git a/spec/integration/api/v2010/account/call_spec.rb b/spec/integration/api/v2010/account/call_spec.rb index 349aa4ba0..5b4a39b2f 100644 --- a/spec/integration/api/v2010/account/call_spec.rb +++ b/spec/integration/api/v2010/account/call_spec.rb @@ -60,7 +60,9 @@ "payments": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Calls/CAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Payments.json", "events": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Calls/CAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Events.json", "siprec": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Calls/CAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Siprec.json", - "streams": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Calls/CAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Streams.json" + "streams": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Calls/CAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Streams.json", + "user_defined_message_subscriptions": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Calls/CAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/UserDefinedMessageSubscriptions.json", + "user_defined_messages": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Calls/CAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/UserDefinedMessages.json" }, "to": "+14158675309", "to_formatted": "(415) 867-5309", @@ -111,7 +113,9 @@ "payments": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Calls/CAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Payments.json", "events": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Calls/CAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Events.json", "siprec": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Calls/CAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Siprec.json", - "streams": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Calls/CAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Streams.json" + "streams": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Calls/CAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Streams.json", + "user_defined_message_subscriptions": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Calls/CAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/UserDefinedMessageSubscriptions.json", + "user_defined_messages": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Calls/CAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/UserDefinedMessages.json" }, "to": "+14158675309", "to_formatted": "(415) 867-5309", @@ -204,7 +208,9 @@ "payments": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Calls/CAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Payments.json", "events": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Calls/CAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Events.json", "siprec": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Calls/CAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Siprec.json", - "streams": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Calls/CAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Streams.json" + "streams": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Calls/CAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Streams.json", + "user_defined_message_subscriptions": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Calls/CAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/UserDefinedMessageSubscriptions.json", + "user_defined_messages": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Calls/CAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/UserDefinedMessages.json" }, "to": "+13051913581", "to_formatted": "(305) 191-3581", @@ -272,7 +278,9 @@ "payments": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Calls/CAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Payments.json", "events": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Calls/CAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Events.json", "siprec": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Calls/CAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Siprec.json", - "streams": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Calls/CAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Streams.json" + "streams": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Calls/CAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Streams.json", + "user_defined_message_subscriptions": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Calls/CAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/UserDefinedMessageSubscriptions.json", + "user_defined_messages": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Calls/CAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/UserDefinedMessages.json" }, "to": "+13051913581", "to_formatted": "(305) 191-3581", @@ -310,7 +318,9 @@ "payments": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Calls/CAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa0/Payments.json", "events": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Calls/CAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa0/Events.json", "siprec": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Calls/CAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa0/Siprec.json", - "streams": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Calls/CAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa0/Streams.json" + "streams": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Calls/CAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa0/Streams.json", + "user_defined_message_subscriptions": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Calls/CAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa0/UserDefinedMessageSubscriptions.json", + "user_defined_messages": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Calls/CAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa0/UserDefinedMessages.json" }, "to": "+13051913580", "to_formatted": "(305) 191-3580", @@ -373,7 +383,9 @@ "payments": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Calls/CAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Payments.json", "events": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Calls/CAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Events.json", "siprec": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Calls/CAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Siprec.json", - "streams": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Calls/CAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Streams.json" + "streams": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Calls/CAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Streams.json", + "user_defined_message_subscriptions": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Calls/CAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/UserDefinedMessageSubscriptions.json", + "user_defined_messages": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Calls/CAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/UserDefinedMessages.json" }, "to": "+13051913581", "to_formatted": "(305) 191-3581", @@ -411,7 +423,9 @@ "payments": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Calls/CAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa0/Payments.json", "events": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Calls/CAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa0/Events.json", "siprec": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Calls/CAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa0/Siprec.json", - "streams": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Calls/CAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa0/Streams.json" + "streams": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Calls/CAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa0/Streams.json", + "user_defined_message_subscriptions": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Calls/CAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa0/UserDefinedMessageSubscriptions.json", + "user_defined_messages": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Calls/CAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa0/UserDefinedMessages.json" }, "to": "+13051913580", "to_formatted": "(305) 191-3580", @@ -559,7 +573,9 @@ "payments": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Calls/CAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Payments.json", "events": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Calls/CAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Events.json", "siprec": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Calls/CAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Siprec.json", - "streams": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Calls/CAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Streams.json" + "streams": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Calls/CAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Streams.json", + "user_defined_message_subscriptions": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Calls/CAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/UserDefinedMessageSubscriptions.json", + "user_defined_messages": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Calls/CAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/UserDefinedMessages.json" }, "to": "+14158675309", "to_formatted": "(415) 867-5309", @@ -610,7 +626,9 @@ "payments": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Calls/CAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Payments.json", "events": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Calls/CAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Events.json", "siprec": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Calls/CAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Siprec.json", - "streams": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Calls/CAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Streams.json" + "streams": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Calls/CAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Streams.json", + "user_defined_message_subscriptions": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Calls/CAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/UserDefinedMessageSubscriptions.json", + "user_defined_messages": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Calls/CAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/UserDefinedMessages.json" }, "to": "+14158675309", "to_formatted": "(415) 867-5309", @@ -661,7 +679,9 @@ "payments": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Calls/CAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Payments.json", "events": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Calls/CAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Events.json", "siprec": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Calls/CAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Siprec.json", - "streams": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Calls/CAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Streams.json" + "streams": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Calls/CAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Streams.json", + "user_defined_message_subscriptions": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Calls/CAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/UserDefinedMessageSubscriptions.json", + "user_defined_messages": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Calls/CAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/UserDefinedMessages.json" }, "to": "+14158675309", "to_formatted": "(415) 867-5309", @@ -712,7 +732,9 @@ "payments": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Calls/CAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Payments.json", "events": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Calls/CAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Events.json", "siprec": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Calls/CAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Siprec.json", - "streams": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Calls/CAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Streams.json" + "streams": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Calls/CAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Streams.json", + "user_defined_message_subscriptions": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Calls/CAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/UserDefinedMessageSubscriptions.json", + "user_defined_messages": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Calls/CAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/UserDefinedMessages.json" }, "to": "+14158675309", "to_formatted": "(415) 867-5309", diff --git a/spec/integration/api/v2010/account/message_spec.rb b/spec/integration/api/v2010/account/message_spec.rb index 56fdfbea6..0a2200562 100644 --- a/spec/integration/api/v2010/account/message_spec.rb +++ b/spec/integration/api/v2010/account/message_spec.rb @@ -51,6 +51,10 @@ "subresource_uris": { "media": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Messages/SMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Media.json" }, + "tags": { + "campaign_name": "Spring Sale 2022", + "message_type": "cart_abandoned" + }, "to": "+14155552345", "uri": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Messages/SMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.json" } @@ -88,6 +92,7 @@ "subresource_uris": { "media": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Messages/SMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Media.json" }, + "tags": {}, "to": "+14155552345", "uri": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Messages/SMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.json" } @@ -125,6 +130,7 @@ "subresource_uris": { "media": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Messages/SMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Media.json" }, + "tags": {}, "to": "+14155552345", "uri": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Messages/SMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.json" } @@ -162,6 +168,7 @@ "subresource_uris": { "media": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Messages/SMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Media.json" }, + "tags": {}, "to": "+14155552345", "uri": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Messages/SMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.json" } @@ -199,6 +206,7 @@ "subresource_uris": { "media": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Messages/SMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Media.json" }, + "tags": {}, "to": "+15558675310", "uri": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Messages/SMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.json" } @@ -236,6 +244,7 @@ "subresource_uris": { "media": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Messages/MMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Media.json" }, + "tags": {}, "to": "+15558675310", "uri": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Messages/MMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.json" } @@ -273,6 +282,7 @@ "subresource_uris": { "media": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Messages/SMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Media.json" }, + "tags": {}, "to": "whatsapp:+15558675310", "uri": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Messages/SMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.json" } @@ -353,6 +363,10 @@ "media": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Messages/SMb7c0a2ce80504485a6f653a7110836f5/Media.json", "feedback": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Messages/SMb7c0a2ce80504485a6f653a7110836f5/Feedback.json" }, + "tags": { + "campaign_name": "Spring Sale 2022", + "message_type": "cart_abandoned" + }, "to": "+18182008801", "uri": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Messages/SMb7c0a2ce80504485a6f653a7110836f5.json" } @@ -414,6 +428,10 @@ "media": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Messages/SMded05904ccb347238880ca9264e8fe1c/Media.json", "feedback": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Messages/SMded05904ccb347238880ca9264e8fe1c/Feedback.json" }, + "tags": { + "campaign_name": "Spring Sale 2022", + "message_type": "cart_abandoned" + }, "to": "+18182008801", "uri": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Messages/SMded05904ccb347238880ca9264e8fe1c.json" }, @@ -439,6 +457,10 @@ "media": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Messages/MMc26223853f8c46b4ab7dfaa6abba0a26/Media.json", "feedback": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Messages/MMc26223853f8c46b4ab7dfaa6abba0a26/Feedback.json" }, + "tags": { + "campaign_name": "Spring Sale 2022", + "message_type": "cart_abandoned" + }, "to": "+18182008801", "uri": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Messages/MMc26223853f8c46b4ab7dfaa6abba0a26.json" } @@ -640,6 +662,7 @@ "media": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Messages/SMb7c0a2ce80504485a6f653a7110836f5/Media.json", "feedback": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Messages/SMb7c0a2ce80504485a6f653a7110836f5/Feedback.json" }, + "tags": {}, "to": "+18182008801", "uri": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Messages/SMb7c0a2ce80504485a6f653a7110836f5.json" } @@ -678,6 +701,7 @@ "media": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Messages/SMb7c0a2ce80504485a6f653a7110836f5/Media.json", "feedback": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Messages/SMb7c0a2ce80504485a6f653a7110836f5/Feedback.json" }, + "tags": {}, "to": "+18182008801", "uri": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Messages/SMb7c0a2ce80504485a6f653a7110836f5.json" } diff --git a/spec/integration/supersim/v1/settings_update_spec.rb b/spec/integration/supersim/v1/settings_update_spec.rb index 7ecef61d8..03778a727 100644 --- a/spec/integration/supersim/v1/settings_update_spec.rb +++ b/spec/integration/supersim/v1/settings_update_spec.rb @@ -60,7 +60,6 @@ "status": "scheduled", "packages": [ { - "sid": "OVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", "name": "base-settings", "version": "1.0.0", "more_info": "https://twilio.com/docs/iot/supersim/settings-packages/base-settings" diff --git a/spec/integration/verify/v2/template_spec.rb b/spec/integration/verify/v2/template_spec.rb index 547b06046..90343b518 100644 --- a/spec/integration/verify/v2/template_spec.rb +++ b/spec/integration/verify/v2/template_spec.rb @@ -46,6 +46,25 @@ "date_created": "2021-07-29T20:38:28.165602325Z" } } + }, + { + "sid": "HJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaab", + "account_sid": "ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", + "friendly_name": "Base Verification Template 3", + "channels": [ + "sms", + "voice" + ], + "translations": { + "en": { + "is_default_translation": true, + "status": "approved", + "locale": "en", + "text": "Your verification code is: {{code}}. Do not share it.", + "date_updated": "2021-07-29T20:38:28.759979905Z", + "date_created": "2021-07-29T20:38:28.165602325Z" + } + } } ], "meta": {