# bandwidth
#
# This file was automatically generated by APIMATIC v2.0
# ( https://apimatic.io ).

module Bandwidth
  # MessageRequest Model.
  class MessageRequest < BaseModel
    # The ID of the Application your from number is associated with in the
    # Bandwidth Phone Number Dashboard.
    # @return [String]
    attr_accessor :application_id

    # The phone number(s) the message should be sent to in E164 format
    # @return [List of String]
    attr_accessor :to

    # One of your telephone numbers the message should come from in E164 format
    # @return [String]
    attr_accessor :from

    # The contents of the text message. Must be 2048 characters or less.
    # @return [String]
    attr_accessor :text

    # A list of URLs to include as media attachments as part of the message.
    # @return [List of String]
    attr_accessor :media

    # A custom string that will be included in callback events of the message.
    # Max 1024 characters
    # @return [String]
    attr_accessor :tag

    # The message's priority, currently for toll-free or short code SMS only.
    # Messages with a priority value of `"high"` are given preference over your
    # other traffic.
    # @return [PriorityEnum]
    attr_accessor :priority

    # A mapping from model property names to API property names.
    def self.names
      @_hash = {} if @_hash.nil?
      @_hash['application_id'] = 'applicationId'
      @_hash['to'] = 'to'
      @_hash['from'] = 'from'
      @_hash['text'] = 'text'
      @_hash['media'] = 'media'
      @_hash['tag'] = 'tag'
      @_hash['priority'] = 'priority'
      @_hash
    end

    def initialize(application_id = nil,
                   to = nil,
                   from = nil,
                   text = nil,
                   media = nil,
                   tag = nil,
                   priority = nil)
      @application_id = application_id
      @to = to
      @from = from
      @text = text
      @media = media
      @tag = tag
      @priority = priority
    end

    # Creates an instance of the object from a hash.
    def self.from_hash(hash)
      return nil unless hash

      # Extract variables from the hash.
      application_id = hash['applicationId']
      to = hash['to']
      from = hash['from']
      text = hash['text']
      media = hash['media']
      tag = hash['tag']
      priority = hash['priority']

      # Create object from extracted values.
      MessageRequest.new(application_id,
                         to,
                         from,
                         text,
                         media,
                         tag,
                         priority)
    end
  end
end
