telerivet 1.5.0 → 1.7.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.
@@ -19,13 +19,27 @@ module Telerivet
19
19
  # * Updatable via API
20
20
  #
21
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
22
+ # * Default TZ database timezone ID; see [List of tz database time zones Wikipedia
23
+ # article](http://en.wikipedia.org/wiki/List_of_tz_database_time_zones).
24
+ # * Updatable via API
25
25
  #
26
26
  # - url_slug
27
27
  # * Unique string used as a component of the project's URL in the Telerivet web app
28
- # * Read-only
28
+ # * Updatable via API
29
+ #
30
+ # - default_route_id
31
+ # * The ID of a basic route or custom route that will be used to send messages by
32
+ # default (via both the API and web app), unless a particular route ID is specified when
33
+ # sending the message.
34
+ # * Updatable via API
35
+ #
36
+ # - auto_create_contacts (bool)
37
+ # * If true, a contact will be automatically created for each unique phone number that a
38
+ # message is sent to or received from. If false, contacts will not automatically be
39
+ # created (unless contact information is modified by an automated service). The
40
+ # Conversations tab in the web app will only show messages that are associated with a
41
+ # contact.
42
+ # * Updatable via API
29
43
  #
30
44
  # - vars (Hash)
31
45
  # * Custom variables stored for this project
@@ -37,7 +51,7 @@ module Telerivet
37
51
  #
38
52
  class Project < Entity
39
53
  #
40
- # Sends one message (SMS, MMS, voice call, or USSD request).
54
+ # Sends one message (SMS, MMS, chat app message, voice call, or USSD request).
41
55
  #
42
56
  # Arguments:
43
57
  # - options (Hash)
@@ -46,7 +60,7 @@ class Project < Entity
46
60
  # - message_type
47
61
  # * Type of message to send. If `text`, will use the default text message type for the
48
62
  # selected route.
49
- # * Allowed values: sms, mms, ussd, call, text
63
+ # * Allowed values: text, sms, mms, ussd, call, chat, service
50
64
  # * Default: text
51
65
  #
52
66
  # - content
@@ -72,9 +86,9 @@ class Project < Entity
72
86
  # - status_secret
73
87
  # * POST parameter 'secret' passed to status_url
74
88
  #
75
- # - is_template (bool)
89
+ # - replace_variables (bool)
76
90
  # * Set to true to evaluate variables like [[contact.name]] in message content. [(See
77
- # available variables)](#variables)
91
+ # available variables)](#variables) (`is_template` parameter also accepted)
78
92
  # * Default: false
79
93
  #
80
94
  # - track_clicks (boolean)
@@ -82,11 +96,31 @@ class Project < Entity
82
96
  # short URLs.
83
97
  # * Default: false
84
98
  #
99
+ # - short_link_params (Hash)
100
+ # *
101
+ # If `track_clicks` is true, `short_link_params` may be used to specify
102
+ # custom parameters for each short link in the message. The following parameters are
103
+ # supported:
104
+ #
105
+ # `domain` (string): A custom short domain name to use for the short
106
+ # links. The domain name must already be registered for your project or organization.
107
+ #
108
+ # `expiration_sec` (integer): The number of seconds after the message is
109
+ # created (queued to send) when the short links will stop forwarding to the
110
+ # destination URL.
111
+ # If null, the short links will not expire.
112
+ #
85
113
  # - media_urls (array)
86
114
  # * URLs of media files to attach to the text message. If `message_type` is `sms`,
87
115
  # short links to each media URL will be appended to the end of the content (separated
88
116
  # by a new line).
89
117
  #
118
+ # - route_params (Hash)
119
+ # * Route-specific parameters for the message. The parameters object should have one
120
+ # or more keys matching the `phone_type` field of a phone (basic route) that may be
121
+ # used to send the message. The corresponding value should be an object with
122
+ # route-specific parameters to use if the message is sent by that type of route.
123
+ #
90
124
  # - label_ids (array)
91
125
  # * List of IDs of labels to add to this message
92
126
  #
@@ -154,7 +188,7 @@ class Project < Entity
154
188
  # - message_type
155
189
  # * Type of message to send. If `text`, will use the default text message type for the
156
190
  # selected route.
157
- # * Allowed values: sms, mms, call, service, text
191
+ # * Allowed values: text, sms, mms, call, chat, service
158
192
  # * Default: text
159
193
  #
160
194
  # - content
@@ -192,9 +226,9 @@ class Project < Entity
192
226
  # * Optionally excludes one contact from receiving the message (only when group_id is
193
227
  # set)
194
228
  #
195
- # - is_template (bool)
229
+ # - replace_variables (bool)
196
230
  # * Set to true to evaluate variables like [[contact.name]] in message content [(See
197
- # available variables)](#variables)
231
+ # available variables)](#variables) (`is_template` parameter also accepted)
198
232
  # * Default: false
199
233
  #
200
234
  # - track_clicks (boolean)
@@ -202,6 +236,20 @@ class Project < Entity
202
236
  # short URLs.
203
237
  # * Default: false
204
238
  #
239
+ # - short_link_params (Hash)
240
+ # *
241
+ # If `track_clicks` is true, `short_link_params` may be used to specify
242
+ # custom parameters for each short link in the message. The following parameters are
243
+ # supported:
244
+ #
245
+ # `domain` (string): A custom short domain name to use for the short
246
+ # links. The domain name must already be registered for your project or organization.
247
+ #
248
+ # `expiration_sec` (integer): The number of seconds after the message is
249
+ # created (queued to send) when the short links will stop forwarding to the
250
+ # destination URL.
251
+ # If null, the short links will not expire.
252
+ #
205
253
  # - media_urls (array)
206
254
  # * URLs of media files to attach to the text message. If `message_type` is `sms`,
207
255
  # short links to each URL will be appended to the end of the content (separated by a
@@ -210,6 +258,12 @@ class Project < Entity
210
258
  # - vars (Hash)
211
259
  # * Custom variables to set for each message
212
260
  #
261
+ # - route_params (Hash)
262
+ # * Route-specific parameters for the messages in the broadcast. The parameters object
263
+ # may have keys matching the `phone_type` field of a phone (basic route) that may be
264
+ # used to send messages in this broadcast. The corresponding value is an object with
265
+ # route-specific parameters to use when sending messages with that type of route.
266
+ #
213
267
  # - service_id
214
268
  # * Service to invoke for each recipient (when `message_type` is `call` or `service`)
215
269
  # * Required if message_type is service
@@ -262,7 +316,7 @@ class Project < Entity
262
316
  # - message_type
263
317
  # * Type of message to send. If `text`, will use the default text message type for the
264
318
  # selected route.
265
- # * Allowed values: sms, mms, chat, text
319
+ # * Allowed values: text, sms, mms, call, chat, service
266
320
  # * Default: text
267
321
  #
268
322
  # - route_id
@@ -290,16 +344,41 @@ class Project < Entity
290
344
  # - label_ids (array)
291
345
  # * Array of IDs of labels to add to each message (maximum 5)
292
346
  #
293
- # - is_template (bool)
347
+ # - replace_variables (bool)
294
348
  # * Set to true to evaluate variables like [[contact.name]] in message content [(See
295
- # available variables)](#variables)
349
+ # available variables)](#variables) (`is_template` parameter also accepted)
350
+ # * Default: false
351
+ #
352
+ # - track_clicks (boolean)
353
+ # * If true, URLs in the message content will automatically be replaced with unique
354
+ # short URLs.
296
355
  # * Default: false
