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,94 @@
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
+ # BusinessProfilesController
8
+ class BusinessProfilesController < BaseController
9
+ def initialize(config, http_call_back: nil)
10
+ super(config, http_call_back: http_call_back)
11
+ end
12
+
13
+ # Use this endpoint to update your business’ profile information such as the
14
+ # business description, email or address.
15
+ # @param [String] phone_number_id Required parameter: Example:
16
+ # @param [UpdateBusinessProfileRequest] body Required parameter: Example:
17
+ # @return [SuccessResponse] response from the API call
18
+ def update_business_profile(phone_number_id,
19
+ body)
20
+ # Prepare query url.
21
+ _query_builder = config.get_base_uri
22
+ _query_builder << '/{Phone-Number-ID}/whatsapp_business_profile'
23
+ _query_builder = APIHelper.append_url_with_template_parameters(
24
+ _query_builder,
25
+ 'Phone-Number-ID' => { 'value' => phone_number_id, 'encode' => true }
26
+ )
27
+ _query_url = APIHelper.clean_url _query_builder
28
+
29
+ # Prepare headers.
30
+ _headers = {
31
+ 'accept' => 'application/json',
32
+ 'Content-Type' => 'application/json'
33
+ }
34
+
35
+ # Prepare and execute HttpRequest.
36
+ _request = config.http_client.post(
37
+ _query_url,
38
+ headers: _headers,
39
+ parameters: body.to_json
40
+ )
41
+ OAuth2.apply(config, _request)
42
+ _response = execute_request(_request)
43
+ validate_response(_response)
44
+
45
+ # Return appropriate response type.
46
+ decoded = APIHelper.json_deserialize(_response.raw_body)
47
+ SuccessResponse.from_hash(decoded)
48
+ end
49
+
50
+ # Use this endpoint to retrieve your business’ profile. This business
51
+ # profile is visible to consumers in the chat thread next to the profile
52
+ # photo. The profile information will contain a business profile ID which
53
+ # you can use to make API calls.
54
+ # @param [String] phone_number_id Required parameter: Example:
55
+ # @param [String] fields Optional parameter: Here you can specify what you
56
+ # want to know from your business as a comma separated list of fields.
57
+ # Available fields include: id, about, messaging_product, address,
58
+ # description, vertical, email, websites, profile_picture_url
59
+ # @return [GetBusinessProfileIDResponse] response from the API call
60
+ def get_business_profile_id(phone_number_id,
61
+ fields: nil)
62
+ # Prepare query url.
63
+ _query_builder = config.get_base_uri
64
+ _query_builder << '/{Phone-Number-ID}/whatsapp_business_profile'
65
+ _query_builder = APIHelper.append_url_with_template_parameters(
66
+ _query_builder,
67
+ 'Phone-Number-ID' => { 'value' => phone_number_id, 'encode' => true }
68
+ )
69
+ _query_builder = APIHelper.append_url_with_query_parameters(
70
+ _query_builder,
71
+ 'fields' => fields
72
+ )
73
+ _query_url = APIHelper.clean_url _query_builder
74
+
75
+ # Prepare headers.
76
+ _headers = {
77
+ 'accept' => 'application/json'
78
+ }
79
+
80
+ # Prepare and execute HttpRequest.
81
+ _request = config.http_client.get(
82
+ _query_url,
83
+ headers: _headers
84
+ )
85
+ OAuth2.apply(config, _request)
86
+ _response = execute_request(_request)
87
+ validate_response(_response)
88
+
89
+ # Return appropriate response type.
90
+ decoded = APIHelper.json_deserialize(_response.raw_body)
91
+ GetBusinessProfileIDResponse.from_hash(decoded)
92
+ end
93
+ end
94
+ end
@@ -0,0 +1,142 @@
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
+ # MediaController
8
+ class MediaController < BaseController
9
+ def initialize(config, http_call_back: nil)
10
+ super(config, http_call_back: http_call_back)
11
+ end
12
+
13
+ # This endpoint can be used for deleting a media object.
14
+ # @param [String] media_id Required parameter: Media object ID from either
15
+ # uploading media endpoint or media message Webhooks
16
+ # @return [SuccessResponse] response from the API call
17
+ def delete_media(media_id)
18
+ # Prepare query url.
19
+ _query_builder = config.get_base_uri
20
+ _query_builder << '/{Media-ID}'
21
+ _query_builder = APIHelper.append_url_with_template_parameters(
22
+ _query_builder,
23
+ 'Media-ID' => { 'value' => media_id, 'encode' => true }
24
+ )
25
+ _query_url = APIHelper.clean_url _query_builder
26
+
27
+ # Prepare headers.
28
+ _headers = {
29
+ 'accept' => 'application/json'
30
+ }
31
+
32
+ # Prepare and execute HttpRequest.
33
+ _request = config.http_client.delete(
34
+ _query_url,
35
+ headers: _headers
36
+ )
37
+ OAuth2.apply(config, _request)
38
+ _response = execute_request(_request)
39
+ validate_response(_response)
40
+
41
+ # Return appropriate response type.
42
+ decoded = APIHelper.json_deserialize(_response.raw_body)
43
+ SuccessResponse.from_hash(decoded)
44
+ end
45
+
46
+ # To retrieve your media’s URL, make a request to this endpoint. Later, you
47
+ # can use this URL to download the media file.
48
+ # @param [String] media_id Required parameter: Media object ID from either
49
+ # uploading media endpoint or media message Webhooks
50
+ # @return [RetrieveMediaURLResponse] response from the API call
51
+ def retrieve_media_url(media_id)
52
+ # Prepare query url.
53
+ _query_builder = config.get_base_uri
54
+ _query_builder << '/{Media-ID}'
55
+ _query_builder = APIHelper.append_url_with_template_parameters(
56
+ _query_builder,
57
+ 'Media-ID' => { 'value' => media_id, 'encode' => true }
58
+ )
59
+ _query_url = APIHelper.clean_url _query_builder
60
+
61
+ # Prepare headers.
62
+ _headers = {
63
+ 'accept' => 'application/json'
64
+ }
65
+
66
+ # Prepare and execute HttpRequest.
67
+ _request = config.http_client.get(
68
+ _query_url,
69
+ headers: _headers
70
+ )
71
+ OAuth2.apply(config, _request)
72
+ _response = execute_request(_request)
73
+ validate_response(_response)
74
+
75
+ # Return appropriate response type.
76
+ decoded = APIHelper.json_deserialize(_response.raw_body)
77
+ RetrieveMediaURLResponse.from_hash(decoded)
78
+ end
79
+
80
+ # Used to upload media. All media files sent through this endpoint are
81
+ # encrypted and persist for 30 days.
82
+ # @param [String] phone_number_id Required parameter: Example:
83
+ # @param [String] messaging_product Required parameter: Messaging service
84
+ # used for the request. In this case, use whatsapp.
85
+ # @param [String] file Required parameter: Path to the file stored in your
86
+ # local directory. For example: "@/local/path/file.jpg".
87
+ # @param [String] type Required parameter: Type of media file being
88
+ # uploaded. See Supported Media Types for more information. Supported
89
+ # options for images are: `image/jpeg`, `image/png` Supported options for
90
+ # documents are: `text/plain`, `application/pdf`,
91
+ # `application/vnd.ms-powerpoint`, `application/msword`,
92
+ # `application/vnd.ms-excel`,
93
+ # `application/vnd.openxmlformats-officedocument.wordprocessingml.document`,
94
+ # `application/vnd.openxmlformats-officedocument.presentationml.presentation
95
+ # `, `application/vnd.openxmlformats-officedocument.spreadsheetml.sheet`
96
+ # Supported options for audio are: `audio/aac`, `audio/mp4`, `audio/mpeg`,
97
+ # `audio/amr`, `audio/ogg`, `audio/opus` Supported options for video are:
98
+ # `video/mp4`, `video/3gp` Supported options for stickers are:
99
+ # `image/webp`
100
+ # @return [UploadMedia] response from the API call
101
+ def upload_media(phone_number_id,
102
+ messaging_product,
103
+ file,
104
+ type)
105
+ # Prepare query url.
106
+ _query_builder = config.get_base_uri
107
+ _query_builder << '/{Phone-Number-ID}/media'
108
+ _query_builder = APIHelper.append_url_with_template_parameters(
109
+ _query_builder,
110
+ 'Phone-Number-ID' => { 'value' => phone_number_id, 'encode' => true }
111
+ )
112
+ _query_url = APIHelper.clean_url _query_builder
113
+
114
+ # Prepare headers.
115
+ _headers = {
116
+ 'accept' => 'application/json'
117
+ }
118
+
119
+ # Prepare form parameters.
120
+ _parameters = {
121
+ 'messaging_product' => messaging_product,
122
+ 'file' => file,
123
+ 'type' => type
124
+ }
125
+ _parameters = APIHelper.form_encode_parameters(_parameters)
126
+
127
+ # Prepare and execute HttpRequest.
128
+ _request = config.http_client.post(
129
+ _query_url,
130
+ headers: _headers,
131
+ parameters: _parameters
132
+ )
133
+ OAuth2.apply(config, _request)
134
+ _response = execute_request(_request)
135
+ validate_response(_response)
136
+
137
+ # Return appropriate response type.
138
+ decoded = APIHelper.json_deserialize(_response.raw_body)
139
+ UploadMedia.from_hash(decoded)
140
+ end
141
+ end
142
+ end
@@ -0,0 +1,51 @@
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
+ # MessagesController
8
+ class MessagesController < BaseController
9
+ def initialize(config, http_call_back: nil)
10
+ super(config, http_call_back: http_call_back)
11
+ end
12
+
13
+ # Use this endpoint to send text messages, media, message templates to your
14
+ # customers.
15
+ # @param [String] phone_number_id Required parameter: Example:
16
+ # @param [Message] body Required parameter: To send a message, you must
17
+ # first assemble a message object with the content you want to send.
18
+ # @return [SendMessageResponse] response from the API call
19
+ def send_message(phone_number_id,
20
+ body)
21
+ # Prepare query url.
22
+ _query_builder = config.get_base_uri
23
+ _query_builder << '/{Phone-Number-ID}/messages'
24
+ _query_builder = APIHelper.append_url_with_template_parameters(
25
+ _query_builder,
26
+ 'Phone-Number-ID' => { 'value' => phone_number_id, 'encode' => true }
27
+ )
28
+ _query_url = APIHelper.clean_url _query_builder
29
+
30
+ # Prepare headers.
31
+ _headers = {
32
+ 'accept' => 'application/json',
33
+ 'Content-Type' => 'application/json'
34
+ }
35
+
36
+ # Prepare and execute HttpRequest.
37
+ _request = config.http_client.post(
38
+ _query_url,
39
+ headers: _headers,
40
+ parameters: body.to_json
41
+ )
42
+ OAuth2.apply(config, _request)
43
+ _response = execute_request(_request)
44
+ validate_response(_response)
45
+
46
+ # Return appropriate response type.
47
+ decoded = APIHelper.json_deserialize(_response.raw_body)
48
+ SendMessageResponse.from_hash(decoded)
49
+ end
50
+ end
51
+ end
@@ -0,0 +1,141 @@
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
+ # PhoneNumbersController
8
+ class PhoneNumbersController < BaseController
9
+ def initialize(config, http_call_back: nil)
10
+ super(config, http_call_back: http_call_back)
11
+ end
12
+
13
+ # Used to verify a phone number's ownership. After you have received a SMS
14
+ # or Voice request code for verification, you need to verify the code that
15
+ # was sent to you.
16
+ # @param [String] phone_number_id Required parameter: Example:
17
+ # @param [String] code Required parameter: The code you received after
18
+ # calling FROM_PHONE_NUMBER_ID/request_code.
19
+ # @return [SuccessResponse] response from the API call
20
+ def verify_code(phone_number_id,
21
+ code)
22
+ # Prepare query url.
23
+ _query_builder = config.get_base_uri
24
+ _query_builder << '/{Phone-Number-ID}/verify_code'
25
+ _query_builder = APIHelper.append_url_with_template_parameters(
26
+ _query_builder,
27
+ 'Phone-Number-ID' => { 'value' => phone_number_id, 'encode' => true }
28
+ )
29
+ _query_url = APIHelper.clean_url _query_builder
30
+
31
+ # Prepare headers.
32
+ _headers = {
33
+ 'accept' => 'application/json'
34
+ }
35
+
36
+ # Prepare form parameters.
37
+ _parameters = {
38
+ 'code' => code
39
+ }
40
+ _parameters = APIHelper.form_encode_parameters(_parameters)
41
+
42
+ # Prepare and execute HttpRequest.
43
+ _request = config.http_client.post(
44
+ _query_url,
45
+ headers: _headers,
46
+ parameters: _parameters
47
+ )
48
+ OAuth2.apply(config, _request)
49
+ _response = execute_request(_request)
50
+ validate_response(_response)
51
+
52
+ # Return appropriate response type.
53
+ decoded = APIHelper.json_deserialize(_response.raw_body)
54
+ SuccessResponse.from_hash(decoded)
55
+ end
56
+
57
+ # When you query all the phone numbers for a WhatsApp Business Account, each
58
+ # phone number has an id. You can directly query for a phone number using
59
+ # this id.
60
+ # @param [String] phone_number_id Required parameter: Example:
61
+ # @return [GetPhoneNumberByIDResponse] response from the API call
62
+ def get_phone_number_by_id(phone_number_id)
63
+ # Prepare query url.
64
+ _query_builder = config.get_base_uri
65
+ _query_builder << '/{Phone-Number-ID}'
66
+ _query_builder = APIHelper.append_url_with_template_parameters(
67
+ _query_builder,
68
+ 'Phone-Number-ID' => { 'value' => phone_number_id, 'encode' => true }
69
+ )
70
+ _query_url = APIHelper.clean_url _query_builder
71
+
72
+ # Prepare headers.
73
+ _headers = {
74
+ 'accept' => 'application/json'
75
+ }
76
+
77
+ # Prepare and execute HttpRequest.
78
+ _request = config.http_client.get(
79
+ _query_url,
80
+ headers: _headers
81
+ )
82
+ OAuth2.apply(config, _request)
83
+ _response = execute_request(_request)
84
+ validate_response(_response)
85
+
86
+ # Return appropriate response type.
87
+ decoded = APIHelper.json_deserialize(_response.raw_body)
88
+ GetPhoneNumberByIDResponse.from_hash(decoded)
89
+ end
90
+
91
+ # Used to request a code to verify a phone number's ownership. You need to
92
+ # verify the phone number you want to use to send messages to your
93
+ # customers. Phone numbers must be verified through SMS/voice call. The
94
+ # verification process can be done through the Graph API calls specified
95
+ # below.
96
+ # @param [String] phone_number_id Required parameter: Example:
97
+ # @param [RequestVerificationCodeMethodEnum] code_method Required parameter:
98
+ # Chosen method for verification.
99
+ # @param [String] locale Required parameter: Your locale. For example:
100
+ # "en_US".
101
+ # @return [SuccessResponse] response from the API call
102
+ def request_verification_code(phone_number_id,
103
+ code_method,
104
+ locale)
105
+ # Prepare query url.
106
+ _query_builder = config.get_base_uri
107
+ _query_builder << '/{Phone-Number-ID}/request_code'
108
+ _query_builder = APIHelper.append_url_with_template_parameters(
109
+ _query_builder,
110
+ 'Phone-Number-ID' => { 'value' => phone_number_id, 'encode' => true }
111
+ )
112
+ _query_url = APIHelper.clean_url _query_builder
113
+
114
+ # Prepare headers.
115
+ _headers = {
116
+ 'accept' => 'application/json'
117
+ }
118
+
119
+ # Prepare form parameters.
120
+ _parameters = {
121
+ 'code_method' => code_method,
122
+ 'locale' => locale
123
+ }
124
+ _parameters = APIHelper.form_encode_parameters(_parameters)
125
+
126
+ # Prepare and execute HttpRequest.
127
+ _request = config.http_client.post(
128
+ _query_url,
129
+ headers: _headers,
130
+ parameters: _parameters
131
+ )
132
+ OAuth2.apply(config, _request)
133
+ _response = execute_request(_request)
134
+ validate_response(_response)
135
+
136
+ # Return appropriate response type.
137
+ decoded = APIHelper.json_deserialize(_response.raw_body)
138
+ SuccessResponse.from_hash(decoded)
139
+ end
140
+ end
141
+ end
@@ -0,0 +1,91 @@
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
+ # RegistrationController
8
+ class RegistrationController < BaseController
9
+ def initialize(config, http_call_back: nil)
10
+ super(config, http_call_back: http_call_back)
11
+ end
12
+
13
+ # Used to register a phone number or to migrate WhatsApp Business Accounts
14
+ # from a current On-Premises deployment to the new Cloud-Based API. Business
15
+ # Solution Providers (BSPs) must authenticate themselves with an access
16
+ # token with the whatsapp_business_management permission.
17
+ # @param [String] phone_number_id Required parameter: Example:
18
+ # @param [RegisterPhoneRequest] body Required parameter: Example:
19
+ # @return [SuccessResponse] response from the API call
20
+ def register_phone(phone_number_id,
21
+ body)
22
+ # Prepare query url.
23
+ _query_builder = config.get_base_uri
24
+ _query_builder << '/{Phone-Number-ID}/register'
25
+ _query_builder = APIHelper.append_url_with_template_parameters(
26
+ _query_builder,
27
+ 'Phone-Number-ID' => { 'value' => phone_number_id, 'encode' => true }
28
+ )
29
+ _query_url = APIHelper.clean_url _query_builder
30
+
31
+ # Prepare headers.
32
+ _headers = {
33
+ 'accept' => 'application/json',
34
+ 'Content-Type' => 'application/json'
35
+ }
36
+
37
+ # Prepare and execute HttpRequest.
38
+ _request = config.http_client.post(
39
+ _query_url,
40
+ headers: _headers,
41
+ parameters: body.to_json
42
+ )
43
+ OAuth2.apply(config, _request)
44
+ _response = execute_request(_request)
45
+ validate_response(_response)
46
+
47
+ # Return appropriate response type.
48
+ decoded = APIHelper.json_deserialize(_response.raw_body)
49
+ SuccessResponse.from_hash(decoded)
50
+ end
51
+
52
+ # Used to deregister a phone number. Deregister phone removes a previously
53
+ # registered phone. You can always re-register your phone using by repeating
54
+ # the registration process. Business Solution Providers (BSPs) must
55
+ # authenticate themselves with an access token with the
56
+ # whatsapp_business_management permission.
57
+ # @param [ContentTypeEnum] content_type Required parameter: Example:
58
+ # @param [String] phone_number_id Required parameter: Example:
59
+ # @return [SuccessResponse] response from the API call
60
+ def deregister_phone(content_type,
61
+ phone_number_id)
62
+ # Prepare query url.
63
+ _query_builder = config.get_base_uri
64
+ _query_builder << '/{Phone-Number-ID}/deregister'
65
+ _query_builder = APIHelper.append_url_with_template_parameters(
66
+ _query_builder,
67
+ 'Phone-Number-ID' => { 'value' => phone_number_id, 'encode' => true }
68
+ )
69
+ _query_url = APIHelper.clean_url _query_builder
70
+
71
+ # Prepare headers.
72
+ _headers = {
73
+ 'accept' => 'application/json',
74
+ 'Content-Type' => content_type
75
+ }
76
+
77
+ # Prepare and execute HttpRequest.
78
+ _request = config.http_client.post(
79
+ _query_url,
80
+ headers: _headers
81
+ )
82
+ OAuth2.apply(config, _request)
83
+ _response = execute_request(_request)
84
+ validate_response(_response)
85
+
86
+ # Return appropriate response type.
87
+ decoded = APIHelper.json_deserialize(_response.raw_body)
88
+ SuccessResponse.from_hash(decoded)
89
+ end
90
+ end
91
+ end
@@ -0,0 +1,57 @@
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
+ # TwoStepVerificationController
8
+ class TwoStepVerificationController < BaseController
9
+ def initialize(config, http_call_back: nil)
10
+ super(config, http_call_back: http_call_back)
11
+ end
12
+
13
+ # You are required to set up two-step verification for your phone number, as
14
+ # this provides an extra layer of security to the business accounts. You can
15
+ # use this endpoint to change two-step verification code associated with
16
+ # your account.
17
+ # After you change the verification code, future requests like changing the
18
+ # name, must use the new code.
19
+ # You set up two-factor verification and register a phone number in the same
20
+ # API call.
21
+ # @param [String] phone_number_id Required parameter: Example:
22
+ # @param [SetTwoStepVerificationCodeRequest] body Required parameter:
23
+ # Example:
24
+ # @return [SuccessResponse] response from the API call
25
+ def set_two_step_verification_code(phone_number_id,
26
+ body)
27
+ # Prepare query url.
28
+ _query_builder = config.get_base_uri
29
+ _query_builder << '/{Phone-Number-ID}'
30
+ _query_builder = APIHelper.append_url_with_template_parameters(
31
+ _query_builder,
32
+ 'Phone-Number-ID' => { 'value' => phone_number_id, 'encode' => true }
33
+ )
34
+ _query_url = APIHelper.clean_url _query_builder
35
+
36
+ # Prepare headers.
37
+ _headers = {
38
+ 'accept' => 'application/json',
39
+ 'Content-Type' => 'application/json'
40
+ }
41
+
42
+ # Prepare and execute HttpRequest.
43
+ _request = config.http_client.post(
44
+ _query_url,
45
+ headers: _headers,
46
+ parameters: body.to_json
47
+ )
48
+ OAuth2.apply(config, _request)
49
+ _response = execute_request(_request)
50
+ validate_response(_response)
51
+
52
+ # Return appropriate response type.
53
+ decoded = APIHelper.json_deserialize(_response.raw_body)
54
+ SuccessResponse.from_hash(decoded)
55
+ end
56
+ end
57
+ end
@@ -0,0 +1,20 @@
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
+ # Class for exceptions when there is a network error, status code error, etc.
8
+ class APIException < StandardError
9
+ attr_reader :response, :response_code
10
+
11
+ # The constructor.
12
+ # @param [String] The reason for raising an exception.
13
+ # @param [HttpResponse] The HttpReponse of the API call.
14
+ def initialize(reason, response)
15
+ super(reason)
16
+ @response = response
17
+ @response_code = response.status_code
18
+ end
19
+ end
20
+ 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
+ # Utility class for OAuth 2 authorization and token management.
8
+ class OAuth2
9
+ # Add OAuth2 authentication to the http request.
10
+ # @param [HttpRequest] The HttpRequest object to which authentication will
11
+ # be added.
12
+ def self.apply(config, http_request)
13
+ token = config.access_token
14
+ http_request.headers['Authorization'] = "Bearer #{token}"
15
+ end
16
+ end
17
+ end