nexmo 5.9.0 → 6.0.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|