297
356
  #
357
+ # - short_link_params (Hash)
358
+ # *
359
+ # If `track_clicks` is true, `short_link_params` may be used to specify
360
+ # custom parameters for each short link in the message. The following parameters are
361
+ # supported:
362
+ #
363
+ # `domain` (string): A custom short domain name to use for the short
364
+ # links. The domain name must already be registered for your project or organization.
365
+ #
366
+ # `expiration_sec` (integer): The number of seconds after the message is
367
+ # created (queued to send) when the short links will stop forwarding to the
368
+ # destination URL.
369
+ # If null, the short links will not expire.
370
+ #
298
371
  # - media_urls (array)
299
372
  # * URLs of media files to attach to the text message. If `message_type` is `sms`,
300
373
  # short links to each media URL will be appended to the end of the content (separated
301
374
  # by a new line).
302
375
  #
376
+ # - route_params (Hash)
377
+ # * Route-specific parameters to apply to all messages. The parameters object may have
378
+ # keys matching the `phone_type` field of a phone (basic route) that may be used to
379
+ # send messages. The corresponding value is an object with route-specific parameters
380
+ # to use when sending messages with that type of route.
381
+ #
303
382
  # - vars (Hash)
304
383
  # * Custom variables to store with the message
305
384
  #
@@ -325,6 +404,10 @@ class Project < Entity
325
404
  # (Other properties of the Message object are
326
405
  # omitted in order to reduce the amount of redundant data sent in each API
327
406
  # response.)
407
+ # If the `messages` parameter in the API request
408
+ # contains items with `to_number` values that are associated with blocked contacts,
409
+ # the `id` and `status` properties corresponding to those items will be null, and no
410
+ # messages will be sent to those numbers.
328
411
  #
329
412
  # - broadcast_id
330
413
  # * ID of broadcast that these messages are associated with, if `broadcast_id` or
@@ -372,6 +455,9 @@ class Project < Entity
372
455
  # messages approximately once every 15 seconds, so it is not possible to control the exact
373
456
  # second at which a scheduled message is sent.
374
457
  #
458
+ # Only one of the parameters group_id, to_number, and contact_id
459
+ # should be provided.
460
+ #
375
461
  # With `message_type`=`service`, schedules an automated service (such
376
462
  # as a poll) to be invoked for a group or list of phone numbers. Any service that can be
377
463
  # triggered for a contact can be scheduled via this method, whether or not the service
@@ -383,20 +469,21 @@ class Project < Entity
383
469
  #
384
470
  # - message_type
385
471
  # * Type of message to send
386
- # * Allowed values: sms, ussd, call, service
387
- # * Default: sms
472
+ # * Allowed values: text, sms, mms, ussd, call, chat, service
473
+ # * Default: text
388
474
  #
389
475
  # - content
390
476
  # * Content of the message to schedule
391
- # * Required if sending SMS message
477
+ # * Required if sending text message
392
478
  #
393
479
  # - group_id
394
480
  # * ID of the group to send the message to
395
- # * Required if to_number not set
396
481
  #
397
482
  # - to_number (string)
398
483
  # * Phone number to send the message to
399
- # * Required if group_id not set
484
+ #
485
+ # - contact_id (string)
486
+ # * ID of the contact to send the message to
400
487
  #
401
488
  # - start_time (UNIX timestamp)
402
489
  # * The time that the message will be sent (or first sent for recurring messages)
@@ -447,8 +534,23 @@ class Project < Entity
447
534
  # short URLs.
448
535
  # * Default: false
449
536
  #
450
- # - is_template (bool)
537
+ # - short_link_params (Hash)
538
+ # *
539
+ # If `track_clicks` is true, `short_link_params` may be used to specify
540
+ # custom parameters for each short link in the message. The following parameters are
541
+ # supported:
542
+ #
543
+ # `domain` (string): A custom short domain name to use for the short
544
+ # links. The domain name must already be registered for your project or organization.
545
+ #
546
+ # `expiration_sec` (integer): The number of seconds after the message is
547
+ # created (queued to send) when the short links will stop forwarding to the
548
+ # destination URL.
549
+ # If null, the short links will not expire.
550
+ #
551
+ # - replace_variables (bool)
451
552
  # * Set to true to evaluate variables like [[contact.name]] in message content
553
+ # (`is_template` parameter also accepted)
452
554
  # * Default: false
453
555
  #
454
556
  # - media_urls (array)
@@ -456,14 +558,20 @@ class Project < Entity
456
558
  # short links to each media URL will be appended to the end of the content (separated
457
559
  # by a new line).
458
560
  #
561
+ # - route_params (Hash)
562
+ # * Route-specific parameters to use when sending the message. The parameters object
563
+ # may have keys matching the `phone_type` field of a phone (basic route) that may be
564
+ # used to send the message. The corresponding value is an object with route-specific
565
+ # parameters to use when sending a message with that type of route.
566
+ #
459
567
  # - label_ids (array)
460
568
  # * Array of IDs of labels to add to the sent messages (maximum 5). Does not apply
461
569
  # when `message_type`=`service`, since the labels are determined by the service
462
570
  # itself.
463
571
  #
464
572
  # - timezone_id
465
- # * TZ database timezone ID; see
466
- # <http://en.wikipedia.org/wiki/List_of_tz_database_time_zones>
573
+ # * TZ database timezone ID; see [List of tz database time zones Wikipedia
574
+ # article](http://en.wikipedia.org/wiki/List_of_tz_database_time_zones).
467
575
  # * Default: project default timezone
468
576
  #
469
577
  # - end_time (UNIX timestamp)
@@ -485,6 +593,166 @@ class Project < Entity
485
593
  ScheduledMessage.new(@api, @api.do_request("POST", get_base_api_path() + "/scheduled", options))
486
594
  end
487
595
 
