whatsapp-ruby-sdk 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (84) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE +28 -0
  3. data/README.md +85 -0
  4. data/lib/whats_app_cloud_api/api_helper.rb +277 -0
  5. data/lib/whats_app_cloud_api/client.rb +68 -0
  6. data/lib/whats_app_cloud_api/configuration.rb +132 -0
  7. data/lib/whats_app_cloud_api/controllers/base_controller.rb +52 -0
  8. data/lib/whats_app_cloud_api/controllers/business_profiles_controller.rb +94 -0
  9. data/lib/whats_app_cloud_api/controllers/media_controller.rb +142 -0
  10. data/lib/whats_app_cloud_api/controllers/messages_controller.rb +51 -0
  11. data/lib/whats_app_cloud_api/controllers/phone_numbers_controller.rb +141 -0
  12. data/lib/whats_app_cloud_api/controllers/registration_controller.rb +91 -0
  13. data/lib/whats_app_cloud_api/controllers/two_step_verification_controller.rb +57 -0
  14. data/lib/whats_app_cloud_api/exceptions/api_exception.rb +20 -0
  15. data/lib/whats_app_cloud_api/http/auth/o_auth2.rb +17 -0
  16. data/lib/whats_app_cloud_api/http/faraday_client.rb +97 -0
  17. data/lib/whats_app_cloud_api/http/http_call_back.rb +24 -0
  18. data/lib/whats_app_cloud_api/http/http_client.rb +123 -0
  19. data/lib/whats_app_cloud_api/http/http_method_enum.rb +13 -0
  20. data/lib/whats_app_cloud_api/http/http_request.rb +54 -0
  21. data/lib/whats_app_cloud_api/http/http_response.rb +29 -0
  22. data/lib/whats_app_cloud_api/models/action.rb +91 -0
  23. data/lib/whats_app_cloud_api/models/address.rb +110 -0
  24. data/lib/whats_app_cloud_api/models/audio.rb +61 -0
  25. data/lib/whats_app_cloud_api/models/base_model.rb +58 -0
  26. data/lib/whats_app_cloud_api/models/body.rb +49 -0
  27. data/lib/whats_app_cloud_api/models/business_profile.rb +123 -0
  28. data/lib/whats_app_cloud_api/models/button.rb +71 -0
  29. data/lib/whats_app_cloud_api/models/button_parameter.rb +72 -0
  30. data/lib/whats_app_cloud_api/models/button_parameter_type_enum.rb +17 -0
  31. data/lib/whats_app_cloud_api/models/component.rb +83 -0
  32. data/lib/whats_app_cloud_api/models/component_type_enum.rb +20 -0
  33. data/lib/whats_app_cloud_api/models/contact.rb +145 -0
  34. data/lib/whats_app_cloud_api/models/content_type_enum.rb +14 -0
  35. data/lib/whats_app_cloud_api/models/currency.rb +67 -0
  36. data/lib/whats_app_cloud_api/models/date_time_object.rb +128 -0
  37. data/lib/whats_app_cloud_api/models/document.rb +81 -0
  38. data/lib/whats_app_cloud_api/models/email_object.rb +60 -0
  39. data/lib/whats_app_cloud_api/models/footer.rb +49 -0
  40. data/lib/whats_app_cloud_api/models/get_business_profile_id_response.rb +57 -0
  41. data/lib/whats_app_cloud_api/models/get_phone_number_by_id_response.rb +78 -0
  42. data/lib/whats_app_cloud_api/models/header.rb +93 -0
  43. data/lib/whats_app_cloud_api/models/header_type_enum.rb +23 -0
  44. data/lib/whats_app_cloud_api/models/image.rb +71 -0
  45. data/lib/whats_app_cloud_api/models/interactive.rb +87 -0
  46. data/lib/whats_app_cloud_api/models/interactive_type_enum.rb +17 -0
  47. data/lib/whats_app_cloud_api/models/language.rb +60 -0
  48. data/lib/whats_app_cloud_api/models/location.rb +78 -0
  49. data/lib/whats_app_cloud_api/models/message.rb +194 -0
  50. data/lib/whats_app_cloud_api/models/message_type_enum.rb +41 -0
  51. data/lib/whats_app_cloud_api/models/name.rb +100 -0
  52. data/lib/whats_app_cloud_api/models/org.rb +70 -0
  53. data/lib/whats_app_cloud_api/models/parameter.rb +113 -0
  54. data/lib/whats_app_cloud_api/models/parameter_type_enum.rb +29 -0
  55. data/lib/whats_app_cloud_api/models/personal_information_type_enum.rb +17 -0
  56. data/lib/whats_app_cloud_api/models/phone_object.rb +70 -0
  57. data/lib/whats_app_cloud_api/models/phone_type_enum.rb +26 -0
  58. data/lib/whats_app_cloud_api/models/quality_rating_enum.rb +25 -0
  59. data/lib/whats_app_cloud_api/models/register_phone_request.rb +58 -0
  60. data/lib/whats_app_cloud_api/models/request_verification_code_method_enum.rb +17 -0
  61. data/lib/whats_app_cloud_api/models/request_verification_code_request.rb +57 -0
  62. data/lib/whats_app_cloud_api/models/response_contact.rb +57 -0
  63. data/lib/whats_app_cloud_api/models/response_message.rb +48 -0
  64. data/lib/whats_app_cloud_api/models/retrieve_media_url_response.rb +94 -0
  65. data/lib/whats_app_cloud_api/models/row.rb +68 -0
  66. data/lib/whats_app_cloud_api/models/section.rb +72 -0
  67. data/lib/whats_app_cloud_api/models/send_message_response.rb +85 -0
  68. data/lib/whats_app_cloud_api/models/set_two_step_verification_code_request.rb +48 -0
  69. data/lib/whats_app_cloud_api/models/sticker.rb +61 -0
  70. data/lib/whats_app_cloud_api/models/sub_type_enum.rb +20 -0
  71. data/lib/whats_app_cloud_api/models/success_response.rb +48 -0
  72. data/lib/whats_app_cloud_api/models/template.rb +78 -0
  73. data/lib/whats_app_cloud_api/models/text.rb +72 -0
  74. data/lib/whats_app_cloud_api/models/update_business_profile_request.rb +116 -0
  75. data/lib/whats_app_cloud_api/models/upload_media.rb +48 -0
  76. data/lib/whats_app_cloud_api/models/upload_media_request.rb +80 -0
  77. data/lib/whats_app_cloud_api/models/url_object.rb +60 -0
  78. data/lib/whats_app_cloud_api/models/verify_code_request.rb +48 -0
  79. data/lib/whats_app_cloud_api/models/vertical_enum.rb +68 -0
  80. data/lib/whats_app_cloud_api/models/video.rb +61 -0
  81. data/lib/whats_app_cloud_api/utilities/date_time_helper.rb +156 -0
  82. data/lib/whats_app_cloud_api/utilities/file_wrapper.rb +16 -0
  83. data/lib/whats_app_cloud_api.rb +104 -0
  84. metadata +266 -0
