telerivet 1.0.2
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 +7 -0
- data/lib/cacert.pem +3895 -0
- data/lib/telerivet/apicursor.rb +156 -0
- data/lib/telerivet/contact.rb +403 -0
- data/lib/telerivet/contactservicestate.rb +108 -0
- data/lib/telerivet/datarow.rb +91 -0
- data/lib/telerivet/datatable.rb +191 -0
- data/lib/telerivet/entity.rb +124 -0
- data/lib/telerivet/group.rb +181 -0
- data/lib/telerivet/label.rb +134 -0
- data/lib/telerivet/message.rb +300 -0
- data/lib/telerivet/mobilemoneyreceipt.rb +187 -0
- data/lib/telerivet/phone.rb +229 -0
- data/lib/telerivet/project.rb +919 -0
- data/lib/telerivet/scheduledmessage.rb +185 -0
- data/lib/telerivet/service.rb +296 -0
- data/lib/telerivet.rb +193 -0
- metadata +59 -0
@@ -0,0 +1,919 @@
|
|
1
|
+
|
2
|
+
module Telerivet
|
3
|
+
|
4
|
+
#
|
5
|
+
# Represents a Telerivet project.
|
6
|
+
#
|
7
|
+
# Provides methods for sending and scheduling messages, as well as
|
8
|
+
# accessing, creating and updating a variety of entities, including contacts, messages,
|
9
|
+
# scheduled messages, groups, labels, phones, services, and data tables.
|
10
|
+
#
|
11
|
+
# Fields:
|
12
|
+
#
|
13
|
+
# - id (string, max 34 characters)
|
14
|
+
# * ID of the project
|
15
|
+
# * Read-only
|
16
|
+
#
|
17
|
+
# - name
|
18
|
+
# * Name of the project
|
19
|
+
# * Updatable via API
|
20
|
+
#
|
21
|
+
# - timezone_id
|
22
|
+
# * Default TZ database timezone ID; see
|
23
|
+
# <http://en.wikipedia.org/wiki/List_of_tz_database_time_zones>
|
24
|
+
# * Read-only
|
25
|
+
#
|
26
|
+
# - vars (Hash)
|
27
|
+
# * Custom variables stored for this project
|
28
|
+
# * Updatable via API
|
29
|
+
#
|
30
|
+
class Project < Entity
|
31
|
+
#
|
32
|
+
# Sends one message (SMS or USSD request).
|
33
|
+
#
|
34
|
+
# Arguments:
|
35
|
+
# - options (Hash)
|
36
|
+
# * Required
|
37
|
+
#
|
38
|
+
# - content
|
39
|
+
# * Content of the message to send
|
40
|
+
# * Required if sending SMS message
|
41
|
+
#
|
42
|
+
# - to_number (string)
|
43
|
+
# * Phone number to send the message to
|
44
|
+
# * Required if contact_id not set
|
45
|
+
#
|
46
|
+
# - contact_id
|
47
|
+
# * ID of the contact to send the message to
|
48
|
+
# * Required if to_number not set
|
49
|
+
#
|
50
|
+
# - route_id
|
51
|
+
# * ID of the phone or route to send the message from
|
52
|
+
# * Default: default sender phone ID for your project
|
53
|
+
#
|
54
|
+
# - status_url
|
55
|
+
# * Webhook callback URL to be notified when message status changes
|
56
|
+
#
|
57
|
+
# - status_secret
|
58
|
+
# * POST parameter 'secret' passed to status_url
|
59
|
+
#
|
60
|
+
# - is_template (bool)
|
61
|
+
# * Set to true to evaluate variables like [[contact.name]] in message content. [(See
|
62
|
+
# available variables)](#variables)
|
63
|
+
# * Default: false
|
64
|
+
#
|
65
|
+
# - label_ids (array)
|
66
|
+
# * List of IDs of labels to add to this message
|
67
|
+
#
|
68
|
+
# - message_type
|
69
|
+
# * Type of message to send
|
70
|
+
# * Allowed values: sms, ussd
|
71
|
+
# * Default: sms
|
72
|
+
#
|
73
|
+
# - vars (Hash)
|
74
|
+
# * Custom variables to store with the message
|
75
|
+
#
|
76
|
+
# - priority (int)
|
77
|
+
# * Priority of the message (currently only observed for Android phones). Telerivet
|
78
|
+
# will attempt to send messages with higher priority numbers first (for example, so
|
79
|
+
# you can prioritize an auto-reply ahead of a bulk message to a large group).
|
80
|
+
# * Default: 1
|
81
|
+
#
|
82
|
+
# Returns:
|
83
|
+
# Telerivet::Message
|
84
|
+
#
|
85
|
+
def send_message(options)
|
86
|
+
require_relative 'message'
|
87
|
+
Message.new(@api, @api.do_request("POST", get_base_api_path() + "/messages/send", options))
|
88
|
+
end
|
89
|
+
|
90
|
+
#
|
91
|
+
# Sends an SMS message (optionally with mail-merge templates) to a group or a list of up to
|
92
|
+
# 500 phone numbers
|
93
|
+
#
|
94
|
+
# Arguments:
|
95
|
+
# - options (Hash)
|
96
|
+
# * Required
|
97
|
+
#
|
98
|
+
# - content
|
99
|
+
# * Content of the message to send
|
100
|
+
# * Required
|
101
|
+
#
|
102
|
+
# - group_id
|
103
|
+
# * ID of the group to send the message to
|
104
|
+
# * Required if to_numbers not set
|
105
|
+
#
|
106
|
+
# - to_numbers (array of strings)
|
107
|
+
# * List of up to 500 phone numbers to send the message to
|
108
|
+
# * Required if group_id not set
|
109
|
+
#
|
110
|
+
# - route_id
|
111
|
+
# * ID of the phone or route to send the message from
|
112
|
+
# * Default: default sender phone ID
|
113
|
+
#
|
114
|
+
# - status_url
|
115
|
+
# * Webhook callback URL to be notified when message status changes
|
116
|
+
#
|
117
|
+
# - label_ids (array)
|
118
|
+
# * Array of IDs of labels to add to all messages sent (maximum 5)
|
119
|
+
#
|
120
|
+
# - status_secret
|
121
|
+
# * POST parameter 'secret' passed to status_url
|
122
|
+
#
|
123
|
+
# - exclude_contact_id
|
124
|
+
# * Optionally excludes one contact from receiving the message (only when group_id is
|
125
|
+
# set)
|
126
|
+
#
|
127
|
+
# - is_template (bool)
|
128
|
+
# * Set to true to evaluate variables like [[contact.name]] in message content [(See
|
129
|
+
# available variables)](#variables)
|
130
|
+
# * Default: false
|
131
|
+
#
|
132
|
+
# - vars (Hash)
|
133
|
+
# * Custom variables to set for each message
|
134
|
+
#
|
135
|
+
# Returns:
|
136
|
+
# (associative array)
|
137
|
+
# - count_queued (int)
|
138
|
+
# * Number of messages queued to send
|
139
|
+
#
|
140
|
+
def send_messages(options)
|
141
|
+
return @api.do_request("POST", get_base_api_path() + "/messages/send_batch", options)
|
142
|
+
end
|
143
|
+
|
144
|
+
#
|
145
|
+
# Schedules an SMS message to a group or single contact. Note that Telerivet only sends
|
146
|
+
# scheduled messages approximately once per minute, so it is not possible to control the exact
|
147
|
+
# second at which a scheduled message is sent.
|
148
|
+
#
|
149
|
+
# Arguments:
|
150
|
+
# - options (Hash)
|
151
|
+
# * Required
|
152
|
+
#
|
153
|
+
# - content
|
154
|
+
# * Content of the message to schedule
|
155
|
+
# * Required
|
156
|
+
#
|
157
|
+
# - group_id
|
158
|
+
# * ID of the group to send the message to
|
159
|
+
# * Required if to_number not set
|
160
|
+
#
|
161
|
+
# - to_number (string)
|
162
|
+
# * Phone number to send the message to
|
163
|
+
# * Required if group_id not set
|
164
|
+
#
|
165
|
+
# - start_time (UNIX timestamp)
|
166
|
+
# * The time that the message will be sent (or first sent for recurring messages)
|
167
|
+
# * Required if start_time_offset not set
|
168
|
+
#
|
169
|
+
# - start_time_offset (int)
|
170
|
+
# * Number of seconds from now until the message is sent
|
171
|
+
# * Required if start_time not set
|
172
|
+
#
|
173
|
+
# - rrule
|
174
|
+
# * A recurrence rule describing the how the schedule repeats, e.g. 'FREQ=MONTHLY' or
|
175
|
+
# 'FREQ=WEEKLY;INTERVAL=2'; see <https://tools.ietf.org/html/rfc2445#section-4.3.10>.
|
176
|
+
# (UNTIL is ignored; use end_time parameter instead).
|
177
|
+
# * Default: COUNT=1 (one-time scheduled message, does not repeat)
|
178
|
+
#
|
179
|
+
# - route_id
|
180
|
+
# * ID of the phone or route to send the message from
|
181
|
+
# * Default: default sender phone ID
|
182
|
+
#
|
183
|
+
# - message_type
|
184
|
+
# * Type of message to send
|
185
|
+
# * Allowed values: sms, ussd
|
186
|
+
# * Default: sms
|
187
|
+
#
|
188
|
+
# - is_template (bool)
|
189
|
+
# * Set to true to evaluate variables like [[contact.name]] in message content
|
190
|
+
# * Default: false
|
191
|
+
#
|
192
|
+
# - label_ids (array)
|
193
|
+
# * Array of IDs of labels to add to the sent messages (maximum 5)
|
194
|
+
#
|
195
|
+
# - timezone_id
|
196
|
+
# * TZ database timezone ID; see
|
197
|
+
# <http://en.wikipedia.org/wiki/List_of_tz_database_time_zones>
|
198
|
+
# * Default: project default timezone
|
199
|
+
#
|
200
|
+
# - end_time (UNIX timestamp)
|
201
|
+
# * Time after which a recurring message will stop (not applicable to non-recurring
|
202
|
+
# scheduled messages)
|
203
|
+
#
|
204
|
+
# - end_time_offset (int)
|
205
|
+
# * Number of seconds from now until the recurring message will stop
|
206
|
+
#
|
207
|
+
# Returns:
|
208
|
+
# Telerivet::ScheduledMessage
|
209
|
+
#
|
210
|
+
def schedule_message(options)
|
211
|
+
require_relative 'scheduledmessage'
|
212
|
+
ScheduledMessage.new(@api, @api.do_request("POST", get_base_api_path() + "/scheduled", options))
|
213
|
+
end
|
214
|
+
|
215
|
+
#
|
216
|
+
# Retrieves OR creates and possibly updates a contact by name or phone number.
|
217
|
+
#
|
218
|
+
# If a phone number is provided, Telerivet will search for an existing
|
219
|
+
# contact with that phone number (including suffix matches to allow finding contacts with
|
220
|
+
# phone numbers in a different format).
|
221
|
+
#
|
222
|
+
# If a phone number is not provided but a name is provided, Telerivet
|
223
|
+
# will search for a contact with that exact name (case insensitive).
|
224
|
+
#
|
225
|
+
# If no existing contact is found, a new contact will be created.
|
226
|
+
#
|
227
|
+
# Then that contact will be updated with any parameters provided
|
228
|
+
# (name, phone_number, and vars).
|
229
|
+
#
|
230
|
+
# Arguments:
|
231
|
+
# - options (Hash)
|
232
|
+
# * Required
|
233
|
+
#
|
234
|
+
# - name
|
235
|
+
# * Name of the contact
|
236
|
+
# * Required if phone_number not set
|
237
|
+
#
|
238
|
+
# - phone_number
|
239
|
+
# * Phone number of the contact
|
240
|
+
# * Required if name not set
|
241
|
+
#
|
242
|
+
# - vars (Hash)
|
243
|
+
# * Custom variables and values to update on the contact
|
244
|
+
#
|
245
|
+
# Returns:
|
246
|
+
# Telerivet::Contact
|
247
|
+
#
|
248
|
+
def get_or_create_contact(options)
|
249
|
+
require_relative 'contact'
|
250
|
+
Contact.new(@api, @api.do_request("POST", get_base_api_path() + "/contacts", options))
|
251
|
+
end
|
252
|
+
|
253
|
+
#
|
254
|
+
# Queries contacts within the given project.
|
255
|
+
#
|
256
|
+
# Arguments:
|
257
|
+
# - options (Hash)
|
258
|
+
#
|
259
|
+
# - name
|
260
|
+
# * Filter contacts by name
|
261
|
+
# * Allowed modifiers: name[ne], name[prefix], name[not_prefix], name[gte], name[gt],
|
262
|
+
# name[lt], name[lte]
|
263
|
+
#
|
264
|
+
# - phone_number
|
265
|
+
# * Filter contacts by phone number
|
266
|
+
# * Allowed modifiers: phone_number[ne], phone_number[prefix],
|
267
|
+
# phone_number[not_prefix], phone_number[gte], phone_number[gt], phone_number[lt],
|
268
|
+
# phone_number[lte]
|
269
|
+
#
|
270
|
+
# - time_created (UNIX timestamp)
|
271
|
+
# * Filter contacts by time created
|
272
|
+
# * Allowed modifiers: time_created[ne], time_created[min], time_created[max]
|
273
|
+
#
|
274
|
+
# - last_message_time (UNIX timestamp)
|
275
|
+
# * Filter contacts by last time a message was sent or received
|
276
|
+
# * Allowed modifiers: last_message_time[exists], last_message_time[ne],
|
277
|
+
# last_message_time[min], last_message_time[max]
|
278
|
+
#
|
279
|
+
# - vars (Hash)
|
280
|
+
# * Filter contacts by value of a custom variable (e.g. vars[email], vars[foo], etc.)
|
281
|
+
# * Allowed modifiers: vars[foo][exists], vars[foo][ne], vars[foo][prefix],
|
282
|
+
# vars[foo][not_prefix], vars[foo][gte], vars[foo][gt], vars[foo][lt], vars[foo][lte],
|
283
|
+
# vars[foo][min], vars[foo][max]
|
284
|
+
#
|
285
|
+
# - sort
|
286
|
+
# * Sort the results based on a field
|
287
|
+
# * Allowed values: default, name, phone_number, last_message_time
|
288
|
+
# * Default: default
|
289
|
+
#
|
290
|
+
# - sort_dir
|
291
|
+
# * Sort the results in ascending or descending order
|
292
|
+
# * Allowed values: asc, desc
|
293
|
+
# * Default: asc
|
294
|
+
#
|
295
|
+
# - page_size (int)
|
296
|
+
# * Number of results returned per page (max 200)
|
297
|
+
# * Default: 50
|
298
|
+
#
|
299
|
+
# - offset (int)
|
300
|
+
# * Number of items to skip from beginning of result set
|
301
|
+
# * Default: 0
|
302
|
+
#
|
303
|
+
# Returns:
|
304
|
+
# Telerivet::APICursor (of Telerivet::Contact)
|
305
|
+
#
|
306
|
+
def query_contacts(options = nil)
|
307
|
+
require_relative 'contact'
|
308
|
+
@api.cursor(Contact, get_base_api_path() + "/contacts", options)
|
309
|
+
end
|
310
|
+
|
311
|
+
#
|
312
|
+
# Retrieves the contact with the given ID.
|
313
|
+
#
|
314
|
+
# Note: This does not make any API requests until you access a property of the Contact.
|
315
|
+
#
|
316
|
+
# Arguments:
|
317
|
+
# - id
|
318
|
+
# * ID of the contact
|
319
|
+
# * Required
|
320
|
+
#
|
321
|
+
# Returns:
|
322
|
+
# Telerivet::Contact
|
323
|
+
#
|
324
|
+
def get_contact_by_id(id)
|
325
|
+
require_relative 'contact'
|
326
|
+
return Contact.new(@api, {'project_id' => self.id, 'id' => id}, false)
|
327
|
+
end
|
328
|
+
|
329
|
+
#
|
330
|
+
# Queries phones within the given project.
|
331
|
+
#
|
332
|
+
# Arguments:
|
333
|
+
# - options (Hash)
|
334
|
+
#
|
335
|
+
# - name
|
336
|
+
# * Filter phones by name
|
337
|
+
# * Allowed modifiers: name[ne], name[prefix], name[not_prefix], name[gte], name[gt],
|
338
|
+
# name[lt], name[lte]
|
339
|
+
#
|
340
|
+
# - phone_number
|
341
|
+
# * Filter phones by phone number
|
342
|
+
# * Allowed modifiers: phone_number[ne], phone_number[prefix],
|
343
|
+
# phone_number[not_prefix], phone_number[gte], phone_number[gt], phone_number[lt],
|
344
|
+
# phone_number[lte]
|
345
|
+
#
|
346
|
+
# - last_active_time (UNIX timestamp)
|
347
|
+
# * Filter phones by last active time
|
348
|
+
# * Allowed modifiers: last_active_time[exists], last_active_time[ne],
|
349
|
+
# last_active_time[min], last_active_time[max]
|
350
|
+
#
|
351
|
+
# - sort
|
352
|
+
# * Sort the results based on a field
|
353
|
+
# * Allowed values: default, name, phone_number
|
354
|
+
# * Default: default
|
355
|
+
#
|
356
|
+
# - sort_dir
|
357
|
+
# * Sort the results in ascending or descending order
|
358
|
+
# * Allowed values: asc, desc
|
359
|
+
# * Default: asc
|
360
|
+
#
|
361
|
+
# - page_size (int)
|
362
|
+
# * Number of results returned per page (max 200)
|
363
|
+
# * Default: 50
|
364
|
+
#
|
365
|
+
# - offset (int)
|
366
|
+
# * Number of items to skip from beginning of result set
|
367
|
+
# * Default: 0
|
368
|
+
#
|
369
|
+
# Returns:
|
370
|
+
# Telerivet::APICursor (of Telerivet::Phone)
|
371
|
+
#
|
372
|
+
def query_phones(options = nil)
|
373
|
+
require_relative 'phone'
|
374
|
+
@api.cursor(Phone, get_base_api_path() + "/phones", options)
|
375
|
+
end
|
376
|
+
|
377
|
+
#
|
378
|
+
# Retrieves the phone with the given ID.
|
379
|
+
#
|
380
|
+
# Note: This does not make any API requests until you access a property of the Phone.
|
381
|
+
#
|
382
|
+
# Arguments:
|
383
|
+
# - id
|
384
|
+
# * ID of the phone - see <https://telerivet.com/dashboard/api>
|
385
|
+
# * Required
|
386
|
+
#
|
387
|
+
# Returns:
|
388
|
+
# Telerivet::Phone
|
389
|
+
#
|
390
|
+
def get_phone_by_id(id)
|
391
|
+
require_relative 'phone'
|
392
|
+
return Phone.new(@api, {'project_id' => self.id, 'id' => id}, false)
|
393
|
+
end
|
394
|
+
|
395
|
+
#
|
396
|
+
# Queries messages within the given project.
|
397
|
+
#
|
398
|
+
# Arguments:
|
399
|
+
# - options (Hash)
|
400
|
+
#
|
401
|
+
# - direction
|
402
|
+
# * Filter messages by direction
|
403
|
+
# * Allowed values: incoming, outgoing
|
404
|
+
#
|
405
|
+
# - message_type
|
406
|
+
# * Filter messages by message_type
|
407
|
+
# * Allowed values: sms, mms, ussd, call
|
408
|
+
#
|
409
|
+
# - source
|
410
|
+
# * Filter messages by source
|
411
|
+
# * Allowed values: phone, provider, web, api, service, webhook, scheduled
|
412
|
+
#
|
413
|
+
# - starred (bool)
|
414
|
+
# * Filter messages by starred/unstarred
|
415
|
+
#
|
416
|
+
# - status
|
417
|
+
# * Filter messages by status
|
418
|
+
# * Allowed values: ignored, processing, received, sent, queued, failed,
|
419
|
+
# failed_queued, cancelled, delivered, not_delivered
|
420
|
+
#
|
421
|
+
# - time_created[min] (UNIX timestamp)
|
422
|
+
# * Filter messages created on or after a particular time
|
423
|
+
#
|
424
|
+
# - time_created[max] (UNIX timestamp)
|
425
|
+
# * Filter messages created before a particular time
|
426
|
+
#
|
427
|
+
# - contact_id
|
428
|
+
# * ID of the contact who sent/received the message
|
429
|
+
#
|
430
|
+
# - phone_id
|
431
|
+
# * ID of the phone that sent/received the message
|
432
|
+
#
|
433
|
+
# - sort
|
434
|
+
# * Sort the results based on a field
|
435
|
+
# * Allowed values: default
|
436
|
+
# * Default: default
|
437
|
+
#
|
438
|
+
# - sort_dir
|
439
|
+
# * Sort the results in ascending or descending order
|
440
|
+
# * Allowed values: asc, desc
|
441
|
+
# * Default: asc
|
442
|
+
#
|
443
|
+
# - page_size (int)
|
444
|
+
# * Number of results returned per page (max 200)
|
445
|
+
# * Default: 50
|
446
|
+
#
|
447
|
+
# - offset (int)
|
448
|
+
# * Number of items to skip from beginning of result set
|
449
|
+
# * Default: 0
|
450
|
+
#
|
451
|
+
# Returns:
|
452
|
+
# Telerivet::APICursor (of Telerivet::Message)
|
453
|
+
#
|
454
|
+
def query_messages(options = nil)
|
455
|
+
require_relative 'message'
|
456
|
+
@api.cursor(Message, get_base_api_path() + "/messages", options)
|
457
|
+
end
|
458
|
+
|
459
|
+
#
|
460
|
+
# Retrieves the message with the given ID.
|
461
|
+
#
|
462
|
+
# Note: This does not make any API requests until you access a property of the Message.
|
463
|
+
#
|
464
|
+
# Arguments:
|
465
|
+
# - id
|
466
|
+
# * ID of the message
|
467
|
+
# * Required
|
468
|
+
#
|
469
|
+
# Returns:
|
470
|
+
# Telerivet::Message
|
471
|
+
#
|
472
|
+
def get_message_by_id(id)
|
473
|
+
require_relative 'message'
|
474
|
+
return Message.new(@api, {'project_id' => self.id, 'id' => id}, false)
|
475
|
+
end
|
476
|
+
|
477
|
+
#
|
478
|
+
# Queries groups within the given project.
|
479
|
+
#
|
480
|
+
# Arguments:
|
481
|
+
# - options (Hash)
|
482
|
+
#
|
483
|
+
# - name
|
484
|
+
# * Filter groups by name
|
485
|
+
# * Allowed modifiers: name[ne], name[prefix], name[not_prefix], name[gte], name[gt],
|
486
|
+
# name[lt], name[lte]
|
487
|
+
#
|
488
|
+
# - sort
|
489
|
+
# * Sort the results based on a field
|
490
|
+
# * Allowed values: default, name
|
491
|
+
# * Default: default
|
492
|
+
#
|
493
|
+
# - sort_dir
|
494
|
+
# * Sort the results in ascending or descending order
|
495
|
+
# * Allowed values: asc, desc
|
496
|
+
# * Default: asc
|
497
|
+
#
|
498
|
+
# - page_size (int)
|
499
|
+
# * Number of results returned per page (max 200)
|
500
|
+
# * Default: 50
|
501
|
+
#
|
502
|
+
# - offset (int)
|
503
|
+
# * Number of items to skip from beginning of result set
|
504
|
+
# * Default: 0
|
505
|
+
#
|
506
|
+
# Returns:
|
507
|
+
# Telerivet::APICursor (of Telerivet::Group)
|
508
|
+
#
|
509
|
+
def query_groups(options = nil)
|
510
|
+
require_relative 'group'
|
511
|
+
@api.cursor(Group, get_base_api_path() + "/groups", options)
|
512
|
+
end
|
513
|
+
|
514
|
+
#
|
515
|
+
# Retrieves or creates a group by name.
|
516
|
+
#
|
517
|
+
# Arguments:
|
518
|
+
# - name
|
519
|
+
# * Name of the group
|
520
|
+
# * Required
|
521
|
+
#
|
522
|
+
# Returns:
|
523
|
+
# Telerivet::Group
|
524
|
+
#
|
525
|
+
def get_or_create_group(name)
|
526
|
+
require_relative 'group'
|
527
|
+
Group.new(@api, @api.do_request("POST", get_base_api_path() + "/groups", {'name' => name}))
|
528
|
+
end
|
529
|
+
|
530
|
+
#
|
531
|
+
# Retrieves the group with the given ID.
|
532
|
+
#
|
533
|
+
# Note: This does not make any API requests until you access a property of the Group.
|
534
|
+
#
|
535
|
+
# Arguments:
|
536
|
+
# - id
|
537
|
+
# * ID of the group
|
538
|
+
# * Required
|
539
|
+
#
|
540
|
+
# Returns:
|
541
|
+
# Telerivet::Group
|
542
|
+
#
|
543
|
+
def get_group_by_id(id)
|
544
|
+
require_relative 'group'
|
545
|
+
return Group.new(@api, {'project_id' => self.id, 'id' => id}, false)
|
546
|
+
end
|
547
|
+
|
548
|
+
#
|
549
|
+
# Queries labels within the given project.
|
550
|
+
#
|
551
|
+
# Arguments:
|
552
|
+
# - options (Hash)
|
553
|
+
#
|
554
|
+
# - name
|
555
|
+
# * Filter labels by name
|
556
|
+
# * Allowed modifiers: name[ne], name[prefix], name[not_prefix], name[gte], name[gt],
|
557
|
+
# name[lt], name[lte]
|
558
|
+
#
|
559
|
+
# - sort
|
560
|
+
# * Sort the results based on a field
|
561
|
+
# * Allowed values: default, name
|
562
|
+
# * Default: default
|
563
|
+
#
|
564
|
+
# - sort_dir
|
565
|
+
# * Sort the results in ascending or descending order
|
566
|
+
# * Allowed values: asc, desc
|
567
|
+
# * Default: asc
|
568
|
+
#
|
569
|
+
# - page_size (int)
|
570
|
+
# * Number of results returned per page (max 200)
|
571
|
+
# * Default: 50
|
572
|
+
#
|
573
|
+
# - offset (int)
|
574
|
+
# * Number of items to skip from beginning of result set
|
575
|
+
# * Default: 0
|
576
|
+
#
|
577
|
+
# Returns:
|
578
|
+
# Telerivet::APICursor (of Telerivet::Label)
|
579
|
+
#
|
580
|
+
def query_labels(options = nil)
|
581
|
+
require_relative 'label'
|
582
|
+
@api.cursor(Label, get_base_api_path() + "/labels", options)
|
583
|
+
end
|
584
|
+
|
585
|
+
#
|
586
|
+
# Gets or creates a label by name.
|
587
|
+
#
|
588
|
+
# Arguments:
|
589
|
+
# - name
|
590
|
+
# * Name of the label
|
591
|
+
# * Required
|
592
|
+
#
|
593
|
+
# Returns:
|
594
|
+
# Telerivet::Label
|
595
|
+
#
|
596
|
+
def get_or_create_label(name)
|
597
|
+
require_relative 'label'
|
598
|
+
Label.new(@api, @api.do_request("POST", get_base_api_path() + "/labels", {'name' => name}))
|
599
|
+
end
|
600
|
+
|
601
|
+
#
|
602
|
+
# Retrieves the label with the given ID.
|
603
|
+
#
|
604
|
+
# Note: This does not make any API requests until you access a property of the Label.
|
605
|
+
#
|
606
|
+
# Arguments:
|
607
|
+
# - id
|
608
|
+
# * ID of the label
|
609
|
+
# * Required
|
610
|
+
#
|
611
|
+
# Returns:
|
612
|
+
# Telerivet::Label
|
613
|
+
#
|
614
|
+
def get_label_by_id(id)
|
615
|
+
require_relative 'label'
|
616
|
+
return Label.new(@api, {'project_id' => self.id, 'id' => id}, false)
|
617
|
+
end
|
618
|
+
|
619
|
+
#
|
620
|
+
# Queries data tables within the given project.
|
621
|
+
#
|
622
|
+
# Arguments:
|
623
|
+
# - options (Hash)
|
624
|
+
#
|
625
|
+
# - name
|
626
|
+
# * Filter data tables by name
|
627
|
+
# * Allowed modifiers: name[ne], name[prefix], name[not_prefix], name[gte], name[gt],
|
628
|
+
# name[lt], name[lte]
|
629
|
+
#
|
630
|
+
# - sort
|
631
|
+
# * Sort the results based on a field
|
632
|
+
# * Allowed values: default, name
|
633
|
+
# * Default: default
|
634
|
+
#
|
635
|
+
# - sort_dir
|
636
|
+
# * Sort the results in ascending or descending order
|
637
|
+
# * Allowed values: asc, desc
|
638
|
+
# * Default: asc
|
639
|
+
#
|
640
|
+
# - page_size (int)
|
641
|
+
# * Number of results returned per page (max 200)
|
642
|
+
# * Default: 50
|
643
|
+
#
|
644
|
+
# - offset (int)
|
645
|
+
# * Number of items to skip from beginning of result set
|
646
|
+
# * Default: 0
|
647
|
+
#
|
648
|
+
# Returns:
|
649
|
+
# Telerivet::APICursor (of Telerivet::DataTable)
|
650
|
+
#
|
651
|
+
def query_data_tables(options = nil)
|
652
|
+
require_relative 'datatable'
|
653
|
+
@api.cursor(DataTable, get_base_api_path() + "/tables", options)
|
654
|
+
end
|
655
|
+
|
656
|
+
#
|
657
|
+
# Gets or creates a data table by name.
|
658
|
+
#
|
659
|
+
# Arguments:
|
660
|
+
# - name
|
661
|
+
# * Name of the data table
|
662
|
+
# * Required
|
663
|
+
#
|
664
|
+
# Returns:
|
665
|
+
# Telerivet::DataTable
|
666
|
+
#
|
667
|
+
def get_or_create_data_table(name)
|
668
|
+
require_relative 'datatable'
|
669
|
+
DataTable.new(@api, @api.do_request("POST", get_base_api_path() + "/tables", {'name' => name}))
|
670
|
+
end
|
671
|
+
|
672
|
+
#
|
673
|
+
# Retrieves the data table with the given ID.
|
674
|
+
#
|
675
|
+
# Note: This does not make any API requests until you access a property of the DataTable.
|
676
|
+
#
|
677
|
+
# Arguments:
|
678
|
+
# - id
|
679
|
+
# * ID of the data table
|
680
|
+
# * Required
|
681
|
+
#
|
682
|
+
# Returns:
|
683
|
+
# Telerivet::DataTable
|
684
|
+
#
|
685
|
+
def get_data_table_by_id(id)
|
686
|
+
require_relative 'datatable'
|
687
|
+
return DataTable.new(@api, {'project_id' => self.id, 'id' => id}, false)
|
688
|
+
end
|
689
|
+
|
690
|
+
#
|
691
|
+
# Queries scheduled messages within the given project.
|
692
|
+
#
|
693
|
+
# Arguments:
|
694
|
+
# - options (Hash)
|
695
|
+
#
|
696
|
+
# - message_type
|
697
|
+
# * Filter scheduled messages by message_type
|
698
|
+
# * Allowed values: sms, mms, ussd, call
|
699
|
+
#
|
700
|
+
# - time_created (UNIX timestamp)
|
701
|
+
# * Filter scheduled messages by time_created
|
702
|
+
# * Allowed modifiers: time_created[ne], time_created[min], time_created[max]
|
703
|
+
#
|
704
|
+
# - next_time (UNIX timestamp)
|
705
|
+
# * Filter scheduled messages by next_time
|
706
|
+
# * Allowed modifiers: next_time[exists], next_time[ne], next_time[min],
|
707
|
+
# next_time[max]
|
708
|
+
#
|
709
|
+
# - sort
|
710
|
+
# * Sort the results based on a field
|
711
|
+
# * Allowed values: default, name
|
712
|
+
# * Default: default
|
713
|
+
#
|
714
|
+
# - sort_dir
|
715
|
+
# * Sort the results in ascending or descending order
|
716
|
+
# * Allowed values: asc, desc
|
717
|
+
# * Default: asc
|
718
|
+
#
|
719
|
+
# - page_size (int)
|
720
|
+
# * Number of results returned per page (max 200)
|
721
|
+
# * Default: 50
|
722
|
+
#
|
723
|
+
# - offset (int)
|
724
|
+
# * Number of items to skip from beginning of result set
|
725
|
+
# * Default: 0
|
726
|
+
#
|
727
|
+
# Returns:
|
728
|
+
# Telerivet::APICursor (of Telerivet::ScheduledMessage)
|
729
|
+
#
|
730
|
+
def query_scheduled_messages(options = nil)
|
731
|
+
require_relative 'scheduledmessage'
|
732
|
+
@api.cursor(ScheduledMessage, get_base_api_path() + "/scheduled", options)
|
733
|
+
end
|
734
|
+
|
735
|
+
#
|
736
|
+
# Retrieves the scheduled message with the given ID.
|
737
|
+
#
|
738
|
+
# Note: This does not make any API requests until you access a property of the
|
739
|
+
# ScheduledMessage.
|
740
|
+
#
|
741
|
+
# Arguments:
|
742
|
+
# - id
|
743
|
+
# * ID of the scheduled message
|
744
|
+
# * Required
|
745
|
+
#
|
746
|
+
# Returns:
|
747
|
+
# Telerivet::ScheduledMessage
|
748
|
+
#
|
749
|
+
def get_scheduled_message_by_id(id)
|
750
|
+
require_relative 'scheduledmessage'
|
751
|
+
return ScheduledMessage.new(@api, {'project_id' => self.id, 'id' => id}, false)
|
752
|
+
end
|
753
|
+
|
754
|
+
#
|
755
|
+
# Queries services within the given project.
|
756
|
+
#
|
757
|
+
# Arguments:
|
758
|
+
# - options (Hash)
|
759
|
+
#
|
760
|
+
# - name
|
761
|
+
# * Filter services by name
|
762
|
+
# * Allowed modifiers: name[ne], name[prefix], name[not_prefix], name[gte], name[gt],
|
763
|
+
# name[lt], name[lte]
|
764
|
+
#
|
765
|
+
# - active (bool)
|
766
|
+
# * Filter services by active/inactive state
|
767
|
+
#
|
768
|
+
# - context
|
769
|
+
# * Filter services that can be invoked in a particular context
|
770
|
+
# * Allowed values: message, contact, project, receipt
|
771
|
+
#
|
772
|
+
# - sort
|
773
|
+
# * Sort the results based on a field
|
774
|
+
# * Allowed values: default, priority, name
|
775
|
+
# * Default: default
|
776
|
+
#
|
777
|
+
# - sort_dir
|
778
|
+
# * Sort the results in ascending or descending order
|
779
|
+
# * Allowed values: asc, desc
|
780
|
+
# * Default: asc
|
781
|
+
#
|
782
|
+
# - page_size (int)
|
783
|
+
# * Number of results returned per page (max 200)
|
784
|
+
# * Default: 50
|
785
|
+
#
|
786
|
+
# - offset (int)
|
787
|
+
# * Number of items to skip from beginning of result set
|
788
|
+
# * Default: 0
|
789
|
+
#
|
790
|
+
# Returns:
|
791
|
+
# Telerivet::APICursor (of Telerivet::Service)
|
792
|
+
#
|
793
|
+
def query_services(options = nil)
|
794
|
+
require_relative 'service'
|
795
|
+
@api.cursor(Service, get_base_api_path() + "/services", options)
|
796
|
+
end
|
797
|
+
|
798
|
+
#
|
799
|
+
# Retrieves the service with the given ID.
|
800
|
+
#
|
801
|
+
# Note: This does not make any API requests until you access a property of the Service.
|
802
|
+
#
|
803
|
+
# Arguments:
|
804
|
+
# - id
|
805
|
+
# * ID of the service
|
806
|
+
# * Required
|
807
|
+
#
|
808
|
+
# Returns:
|
809
|
+
# Telerivet::Service
|
810
|
+
#
|
811
|
+
def get_service_by_id(id)
|
812
|
+
require_relative 'service'
|
813
|
+
return Service.new(@api, {'project_id' => self.id, 'id' => id}, false)
|
814
|
+
end
|
815
|
+
|
816
|
+
#
|
817
|
+
# Queries mobile money receipts within the given project.
|
818
|
+
#
|
819
|
+
# Arguments:
|
820
|
+
# - options (Hash)
|
821
|
+
#
|
822
|
+
# - tx_id
|
823
|
+
# * Filter receipts by transaction ID
|
824
|
+
#
|
825
|
+
# - tx_type
|
826
|
+
# * Filter receipts by transaction type
|
827
|
+
# * Allowed values: receive_money, send_money, pay_bill, deposit, withdrawal,
|
828
|
+
# airtime_purchase, balance_inquiry, reversal
|
829
|
+
#
|
830
|
+
# - tx_time (UNIX timestamp)
|
831
|
+
# * Filter receipts by transaction time
|
832
|
+
# * Allowed modifiers: tx_time[ne], tx_time[min], tx_time[max]
|
833
|
+
#
|
834
|
+
# - name
|
835
|
+
# * Filter receipts by other person's name
|
836
|
+
# * Allowed modifiers: name[ne], name[prefix], name[not_prefix], name[gte], name[gt],
|
837
|
+
# name[lt], name[lte]
|
838
|
+
#
|
839
|
+
# - phone_number
|
840
|
+
# * Filter receipts by other person's phone number
|
841
|
+
# * Allowed modifiers: phone_number[ne], phone_number[prefix],
|
842
|
+
# phone_number[not_prefix], phone_number[gte], phone_number[gt], phone_number[lt],
|
843
|
+
# phone_number[lte]
|
844
|
+
#
|
845
|
+
# - sort
|
846
|
+
# * Sort the results based on a field
|
847
|
+
# * Allowed values: default
|
848
|
+
# * Default: default
|
849
|
+
#
|
850
|
+
# - sort_dir
|
851
|
+
# * Sort the results in ascending or descending order
|
852
|
+
# * Allowed values: asc, desc
|
853
|
+
# * Default: asc
|
854
|
+
#
|
855
|
+
# - page_size (int)
|
856
|
+
# * Number of results returned per page (max 200)
|
857
|
+
# * Default: 50
|
858
|
+
#
|
859
|
+
# - offset (int)
|
860
|
+
# * Number of items to skip from beginning of result set
|
861
|
+
# * Default: 0
|
862
|
+
#
|
863
|
+
# Returns:
|
864
|
+
# Telerivet::APICursor (of Telerivet::MobileMoneyReceipt)
|
865
|
+
#
|
866
|
+
def query_receipts(options = nil)
|
867
|
+
require_relative 'mobilemoneyreceipt'
|
868
|
+
@api.cursor(MobileMoneyReceipt, get_base_api_path() + "/receipts", options)
|
869
|
+
end
|
870
|
+
|
871
|
+
#
|
872
|
+
# Retrieves the mobile money receipt with the given ID.
|
873
|
+
#
|
874
|
+
# Note: This does not make any API requests until you access a property of the
|
875
|
+
# MobileMoneyReceipt.
|
876
|
+
#
|
877
|
+
# Arguments:
|
878
|
+
# - id
|
879
|
+
# * ID of the mobile money receipt
|
880
|
+
# * Required
|
881
|
+
#
|
882
|
+
# Returns:
|
883
|
+
# Telerivet::MobileMoneyReceipt
|
884
|
+
#
|
885
|
+
def get_receipt_by_id(id)
|
886
|
+
require_relative 'mobilemoneyreceipt'
|
887
|
+
return MobileMoneyReceipt.new(@api, {'project_id' => self.id, 'id' => id}, false)
|
888
|
+
end
|
889
|
+
|
890
|
+
#
|
891
|
+
# Saves any fields or custom variables that have changed for the project.
|
892
|
+
#
|
893
|
+
def save()
|
894
|
+
super
|
895
|
+
end
|
896
|
+
|
897
|
+
def id
|
898
|
+
get('id')
|
899
|
+
end
|
900
|
+
|
901
|
+
def name
|
902
|
+
get('name')
|
903
|
+
end
|
904
|
+
|
905
|
+
def name=(value)
|
906
|
+
set('name', value)
|
907
|
+
end
|
908
|
+
|
909
|
+
def timezone_id
|
910
|
+
get('timezone_id')
|
911
|
+
end
|
912
|
+
|
913
|
+
def get_base_api_path()
|
914
|
+
"/projects/#{get('id')}"
|
915
|
+
end
|
916
|
+
|
917
|
+
end
|
918
|
+
|
919
|
+
end
|