596
+ #
597
+ # Creates a relative scheduled message. This allows scheduling messages on a different date
598
+ # for each contact, for example on their birthday, a certain number of days before an
599
+ # appointment, or a certain number of days after enrolling in a campaign.
600
+ #
601
+ # Telerivet will automatically create a
602
+ # [ScheduledMessage](#ScheduledMessage) for each contact matching a RelativeScheduledMessage.
603
+ #
604
+ # Relative scheduled messages can be created for a group or an
605
+ # individual contact, although dynamic groups are not supported. Only one of the parameters
606
+ # group_id, to_number, and contact_id should be provided.
607
+ #
608
+ # With message_type=service, schedules an automated service (such as a
609
+ # poll). Any service that can be triggered for a contact can be scheduled via this method,
610
+ # whether or not the service actually sends a message.
611
+ #
612
+ # Arguments:
613
+ # - options (Hash)
614
+ # * Required
615
+ #
616
+ # - message_type
617
+ # * Type of message to send
618
+ # * Allowed values: text, sms, mms, call, chat, service
619
+ # * Default: text
620
+ #
621
+ # - content
622
+ # * Content of the message to schedule
623
+ # * Required if sending text message
624
+ #
625
+ # - group_id
626
+ # * ID of the group to send the message to. Dynamic groups are not supported.
627
+ #
628
+ # - to_number (string)
629
+ # * Phone number to send the message to
630
+ #
631
+ # - contact_id (string)
632
+ # * ID of the contact to send the message to
633
+ #
634
+ # - time_of_day
635
+ # * Time of day when scheduled messages will be sent in HH:MM format (with hours from
636
+ # 00 to 23)
637
+ # * Required
638
+ #
639
+ # - timezone_id
640
+ # * TZ database timezone ID; see [List of tz database time zones Wikipedia
641
+ # article](http://en.wikipedia.org/wiki/List_of_tz_database_time_zones).
642
+ # * Default: project default timezone
643
+ #
644
+ # - date_variable
645
+ # * Custom contact variable storing date or date/time values relative to which
646
+ # messages will be scheduled.
647
+ # * Required
648
+ #
649
+ # - offset_scale
650
+ # * The type of interval (day/week/month/year) that will be used to adjust the
651
+ # scheduled date relative to the date stored in the contact's date_variable, when
652
+ # offset_count is non-zero (D=day, W=week, M=month, Y=year)
653
+ # * Allowed values: D, W, M, Y
654
+ # * Default: D
655
+ #
656
+ # - offset_count (int)
657
+ # * The number of days/weeks/months/years to adjust the date of the scheduled message
658
+ # relative relative to the date stored in the custom contact variable identified by
659
+ # the date_variable parameter. May be positive, negative, or zero.
660
+ # * Default: 0
661
+ #
662
+ # - rrule
663
+ # * A recurrence rule describing the how the schedule repeats, e.g. 'FREQ=MONTHLY' or
664
+ # 'FREQ=WEEKLY;INTERVAL=2'; see <https://tools.ietf.org/html/rfc2445#section-4.3.10>.
665
+ # (UNTIL is ignored; use end_time parameter instead).
666
+ # * Default: COUNT=1 (one-time scheduled message, does not repeat)
667
+ #
668
+ # - route_id
669
+ # * ID of the phone or route to send the message from
670
+ # * Default: default sender route ID
671
+ #
672
+ # - service_id
673
+ # * Service to invoke for each recipient (when `message_type` is `call` or `service`)
674
+ # * Required if message_type is service
675
+ #
676
+ # - audio_url
677
+ # * The URL of an MP3 file to play when the contact answers the call (when
678
+ # `message_type` is `call`).
679
+ #
680
+ # If `audio_url` is provided, the text-to-speech voice is not used to say
681
+ # `content`, although you can optionally use `content` to indicate the script for the
682
+ # audio.
683
+ #
684
+ # For best results, use an MP3 file containing only speech. Music is not
685
+ # recommended because the audio quality will be low when played over a phone line.
686
+ #
687
+ # - tts_lang
688
+ # * The language of the text-to-speech voice (when `message_type` is `call`)
689
+ # * Allowed values: en-US, en-GB, en-GB-WLS, en-AU, en-IN, da-DK, nl-NL, fr-FR, fr-CA,
690
+ # de-DE, is-IS, it-IT, pl-PL, pt-BR, pt-PT, ru-RU, es-ES, es-US, sv-SE
691
+ # * Default: en-US
692
+ #
693
+ # - tts_voice
694
+ # * The name of the text-to-speech voice (when message_type=call)
695
+ # * Allowed values: female, male
696
+ # * Default: female
697
+ #
698
+ # - track_clicks (boolean)
699
+ # * If true, URLs in the message content will automatically be replaced with unique
700
+ # short URLs.
701
+ # * Default: false
702
+ #
703
+ # - short_link_params (Hash)
704
+ # *
705
+ # If `track_clicks` is true, `short_link_params` may be used to specify
706
+ # custom parameters for each short link in the message. The following parameters are
707
+ # supported:
708
+ #
709
+ # `domain` (string): A custom short domain name to use for the short
710
+ # links. The domain name must already be registered for your project or organization.
711
+ #
712
+ # `expiration_sec` (integer): The number of seconds after the message is
713
+ # created (queued to send) when the short links will stop forwarding to the
714
+ # destination URL.
715
+ # If null, the short links will not expire.
716
+ #
717
+ # - replace_variables (bool)
718
+ # * Set to true to evaluate variables like [[contact.name]] in message content
719
+ # * Default: false
720
+ #
721
+ # - media_urls (array)
722
+ # * URLs of media files to attach to the text message. If `message_type` is `sms`,
723
+ # short links to each media URL will be appended to the end of the content (separated
724
+ # by a new line).
725
+ #
726
+ # - route_params (Hash)
727
+ # * Route-specific parameters to use when sending the message. The parameters object
728
+ # may have keys matching the `phone_type` field of a phone (basic route) that may be
729
+ # used to send the message. The corresponding value is an object with route-specific
730
+ # parameters to use when sending a message with that type of route.
731
+ #
732
+ # - label_ids (array)
733
+ # * Array of IDs of labels to add to the sent messages (maximum 5). Does not apply
734
+ # when `message_type`=`service`, since the labels are determined by the service
735
+ # itself.
736
+ #
737
+ # - end_time (UNIX timestamp)
738
+ # * Time after which a recurring message will stop (not applicable to non-recurring
739
+ # scheduled messages)
740
+ #
741
+ # - end_time_offset (int)
742
+ # * Number of seconds from now until the recurring message will stop
743
+ #
744
+ # - vars (Hash)
745
+ # * Custom variables to set for this relative scheduled message, which will be copied
746
+ # to each message sent from this scheduled message
747
+ #
748
+ # Returns:
749
+ # Telerivet::RelativeScheduledMessage
750
+ #
751
+ def create_relative_scheduled_message(options)
752
+ require_relative 'relativescheduledmessage'
753
+ RelativeScheduledMessage.new(@api, @api.do_request("POST", get_base_api_path() + "/relative_scheduled", options))
754
+ end
755
+
488
756
  #
489
757
  # Add an incoming message to Telerivet. Acts the same as if the message was received by a
490
758
  # phone. Also triggers any automated services that apply to the message.
@@ -664,24 +932,22 @@ class Project < Entity
664
932
  #
665
933
  # - time_created (UNIX timestamp)
666
934
  # * Filter contacts by time created
667
- # * Allowed modifiers: time_created[ne], time_created[min], time_created[max]
935
+ # * Allowed modifiers: time_created[min], time_created[max]
668
936
  #
669
937
  # - last_message_time (UNIX timestamp)
670
938
  # * Filter contacts by last time a message was sent or received
671
- # * Allowed modifiers: last_message_time[ne], last_message_time[min],
672
- # last_message_time[max], last_message_time[exists]
939
+ # * Allowed modifiers: last_message_time[min], last_message_time[max],
940
+ # last_message_time[exists]
673
941
  #
674
942
  # - last_incoming_message_time (UNIX timestamp)
675
943
  # * Filter contacts by last time a message was received
676
- # * Allowed modifiers: last_incoming_message_time[ne],
677
- # last_incoming_message_time[min], last_incoming_message_time[max],
678
- # last_incoming_message_time[exists]
944
+ # * Allowed modifiers: last_incoming_message_time[min],
945
+ # last_incoming_message_time[max], last_incoming_message_time[exists]
679
946
  #
680
947
  # - last_outgoing_message_time (UNIX timestamp)
681
948
  # * Filter contacts by last time a message was sent
682
- # * Allowed modifiers: last_outgoing_message_time[ne],
683
- # last_outgoing_message_time[min], last_outgoing_message_time[max],
684
- # last_outgoing_message_time[exists]
949
+ # * Allowed modifiers: last_outgoing_message_time[min],
950
+ # last_outgoing_message_time[max], last_outgoing_message_time[exists]
685
951
  #
686
952
  # - incoming_message_count (int)
687
953
  # * Filter contacts by number of messages received from the contact
@@ -761,7 +1027,7 @@ class Project < Entity
761
1027
  end
762
1028
 