@@ -0,0 +1,87 @@
1
+ # whats_app_cloud_api
2
+ #
3
+ # This file was automatically generated by APIMATIC v2.0
4
+ # ( https://apimatic.io ).
5
+
6
+ module WhatsAppCloudApi
7
+ # Interactive Model.
8
+ class Interactive < BaseModel
9
+ SKIP = Object.new
10
+ private_constant :SKIP
11
+
12
+ # Action you want the user to perform after reading the message.
13
+ # @return [Action]
14
+ attr_accessor :action
15
+
16
+ # The body of the message. Emojis and markdown are supported.
17
+ # @return [Body]
18
+ attr_accessor :body
19
+
20
+ # The footer of the message. Emojis and markdown are supported.
21
+ # @return [Footer]
22
+ attr_accessor :footer
23
+
24
+ # Header content displayed on top of a message.
25
+ # @return [Header]
26
+ attr_accessor :header
27
+
28
+ # The type of interactive message you want to send.
29
+ # @return [InteractiveTypeEnum]
30
+ attr_accessor :type
31
+
32
+ # A mapping from model property names to API property names.
33
+ def self.names
34
+ @_hash = {} if @_hash.nil?
35
+ @_hash['action'] = 'action'
36
+ @_hash['body'] = 'body'
37
+ @_hash['footer'] = 'footer'
38
+ @_hash['header'] = 'header'
39
+ @_hash['type'] = 'type'
40
+ @_hash
41
+ end
42
+
43
+ # An array for optional fields
44
+ def optionals
45
+ %w[
46
+ footer
47
+ header
48
+ ]
49
+ end
50
+
51
+ # An array for nullable fields
52
+ def nullables
53
+ []
54
+ end
55
+
56
+ def initialize(action = nil,
57
+ body = nil,
58
+ type = nil,
59
+ footer = nil,
60
+ header = nil)
61
+ @action = action unless action == SKIP
62
+ @body = body unless body == SKIP
63
+ @footer = footer unless footer == SKIP
64
+ @header = header unless header == SKIP
65
+ @type = type unless type == SKIP
66
+ end
67
+
68
+ # Creates an instance of the object from a hash.
69
+ def self.from_hash(hash)
70
+ return nil unless hash
71
+
72
+ # Extract variables from the hash.
73
+ action = Action.from_hash(hash['action']) if hash['action']
74
+ body = Body.from_hash(hash['body']) if hash['body']
75
+ type = hash.key?('type') ? hash['type'] : SKIP
76
+ footer = Footer.from_hash(hash['footer']) if hash['footer']
77
+ header = Header.from_hash(hash['header']) if hash['header']
78
+
79
+ # Create object from extracted values.
80
+ Interactive.new(action,
81
+ body,
82
+ type,
83
+ footer,
84
+ header)
85
+ end
86
+ end
87
+ end
@@ -0,0 +1,17 @@
1
+ # whats_app_cloud_api
2
+ #
3
+ # This file was automatically generated by APIMATIC v2.0
4
+ # ( https://apimatic.io ).
5
+
6
+ module WhatsAppCloudApi
7
+ # The type of interactive message you want to send.
8
+ class InteractiveTypeEnum
9
+ INTERACTIVE_TYPE_ENUM = [
10
+ # TODO: Write general description for LIST
11
+ LIST = 'list'.freeze,
12
+
13
+ # TODO: Write general description for BUTTON
14
+ BUTTON = 'button'.freeze
15
+ ].freeze
16
+ end
17
+ end
@@ -0,0 +1,60 @@
1
+ # whats_app_cloud_api
2
+ #
3
+ # This file was automatically generated by APIMATIC v2.0
4
+ # ( https://apimatic.io ).
5
+
6
+ module WhatsAppCloudApi
7
+ # Language Model.
8
+ class Language < BaseModel
9
+ SKIP = Object.new
10
+ private_constant :SKIP
11
+
12
+ # The code of the language or locale to use. Accepts both language and
13
+ # language_locale formats (e.g., en and en_US).
14
+ # @return [String]
15
+ attr_accessor :code
16
+
17
+ # The language policy the message should follow.
18
+ # @return [String]
19
+ attr_accessor :policy
20
+
21
+ # A mapping from model property names to API property names.
22
+ def self.names
23
+ @_hash = {} if @_hash.nil?
24
+ @_hash['code'] = 'code'
25
+ @_hash['policy'] = 'policy'
26
+ @_hash
27
+ end
28
+
29
+ # An array for optional fields
30
+ def optionals
31
+ %w[
32
+ policy
33
+ ]
34
+ end
35
+
36
+ # An array for nullable fields
37
+ def nullables
38
+ []
39
+ end
40
+
41
+ def initialize(code = nil,
42
+ policy = 'deterministic')
43
+ @code = code unless code == SKIP
44
+ @policy = policy unless policy == SKIP
45
+ end
46
+
47
+ # Creates an instance of the object from a hash.
48
+ def self.from_hash(hash)
49
+ return nil unless hash
50
+
51
+ # Extract variables from the hash.
52
+ code = hash.key?('code') ? hash['code'] : SKIP
53
+ policy = hash['policy'] ||= 'deterministic'
54
+
55
+ # Create object from extracted values.
56
+ Language.new(code,
57
+ policy)
58
+ end
59
+ end
60
+ end
@@ -0,0 +1,78 @@
1
+ # whats_app_cloud_api
2
+ #
3
+ # This file was automatically generated by APIMATIC v2.0
4
+ # ( https://apimatic.io ).
5
+
6
+ module WhatsAppCloudApi
7
+ # Location Model.
8
+ class Location < BaseModel
9
+ SKIP = Object.new
10
+ private_constant :SKIP
11
+
12
+ # Latitude of the location.
13
+ # @return [String]
14
+ attr_accessor :latitude
15
+
16
+ # Longitude of the location.
17
+ # @return [String]
18
+ attr_accessor :longitude
19
+
20
+ # Name of the location.
21
+ # @return [String]
22
+ attr_accessor :name
23
+
24
+ # Address of the location. Only displayed if name is present.
25
+ # @return [String]
26
+ attr_accessor :address
27
+
28
+ # A mapping from model property names to API property names.
29
+ def self.names
30
+ @_hash = {} if @_hash.nil?
31
+ @_hash['latitude'] = 'latitude'
32
+ @_hash['longitude'] = 'longitude'
33
+ @_hash['name'] = 'name'
34
+ @_hash['address'] = 'address'
35
+ @_hash
36
+ end
37
+
38
+ # An array for optional fields
39
+ def optionals
40
+ %w[
41
+ name
42
+ address
43
+ ]
44
+ end
45
+
46
+ # An array for nullable fields
47
+ def nullables
48
+ []
49
+ end
50
+
51
+ def initialize(latitude = nil,
52
+ longitude = nil,
53
+ name = nil,
54
+ address = nil)
55
+ @latitude = latitude unless latitude == SKIP
56
+ @longitude = longitude unless longitude == SKIP
57
+ @name = name unless name == SKIP
58
+ @address = address unless address == SKIP
59
+ end
60
+
61
+ # Creates an instance of the object from a hash.
62
+ def self.from_hash(hash)
63
+ return nil unless hash
64
+
65
+ # Extract variables from the hash.
66
+ latitude = hash.key?('latitude') ? hash['latitude'] : SKIP
67
+ longitude = hash.key?('longitude') ? hash['longitude'] : SKIP
68
+ name = hash.key?('name') ? hash['name'] : SKIP
69
+ address = hash.key?('address') ? hash['address'] : SKIP
70
+
71
+ # Create object from extracted values.
72
+ Location.new(latitude,
73
+ longitude,
74
+ name,
75
+ address)
76
+ end
77
+ end
78
+ end
@@ -0,0 +1,194 @@
1
+ # whats_app_cloud_api
2
+ #
3
+ # This file was automatically generated by APIMATIC v2.0
4
+ # ( https://apimatic.io ).
5
+
6
+ module WhatsAppCloudApi
7
+ # Message Model.
8
+ class Message < BaseModel
9
+ SKIP = Object.new
10
+ private_constant :SKIP
11
+
12
+ # A media object containing audio. Required when type=audio.
13
+ # @return [Audio]
14
+ attr_accessor :audio
15
+
16
+ # A contact object. Required when type=contacts.
17
+ # @return [List of Contact]
18
+ attr_accessor :contacts
19
+
20
+ # A media object containing a document. Required when type=document.
21
+ # @return [Document]
22
+ attr_accessor :document
23
+
24
+ # A media object containing an image. Required when type=image.
25
+ # @return [Image]
26
+ attr_accessor :image
27
+
28
+ # This option is used to send List Messages and Reply Buttons. The
29
+ # components of each interactive object generally follow a consistent
30
+ # pattern: header, body, footer, and action. Required when type=interactive.
31
+ # @return [Interactive]
32
+ attr_accessor :interactive
33
+
34
+ # A location object. Required when type=location.
35
+ # @return [Location]
36
+ attr_accessor :location
37
+
38
+ # Messaging service used for the request.
39
+ # @return [String]
40
+ attr_accessor :messaging_product
41
+
42
+ # Currently, you can only send messages to individuals.
43
+ # @return [String]
44
+ attr_accessor :recipient_type
45
+
46
+ # A media object containing a sticker. Currently, we support inbound both
47
+ # and outbound stickers: For outbound, we only support static third-party
48
+ # stickers. For inbound, we support all types of stickers. The sticker needs
49
+ # to be 512x512 pixels and the file’s size needs to be less than 100 KB.
50
+ # Required when type=sticker.
51
+ # @return [Sticker]
52
+ attr_accessor :sticker
53
+
54
+ # A template object. Required when type=template.
55
+ # @return [Template]
56
+ attr_accessor :template
57
+
58
+ # Required for text messages.
59
+ # @return [Text]
60
+ attr_accessor :text
61
+
62
+ # WhatsApp ID or phone number for the person you want to send a message to.
63
+ # @return [String]
64
+ attr_accessor :to
65
+
66
+ # The type of message you want to send.
67
+ # @return [MessageTypeEnum]
68
+ attr_accessor :type
69
+
70
+ # A media object containing a video. Required when type=video.
71
+ # @return [Video]
72
+ attr_accessor :video
73
+
74
+ # A mapping from model property names to API property names.
75
+ def self.names
76
+ @_hash = {} if @_hash.nil?
77
+ @_hash['audio'] = 'audio'
78
+ @_hash['contacts'] = 'contacts'
79
+ @_hash['document'] = 'document'
80
+ @_hash['image'] = 'image'
81
+ @_hash['interactive'] = 'interactive'
82
+ @_hash['location'] = 'location'
83
+ @_hash['messaging_product'] = 'messaging_product'
84
+ @_hash['recipient_type'] = 'recipient_type'
85
+ @_hash['sticker'] = 'sticker'
86
+ @_hash['template'] = 'template'
87
+ @_hash['text'] = 'text'
88
+ @_hash['to'] = 'to'
89
+ @_hash['type'] = 'type'
90
+ @_hash['video'] = 'video'
91
+ @_hash
92
+ end
93
+
94
+ # An array for optional fields
95
+ def optionals
96
+ %w[
97
+ audio
98
+ contacts
99
+ document
100
+ image
101
+ interactive
102
+ location
103
+ recipient_type
104
+ sticker
105
+ template
106
+ text
107
+ type
108
+ video
109
+ ]
110
+ end
111
+
112
+ # An array for nullable fields
113
+ def nullables
114
+ []
115
+ end
116
+
117
+ def initialize(messaging_product = nil,
118
+ to = nil,
119
+ audio = nil,
120
+ contacts = nil,
121
+ document = nil,
122
+ image = nil,
123
+ interactive = nil,
124
+ location = nil,
125
+ recipient_type = 'individual',
126
+ sticker = nil,
127
+ template = nil,
128
+ text = nil,
129
+ type = nil,
130
+ video = nil)
131
+ @audio = audio unless audio == SKIP
132
+ @contacts = contacts unless contacts == SKIP
133
+ @document = document unless document == SKIP
134
+ @image = image unless image == SKIP
135
+ @interactive = interactive unless interactive == SKIP
136
+ @location = location unless location == SKIP
137
+ @messaging_product = messaging_product unless messaging_product == SKIP
138
+ @recipient_type = recipient_type unless recipient_type == SKIP
139
+ @sticker = sticker unless sticker == SKIP
140
+ @template = template unless template == SKIP
141
+ @text = text unless text == SKIP
142
+ @to = to unless to == SKIP
143
+ @type = type unless type == SKIP
144
+ @video = video unless video == SKIP
145
+ end
146
+
147
+ # Creates an instance of the object from a hash.
148
+ def self.from_hash(hash)
149
+ return nil unless hash
150
+
151
+ # Extract variables from the hash.
152
+ messaging_product =
153
+ hash.key?('messaging_product') ? hash['messaging_product'] : SKIP
154
+ to = hash.key?('to') ? hash['to'] : SKIP
155
+ audio = Audio.from_hash(hash['audio']) if hash['audio']
156
+ # Parameter is an array, so we need to iterate through it
157
+ contacts = nil
158
+ unless hash['contacts'].nil?
159
+ contacts = []
160
+ hash['contacts'].each do |structure|
161
+ contacts << (Contact.from_hash(structure) if structure)
162
+ end
163
+ end
164
+
165
+ contacts = SKIP unless hash.key?('contacts')
166
+ document = Document.from_hash(hash['document']) if hash['document']
167
+ image = Image.from_hash(hash['image']) if hash['image']
168
+ interactive = Interactive.from_hash(hash['interactive']) if hash['interactive']
169
+ location = Location.from_hash(hash['location']) if hash['location']
170
+ recipient_type = hash['recipient_type'] ||= 'individual'
171
+ sticker = Sticker.from_hash(hash['sticker']) if hash['sticker']
172
+ template = Template.from_hash(hash['template']) if hash['template']
173
+ text = Text.from_hash(hash['text']) if hash['text']
174
+ type = hash.key?('type') ? hash['type'] : SKIP
175
+ video = Video.from_hash(hash['video']) if hash['video']
176
+
177
+ # Create object from extracted values.
178
+ Message.new(messaging_product,
179
+ to,
180
+ audio,
181
+ contacts,
182
+ document,
183
+ image,
184
+ interactive,
185
+ location,
186
+ recipient_type,
187
+ sticker,
188
+ template,
189
+ text,
190
+ type,
191
+ video)
192
+ end
193
+ end
194
+ end
@@ -0,0 +1,41 @@
1
+ # whats_app_cloud_api
2
+ #
3
+ # This file was automatically generated by APIMATIC v2.0
4
+ # ( https://apimatic.io ).
5
+
6
+ module WhatsAppCloudApi
7
+ # MessageType.
8
+ class MessageTypeEnum
9
+ MESSAGE_TYPE_ENUM = [
10
+ # TODO: Write general description for TEXT
11
+ TEXT = 'text'.freeze,
12
+
13
+ # TODO: Write general description for AUDIO
14
+ AUDIO = 'audio'.freeze,
15
+
16
+ # TODO: Write general description for CONTACTS
17
+ CONTACTS = 'contacts'.freeze,
18
+
19
+ # TODO: Write general description for DOCUMENT
20
+ DOCUMENT = 'document'.freeze,
21
+
22
+ # TODO: Write general description for IMAGE
23
+ IMAGE = 'image'.freeze,
24
+
25
+ # TODO: Write general description for INTERACTIVE
26
+ INTERACTIVE = 'interactive'.freeze,
27
+
28
+ # TODO: Write general description for LOCATION
29
+ LOCATION = 'location'.freeze,
30
+
31
+ # TODO: Write general description for STICKER
32
+ STICKER = 'sticker'.freeze,
33
+
34
+ # TODO: Write general description for TEMPLATE
35
+ TEMPLATE = 'template'.freeze,
36
+
37
+ # TODO: Write general description for VIDEO
38
+ VIDEO = 'video'.freeze
39
+ ].freeze
40
+ end
41
+ end
@@ -0,0 +1,100 @@
1
+ # whats_app_cloud_api
2
+ #
3
+ # This file was automatically generated by APIMATIC v2.0
4
+ # ( https://apimatic.io ).
5
+
6
+ module WhatsAppCloudApi
7
+ # Name Model.
8
+ class Name < BaseModel
9
+ SKIP = Object.new
10
+ private_constant :SKIP
11
+
12
+ # Full name, as it normally appears.
13
+ # @return [String]
14
+ attr_accessor :formatted_name
15
+
16
+ # Full name, as it normally appears.
17
+ # @return [String]
18
+ attr_accessor :first_name
19
+
20
+ # Full name, as it normally appears.
21
+ # @return [String]
22
+ attr_accessor :last_name
23
+
24
+ # Full name, as it normally appears.
25
+ # @return [String]
26
+ attr_accessor :middle_name
27
+
28
+ # Full name, as it normally appears.
29
+ # @return [String]
30
+ attr_accessor :suffix
31
+
32
+ # Full name, as it normally appears.
33
+ # @return [String]
34
+ attr_accessor :prefix
35
+
36
+ # A mapping from model property names to API property names.
37
+ def self.names
38
+ @_hash = {} if @_hash.nil?
39
+ @_hash['formatted_name'] = 'formatted_name'
40
+ @_hash['first_name'] = 'first_name'
41
+ @_hash['last_name'] = 'last_name'
42
+ @_hash['middle_name'] = 'middle_name'
43
+ @_hash['suffix'] = 'suffix'
44
+ @_hash['prefix'] = 'prefix'
45
+ @_hash
46
+ end
47
+
48
+ # An array for optional fields
49
+ def optionals
50
+ %w[
51
+ first_name
52
+ last_name
53
+ middle_name
54
+ suffix
55
+ prefix
56
+ ]
57
+ end
58
+
59
+ # An array for nullable fields
60
+ def nullables
61
+ []
62
+ end
63
+
64
+ def initialize(formatted_name = nil,
65
+ first_name = nil,
66
+ last_name = nil,
67
+ middle_name = nil,
68
+ suffix = nil,
69
+ prefix = nil)
70
+ @formatted_name = formatted_name unless formatted_name == SKIP
71
+ @first_name = first_name unless first_name == SKIP
72
+ @last_name = last_name unless last_name == SKIP
73
+ @middle_name = middle_name unless middle_name == SKIP
74
+ @suffix = suffix unless suffix == SKIP
75
+ @prefix = prefix unless prefix == SKIP
76
+ end
77
+
78
+ # Creates an instance of the object from a hash.
79
+ def self.from_hash(hash)
80
+ return nil unless hash
81
+
82
+ # Extract variables from the hash.
83
+ formatted_name =
84
+ hash.key?('formatted_name') ? hash['formatted_name'] : SKIP
85
+ first_name = hash.key?('first_name') ? hash['first_name'] : SKIP
86
+ last_name = hash.key?('last_name') ? hash['last_name'] : SKIP
87
+ middle_name = hash.key?('middle_name') ? hash['middle_name'] : SKIP
88
+ suffix = hash.key?('suffix') ? hash['suffix'] : SKIP
89
+ prefix = hash.key?('prefix') ? hash['prefix'] : SKIP
90
+
91
+ # Create object from extracted values.
92
+ Name.new(formatted_name,
93
+ first_name,
94
+ last_name,
95
+ middle_name,
96
+ suffix,
97
+ prefix)
98
+ end
99
+ end
100
+ end
@@ -0,0 +1,70 @@
1
+ # whats_app_cloud_api
2
+ #
3
+ # This file was automatically generated by APIMATIC v2.0
4
+ # ( https://apimatic.io ).
5
+
6
+ module WhatsAppCloudApi
7
+ # Org Model.
8
+ class Org < BaseModel
9
+ SKIP = Object.new
10
+ private_constant :SKIP
11
+
12
+ # Name of the contact's company.
13
+ # @return [String]
14
+ attr_accessor :company
15
+
16
+ # Name of the contact's department.
17
+ # @return [String]
18
+ attr_accessor :department
19
+
20
+ # Contact's business title.
21
+ # @return [String]
22
+ attr_accessor :title
23
+
24
+ # A mapping from model property names to API property names.
25
+ def self.names
26
+ @_hash = {} if @_hash.nil?
27
+ @_hash['company'] = 'company'
28
+ @_hash['department'] = 'department'
29
+ @_hash['title'] = 'title'
30
+ @_hash
31
+ end
32
+
33
+ # An array for optional fields
34
+ def optionals
35
+ %w[
36
+ company
37
+ department
38
+ title
39
+ ]
40
+ end
41
+
42
+ # An array for nullable fields
43
+ def nullables
44
+ []
45
+ end
46
+
47
+ def initialize(company = nil,
48
+ department = nil,
49
+ title = nil)
50
+ @company = company unless company == SKIP
51
+ @department = department unless department == SKIP
52
+ @title = title unless title == SKIP
53
+ end
54
+
55
+ # Creates an instance of the object from a hash.
56
+ def self.from_hash(hash)
57
+ return nil unless hash
58
+
59
+ # Extract variables from the hash.
60
+ company = hash.key?('company') ? hash['company'] : SKIP
61
+ department = hash.key?('department') ? hash['department'] : SKIP
62
+ title = hash.key?('title') ? hash['title'] : SKIP
63
+
64
+ # Create object from extracted values.
65
+ Org.new(company,
66
+ department,
67
+ title)
68
+ end
69
+ end
70
+ end