nexmo 5.9.0 → 6.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.
- checksums.yaml +4 -4
- data/README.md +35 -465
- data/lib/nexmo.rb +31 -48
- data/lib/nexmo/{authentication/abstract.rb → abstract_authentication.rb} +2 -2
- data/lib/nexmo/account.rb +4 -2
- data/lib/nexmo/alerts.rb +3 -3
- data/lib/nexmo/applications.rb +45 -63
- data/lib/nexmo/applications/list_response.rb +9 -0
- data/lib/nexmo/{errors/authentication_error.rb → authentication_error.rb} +0 -0
- data/lib/nexmo/{authentication/basic.rb → basic.rb} +1 -1
- data/lib/nexmo/{authentication/bearer_token.rb → bearer_token.rb} +1 -1
- data/lib/nexmo/calls.rb +18 -18
- data/lib/nexmo/{call_dtmf.rb → calls/dtmf.rb} +2 -2
- data/lib/nexmo/calls/list_response.rb +9 -0
- data/lib/nexmo/{call_stream.rb → calls/stream.rb} +3 -3
- data/lib/nexmo/{call_talk.rb → calls/talk.rb} +3 -3
- data/lib/nexmo/client.rb +20 -169
- data/lib/nexmo/{errors/client_error.rb → client_error.rb} +0 -0
- data/lib/nexmo/config.rb +165 -0
- data/lib/nexmo/conversations.rb +44 -13
- data/lib/nexmo/{conversation_events.rb → conversations/events.rb} +5 -5
- data/lib/nexmo/{conversation_legs.rb → conversations/legs.rb} +3 -3
- data/lib/nexmo/{conversation_members.rb → conversations/members.rb} +6 -6
- data/lib/nexmo/{conversation_users.rb → conversations/users.rb} +6 -6
- data/lib/nexmo/entity.rb +14 -0
- data/lib/nexmo/{errors/error.rb → error.rb} +0 -0
- data/lib/nexmo/files.rb +1 -2
- data/lib/nexmo/gsm7.rb +13 -0
- data/lib/nexmo/{authentication/key_secret_params.rb → key_secret_params.rb} +2 -2
- data/lib/nexmo/{authentication/key_secret_query.rb → key_secret_query.rb} +2 -2
- data/lib/nexmo/keys.rb +4 -22
- data/lib/nexmo/namespace.rb +22 -12
- data/lib/nexmo/number_insight.rb +6 -4
- data/lib/nexmo/number_insight/response.rb +5 -0
- data/lib/nexmo/numbers.rb +20 -12
- data/lib/nexmo/numbers/list_response.rb +9 -0
- data/lib/nexmo/numbers/response.rb +7 -0
- data/lib/nexmo/pricing.rb +2 -2
- data/lib/nexmo/pricing_types.rb +4 -4
- data/lib/nexmo/redact.rb +1 -1
- data/lib/nexmo/response.rb +23 -0
- data/lib/nexmo/secrets.rb +7 -7
- data/lib/nexmo/secrets/list_response.rb +9 -0
- data/lib/nexmo/{errors/server_error.rb → server_error.rb} +0 -0
- data/lib/nexmo/sms.rb +17 -3
- data/lib/nexmo/sms/response.rb +7 -0
- data/lib/nexmo/verify.rb +10 -8
- data/lib/nexmo/verify/response.rb +5 -0
- data/lib/nexmo/version.rb +1 -1
- data/nexmo.gemspec +4 -2
- metadata +45 -20
- data/lib/nexmo/applications_v2.rb +0 -102
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5e702df1de8b82ca41c9e2eb4c74d728dcb085bb9acfa8c5f923f4d784fae31f
|
4
|
+
data.tar.gz: d57281c6ca1f226264089cf7b8fb1f9225387d0e467260db4425f1ae80dbf545
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3e698a4c3111bd3617256d548ac937b63c8b7d32bc08214eaa5fa17ee5d3725a03786a45e5fb2df6ee4e85e9e3db1f3668eaac47c92aeb0f4a0cee54575cff39
|
7
|
+
data.tar.gz: 6c395081cef140f543c2029ccc14a6f248467db19696c0f1455013253435afd677d224570d756d07a010fef3eb37cfd561015bf200bbb94adfecb4cfdaa86dc4
|
data/README.md
CHANGED
@@ -8,26 +8,16 @@ need a Nexmo account. Sign up [for free at nexmo.com][signup].
|
|
8
8
|
* [Requirements](#requirements)
|
9
9
|
* [Installation](#installation)
|
10
10
|
* [Usage](#usage)
|
11
|
-
* [SMS API](#sms-api)
|
12
|
-
* [2FA API](#2fa-api)
|
13
|
-
* [Voice API](#voice-api)
|
14
|
-
* [Verify API](#verify-api)
|
15
|
-
* [Conversation API](#conversation-api)
|
16
|
-
* [Number Insight API](#number-insight-api)
|
17
|
-
* [Application API](#application-api)
|
18
|
-
* [Numbers API](#numbers-api)
|
19
|
-
* [Secret Management API](#secret-management-api)
|
20
|
-
* [Redact API](#redact-api)
|
21
11
|
* [Logging](#logging)
|
22
12
|
* [JWT authentication](#jwt-authentication)
|
23
13
|
* [Webhook signatures](#webhook-signatures)
|
24
|
-
* [
|
14
|
+
* [Documentation](#documentation)
|
25
15
|
* [License](#license)
|
26
16
|
|
27
17
|
|
28
18
|
## Requirements
|
29
19
|
|
30
|
-
Nexmo Ruby supports CRuby 2.
|
20
|
+
Nexmo Ruby supports MRI/CRuby (2.5 or newer), JRuby (9.2.x), and Truffleruby.
|
31
21
|
|
32
22
|
|
33
23
|
## Installation
|
@@ -55,421 +45,20 @@ Then construct a client object with your key and secret:
|
|
55
45
|
client = Nexmo::Client.new(api_key: 'YOUR-API-KEY', api_secret: 'YOUR-API-SECRET')
|
56
46
|
```
|
57
47
|
|
58
|
-
You can now use the client object to
|
59
|
-
[start a verification](#start-a-verification), or [create an application](#create-an-application).
|
60
|
-
|
61
|
-
For production you can specify the `NEXMO_API_KEY` and `NEXMO_API_SECRET`
|
62
|
-
environment variables instead of specifying the key and secret explicitly,
|
63
|
-
keeping your credentials out of source control.
|
64
|
-
|
65
|
-
|
66
|
-
## Credentials
|
67
|
-
|
68
|
-
To check signatures for incoming webhook requests you'll also need to specify
|
69
|
-
the `signature_secret` argument:
|
70
|
-
|
71
|
-
```ruby
|
72
|
-
client = Nexmo::Client.new(signature_secret: 'secret')
|
73
|
-
```
|
74
|
-
|
75
|
-
Alternatively you can set the `NEXMO_SIGNATURE_SECRET` environment variable.
|
76
|
-
|
77
|
-
To call newer endpoints that support JWT authentication such as the Voice API you'll
|
78
|
-
also need to specify the `application_id` and `private_key` arguments. For example:
|
79
|
-
|
80
|
-
```ruby
|
81
|
-
client = Nexmo::Client.new(application_id: application_id, private_key: private_key)
|
82
|
-
```
|
83
|
-
|
84
|
-
Both arguments should have string values corresponding to the `id` and `private_key`
|
85
|
-
values returned in a ["create an application"](#create-an-application) response. These
|
86
|
-
credentials can be stored in a datastore, in environment variables, on disk outside
|
87
|
-
of source control, or in some kind of key management infrastructure.
|
88
|
-
|
89
|
-
|
90
|
-
## SMS API
|
91
|
-
|
92
|
-
### Send an SMS
|
93
|
-
|
94
|
-
```ruby
|
95
|
-
response = client.sms.send(from: 'Ruby', to: 'YOUR NUMBER', text: 'Hello world')
|
96
|
-
|
97
|
-
if response.messages.first.status == '0'
|
98
|
-
puts "Sent message id=#{response.messages.first.message_id}"
|
99
|
-
else
|
100
|
-
puts "Error: #{response.messages.first.error_text}"
|
101
|
-
end
|
102
|
-
```
|
103
|
-
|
104
|
-
Docs: [https://developer.nexmo.com/api/sms#send-an-sms](https://developer.nexmo.com/api/sms?utm_source=DEV_REL&utm_medium=github&utm_campaign=ruby-client-library#send-an-sms)
|
105
|
-
|
106
|
-
|
107
|
-
## 2FA API
|
108
|
-
|
109
|
-
### Send a 2FA Token
|
110
|
-
|
111
|
-
```ruby
|
112
|
-
response = client.tfa.send(to: 'YOUR NUMBER', pin: '12345')
|
113
|
-
|
114
|
-
if response.messages.first.status == '0'
|
115
|
-
puts "Sent message id=#{response.messages.first.message_id}"
|
116
|
-
else
|
117
|
-
puts "Error: #{response.messages.first.error_text}"
|
118
|
-
end
|
119
|
-
```
|
120
|
-
|
121
|
-
Docs: [https://developer.nexmo.com/api/sms/us-short-codes/2fa](https://developer.nexmo.com/api/sms/us-short-codes/2fa?utm_source=DEV_REL&utm_medium=github&utm_campaign=ruby-client-library)
|
122
|
-
|
123
|
-
|
124
|
-
## Voice API
|
125
|
-
|
126
|
-
### Create an outbound call
|
127
|
-
|
128
|
-
```ruby
|
129
|
-
response = client.calls.create({
|
130
|
-
to: [{type: 'phone', number: '14843331234'}],
|
131
|
-
from: {type: 'phone', number: '14843335555'},
|
132
|
-
answer_url: ['https://example.com/answer']
|
133
|
-
})
|
134
|
-
```
|
135
|
-
|
136
|
-
Docs: [https://developer.nexmo.com/api/voice#createCall](https://developer.nexmo.com/api/voice?utm_source=DEV_REL&utm_medium=github&utm_campaign=ruby-client-library#createCall)
|
137
|
-
|
138
|
-
### Get details of your calls
|
139
|
-
|
140
|
-
```ruby
|
141
|
-
response = client.calls.list
|
142
|
-
```
|
143
|
-
|
144
|
-
Docs: [https://developer.nexmo.com/api/voice#getCalls](https://developer.nexmo.com/api/voice?utm_source=DEV_REL&utm_medium=github&utm_campaign=ruby-client-library#getCalls)
|
145
|
-
|
146
|
-
### Get detail of a specific call
|
147
|
-
|
148
|
-
```ruby
|
149
|
-
response = client.calls.get(uuid)
|
150
|
-
```
|
151
|
-
|
152
|
-
Docs: [https://developer.nexmo.com/api/voice#getCall](https://developer.nexmo.com/api/voice?utm_source=DEV_REL&utm_medium=github&utm_campaign=ruby-client-library#getCall)
|
153
|
-
|
154
|
-
### Modify an in progress call
|
155
|
-
|
156
|
-
```ruby
|
157
|
-
response = client.calls.hangup(uuid)
|
158
|
-
```
|
159
|
-
|
160
|
-
Docs: [https://developer.nexmo.com/api/voice#updateCall](https://developer.nexmo.com/api/voice?utm_source=DEV_REL&utm_medium=github&utm_campaign=ruby-client-library#updateCall)
|
161
|
-
|
162
|
-
### Play an audio file into a call
|
163
|
-
|
164
|
-
```ruby
|
165
|
-
stream_url = 'https://nexmo-community.github.io/ncco-examples/assets/voice_api_audio_streaming.mp3'
|
166
|
-
|
167
|
-
response = client.calls.stream.start(uuid, stream_url: [stream_url])
|
168
|
-
```
|
169
|
-
|
170
|
-
Docs: [https://developer.nexmo.com/api/voice#startStream](https://developer.nexmo.com/api/voice?utm_source=DEV_REL&utm_medium=github&utm_campaign=ruby-client-library#startStream)
|
171
|
-
|
172
|
-
### Stop playing an audio file into a call
|
173
|
-
|
174
|
-
```ruby
|
175
|
-
response = client.calls.stream.stop(uuid)
|
176
|
-
```
|
177
|
-
|
178
|
-
Docs: [https://developer.nexmo.com/api/voice#stopStream](https://developer.nexmo.com/api/voice?utm_source=DEV_REL&utm_medium=github&utm_campaign=ruby-client-library#stopStream)
|
179
|
-
|
180
|
-
### Play text to speech into a call
|
181
|
-
|
182
|
-
```ruby
|
183
|
-
response = client.calls.talk.start(uuid, text: 'Hello')
|
184
|
-
```
|
185
|
-
|
186
|
-
Docs: [https://developer.nexmo.com/api/voice#startTalk](https://developer.nexmo.com/api/voice?utm_source=DEV_REL&utm_medium=github&utm_campaign=ruby-client-library#startTalk)
|
187
|
-
|
188
|
-
### Stop text to speech in a call
|
189
|
-
|
190
|
-
```ruby
|
191
|
-
response = client.calls.talk.stop(uuid)
|
192
|
-
```
|
193
|
-
|
194
|
-
Docs: [https://developer.nexmo.com/api/voice#stopTalk](https://developer.nexmo.com/api/voice?utm_source=DEV_REL&utm_medium=github&utm_campaign=ruby-client-library#stopTalk)
|
195
|
-
|
196
|
-
### Play DTMF tones into a call
|
197
|
-
|
198
|
-
```ruby
|
199
|
-
response = client.calls.dtmf.send(uuid, digits: '1234')
|
200
|
-
```
|
201
|
-
|
202
|
-
Docs: [https://developer.nexmo.com/api/voice#startDTMF](https://developer.nexmo.com/api/voice?utm_source=DEV_REL&utm_medium=github&utm_campaign=ruby-client-library#startDTMF)
|
203
|
-
|
204
|
-
|
205
|
-
## Verify API
|
206
|
-
|
207
|
-
### Start a verification
|
208
|
-
|
209
|
-
```ruby
|
210
|
-
response = client.verify.request(number: '441632960960', brand: 'MyApp')
|
211
|
-
|
212
|
-
if response.status == '0'
|
213
|
-
puts "Started verification request_id=#{response.request_id}"
|
214
|
-
else
|
215
|
-
puts "Error: #{response.error_text}"
|
216
|
-
end
|
217
|
-
```
|
218
|
-
|
219
|
-
Docs: [https://developer.nexmo.com/api/verify#verify-request](https://developer.nexmo.com/api/verify?utm_source=DEV_REL&utm_medium=github&utm_campaign=ruby-client-library#verify-request)
|
220
|
-
|
221
|
-
The response contains a verification request id which you will need to store temporarily.
|
222
|
-
|
223
|
-
### Check a verification
|
224
|
-
|
225
|
-
```ruby
|
226
|
-
response = client.verify.check(request_id: '00e6c3377e5348cdaf567e1417c707a5', code: '1234')
|
227
|
-
|
228
|
-
if response.status == '0'
|
229
|
-
puts "Verification complete, event_id=#{response.event_id}"
|
230
|
-
else
|
231
|
-
puts "Error: #{response.error_text}"
|
232
|
-
end
|
233
|
-
```
|
234
|
-
|
235
|
-
Docs: [https://developer.nexmo.com/api/verify#verify-check](https://developer.nexmo.com/api/verify?utm_source=DEV_REL&utm_medium=github&utm_campaign=ruby-client-library#verify-check)
|
236
|
-
|
237
|
-
The verification request id comes from the call to `client.verify.request`.
|
238
|
-
|
239
|
-
The PIN code is entered into your application by the user.
|
240
|
-
|
241
|
-
### Cancel a verification
|
242
|
-
|
243
|
-
```ruby
|
244
|
-
client.verify.cancel('00e6c3377e5348cdaf567e1417c707a5')
|
245
|
-
```
|
246
|
-
|
247
|
-
Docs: [https://developer.nexmo.com/api/verify#verify-control](https://developer.nexmo.com/api/verify?utm_source=DEV_REL&utm_medium=github&utm_campaign=ruby-client-library#verify-control)
|
248
|
-
|
249
|
-
### Trigger next verification step
|
250
|
-
|
251
|
-
```ruby
|
252
|
-
client.verify.trigger_next_event('00e6c3377e5348cdaf567e1417c707a5')
|
253
|
-
```
|
254
|
-
|
255
|
-
Docs: [https://developer.nexmo.com/api/verify#verify-control](https://developer.nexmo.com/api/verify?utm_source=DEV_REL&utm_medium=github&utm_campaign=ruby-client-library?utm_source=DEV_REL&utm_medium=github&utm_campaign=ruby-client-library#verify-control)
|
256
|
-
|
257
|
-
|
258
|
-
## Conversation API
|
259
|
-
|
260
|
-
### Create a conversation
|
261
|
-
|
262
|
-
```ruby
|
263
|
-
response = client.conversations.create(name: 'Example Conversation', display_name: 'Example Display Name')
|
264
|
-
```
|
265
|
-
|
266
|
-
Docs: [https://developer.nexmo.com/api/conversation#createConversation](https://developer.nexmo.com/api/conversation?utm_source=DEV_REL&utm_medium=github&utm_campaign=ruby-client-library#createConversation)
|
267
|
-
|
268
|
-
### Retrieve a list of conversations
|
269
|
-
|
270
|
-
```ruby
|
271
|
-
response = client.conversations.list
|
272
|
-
```
|
273
|
-
|
274
|
-
Docs: [https://developer.nexmo.com/api/conversation#listConversations](https://developer.nexmo.com/api/conversation?utm_source=DEV_REL&utm_medium=github&utm_campaign=ruby-client-library#listConversations)
|
275
|
-
|
276
|
-
### Retrieve a single conversation
|
48
|
+
You can now use the client object to call Nexmo APIs. For example, to send an SMS:
|
277
49
|
|
278
50
|
```ruby
|
279
|
-
|
51
|
+
client.sms.send(from: 'Ruby', to: '447700900000', text: 'Hello world')
|
280
52
|
```
|
281
53
|
|
282
|
-
|
283
|
-
|
284
|
-
|
285
|
-
|
286
|
-
```ruby
|
287
|
-
response = client.conversations.update(conversation_id, answer_method: 'PUT')
|
288
|
-
```
|
289
|
-
|
290
|
-
Docs: [https://developer.nexmo.com/api/conversation#replaceConversation](https://developer.nexmo.com/api/conversation?utm_source=DEV_REL&utm_medium=github&utm_campaign=ruby-client-library#replaceConversation)
|
291
|
-
|
292
|
-
### Delete a conversation
|
293
|
-
|
294
|
-
```ruby
|
295
|
-
response = client.conversations.delete(conversation_id)
|
296
|
-
```
|
297
|
-
|
298
|
-
Docs: [https://developer.nexmo.com/api/conversation#deleteConversation](https://developer.nexmo.com/api/application?utm_source=DEV_REL&utm_medium=github&utm_campaign=ruby-client-library#deleteConversation)
|
299
|
-
|
300
|
-
|
301
|
-
## Number Insight API
|
302
|
-
|
303
|
-
### Basic Number Insight
|
304
|
-
|
305
|
-
```ruby
|
306
|
-
client.number_insight.basic(number: '447700900000')
|
307
|
-
```
|
308
|
-
|
309
|
-
Docs: [https://developer.nexmo.com/api/number-insight#request](https://developer.nexmo.com/api/number-insight?utm_source=DEV_REL&utm_medium=github&utm_campaign=ruby-client-library?utm_source=DEV_REL&utm_medium=github&utm_campaign=ruby-client-library#request)
|
310
|
-
|
311
|
-
### Standard Number Insight
|
312
|
-
|
313
|
-
```ruby
|
314
|
-
client.number_insight.standard(number: '447700900000')
|
315
|
-
```
|
316
|
-
|
317
|
-
Docs: [https://developer.nexmo.com/api/number-insight#request](https://developer.nexmo.com/api/number-insight?utm_source=DEV_REL&utm_medium=github&utm_campaign=ruby-client-library?utm_source=DEV_REL&utm_medium=github&utm_campaign=ruby-client-library#request)
|
318
|
-
|
319
|
-
### Advanced Number Insight
|
320
|
-
|
321
|
-
```ruby
|
322
|
-
client.number_insight.advanced(number: '447700900000')
|
323
|
-
```
|
324
|
-
|
325
|
-
Docs: [https://developer.nexmo.com/api/number-insight#request](https://developer.nexmo.com/api/number-insight?utm_source=DEV_REL&utm_medium=github&utm_campaign=ruby-client-library?utm_source=DEV_REL&utm_medium=github&utm_campaign=ruby-client-library#request)
|
326
|
-
|
327
|
-
### Advanced Number Insight Async
|
328
|
-
|
329
|
-
```ruby
|
330
|
-
client.number_insight.advanced_async(number: '447700900000', callback: webhook_url)
|
331
|
-
```
|
332
|
-
|
333
|
-
The results of the API call will be sent via HTTP POST to the webhook URL specified in the callback parameter.
|
334
|
-
|
335
|
-
Docs: [https://developer.nexmo.com/api/number-insight#request](https://developer.nexmo.com/api/number-insight?utm_source=DEV_REL&utm_medium=github&utm_campaign=ruby-client-library?utm_source=DEV_REL&utm_medium=github&utm_campaign=ruby-client-library#request)
|
336
|
-
|
337
|
-
|
338
|
-
## Application API
|
339
|
-
|
340
|
-
### Create an application
|
341
|
-
|
342
|
-
```ruby
|
343
|
-
response = client.applications.create(name: 'Example App', type: 'voice', answer_url: answer_url, event_url: event_url)
|
344
|
-
```
|
345
|
-
|
346
|
-
Docs: [https://developer.nexmo.com/api/application#create-an-application](https://developer.nexmo.com/api/application?utm_source=DEV_REL&utm_medium=github&utm_campaign=ruby-client-library#create-an-application)
|
347
|
-
|
348
|
-
### Retrieve a list of applications
|
349
|
-
|
350
|
-
```ruby
|
351
|
-
response = client.applications.list
|
352
|
-
```
|
353
|
-
|
354
|
-
Docs: [https://developer.nexmo.com/api/application#retrieve-your-applications](https://developer.nexmo.com/api/application?utm_source=DEV_REL&utm_medium=github&utm_campaign=ruby-client-library#retrieve-your-applications)
|
355
|
-
|
356
|
-
### Retrieve a single application
|
357
|
-
|
358
|
-
```ruby
|
359
|
-
response = client.applications.get(uuid)
|
360
|
-
```
|
361
|
-
|
362
|
-
Docs: [https://developer.nexmo.com/api/application#retrieve-an-application](https://developer.nexmo.com/api/application?utm_source=DEV_REL&utm_medium=github&utm_campaign=ruby-client-library#retrieve-an-application)
|
363
|
-
|
364
|
-
### Update an application
|
365
|
-
|
366
|
-
```ruby
|
367
|
-
response = client.applications.update(uuid, answer_method: 'POST')
|
368
|
-
```
|
369
|
-
|
370
|
-
Docs: [https://developer.nexmo.com/api/application#update-an-application](https://developer.nexmo.com/api/application?utm_source=DEV_REL&utm_medium=github&utm_campaign=ruby-client-library#update-an-application)
|
371
|
-
|
372
|
-
### Delete an application
|
373
|
-
|
374
|
-
```ruby
|
375
|
-
response = client.applications.delete(uuid)
|
376
|
-
```
|
377
|
-
|
378
|
-
Docs: [https://developer.nexmo.com/api/application#destroy-an-application](https://developer.nexmo.com/api/application?utm_source=DEV_REL&utm_medium=github&utm_campaign=ruby-client-library#destroy-an-application)
|
379
|
-
|
380
|
-
|
381
|
-
## Numbers API
|
382
|
-
|
383
|
-
### List owned numbers
|
384
|
-
|
385
|
-
```ruby
|
386
|
-
client.numbers.list
|
387
|
-
```
|
388
|
-
|
389
|
-
Docs: [https://developer.nexmo.com/api/developer/numbers#list-owned-numbers](https://developer.nexmo.com/api/developer/numbers?utm_source=DEV_REL&utm_medium=github&utm_campaign=ruby-client-library#list-owned-numbers)
|
390
|
-
|
391
|
-
### Search available numbers
|
392
|
-
|
393
|
-
```ruby
|
394
|
-
client.numbers.search(country: 'GB')
|
395
|
-
```
|
396
|
-
|
397
|
-
Docs: [https://developer.nexmo.com/api/developer/numbers#search-available-numbers](https://developer.nexmo.com/api/developer/numbers?utm_source=DEV_REL&utm_medium=github&utm_campaign=ruby-client-library#search-available-numbers)
|
398
|
-
|
399
|
-
### Buy a number
|
400
|
-
|
401
|
-
```ruby
|
402
|
-
client.numbers.buy(country: 'GB', msisdn: '447700900000')
|
403
|
-
```
|
404
|
-
|
405
|
-
Docs: [https://developer.nexmo.com/api/developer/numbers#buy-a-number](https://developer.nexmo.com/api/developer/numbers?utm_source=DEV_REL&utm_medium=github&utm_campaign=ruby-client-library#buy-a-number)
|
406
|
-
|
407
|
-
### Cancel a number
|
408
|
-
|
409
|
-
```ruby
|
410
|
-
client.numbers.cancel(country: 'GB', msisdn: '447700900000')
|
411
|
-
```
|
412
|
-
|
413
|
-
Docs: [https://developer.nexmo.com/api/developer/numbers#cancel-a-number](https://developer.nexmo.com/api/developer/numbers?utm_source=DEV_REL&utm_medium=github&utm_campaign=ruby-client-library#cancel-a-number)
|
414
|
-
|
415
|
-
### Update a number
|
416
|
-
|
417
|
-
```ruby
|
418
|
-
client.numbers.update(country: 'GB', msisdn: '447700900000', voice_callback_type: 'app', voice_callback_value: application_id)
|
419
|
-
```
|
420
|
-
|
421
|
-
Docs: [https://developer.nexmo.com/api/developer/numbers#update-a-number](https://developer.nexmo.com/api/developer/numbers?utm_source=DEV_REL&utm_medium=github&utm_campaign=ruby-client-library#update-a-number)
|
422
|
-
|
423
|
-
|
424
|
-
## Secret Management API
|
425
|
-
|
426
|
-
### Retrieve a list of secrets
|
427
|
-
|
428
|
-
```ruby
|
429
|
-
client.secrets.list
|
430
|
-
```
|
431
|
-
|
432
|
-
Docs: [https://developer.nexmo.com/api/account/secret-management#retrieveSecrets](https://developer.nexmo.com/api/account/secret-management?utm_source=DEV_REL&utm_medium=github&utm_campaign=ruby-client-library#retrieveSecrets)
|
433
|
-
|
434
|
-
### Create a secret
|
435
|
-
|
436
|
-
```ruby
|
437
|
-
client.secrets.create(secret: 't0ps3cr3t')
|
438
|
-
```
|
439
|
-
|
440
|
-
Docs: [https://developer.nexmo.com/api/account/secret-management#createSecret](https://developer.nexmo.com/api/account/secret-management?utm_source=DEV_REL&utm_medium=github&utm_campaign=ruby-client-library#createSecret)
|
441
|
-
|
442
|
-
### Retrieve a secret
|
443
|
-
|
444
|
-
```ruby
|
445
|
-
client.secrets.get(secret_id)
|
446
|
-
```
|
447
|
-
|
448
|
-
Docs: [https://developer.nexmo.com/api/account/secret-management#retrieveSecret](https://developer.nexmo.com/api/account/secret-management?utm_source=DEV_REL&utm_medium=github&utm_campaign=ruby-client-library#retrieveSecret)
|
449
|
-
|
450
|
-
### Revoke a secret
|
451
|
-
|
452
|
-
```ruby
|
453
|
-
client.secrets.revoke(secret_id)
|
454
|
-
```
|
455
|
-
|
456
|
-
Docs: [https://developer.nexmo.com/api/account/secret-management#revokeSecret](https://developer.nexmo.com/api/account/secret-management?utm_source=DEV_REL&utm_medium=github&utm_campaign=ruby-client-library#revokeSecret)
|
457
|
-
|
458
|
-
|
459
|
-
## Redact API
|
460
|
-
|
461
|
-
### Redact a specific message
|
462
|
-
|
463
|
-
```ruby
|
464
|
-
client.redact.transaction(id: '00A0B0C0', product: 'sms')
|
465
|
-
```
|
466
|
-
|
467
|
-
Docs: [https://developer.nexmo.com/api/redact#transaction](https://developer.nexmo.com/api/redact?utm_source=DEV_REL&utm_medium=github&utm_campaign=ruby-client-library#transaction)
|
54
|
+
For production you can specify the `NEXMO_API_KEY` and `NEXMO_API_SECRET`
|
55
|
+
environment variables instead of specifying the key and secret explicitly,
|
56
|
+
keeping your credentials out of source control.
|
468
57
|
|
469
58
|
|
470
59
|
## Logging
|
471
60
|
|
472
|
-
Use the logger option
|
61
|
+
Use the logger option to specify a logger. For example:
|
473
62
|
|
474
63
|
```ruby
|
475
64
|
require 'logger'
|
@@ -486,11 +75,21 @@ To disable logging set the logger to `nil`.
|
|
486
75
|
|
487
76
|
## JWT authentication
|
488
77
|
|
489
|
-
|
78
|
+
To call newer endpoints that support JWT authentication such as the Voice API you'll
|
79
|
+
also need to specify the `application_id` and `private_key` options. For example:
|
80
|
+
|
81
|
+
```ruby
|
82
|
+
client = Nexmo::Client.new(application_id: application_id, private_key: private_key)
|
83
|
+
```
|
84
|
+
|
85
|
+
Both arguments should have string values corresponding to the `id` and `private_key`
|
86
|
+
values returned in a ["create an application"](https://developer.nexmo.com/api/application.v2#createApplication)
|
87
|
+
response. These credentials can be stored in a datastore, in environment variables,
|
88
|
+
on disk outside of source control, or in some kind of key management infrastructure.
|
490
89
|
|
491
|
-
|
492
|
-
directly
|
493
|
-
|
90
|
+
By default the library generates a short lived JWT per request. To generate a long lived
|
91
|
+
JWT for multiple requests or to specify JWT claims directly use `Nexmo::JWT.generate` and
|
92
|
+
the token option. For example:
|
494
93
|
|
495
94
|
```ruby
|
496
95
|
claims = {
|
@@ -502,12 +101,16 @@ claims = {
|
|
502
101
|
|
503
102
|
private_key = File.read('path/to/private.key')
|
504
103
|
|
505
|
-
|
104
|
+
token = Nexmo::JWT.generate(claims, private_key)
|
105
|
+
|
106
|
+
client = Nexmo::Client.new(token: token)
|
506
107
|
````
|
507
108
|
|
508
109
|
|
509
110
|
## Webhook signatures
|
510
111
|
|
112
|
+
To check webhook signatures you'll also need to specify the `signature_secret` option. For example:
|
113
|
+
|
511
114
|
```ruby
|
512
115
|
client = Nexmo::Client.new(signature_secret: 'secret')
|
513
116
|
|
@@ -518,51 +121,18 @@ else
|
|
518
121
|
end
|
519
122
|
```
|
520
123
|
|
521
|
-
|
124
|
+
Alternatively you can set the `NEXMO_SIGNATURE_SECRET` environment variable.
|
522
125
|
|
523
126
|
Note: you'll need to contact support@nexmo.com to enable message signing on your account.
|
524
127
|
|
525
128
|
|
526
|
-
##
|
527
|
-
|
528
|
-
|
529
|
-
|
530
|
-
|
531
|
-
|
532
|
-
|
533
|
-
* [X] Numbers
|
534
|
-
* [X] Search
|
535
|
-
* [X] Buy
|
536
|
-
* [X] Cancel
|
537
|
-
* [X] Update
|
538
|
-
* Number Insight
|
539
|
-
* [X] Basic
|
540
|
-
* [X] Standard
|
541
|
-
* [X] Advanced
|
542
|
-
* [ ] Webhook Notification
|
543
|
-
* Verify
|
544
|
-
* [X] Verify
|
545
|
-
* [X] Check
|
546
|
-
* [X] Search
|
547
|
-
* [X] Control
|
548
|
-
* Messaging
|
549
|
-
* [X] Send
|
550
|
-
* [ ] Delivery Receipt
|
551
|
-
* [ ] Inbound Messages
|
552
|
-
* [X] Search
|
553
|
-
* [X] Message
|
554
|
-
* [X] Messages
|
555
|
-
* [X] Rejections
|
556
|
-
* [X] US Short Codes
|
557
|
-
* [X] Two-Factor Authentication
|
558
|
-
* [X] Event Based Alerts
|
559
|
-
* [X] Sending Alerts
|
560
|
-
* [X] Campaign Subscription Management
|
561
|
-
* Voice
|
562
|
-
* [X] Outbound Calls
|
563
|
-
* [ ] Inbound Call
|
564
|
-
* [X] Text-To-Speech Call
|
565
|
-
* [X] Text-To-Speech Prompt
|
129
|
+
## Documentation
|
130
|
+
|
131
|
+
Nexmo Ruby documentation: https://www.rubydoc.info/github/nexmo/nexmo-ruby
|
132
|
+
|
133
|
+
Nexmo Ruby code examples: https://github.com/Nexmo/nexmo-ruby-code-snippets
|
134
|
+
|
135
|
+
Nexmo API reference: https://developer.nexmo.com/api
|
566
136
|
|
567
137
|
|
568
138
|
## License
|