763
1029
  #
764
- # Queries phones within the given project.
1030
+ # Queries basic routes within the given project.
765
1031
  #
766
1032
  # Arguments:
767
1033
  # - options (Hash)
@@ -779,8 +1045,8 @@ class Project < Entity
779
1045
  #
780
1046
  # - last_active_time (UNIX timestamp)
781
1047
  # * Filter phones by last active time
782
- # * Allowed modifiers: last_active_time[ne], last_active_time[min],
783
- # last_active_time[max], last_active_time[exists]
1048
+ # * Allowed modifiers: last_active_time[min], last_active_time[max],
1049
+ # last_active_time[exists]
784
1050
  #
785
1051
  # - sort
786
1052
  # * Sort the results based on a field
@@ -809,7 +1075,7 @@ class Project < Entity
809
1075
  end
810
1076
 
811
1077
  #
812
- # Retrieves the phone with the given ID.
1078
+ # Retrieves the basic route with the given ID.
813
1079
  #
814
1080
  # Arguments:
815
1081
  # - id
@@ -825,7 +1091,7 @@ class Project < Entity
825
1091
  end
826
1092
 
827
1093
  #
828
- # Initializes the phone with the given ID without making an API request.
1094
+ # Initializes the basic route with the given ID without making an API request.
829
1095
  #
830
1096
  # Arguments:
831
1097
  # - id
@@ -855,7 +1121,7 @@ class Project < Entity
855
1121
  #
856
1122
  # - message_type
857
1123
  # * Filter messages by message_type
858
- # * Allowed values: sms, mms, ussd, call, service
1124
+ # * Allowed values: sms, mms, ussd, ussd_session, call, chat, service
859
1125
  #
860
1126
  # - source
861
1127
  # * Filter messages by source
@@ -868,7 +1134,7 @@ class Project < Entity
868
1134
  # - status
869
1135
  # * Filter messages by status
870
1136
  # * Allowed values: ignored, processing, received, sent, queued, failed,
871
- # failed_queued, cancelled, delivered, not_delivered
1137
+ # failed_queued, cancelled, delivered, not_delivered, read
872
1138
  #
873
1139
  # - time_created[min] (UNIX timestamp)
874
1140
  # * Filter messages created on or after a particular time
@@ -878,18 +1144,26 @@ class Project < Entity
878
1144
  #
879
1145
  # - external_id
880
1146
  # * Filter messages by ID from an external provider
1147
+ # * Allowed modifiers: external_id[ne], external_id[exists]
881
1148
  #
882
1149
  # - contact_id
883
1150
  # * ID of the contact who sent/received the message
1151
+ # * Allowed modifiers: contact_id[ne], contact_id[exists]
884
1152
  #
885
1153
  # - phone_id
886
1154
  # * ID of the phone (basic route) that sent/received the message
887
1155
  #
888
1156
  # - broadcast_id
889
1157
  # * ID of the broadcast containing the message
1158
+ # * Allowed modifiers: broadcast_id[ne], broadcast_id[exists]
890
1159
  #
891
1160
  # - scheduled_id
892
1161
  # * ID of the scheduled message that created this message
1162
+ # * Allowed modifiers: scheduled_id[ne], scheduled_id[exists]
1163
+ #
1164
+ # - group_id
1165
+ # * Filter messages sent or received by contacts in a particular group. The group must
1166
+ # be a normal group, not a dynamic group.
893
1167
  #
894
1168
  # - sort
895
1169
  # * Sort the results based on a field
@@ -1057,116 +1331,118 @@ class Project < Entity
1057
1331
  #
1058
1332
  # Tasks for contacts:
1059
1333
  #
1060
- # - `update_contact_var`
1061
- # - `add_group_members`
1062
- # - `remove_group_members`
1063
- # - `set_conversation_status`
1064
- # - `set_send_blocked`
1065
- # - `apply_service_to_contacts`
1066
- # - `delete_contacts`
1067
- # - `export_contacts`
1334
+ # - update_contact_var
1335
+ # - add_group_members
1336
+ # - remove_group_members
1337
+ # - set_conversation_status
1338
+ # - set_send_blocked
1339
+ # - apply_service_to_contacts
1340
+ # - delete_contacts
1341
+ # - export_contacts
1068
1342
  #
1069
1343
  # Tasks for data rows:
1070
1344
  #
1071
- # - `update_row_var`
1072
- # - `apply_service_to_rows`
1073
- # - `delete_rows`
1074
- # - `export_rows`
1345
+ # - update_row_var
1346
+ # - apply_service_to_rows
1347
+ # - delete_rows
1348
+ # - export_rows
1075
1349
  #
1076
1350
  # Tasks for messages:
1077
1351
  #
1078
- # - `cancel_messages`
1079
- # - `resend_messages`
1080
- # - `retry_message_services`
1081
- # - `apply_service_to_messages`
1082
- # - `add_label`
1083
- # - `remove_label`
1084
- # - `update_message_var`
1085
- # - `delete_messages`
1086
- # - `export_messages`
1087
- # * Allowed values: update_contact_var, delete_contacts, add_group_members,
1088
- # remove_group_members, set_conversation_status, set_send_blocked,
1089
- # apply_service_to_contacts, update_row_var, delete_rows, apply_service_to_rows,
1090
- # delete_messages, cancel_messages, resend_messages, retry_message_services,
1091
- # apply_service_to_messages, add_label, remove_label, update_message_var,
1092
- # export_messages, export_contacts, export_rows
1352
+ # - cancel_messages
1353
+ # - resend_messages
1354
+ # - retry_message_services
1355
+ # - apply_service_to_messages
1356
+ # - add_label
1357
+ # - remove_label
1358
+ # - update_message_var
1359
+ # - delete_messages
1360
+ # - export_messages
1093
1361
  # * Required
1094
1362
  #
1095
1363
  # - task_params (Hash)
1096
1364
  # * Parameters applied to all matching rows (specific to `task_type`).
1097
1365
  #
1098
- # **`apply_service_to_contacts`**,
1099
- # **`apply_service_to_messages`**, **`apply_service_to_rows`**:
1366
+ # **apply_service_to_contacts**,
1367
+ # **apply_service_to_messages**, **apply_service_to_rows**:
1100
1368
  # <table>
1101
- # <tr><td> `service_id` </td> <td> The ID of the
1102
- # service to apply (string) </td></tr>
1369
+ # <tr><td> service_id </td> <td> The ID of the service
1370
+ # to apply (string) </td></tr>
1371
+ # <tr><td> variables </td> <td> Optional object
1372
+ # containing up to 25 temporary variable names and their corresponding values to set
1373
+ # when invoking the service. Values may be strings, numbers, or boolean (true/false).
1374
+ # String values may be up to 4096 bytes in length. Arrays and objects are not
1375
+ # supported. Within Custom Actions, each variable can be used like [[$name]] (with a
1376
+ # leading $ character and surrounded by double square brackets). Within a Cloud Script
1377
+ # API service or JavaScript action, each variable will be available as a global
1378
+ # JavaScript variable like $name (with a leading $ character). (object) </td></tr>
1103
1379
  # </table>
1104
- #
1105
- # **`update_contact_var`**, **`update_message_var`**,
1106
- # **`update_row_var`**:
1380
+ # <br />
1381
+ # **update_contact_var**, **update_message_var**,
1382
+ # **update_row_var**:
1107
1383
  # <table>
1108
- # <tr><td> `variable` </td> <td> The custom variable
1384
+ # <tr><td> variable </td> <td> The custom variable
1109
1385
  # name (string) </td></tr>
1110
- # <tr><td> `value` </td> <td> The value to set
1111
- # (string, boolean, float, null) </td></tr>
1386
+ # <tr><td> value </td> <td> The value to set (string,
1387
+ # boolean, float, null) </td></tr>
1112
1388
  # </table>
1113
- #
1114
- # **`add_group_members`**, **`remove_group_members`**:
1389
+ # <br />
1390
+ # **add_group_members**, **remove_group_members**:
1115
1391
  # <table>
1116
- # <tr><td> `group_id` </td> <td> The ID of the group
1392
+ # <tr><td> group_id </td> <td> The ID of the group
1117
1393
  # (string) </td></tr>
1118
1394
  # </table>
1119
- #
1120
- # **`add_label`**, **`remove_label`**:
1395
+ # <br />
1396
+ # **add_label**, **remove_label**:
1121
1397
  # <table>
1122
- # <tr><td> `label_id` </td> <td> The ID of the label
1398
+ # <tr><td> label_id </td> <td> The ID of the label
1123
1399
  # (string) </td></tr>
1124
1400
  # </table>
1125
- #
1126
- # **`resend_messages`**:
1401
+ # <br />
1402
+ # **resend_messages**:
1127
1403
  # <table>
1128
- # <tr><td> `route_id` </td> <td> ID of the new route
1129
- # to use, or null to use the original route (string) </td></tr>
1404
+ # <tr><td> route_id </td> <td> ID of the new route to
1405
+ # use, or null to use the original route (string) </td></tr>
1130
1406
  # </table>
1131
- #
1132
- # **`set_send_blocked`**:
1407
+ # <br />
1408
+ # **set_send_blocked**:
1133
1409
  # <table>
1134
- # <tr><td> `send_blocked` </td> <td> `true` to block
1135
- # sending messages, `false` to unblock sending messages (boolean) </td></tr>
1410
+ # <tr><td> send_blocked </td> <td> true to block
1411
+ # sending messages, false to unblock sending messages (boolean) </td></tr>
1136
1412
  # </table>
1137
- #
1138
- # **`set_conversation_status`**:
1413
+ # <br />
1414
+ # **set_conversation_status**:
1139
1415
  # <table>
1140
- # <tr><td> `conversation_status` </td> <td> "active",
1416
+ # <tr><td> conversation_status </td> <td> "active",
1141
1417
  # "handled", or "closed" (string) </td></tr>
1142
1418
  # </table>
1143
- #
1144
- # **`export_contacts`**, **`export_messages`**,
1145
- # **`export_rows`**:
1419
+ # <br />
1420
+ # **export_contacts**, **export_messages**,
1421
+ # **export_rows**:
1146
1422
  # <table>
1147
- # <tr><td>`storage_id` </td> <td> ID of a storage
1148
- # backend where the CSV file will be saved. (string)
1423
+ # <tr><td>storage_id </td> <td> ID of a storage
1424
+ # provider where the CSV file will be saved. (string)
1149
1425
  #
1150
1426
  # Currently only AWS S3 is supported as a storage
1151
- # backend.
1427
+ # provider.
1152
1428
  # This requires creating a S3 bucket in your own
1153
1429
  # AWS account, as well as an IAM user with access key and secret that has permission
1154
1430
  # to write to that bucket.
1155
- # To configure your own S3 bucket as a storage
1156
- # backend, contact support.
1431
+ # You can configure your own S3 bucket as a
1432
+ # storage provider on the <a href="/dashboard/a/storage">Storage Providers</a> page.
1157
1433
  #
1158
1434
  # Direct downloads are not supported when
1159
1435
  # exporting data via the API.
1160
1436
  # (string) </td></tr>
1161
- # <tr><td>`filename` </td> <td> Path within the
1162
- # storage backend where the CSV file will be saved </td></tr>
1163
- # <tr><td>`column_ids` </td> <td> IDs of columns to
1164
- # save in the CSV file. If not provided, all default columns will be saved. (array of
1437
+ # <tr><td>filename </td> <td> Path within the storage
1438
+ # backend where the CSV file will be saved </td></tr>
1439
+ # <tr><td>column_ids </td> <td> IDs of columns to save
1440
+ # in the CSV file. If not provided, all default columns will be saved. (array of
1165
1441
  # strings, optional) </td></tr>
1166
1442
  # </table>
1167
- #
1168
- # **`delete_contacts`**, **`delete_messages`**,
1169
- # **`delete_rows`**, **`cancel_messages`**, **`retry_message_services`**: <br />
1443
+ # <br />
1444
+ # **delete_contacts**, **delete_messages**,
1445
+ # **delete_rows**, **cancel_messages**, **retry_message_services**: <br />
1170
1446
  # No parameters.
1171
1447
  #
1172
1448
  # - filter_type
@@ -1575,20 +1851,22 @@ class Project < Entity
1575
1851
  #
1576
1852
  # - message_type
1577
1853
  # * Filter scheduled messages by message_type
1578
- # * Allowed values: sms, mms, ussd, call, service
1854
+ # * Allowed values: sms, mms, ussd, ussd_session, call, chat, service
1579
1855
  #
1580
1856
  # - time_created (UNIX timestamp)
1581
1857
  # * Filter scheduled messages by time_created
1582
- # * Allowed modifiers: time_created[ne], time_created[min], time_created[max]
1858
+ # * Allowed modifiers: time_created[min], time_created[max]
1583
1859
  #
1584
1860
  # - next_time (UNIX timestamp)
1585
1861
  # * Filter scheduled messages by next_time
1586
- # * Allowed modifiers: next_time[ne], next_time[min], next_time[max],
1587
- # next_time[exists]
1862
+ # * Allowed modifiers: next_time[min], next_time[max], next_time[exists]
1863
+ #
1864
+ # - relative_scheduled_id
1865
+ # * Filter scheduled messages created for a relative scheduled message
1588
1866
  #
1589
1867
  # - sort
1590
1868
  # * Sort the results based on a field
1591
- # * Allowed values: default, name
1869
+ # * Allowed values: default, next_time
1592
1870
  # * Default: default
1593
1871
  #
1594
1872
  # - sort_dir
@@ -1612,6 +1890,52 @@ class Project < Entity
1612
1890
  @api.cursor(ScheduledMessage, get_base_api_path() + "/scheduled", options)
1613
1891
  end
1614
1892
 
1893
+ #
1894
+ # Queries relative scheduled messages within the given project.
1895
+ #
1896
+ # Arguments:
1897
+ # - options (Hash)
1898
+ #
1899
+ # - message_type
1900
+ # * Filter relative scheduled messages by message_type
1901
+ # * Allowed values: sms, mms, ussd, ussd_session, call, chat, service
1902
+ #
1903
+ # - time_created (UNIX timestamp)
1904
+ # * Filter relative scheduled messages by time_created
1905
+ # * Allowed modifiers: time_created[min], time_created[max]
1906
+ #
1907
+ # - group_id
1908
+ # * Filter relative scheduled messages sent to a group
1909
+ #
1910
+ # - contact_id
1911
+ # * Filter relative scheduled messages sent to an individual contact
1912
+ #
1913
+ # - sort
1914
+ # * Sort the results based on a field
1915
+ # * Allowed values: default
1916
+ # * Default: default
1917
+ #
1918
+ # - sort_dir
1919
+ # * Sort the results in ascending or descending order
1920
+ # * Allowed values: asc, desc
1921
+ # * Default: asc
1922
+ #
1923
+ # - page_size (int)
1924
+ # * Number of results returned per page (max 500)
1925
+ # * Default: 50
1926
+ #
1927
+ # - offset (int)
1928
+ # * Number of items to skip from beginning of result set
1929
+ # * Default: 0
1930
+ #
1931
+ # Returns:
1932
+ # Telerivet::APICursor (of Telerivet::RelativeScheduledMessage)
1933
+ #
1934
+ def query_relative_scheduled_messages(options = nil)
1935
+ require_relative 'relativescheduledmessage'
1936
+ @api.cursor(RelativeScheduledMessage, get_base_api_path() + "/relative_scheduled", options)
1937
+ end
1938
+
1615
1939
  #
1616
1940
  # Retrieves the scheduled message with the given ID.
1617
1941
  #
@@ -1644,6 +1968,179 @@ class Project < Entity
1644
1968
  return ScheduledMessage.new(@api, {'project_id' => self.id, 'id' => id}, false)
1645
1969
  end
1646
1970
 
1971
+ #
1972
+ # Retrieves the scheduled message with the given ID.
1973
+ #
1974
+ # Arguments:
1975
+ # - id
1976
+ # * ID of the relative scheduled message
1977
+ # * Required
1978
+ #
1979
+ # Returns:
1980
+ # Telerivet::RelativeScheduledMessage
1981
+ #
1982
+ def get_relative_scheduled_message_by_id(id)
1983
+ require_relative 'relativescheduledmessage'
1984
+ RelativeScheduledMessage.new(@api, @api.do_request("GET", get_base_api_path() + "/relative_scheduled/#{id}"))
1985
+ end
1986
+
1987
+ #
1988
+ # Initializes the relative scheduled message with the given ID without making an API request.
1989
+ #
1990
+ # Arguments:
1991
+ # - id
1992
+ # * ID of the relative scheduled message
1993
+ # * Required
1994
+ #
1995
+ # Returns:
1996
+ # Telerivet::RelativeScheduledMessage
1997
+ #
1998
+ def init_relative_scheduled_message_by_id(id)
1999
+ require_relative 'relativescheduledmessage'
2000
+ return RelativeScheduledMessage.new(@api, {'project_id' => self.id, 'id' => id}, false)
2001
+ end
2002
+
2003
+ #
2004
+ # Creates a new automated service.
2005
+ #
2006
+ # Only certain types of automated services can be created via the API.
2007
+ # Other types of services can only be created via the web app.
2008
+ #
2009
+ # Although Custom Actions services cannot be created directly via the
2010
+ # API, they may be converted to a template,
2011
+ # and then instances of the template can be created via this method
2012
+ # with `service_type`=`custom_template_instance`. Converting a service
2013
+ # to a template requires the Service Templates feature to be enabled
2014
+ # for the organization.
2015
+ #
2016
+ # Arguments:
2017
+ # - options (Hash)
2018
+ # * Required
2019
+ #
2020
+ # - name (string)
2021
+ # * Name of the service to create, which must be unique in the project. If a name is
2022
+ # not provided, a unique default name will be generated.
2023
+ #
2024
+ # - service_type (string)
2025
+ # * Type of service to create. The following service types can be created via the
2026
+ # API:
2027
+ #
2028
+ # - incoming_message_webhook
2029
+ # - incoming_message_script
2030
+ # - contact_script
2031
+ # - message_script
2032
+ # - data_row_script
2033
+ # - webhook_script
2034
+ # - voice_script
2035
+ # - ussd_script
2036
+ # - project_script
2037
+ # - custom_template_instance
2038
+ #
2039
+ # Other types of services can only be created via the web app.
2040
+ # * Required
2041
+ #
2042
+ # - config (Hash)
2043
+ # * Configuration specific to the service `type`.
2044
+ #
2045
+ # **incoming_message_webhook**:
2046
+ # <table>
2047
+ # <tr><td> url </td> <td> The webhook URL that will be
2048
+ # triggered when an incoming message is received (string) </td></tr>
2049
+ # <tr><td> secret </td> <td> Optional string that will
2050
+ # be passed as the `secret` POST parameter to the webhook URL. (object) </td></tr>
2051
+ # </table>
2052
+ # <br />
2053
+ #
2054
+ # **incoming_message_script, contact_script,
2055
+ # message_script, data_row_script, webhook_script, voice_script, ussd_script,
2056
+ # project_script**:
2057
+ # <table>
2058
+ # <tr><td> code </td> <td> The JavaScript code to run
2059
+ # when the service is triggered (max 100 KB). To run code longer than 100 KB, use a
2060
+ # Cloud Script Module. (string) </td></tr>
2061
+ # </table>
2062
+ # <br />
2063
+ #
2064
+ # **custom_template_instance**:
2065
+ # <table>
2066
+ # <tr><td> template_service_id </td> <td> ID of the
2067
+ # service template (string). The service template must be available to the current
2068
+ # project or organization.</td></tr>
2069
+ # <tr><td> params </td> <td> Key/value pairs for all
2070
+ # service template parameters (object). If the values satisfy the validation rules
2071
+ # specified in the service template, they will also be copied to the `vars` property
2072
+ # of the service. Any values not associated with service template parameters will be
2073
+ # ignored.
2074
+ # </td></tr>
2075
+ # </table>
2076
+ # <br />
2077
+ # * Required
2078
+ #
2079
+ # - vars
2080
+ # * Custom variables and values to set for this service
2081
+ #
2082
+ # - active (bool)
2083
+ # * Whether the service is initially active or inactive. Inactive services are not
2084
+ # automatically triggered and cannot be invoked via the API.
2085
+ # * Default: 1
2086
+ #
2087
+ # - response_table_id
2088
+ # * ID of a data table where responses will be stored, or null to disable
2089
+ # automatically storing responses. If the response_table_id parameter is not provided,
2090
+ # a data table may automatically be created with the same name as the service if the
2091
+ # service collects responses.
2092
+ #
2093
+ # - phone_ids (array)
2094
+ # * IDs of phones (basic routes) to associate with this service, or null to associate
2095
+ # this service with all routes. Only applies for service types that handle incoming
2096
+ # messages, voice calls, or USSD sessions.
2097
+ #
2098
+ # - message_types (array)
2099
+ # * Types of messages that this service should handle. Only applies to services that
2100
+ # handle incoming messages.
2101
+ # * Allowed values: text, call, sms, mms, ussd_session, chat
2102
+ #
2103
+ # - show_action (bool)
2104
+ # * Whether to show this service in the Actions menu within the Telerivet web app when
2105
+ # the service is active. Only applies for service types that are manually triggered.
2106
+ # * Default: 1
2107
+ #
2108
+ # - contact_number_filter
2109
+ # * If contact_number_filter is `long_number`, this service will only be triggered if
2110
+ # the contact phone number has at least 7 digits (ignoring messages from shortcodes
2111
+ # and alphanumeric senders). If contact_number_filter is `all`, the service will be
2112
+ # triggered for all contact phone numbers. Only applies to services that handle
2113
+ # incoming messages.
2114
+ # * Allowed values: long_number, all
2115
+ # * Default: long_number
2116
+ #
2117
+ # - direction
2118
+ # * Determines whether the service handles incoming voice calls, outgoing voice calls,
2119
+ # or both. Only applies to services that handle voice calls.
2120
+ # * Allowed values: incoming, outgoing, both
2121
+ # * Default: both
2122
+ #
2123
+ # - priority (int)
2124
+ # * A number that determines the order that services are triggered when an event
2125
+ # occurs (e.g. when an incoming message is received). Smaller numbers are triggered
2126
+ # first. The priority is ignored for services that are triggered directly.
2127
+ #
2128
+ # - apply_mode
2129
+ # * If apply_mode is `unhandled`, the service will not be triggered if another service
2130
+ # has already handled the incoming message. If apply_mode is `always`, the service
2131
+ # will always be triggered regardless of other services. Only applies to services that
2132
+ # handle incoming messages.
2133
+ # * Allowed values: always, unhandled
2134
+ # * Default: unhandled
2135
+ #
2136
+ # Returns:
2137
+ # Telerivet::Service
2138
+ #
2139
+ def create_service(options)
2140
+ require_relative 'service'
2141
+ Service.new(@api, @api.do_request("POST", get_base_api_path() + "/services", options))
2142
+ end
2143
+
1647
2144
  #
1648
2145
  # Queries services within the given project.
1649
2146
  #
@@ -1720,6 +2217,114 @@ class Project < Entity
1720
2217
  return Service.new(@api, {'project_id' => self.id, 'id' => id}, false)
1721
2218
  end
1722
2219
 
2220
+ #
2221
+ # Queries service log entries associated with this project.
2222
+ #
2223
+ # Note: Service logs are automatically deleted and no longer available
2224
+ # via the API after approximately one month.
2225
+ #
2226
+ # Arguments:
2227
+ # - options (Hash)
2228
+ #
2229
+ # - service_id
2230
+ # * Filter logs generated by a particular service
2231
+ #
2232
+ # - message_id
2233
+ # * Filter service logs related to a particular message
2234
+ #
2235
+ # - contact_id
2236
+ # * Filter service logs related to a particular contact. Ignored if using the
2237
+ # message_id parameter.
2238
+ #
2239
+ # - time_created (UNIX timestamp)
2240
+ # * Filter service logs by the time they were created
2241
+ # * Allowed modifiers: time_created[min], time_created[max]
2242
+ #
2243
+ # - execution_stats (bool)
2244
+ # * Show detailed execution stats for each log entry, if available.
2245
+ #
2246
+ # - sort_dir
2247
+ # * Sort the results in ascending or descending order
2248
+ # * Allowed values: asc, desc
2249
+ # * Default: asc
2250
+ #
2251
+ # - page_size (int)
2252
+ # * Number of results returned per page (max 500)
2253
+ # * Default: 50
2254
+ #
2255
+ # - offset (int)
2256
+ # * Number of items to skip from beginning of result set
2257
+ # * Default: 0
2258
+ #
2259
+ # Returns:
2260
+ # Telerivet::APICursor (of Hash)
2261
+ #
2262
+ # Returned Item Properties:
2263
+ # - time_created (UNIX timestamp)
2264
+ # * The time when the log entry was created
2265
+ #
2266
+ # - content
2267
+ # * The text logged
2268
+ #
2269
+ # - elapsed_ms (int)
2270
+ # * Elapsed time in milliseconds, if available.
2271
+ #
2272
+ # - service_id
2273
+ # * ID of the service associated with this log entry. Not returned when querying log
2274
+ # entries for a particular service.
2275
+ #
2276
+ # - message_id
2277
+ # * ID of the message associated with this log entry. Not returned when querying log
2278
+ # entries for a particular message.
2279
+ #
2280
+ # - contact_id
2281
+ # * ID of the contact associated with this log entry. Not returned when querying log
2282
+ # entries for a particular message or contact.
2283
+ #
2284
+ # - api_request_count (int)
2285
+ # * The total number of API requests triggered via the Cloud Script API. (Only
2286
+ # provided if execution_stats=true.)
2287
+ #
2288
+ # - api_request_ms (int)
2289
+ # * The total execution time of all API requests triggered via the Cloud Script API.
2290
+ # (Only provided if execution_stats=true.)
2291
+ #
2292
+ # - http_request_count (int)
2293
+ # * The total number of external HTTP requests triggered via the Cloud Script API.
2294
+ # (Only provided if execution_stats=true.)
2295
+ #
2296
+ # - http_request_ms (int)
2297
+ # * The total execution time of all external HTTP requests triggered via the Cloud
2298
+ # Script API. (Only provided if execution_stats=true.)
2299
+ #
2300
+ # - webhook_count (int)
2301
+ # * The total number of Webhook API requests triggered. (Only provided if
2302
+ # execution_stats=true.)
2303
+ #
2304
+ # - requests (array)
2305
+ # * Details about each API request, external HTTP request, and Cloud Script Module
2306
+ # loaded via the Cloud Script API. (Only provided if execution_stats=true.)
2307
+ #
2308
+ # Each item in the array has the following properties:
2309
+ #
2310
+ # - type (string): `api_request`, `http_request`, or
2311
+ # `module_load`
2312
+ # - resource (string): A string specific to the type of
2313
+ # request.
2314
+ # For module_load, this is the module path. For
2315
+ # api_request, it contains the HTTP
2316
+ # method, path, and query string. For http_request, it
2317
+ # contains the HTTP method and
2318
+ # URL.
2319
+ # - elapsed_ms (int): Number of milliseconds elapsed in
2320
+ # fetching
2321
+ # this resource
2322
+ # - status_code (int): Response status code, if available
2323
+ #
2324
+ def query_service_logs(options = nil)
2325
+ @api.cursor(nil, get_base_api_path() + "/service_logs", options)
2326
+ end
2327
+
1723
2328
  #
1724
2329
  # Queries custom routes that can be used to send messages (not including Phones).
1725
2330
  #
@@ -1880,6 +2485,195 @@ class Project < Entity
1880
2485
  return AirtimeTransaction.new(@api, {'project_id' => self.id, 'id' => id}, false)
1881
2486
  end
1882
2487
 
2488
+ #
2489
+ # Gets a list of all custom fields defined for contacts in this project. The return value is
2490
+ # an array of objects with the properties 'name', 'variable', 'type', 'order', 'readonly', and
2491
+ # 'lookup_key'. (Fields are automatically created any time a Contact's 'vars' property is
2492
+ # updated.)
2493
+ #
2494
+ # Returns:
2495
+ # array
2496
+ #
2497
+ def get_contact_fields()
2498
+ return @api.do_request("GET", get_base_api_path() + "/contact_fields")
2499
+ end
2500
+
2501
+ #
2502
+ # Allows customizing how a custom contact field is displayed in the Telerivet web app.
2503
+ #
2504
+ # Arguments:
2505
+ # - variable
2506
+ # * The variable name of the field to create or update.
2507
+ # * Required
2508
+ #
2509
+ # - options (Hash)
2510
+ # * Required
2511
+ #
2512
+ # - name (string, max 64 characters)
2513
+ # * Display name for the field
2514
+ #
2515
+ # - type (int)
2516
+ # * Field type
2517
+ # * Allowed values: text, long_text, secret, phone_number, email, url, audio, date,
2518
+ # date_time, number, boolean, checkbox, select, radio
2519
+ #
2520
+ # - order (int)
2521
+ # * Order in which to display the field
2522
+ #
2523
+ # - items (array)
2524
+ # * Array of up to 100 objects containing `value` and `label` string properties to
2525
+ # show in the dropdown list when type is `select`. Each `value` and `label` must be
2526
+ # between 1 and 256 characters in length.
2527
+ # * Required if type is `select`
2528
+ #
2529
+ # - readonly (bool)
2530
+ # * Set to true to prevent editing the field in the Telerivet web app
2531
+ #
2532
+ # - lookup_key (bool)
2533
+ # * Set to true to allow using this field as a lookup key when importing contacts via
2534
+ # the Telerivet web app
2535
+ #
2536
+ # - show_on_conversation (bool)
2537
+ # * Set to true to show field on Conversations tab
2538
+ #
2539
+ # Returns:
2540
+ # object
2541
+ #
2542
+ def set_contact_field_metadata(variable, options)
2543
+ return @api.do_request("POST", get_base_api_path() + "/contact_fields/#{variable}", options)
2544
+ end
2545
+
2546
+ #
2547
+ # Gets a list of all custom fields defined for messages in this project. The return value is
2548
+ # an array of objects with the properties 'name', 'variable', 'type', 'order', 'readonly', and
2549
+ # 'lookup_key'. (Fields are automatically created any time a Contact's 'vars' property is
2550
+ # updated.)
2551
+ #
2552
+ # Returns:
2553
+ # array
2554
+ #
2555
+ def get_message_fields()
2556
+ return @api.do_request("GET", get_base_api_path() + "/message_fields")
2557
+ end
2558
+
2559
+ #
2560
+ # Allows customizing how a custom message field is displayed in the Telerivet web app.
2561
+ #
2562
+ # Arguments:
2563
+ # - variable
2564
+ # * The variable name of the field to create or update.
2565
+ # * Required
2566
+ #
2567
+ # - options (Hash)
2568
+ # * Required
2569
+ #
2570
+ # - name (string, max 64 characters)
2571
+ # * Display name for the field
2572
+ #
2573
+ # - type (string)
2574
+ # * Field type
2575
+ # * Allowed values: text, long_text, secret, phone_number, email, url, audio, date,
2576
+ # date_time, number, boolean, checkbox, select, radio
2577
+ #
2578
+ # - order (int)
2579
+ # * Order in which to display the field
2580
+ #
2581
+ # - items (array)
2582
+ # * Array of up to 100 objects containing `value` and `label` string properties to
2583
+ # show in the dropdown list when type is `select`. Each `value` and `label` must be
2584
+ # between 1 and 256 characters in length.
2585
+ # * Required if type is `select`
2586
+ #
2587
+ # - hide_values (bool)
2588
+ # * Set to true to avoid showing values of this field on the Messages page
2589
+ #
2590
+ # Returns:
2591
+ # object
2592
+ #
2593
+ def set_message_field_metadata(variable, options)
2594
+ return @api.do_request("POST", get_base_api_path() + "/message_fields/#{variable}", options)
2595
+ end
2596
+
2597
+ #
2598
+ # Retrieves statistics about messages sent or received via Telerivet. This endpoint returns
2599
+ # historical data that is computed shortly after midnight each day in the project's time zone,
2600
+ # and does not contain message statistics for the current day.
2601
+ #
2602
+ # Arguments:
2603
+ # - options (Hash)
2604
+ # * Required
2605
+ #
2606
+ # - start_date (string)
2607
+ # * Start date of message statistics, in YYYY-MM-DD format
2608
+ # * Required
2609
+ #
2610
+ # - end_date (string)
2611
+ # * End date of message statistics (inclusive), in YYYY-MM-DD format
2612
+ # * Required
2613
+ #
2614
+ # - rollup (string)
2615
+ # * Date interval to group by
2616
+ # * Allowed values: day, week, month, year, all
2617
+ # * Default: day
2618
+ #
2619
+ # - properties (string)
2620
+ # * Comma separated list of properties to group by
2621
+ # * Allowed values: org_id, org_name, org_industry, project_id, project_name, user_id,
2622
+ # user_email, user_name, phone_id, phone_name, phone_type, direction, source, status,
2623
+ # network_code, network_name, message_type, service_id, service_name, simulated, link
2624
+ #
2625
+ # - metrics (string)
2626
+ # * Comma separated list of metrics to return (summed for each distinct value of the
2627
+ # requested properties)
2628
+ # * Allowed values: count, num_parts, duration, price
2629
+ # * Required
2630
+ #
2631
+ # - currency (string)
2632
+ # * Three-letter ISO 4217 currency code used when returning the 'price' field. If the
2633
+ # original price was in a different currency, it will be converted to the requested
2634
+ # currency using the approximate current exchange rate.
2635
+ # * Default: USD
2636
+ #
2637
+ # - filters (Hash)
2638
+ # * Key-value pairs of properties and corresponding values; the returned statistics
2639
+ # will only include messages where the property matches the provided value. Only the
2640
+ # following properties are supported for filters: `user_id`, `phone_id`, `direction`,
2641
+ # `source`, `status`, `service_id`, `simulated`, `message_type`, `network_code`
2642
+ #
2643
+ # Returns:
2644
+ # (associative array)
2645
+ # - intervals (array)
2646
+ # * List of objects representing each date interval containing at least one message
2647
+ # matching the filters.
2648
+ # Each object has the following properties:
2649
+ #
2650
+ # <table>
2651
+ # <tr><td> start_time </td> <td> The UNIX timestamp of the start
2652
+ # of the interval (int) </td></tr>
2653
+ # <tr><td> end_time </td> <td> The UNIX timestamp of the end of
2654
+ # the interval, exclusive (int) </td></tr>
2655
+ # <tr><td> start_date </td> <td> The date of the start of the
2656
+ # interval in YYYY-MM-DD format (string) </td></tr>
2657
+ # <tr><td> end_date </td> <td> The date of the end of the
2658
+ # interval in YYYY-MM-DD format, inclusive (string) </td></tr>
2659
+ # <tr><td> groups </td> <td> Array of groups for each
2660
+ # combination of requested property values matching the filters (array)
2661
+ # <br /><br />
2662
+ # Each object has the following properties:
2663
+ # <table>
2664
+ # <tr><td> properties </td> <td> An object of key/value
2665
+ # pairs for each distinct value of the requested properties (object) </td></tr>
2666
+ # <tr><td> metrics </td> <td> An object of key/value pairs
2667
+ # for each requested metric (object) </td></tr>
2668
+ # </table>
2669
+ # </td></tr>
2670
+ # </table>
2671
+ #
2672
+ def get_message_stats(options)
2673
+ data = @api.do_request("GET", get_base_api_path() + "/message_stats", options)
2674
+ return data
2675
+ end
2676
+
1883
2677
  #
1884
2678
  # Saves any fields or custom variables that have changed for the project.
1885
2679
  #
@@ -1903,10 +2697,34 @@ class Project < Entity
1903
2697
  get('timezone_id')
1904
2698
  end
1905
2699
 
2700
+ def timezone_id=(value)
2701
+ set('timezone_id', value)
2702
+ end
2703
+
1906
2704
  def url_slug
1907
2705
  get('url_slug')
1908
2706
  end
1909
2707
 
2708
+ def url_slug=(value)
2709
+ set('url_slug', value)
2710
+ end
2711
+
2712
+ def default_route_id
2713
+ get('default_route_id')
2714
+ end
2715
+
2716
+ def default_route_id=(value)
2717
+ set('default_route_id', value)
2718
+ end
2719
+
2720
+ def auto_create_contacts
2721
+ get('auto_create_contacts')
2722
+ end
2723
+
2724
+ def auto_create_contacts=(value)
2725
+ set('auto_create_contacts', value)
2726
+ end
2727
+
1910
2728
  def organization_id
1911
2729
  get('organization_id')
1912
2730
  end