late-sdk 0.0.761 → 0.0.763

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +6 -4
  3. data/docs/GMBReviewsApi.md +76 -0
  4. data/docs/GetGoogleBusinessReview200Response.md +24 -0
  5. data/docs/GetGoogleBusinessReviews200Response.md +1 -1
  6. data/docs/{GetGoogleBusinessReviews200ResponseReviewsInner.md → GoogleBusinessReview.md} +6 -6
  7. data/docs/{GetGoogleBusinessReviews200ResponseReviewsInnerReviewReply.md → GoogleBusinessReviewReviewReply.md} +2 -2
  8. data/docs/{GetGoogleBusinessReviews200ResponseReviewsInnerReviewer.md → GoogleBusinessReviewReviewer.md} +2 -2
  9. data/docs/InstagramPlatformData.md +2 -0
  10. data/docs/ListInboxReviews200ResponseDataInner.md +1 -1
  11. data/docs/{GetGoogleBusinessReviews200ResponseReviewsInnerPhotosInner.md → ListInboxReviews200ResponseDataInnerPhotosInner.md} +2 -2
  12. data/docs/WebhookEventsApi.md +1 -1
  13. data/lib/zernio-sdk/api/gmb_reviews_api.rb +72 -0
  14. data/lib/zernio-sdk/api/webhook_events_api.rb +2 -2
  15. data/lib/zernio-sdk/models/get_google_business_review200_response.rb +174 -0
  16. data/lib/zernio-sdk/models/get_google_business_reviews200_response.rb +1 -1
  17. data/lib/zernio-sdk/models/{get_google_business_reviews200_response_reviews_inner.rb → google_business_review.rb} +13 -12
  18. data/lib/zernio-sdk/models/{get_google_business_reviews200_response_reviews_inner_review_reply.rb → google_business_review_review_reply.rb} +3 -3
  19. data/lib/zernio-sdk/models/{get_google_business_reviews200_response_reviews_inner_reviewer.rb → google_business_review_reviewer.rb} +3 -3
  20. data/lib/zernio-sdk/models/instagram_platform_data.rb +13 -1
  21. data/lib/zernio-sdk/models/list_inbox_reviews200_response_data_inner.rb +1 -1
  22. data/lib/zernio-sdk/models/{get_google_business_reviews200_response_reviews_inner_photos_inner.rb → list_inbox_reviews200_response_data_inner_photos_inner.rb} +3 -3
  23. data/lib/zernio-sdk/models/webhook_payload_message_deleted.rb +1 -1
  24. data/lib/zernio-sdk/version.rb +1 -1
  25. data/lib/zernio-sdk.rb +5 -4
  26. data/openapi.yaml +128 -36
  27. data/spec/api/gmb_reviews_api_spec.rb +14 -0
  28. data/spec/models/get_google_business_review200_response_spec.rb +54 -0
  29. data/spec/models/{get_google_business_reviews200_response_reviews_inner_review_reply_spec.rb → google_business_review_review_reply_spec.rb} +6 -6
  30. data/spec/models/{get_google_business_reviews200_response_reviews_inner_reviewer_spec.rb → google_business_review_reviewer_spec.rb} +6 -6
  31. data/spec/models/{get_google_business_reviews200_response_reviews_inner_spec.rb → google_business_review_spec.rb} +6 -6
  32. data/spec/models/instagram_platform_data_spec.rb +6 -0
  33. data/spec/models/{get_google_business_reviews200_response_reviews_inner_photos_inner_spec.rb → list_inbox_reviews200_response_data_inner_photos_inner_spec.rb} +6 -6
  34. data/zernio-sdk-0.0.763.gem +0 -0
  35. metadata +22 -18
  36. data/zernio-sdk-0.0.761.gem +0 -0
@@ -14,7 +14,8 @@ require 'date'
14
14
  require 'time'
15
15
 
16
16
  module Zernio
17
- class GetGoogleBusinessReviews200ResponseReviewsInner < ApiModelBase
17
+ # A Google Business Profile review, as returned by every gmb-reviews read endpoint.
18
+ class GoogleBusinessReview < ApiModelBase
18
19
  # Review ID
19
20
  attr_accessor :id
20
21
 
@@ -23,7 +24,7 @@ module Zernio
23
24
 
24
25
  attr_accessor :reviewer
25
26
 
26
- # Numeric star rating
27
+ # Numeric star rating (0 when Google sends no rating)
27
28
  attr_accessor :rating
28
29
 
29
30
  # Google's string rating
@@ -98,15 +99,15 @@ module Zernio
98
99
  {
99
100
  :'id' => :'String',
100
101
  :'name' => :'String',
101
- :'reviewer' => :'GetGoogleBusinessReviews200ResponseReviewsInnerReviewer',
102
+ :'reviewer' => :'GoogleBusinessReviewReviewer',
102
103
  :'rating' => :'Integer',
103
104
  :'star_rating' => :'String',
104
105
  :'comment' => :'String',
105
106
  :'create_time' => :'Time',
106
107
  :'update_time' => :'Time',
107
- :'review_reply' => :'GetGoogleBusinessReviews200ResponseReviewsInnerReviewReply',
108
+ :'review_reply' => :'GoogleBusinessReviewReviewReply',
108
109
  :'photo_count' => :'Integer',
109
- :'photos' => :'Array<GetGoogleBusinessReviews200ResponseReviewsInnerPhotosInner>'
110
+ :'photos' => :'Array<ListInboxReviews200ResponseDataInnerPhotosInner>'
110
111
  }
111
112
  end
112
113
 
@@ -120,14 +121,14 @@ module Zernio
120
121
  # @param [Hash] attributes Model attributes in the form of hash
121
122
  def initialize(attributes = {})
122
123
  if (!attributes.is_a?(Hash))
123
- fail ArgumentError, "The input argument (attributes) must be a hash in `Zernio::GetGoogleBusinessReviews200ResponseReviewsInner` initialize method"
124
+ fail ArgumentError, "The input argument (attributes) must be a hash in `Zernio::GoogleBusinessReview` initialize method"
124
125
  end
125
126
 
126
127
  # check to see if the attribute exists and convert string to symbol for hash key
127
128
  acceptable_attribute_map = self.class.acceptable_attribute_map
128
129
  attributes = attributes.each_with_object({}) { |(k, v), h|
129
130
  if (!acceptable_attribute_map.key?(k.to_sym))
130
- fail ArgumentError, "`#{k}` is not a valid attribute in `Zernio::GetGoogleBusinessReviews200ResponseReviewsInner`. Please check the name to make sure it's valid. List of attributes: " + acceptable_attribute_map.keys.inspect
131
+ fail ArgumentError, "`#{k}` is not a valid attribute in `Zernio::GoogleBusinessReview`. Please check the name to make sure it's valid. List of attributes: " + acceptable_attribute_map.keys.inspect
131
132
  end
132
133
  h[k.to_sym] = v
133
134
  }
@@ -188,8 +189,8 @@ module Zernio
188
189
  invalid_properties.push('invalid value for "rating", must be smaller than or equal to 5.')
189
190
  end
190
191
 
191
- if !@rating.nil? && @rating < 1
192
- invalid_properties.push('invalid value for "rating", must be greater than or equal to 1.')
192
+ if !@rating.nil? && @rating < 0
193
+ invalid_properties.push('invalid value for "rating", must be greater than or equal to 0.')
193
194
  end
194
195
 
195
196
  invalid_properties
@@ -200,7 +201,7 @@ module Zernio
200
201
  def valid?
201
202
  warn '[DEPRECATED] the `valid?` method is obsolete'
202
203
  return false if !@rating.nil? && @rating > 5
203
- return false if !@rating.nil? && @rating < 1
204
+ return false if !@rating.nil? && @rating < 0
204
205
  star_rating_validator = EnumAttributeValidator.new('String', ["ONE", "TWO", "THREE", "FOUR", "FIVE"])
205
206
  return false unless star_rating_validator.valid?(@star_rating)
206
207
  true
@@ -217,8 +218,8 @@ module Zernio
217
218
  fail ArgumentError, 'invalid value for "rating", must be smaller than or equal to 5.'
218
219
  end
219
220
 
220
- if rating < 1
221
- fail ArgumentError, 'invalid value for "rating", must be greater than or equal to 1.'
221
+ if rating < 0
222
+ fail ArgumentError, 'invalid value for "rating", must be greater than or equal to 0.'
222
223
  end
223
224
 
224
225
  @rating = rating
@@ -14,7 +14,7 @@ require 'date'
14
14
  require 'time'
15
15
 
16
16
  module Zernio
17
- class GetGoogleBusinessReviews200ResponseReviewsInnerReviewReply < ApiModelBase
17
+ class GoogleBusinessReviewReviewReply < ApiModelBase
18
18
  # Business owner reply
19
19
  attr_accessor :comment
20
20
 
@@ -56,14 +56,14 @@ module Zernio
56
56
  # @param [Hash] attributes Model attributes in the form of hash
57
57
  def initialize(attributes = {})
58
58
  if (!attributes.is_a?(Hash))
59
- fail ArgumentError, "The input argument (attributes) must be a hash in `Zernio::GetGoogleBusinessReviews200ResponseReviewsInnerReviewReply` initialize method"
59
+ fail ArgumentError, "The input argument (attributes) must be a hash in `Zernio::GoogleBusinessReviewReviewReply` initialize method"
60
60
  end
61
61
 
62
62
  # check to see if the attribute exists and convert string to symbol for hash key
63
63
  acceptable_attribute_map = self.class.acceptable_attribute_map
64
64
  attributes = attributes.each_with_object({}) { |(k, v), h|
65
65
  if (!acceptable_attribute_map.key?(k.to_sym))
66
- fail ArgumentError, "`#{k}` is not a valid attribute in `Zernio::GetGoogleBusinessReviews200ResponseReviewsInnerReviewReply`. Please check the name to make sure it's valid. List of attributes: " + acceptable_attribute_map.keys.inspect
66
+ fail ArgumentError, "`#{k}` is not a valid attribute in `Zernio::GoogleBusinessReviewReviewReply`. Please check the name to make sure it's valid. List of attributes: " + acceptable_attribute_map.keys.inspect
67
67
  end
68
68
  h[k.to_sym] = v
69
69
  }
@@ -14,7 +14,7 @@ require 'date'
14
14
  require 'time'
15
15
 
16
16
  module Zernio
17
- class GetGoogleBusinessReviews200ResponseReviewsInnerReviewer < ApiModelBase
17
+ class GoogleBusinessReviewReviewer < ApiModelBase
18
18
  attr_accessor :display_name
19
19
 
20
20
  attr_accessor :profile_photo_url
@@ -60,14 +60,14 @@ module Zernio
60
60
  # @param [Hash] attributes Model attributes in the form of hash
61
61
  def initialize(attributes = {})
62
62
  if (!attributes.is_a?(Hash))
63
- fail ArgumentError, "The input argument (attributes) must be a hash in `Zernio::GetGoogleBusinessReviews200ResponseReviewsInnerReviewer` initialize method"
63
+ fail ArgumentError, "The input argument (attributes) must be a hash in `Zernio::GoogleBusinessReviewReviewer` initialize method"
64
64
  end
65
65
 
66
66
  # check to see if the attribute exists and convert string to symbol for hash key
67
67
  acceptable_attribute_map = self.class.acceptable_attribute_map
68
68
  attributes = attributes.each_with_object({}) { |(k, v), h|
69
69
  if (!acceptable_attribute_map.key?(k.to_sym))
70
- fail ArgumentError, "`#{k}` is not a valid attribute in `Zernio::GetGoogleBusinessReviews200ResponseReviewsInnerReviewer`. Please check the name to make sure it's valid. List of attributes: " + acceptable_attribute_map.keys.inspect
70
+ fail ArgumentError, "`#{k}` is not a valid attribute in `Zernio::GoogleBusinessReviewReviewer`. Please check the name to make sure it's valid. List of attributes: " + acceptable_attribute_map.keys.inspect
71
71
  end
72
72
  h[k.to_sym] = v
73
73
  }
@@ -38,6 +38,9 @@ module Zernio
38
38
 
39
39
  attr_accessor :audio_configuration
40
40
 
41
+ # Publish the video without sound. Applies to Reels, Stories, and video carousel slides; ignored for images. Instagram has no mute parameter, so we strip the audio track from the file before handing it to Instagram: the published video is permanently silent and the original audio cannot be restored from Instagram. If the audio cannot be stripped the post fails rather than publishing with sound; videos above 200MB cannot be muted at all, so mute them before uploading. Unrelated to audioConfiguration.videoVolume, which only lowers the original sound when a catalog track is attached.
42
+ attr_accessor :mute_audio
43
+
41
44
  # Millisecond offset from video start for the Reel cover frame. Ignored when instagramThumbnail or reelCover is provided. Defaults to 0.
42
45
  attr_accessor :thumb_offset
43
46
 
@@ -83,6 +86,7 @@ module Zernio
83
86
  :'user_tags' => :'userTags',
84
87
  :'audio_name' => :'audioName',
85
88
  :'audio_configuration' => :'audioConfiguration',
89
+ :'mute_audio' => :'muteAudio',
86
90
  :'thumb_offset' => :'thumbOffset',
87
91
  :'instagram_thumbnail' => :'instagramThumbnail',
88
92
  :'reel_cover' => :'reelCover',
@@ -111,6 +115,7 @@ module Zernio
111
115
  :'user_tags' => :'Array<InstagramPlatformDataUserTagsInner>',
112
116
  :'audio_name' => :'String',
113
117
  :'audio_configuration' => :'InstagramPlatformDataAudioConfiguration',
118
+ :'mute_audio' => :'Boolean',
114
119
  :'thumb_offset' => :'Integer',
115
120
  :'instagram_thumbnail' => :'String',
116
121
  :'reel_cover' => :'String',
@@ -178,6 +183,12 @@ module Zernio
178
183
  self.audio_configuration = attributes[:'audio_configuration']
179
184
  end
180
185
 
186
+ if attributes.key?(:'mute_audio')
187
+ self.mute_audio = attributes[:'mute_audio']
188
+ else
189
+ self.mute_audio = false
190
+ end
191
+
181
192
  if attributes.key?(:'thumb_offset')
182
193
  self.thumb_offset = attributes[:'thumb_offset']
183
194
  end
@@ -256,6 +267,7 @@ module Zernio
256
267
  user_tags == o.user_tags &&
257
268
  audio_name == o.audio_name &&
258
269
  audio_configuration == o.audio_configuration &&
270
+ mute_audio == o.mute_audio &&
259
271
  thumb_offset == o.thumb_offset &&
260
272
  instagram_thumbnail == o.instagram_thumbnail &&
261
273
  reel_cover == o.reel_cover &&
@@ -271,7 +283,7 @@ module Zernio
271
283
  # Calculates hash code according to all attributes.
272
284
  # @return [Integer] Hash code
273
285
  def hash
274
- [content_type, share_to_feed, collaborators, first_comment, trial_params, user_tags, audio_name, audio_configuration, thumb_offset, instagram_thumbnail, reel_cover, is_ai_generated].hash
286
+ [content_type, share_to_feed, collaborators, first_comment, trial_params, user_tags, audio_name, audio_configuration, mute_audio, thumb_offset, instagram_thumbnail, reel_cover, is_ai_generated].hash
275
287
  end
276
288
 
277
289
  # Builds the object from hash
@@ -101,7 +101,7 @@ module Zernio
101
101
  :'has_reply' => :'Boolean',
102
102
  :'has_photos' => :'Boolean',
103
103
  :'photo_count' => :'Integer',
104
- :'photos' => :'Array<GetGoogleBusinessReviews200ResponseReviewsInnerPhotosInner>',
104
+ :'photos' => :'Array<ListInboxReviews200ResponseDataInnerPhotosInner>',
105
105
  :'reply' => :'ListInboxReviews200ResponseDataInnerReply',
106
106
  :'review_url' => :'String'
107
107
  }
@@ -14,7 +14,7 @@ require 'date'
14
14
  require 'time'
15
15
 
16
16
  module Zernio
17
- class GetGoogleBusinessReviews200ResponseReviewsInnerPhotosInner < ApiModelBase
17
+ class ListInboxReviews200ResponseDataInnerPhotosInner < ApiModelBase
18
18
  attr_accessor :url
19
19
 
20
20
  # Attribute mapping from ruby-style variable name to JSON key.
@@ -51,14 +51,14 @@ module Zernio
51
51
  # @param [Hash] attributes Model attributes in the form of hash
52
52
  def initialize(attributes = {})
53
53
  if (!attributes.is_a?(Hash))
54
- fail ArgumentError, "The input argument (attributes) must be a hash in `Zernio::GetGoogleBusinessReviews200ResponseReviewsInnerPhotosInner` initialize method"
54
+ fail ArgumentError, "The input argument (attributes) must be a hash in `Zernio::ListInboxReviews200ResponseDataInnerPhotosInner` initialize method"
55
55
  end
56
56
 
57
57
  # check to see if the attribute exists and convert string to symbol for hash key
58
58
  acceptable_attribute_map = self.class.acceptable_attribute_map
59
59
  attributes = attributes.each_with_object({}) { |(k, v), h|
60
60
  if (!acceptable_attribute_map.key?(k.to_sym))
61
- fail ArgumentError, "`#{k}` is not a valid attribute in `Zernio::GetGoogleBusinessReviews200ResponseReviewsInnerPhotosInner`. Please check the name to make sure it's valid. List of attributes: " + acceptable_attribute_map.keys.inspect
61
+ fail ArgumentError, "`#{k}` is not a valid attribute in `Zernio::ListInboxReviews200ResponseDataInnerPhotosInner`. Please check the name to make sure it's valid. List of attributes: " + acceptable_attribute_map.keys.inspect
62
62
  end
63
63
  h[k.to_sym] = v
64
64
  }
@@ -14,7 +14,7 @@ require 'date'
14
14
  require 'time'
15
15
 
16
16
  module Zernio
17
- # Webhook payload for message.deleted events. Fires when the sender deletes (unsends) a message. Supported platforms: Instagram (incoming unsend) and WhatsApp (when the business deletes an outgoing message via the Cloud API). The message.text and message.attachments fields retain the content that existed before the delete. The Zernio dashboard UI does not show this content, but authorized API consumers may access it for moderation, compliance, or archival use cases.
17
+ # Webhook payload for message.deleted events. Fires when the sender deletes (unsends) a message. Supported platforms: Instagram (incoming unsend) and WhatsApp, in both directions: an outgoing message the business deleted (via the Cloud API, or from the WhatsApp Business app on a Coexistence number) and an incoming message the customer deleted. Read `message.direction` to tell the two apart. The message.text and message.attachments fields retain the content that existed before the delete. The Zernio dashboard UI does not show this content, but authorized API consumers may access it for moderation, compliance, or archival use cases.
18
18
  class WebhookPayloadMessageDeleted < ApiModelBase
19
19
  attr_accessor :id
20
20
 
@@ -11,5 +11,5 @@ Generator version: 7.19.0
11
11
  =end
12
12
 
13
13
  module Zernio
14
- VERSION = '0.0.761'
14
+ VERSION = '0.0.763'
15
15
  end
data/lib/zernio-sdk.rb CHANGED
@@ -590,11 +590,8 @@ require 'zernio-sdk/models/get_google_business_performance200_response_date_rang
590
590
  require 'zernio-sdk/models/get_google_business_performance200_response_metrics_value'
591
591
  require 'zernio-sdk/models/get_google_business_performance200_response_metrics_value_values_inner'
592
592
  require 'zernio-sdk/models/get_google_business_performance400_response'
593
+ require 'zernio-sdk/models/get_google_business_review200_response'
593
594
  require 'zernio-sdk/models/get_google_business_reviews200_response'
594
- require 'zernio-sdk/models/get_google_business_reviews200_response_reviews_inner'
595
- require 'zernio-sdk/models/get_google_business_reviews200_response_reviews_inner_photos_inner'
596
- require 'zernio-sdk/models/get_google_business_reviews200_response_reviews_inner_review_reply'
597
- require 'zernio-sdk/models/get_google_business_reviews200_response_reviews_inner_reviewer'
598
595
  require 'zernio-sdk/models/get_google_business_search_keywords200_response'
599
596
  require 'zernio-sdk/models/get_google_business_search_keywords200_response_keywords_inner'
600
597
  require 'zernio-sdk/models/get_google_business_search_keywords200_response_month_range'
@@ -810,6 +807,9 @@ require 'zernio-sdk/models/google_business_platform_data_event_schedule_end_time
810
807
  require 'zernio-sdk/models/google_business_platform_data_event_schedule_start_date'
811
808
  require 'zernio-sdk/models/google_business_platform_data_event_schedule_start_time'
812
809
  require 'zernio-sdk/models/google_business_platform_data_offer'
810
+ require 'zernio-sdk/models/google_business_review'
811
+ require 'zernio-sdk/models/google_business_review_review_reply'
812
+ require 'zernio-sdk/models/google_business_review_reviewer'
813
813
  require 'zernio-sdk/models/handle_o_auth_callback_request'
814
814
  require 'zernio-sdk/models/hide_inbox_comment200_response'
815
815
  require 'zernio-sdk/models/hide_inbox_comment_request'
@@ -964,6 +964,7 @@ require 'zernio-sdk/models/list_inbox_mentions200_response_data_inner'
964
964
  require 'zernio-sdk/models/list_inbox_mentions200_response_meta'
965
965
  require 'zernio-sdk/models/list_inbox_reviews200_response'
966
966
  require 'zernio-sdk/models/list_inbox_reviews200_response_data_inner'
967
+ require 'zernio-sdk/models/list_inbox_reviews200_response_data_inner_photos_inner'
967
968
  require 'zernio-sdk/models/list_inbox_reviews200_response_data_inner_reply'
968
969
  require 'zernio-sdk/models/list_inbox_reviews200_response_data_inner_reviewer'
969
970
  require 'zernio-sdk/models/list_inbox_reviews200_response_summary'
data/openapi.yaml CHANGED
@@ -163,7 +163,7 @@ x-documentation:
163
163
  - `conversation.started` - A new conversation opened between one of your accounts and a contact, in either direction (any DM platform, and SMS); fires only the first time the thread appears
164
164
  - `message.sent` - DM sent via the API
165
165
  - `message.edited` - A sender edited a message (Instagram, Messenger, Telegram)
166
- - `message.deleted` - A sender deleted ("unsent") a message (Instagram; WhatsApp when the business deletes a sent message)
166
+ - `message.deleted` - A sender deleted ("unsent") a message (Instagram; WhatsApp in both directions, whether the business deleted a message it sent or the customer deleted one they sent). `message.direction` tells the two apart.
167
167
  - `message.delivered` - An outgoing message was delivered (WhatsApp, Messenger, SMS)
168
168
  - `message.read` - An outgoing message was read by the recipient (WhatsApp, Messenger, Instagram)
169
169
  - `message.failed` - An outgoing message failed delivery (WhatsApp, SMS; on SMS the carrier's error code rides in `error`)
@@ -740,6 +740,36 @@ components:
740
740
  effective_account_limit: 2000
741
741
  current_account_count: 2000
742
742
  schemas:
743
+ GoogleBusinessReview:
744
+ type: object
745
+ description: A Google Business Profile review, as returned by every gmb-reviews read endpoint.
746
+ properties:
747
+ id: { type: string, description: Review ID }
748
+ name: { type: string, description: Full resource name }
749
+ reviewer:
750
+ type: object
751
+ properties:
752
+ displayName: { type: string }
753
+ profilePhotoUrl: { type: [string, "null"] }
754
+ isAnonymous: { type: boolean }
755
+ rating: { type: integer, minimum: 0, maximum: 5, description: 'Numeric star rating (0 when Google sends no rating)' }
756
+ starRating: { type: string, enum: [ONE, TWO, THREE, FOUR, FIVE], description: "Google's string rating" }
757
+ comment: { type: string, description: Review text }
758
+ createTime: { type: string, format: date-time }
759
+ updateTime: { type: string, format: date-time }
760
+ reviewReply:
761
+ type: [object, "null"]
762
+ properties:
763
+ comment: { type: string, description: Business owner reply }
764
+ updateTime: { type: string, format: date-time }
765
+ photoCount: { type: integer, description: 'Number of photos attached to the review (photos only, videos are not counted)' }
766
+ photos:
767
+ type: array
768
+ description: Photos attached to the review by the reviewer
769
+ items:
770
+ type: object
771
+ properties:
772
+ url: { type: string, format: uri }
743
773
  Verification:
744
774
  type: object
745
775
  description: 'A managed OTP verification. The code itself is never returned or stored (hash only).'
@@ -4059,8 +4089,10 @@ components:
4059
4089
  description: |
4060
4090
  Webhook payload for message.deleted events. Fires when the sender
4061
4091
  deletes (unsends) a message. Supported platforms: Instagram (incoming
4062
- unsend) and WhatsApp (when the business deletes an outgoing message
4063
- via the Cloud API).
4092
+ unsend) and WhatsApp, in both directions: an outgoing message the
4093
+ business deleted (via the Cloud API, or from the WhatsApp Business app
4094
+ on a Coexistence number) and an incoming message the customer deleted.
4095
+ Read `message.direction` to tell the two apart.
4064
4096
 
4065
4097
  The message.text and message.attachments fields retain the content
4066
4098
  that existed before the delete. The Zernio dashboard UI does not show
@@ -5522,6 +5554,11 @@ components:
5522
5554
  maximum: 100
5523
5555
  description: 'Volume of the video''s own sound, 0-100. Defaults to 100. Set 0 to mute the original video audio.'
5524
5556
  example: 100
5557
+ muteAudio:
5558
+ type: boolean
5559
+ default: false
5560
+ description: 'Publish the video without sound. Applies to Reels, Stories, and video carousel slides; ignored for images. Instagram has no mute parameter, so we strip the audio track from the file before handing it to Instagram: the published video is permanently silent and the original audio cannot be restored from Instagram. If the audio cannot be stripped the post fails rather than publishing with sound; videos above 200MB cannot be muted at all, so mute them before uploading. Unrelated to audioConfiguration.videoVolume, which only lowers the original sound when a catalog track is attached.'
5561
+ example: true
5525
5562
  thumbOffset:
5526
5563
  type: integer
5527
5564
  minimum: 0
@@ -9265,10 +9302,13 @@ webhooks:
9265
9302
  summary: Message deleted event
9266
9303
  description: |
9267
9304
  Fired when a sender deletes (unsends) a message. Supported on Instagram
9268
- (incoming unsend) and WhatsApp (when the business deletes an outgoing
9269
- message via the Cloud API). The payload retains the pre-delete text
9270
- and attachments so API consumers can access the original content for
9271
- moderation or compliance — the Zernio dashboard UI hides it.
9305
+ (incoming unsend) and WhatsApp in both directions: an outgoing message
9306
+ the business deleted (via the Cloud API, or from the WhatsApp Business
9307
+ app on a Coexistence number) and an incoming message the customer
9308
+ deleted. Read `message.direction` to tell the two apart. The payload
9309
+ retains the pre-delete text and attachments so API consumers can access
9310
+ the original content for moderation or compliance; the Zernio dashboard
9311
+ UI hides it.
9272
9312
  tags: [Webhook Events]
9273
9313
  requestBody:
9274
9314
  required: true
@@ -17903,35 +17943,7 @@ paths:
17903
17943
  locationId: { type: string }
17904
17944
  reviews:
17905
17945
  type: array
17906
- items:
17907
- type: object
17908
- properties:
17909
- id: { type: string, description: Review ID }
17910
- name: { type: string, description: Full resource name }
17911
- reviewer:
17912
- type: object
17913
- properties:
17914
- displayName: { type: string }
17915
- profilePhotoUrl: { type: [string, "null"] }
17916
- isAnonymous: { type: boolean }
17917
- rating: { type: integer, minimum: 1, maximum: 5, description: Numeric star rating }
17918
- starRating: { type: string, enum: [ONE, TWO, THREE, FOUR, FIVE], description: Google's string rating }
17919
- comment: { type: string, description: Review text }
17920
- createTime: { type: string, format: date-time }
17921
- updateTime: { type: string, format: date-time }
17922
- reviewReply:
17923
- type: [object, "null"]
17924
- properties:
17925
- comment: { type: string, description: Business owner reply }
17926
- updateTime: { type: string, format: date-time }
17927
- photoCount: { type: integer, description: 'Number of photos attached to the review (photos only, videos are not counted)' }
17928
- photos:
17929
- type: array
17930
- description: Photos attached to the review by the reviewer
17931
- items:
17932
- type: object
17933
- properties:
17934
- url: { type: string, format: uri }
17946
+ items: { $ref: '#/components/schemas/GoogleBusinessReview' }
17935
17947
  averageRating: { type: number, description: Overall average rating }
17936
17948
  totalReviewCount: { type: integer, description: Total number of reviews }
17937
17949
  nextPageToken: { type: [string, "null"], description: Token for next page }
@@ -19777,6 +19789,86 @@ paths:
19777
19789
  application/json:
19778
19790
  schema: { $ref: '#/components/schemas/ErrorResponse' }
19779
19791
 
19792
+ /v1/accounts/{accountId}/gmb-reviews/{reviewId}:
19793
+ get:
19794
+ x-resource-group: "engagement"
19795
+ operationId: getGoogleBusinessReview
19796
+ tags: [GMB Reviews]
19797
+ summary: Get a review
19798
+ description: |
19799
+ Returns one Google Business review, in the same shape as the entries of GET /v1/accounts/{accountId}/gmb-reviews.
19800
+ The review is read from the account's selected location unless locationId overrides it, and Google returns 404 for a review id that belongs to another location.
19801
+ Read the review before replying if a human may have answered it already: replies are overwritten in place and Google keeps no history.
19802
+ parameters:
19803
+ - name: accountId
19804
+ in: path
19805
+ required: true
19806
+ schema: { type: string }
19807
+ description: The Zernio account ID (from /v1/accounts)
19808
+ - name: reviewId
19809
+ in: path
19810
+ required: true
19811
+ schema: { type: string }
19812
+ description: The review ID portion (e.g. "AIe9_BGx1234567890"), not the full resource name
19813
+ - name: locationId
19814
+ in: query
19815
+ schema: { type: string }
19816
+ description: Override which location to read the review from. If omitted, uses the account's selected location. Use GET /gmb-locations to list valid IDs.
19817
+ security:
19818
+ - bearerAuth: []
19819
+ responses:
19820
+ '200':
19821
+ description: Review fetched successfully
19822
+ content:
19823
+ application/json:
19824
+ schema:
19825
+ type: object
19826
+ properties:
19827
+ success: { type: boolean }
19828
+ accountId: { type: string }
19829
+ locationId: { type: string }
19830
+ review: { $ref: '#/components/schemas/GoogleBusinessReview' }
19831
+ example:
19832
+ success: true
19833
+ accountId: "64e1f0a9e2b5af0012ab34cd"
19834
+ locationId: "9281089117903930794"
19835
+ review:
19836
+ id: "AIe9_BGx1234567890"
19837
+ name: "accounts/123456789/locations/9281089117903930794/reviews/AIe9_BGx1234567890"
19838
+ reviewer:
19839
+ displayName: "John Smith"
19840
+ profilePhotoUrl: "https://lh3.googleusercontent.com/a/..."
19841
+ isAnonymous: false
19842
+ rating: 5
19843
+ starRating: "FIVE"
19844
+ comment: "Great service and friendly staff! Highly recommend."
19845
+ createTime: "2024-01-15T10:30:00Z"
19846
+ updateTime: "2024-01-15T10:30:00Z"
19847
+ reviewReply:
19848
+ comment: "Thank you for your kind words! We appreciate your support."
19849
+ updateTime: "2024-01-16T08:00:00Z"
19850
+ photoCount: 0
19851
+ photos: []
19852
+ '400': { $ref: '#/components/responses/BadRequest' }
19853
+ '401':
19854
+ description: Unauthorized or token invalid (account must be reconnected)
19855
+ content:
19856
+ application/json:
19857
+ schema: { $ref: '#/components/schemas/ErrorResponse' }
19858
+ example:
19859
+ error: "Access token invalid. Please reconnect your Google Business Profile account."
19860
+ code: "token_invalid"
19861
+ '404':
19862
+ description: Account not found, or no such review on this location
19863
+ content:
19864
+ application/json:
19865
+ schema: { $ref: '#/components/schemas/ErrorResponse' }
19866
+ '500':
19867
+ description: Failed to fetch the review
19868
+ content:
19869
+ application/json:
19870
+ schema: { $ref: '#/components/schemas/ErrorResponse' }
19871
+
19780
19872
  /v1/accounts/{accountId}/gmb-reviews/{reviewId}/reply:
19781
19873
  post:
19782
19874
  x-resource-group: "engagement"
@@ -58,6 +58,20 @@ describe 'GMBReviewsApi' do
58
58
  end
59
59
  end
60
60
 
61
+ # unit tests for get_google_business_review
62
+ # Get a review
63
+ # Returns one Google Business review, in the same shape as the entries of GET /v1/accounts/{accountId}/gmb-reviews. The review is read from the account&#39;s selected location unless locationId overrides it, and Google returns 404 for a review id that belongs to another location. Read the review before replying if a human may have answered it already: replies are overwritten in place and Google keeps no history.
64
+ # @param account_id The Zernio account ID (from /v1/accounts)
65
+ # @param review_id The review ID portion (e.g. \&quot;AIe9_BGx1234567890\&quot;), not the full resource name
66
+ # @param [Hash] opts the optional parameters
67
+ # @option opts [String] :location_id Override which location to read the review from. If omitted, uses the account&#39;s selected location. Use GET /gmb-locations to list valid IDs.
68
+ # @return [GetGoogleBusinessReview200Response]
69
+ describe 'get_google_business_review test' do
70
+ it 'should work' do
71
+ # assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
72
+ end
73
+ end
74
+
61
75
  # unit tests for get_google_business_reviews
62
76
  # Get reviews
63
77
  # Returns reviews for a GBP account including ratings, comments, and owner replies. Use nextPageToken for pagination.
@@ -0,0 +1,54 @@
1
+ =begin
2
+ #Zernio API
3
+
4
+ #API reference for Zernio. Authenticate with a Bearer API key. Base URL: https://zernio.com/api Versioning and deprecation: all endpoints are versioned in the URL path (current version: /v1). Breaking changes only ship in a new path version; existing versions keep working. Deprecated operations are marked 'deprecated: true' in this spec and announced in the changelog (https://zernio.com/changelog) before removal. Errors: every 4xx/5xx response is application/json with a machine-readable 'code' and a human-readable 'error' message (see the ErrorResponse schema).
5
+
6
+ The version of the OpenAPI document: 1.0.4
7
+ Contact: support@zernio.com
8
+ Generated by: https://openapi-generator.tech
9
+ Generator version: 7.19.0
10
+
11
+ =end
12
+
13
+ require 'spec_helper'
14
+ require 'json'
15
+ require 'date'
16
+
17
+ # Unit tests for Zernio::GetGoogleBusinessReview200Response
18
+ # Automatically generated by openapi-generator (https://openapi-generator.tech)
19
+ # Please update as you see appropriate
20
+ describe Zernio::GetGoogleBusinessReview200Response do
21
+ #let(:instance) { Zernio::GetGoogleBusinessReview200Response.new }
22
+
23
+ describe 'test an instance of GetGoogleBusinessReview200Response' do
24
+ it 'should create an instance of GetGoogleBusinessReview200Response' do
25
+ # uncomment below to test the instance creation
26
+ #expect(instance).to be_instance_of(Zernio::GetGoogleBusinessReview200Response)
27
+ end
28
+ end
29
+
30
+ describe 'test attribute "success"' do
31
+ it 'should work' do
32
+ # assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
33
+ end
34
+ end
35
+
36
+ describe 'test attribute "account_id"' do
37
+ it 'should work' do
38
+ # assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
39
+ end
40
+ end
41
+
42
+ describe 'test attribute "location_id"' do
43
+ it 'should work' do
44
+ # assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
45
+ end
46
+ end
47
+
48
+ describe 'test attribute "review"' do
49
+ it 'should work' do
50
+ # assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
51
+ end
52
+ end
53
+
54
+ end
@@ -14,16 +14,16 @@ require 'spec_helper'
14
14
  require 'json'
15
15
  require 'date'
16
16
 
17
- # Unit tests for Zernio::GetGoogleBusinessReviews200ResponseReviewsInnerReviewReply
17
+ # Unit tests for Zernio::GoogleBusinessReviewReviewReply
18
18
  # Automatically generated by openapi-generator (https://openapi-generator.tech)
19
19
  # Please update as you see appropriate
20
- describe Zernio::GetGoogleBusinessReviews200ResponseReviewsInnerReviewReply do
21
- #let(:instance) { Zernio::GetGoogleBusinessReviews200ResponseReviewsInnerReviewReply.new }
20
+ describe Zernio::GoogleBusinessReviewReviewReply do
21
+ #let(:instance) { Zernio::GoogleBusinessReviewReviewReply.new }
22
22
 
23
- describe 'test an instance of GetGoogleBusinessReviews200ResponseReviewsInnerReviewReply' do
24
- it 'should create an instance of GetGoogleBusinessReviews200ResponseReviewsInnerReviewReply' do
23
+ describe 'test an instance of GoogleBusinessReviewReviewReply' do
24
+ it 'should create an instance of GoogleBusinessReviewReviewReply' do
25
25
  # uncomment below to test the instance creation
26
- #expect(instance).to be_instance_of(Zernio::GetGoogleBusinessReviews200ResponseReviewsInnerReviewReply)
26
+ #expect(instance).to be_instance_of(Zernio::GoogleBusinessReviewReviewReply)
27
27
  end
28
28
  end
29
29
 
@@ -14,16 +14,16 @@ require 'spec_helper'
14
14
  require 'json'
15
15
  require 'date'
16
16
 
17
- # Unit tests for Zernio::GetGoogleBusinessReviews200ResponseReviewsInnerReviewer
17
+ # Unit tests for Zernio::GoogleBusinessReviewReviewer
18
18
  # Automatically generated by openapi-generator (https://openapi-generator.tech)
19
19
  # Please update as you see appropriate
20
- describe Zernio::GetGoogleBusinessReviews200ResponseReviewsInnerReviewer do
21
- #let(:instance) { Zernio::GetGoogleBusinessReviews200ResponseReviewsInnerReviewer.new }
20
+ describe Zernio::GoogleBusinessReviewReviewer do
21
+ #let(:instance) { Zernio::GoogleBusinessReviewReviewer.new }
22
22
 
23
- describe 'test an instance of GetGoogleBusinessReviews200ResponseReviewsInnerReviewer' do
24
- it 'should create an instance of GetGoogleBusinessReviews200ResponseReviewsInnerReviewer' do
23
+ describe 'test an instance of GoogleBusinessReviewReviewer' do
24
+ it 'should create an instance of GoogleBusinessReviewReviewer' do
25
25
  # uncomment below to test the instance creation
26
- #expect(instance).to be_instance_of(Zernio::GetGoogleBusinessReviews200ResponseReviewsInnerReviewer)
26
+ #expect(instance).to be_instance_of(Zernio::GoogleBusinessReviewReviewer)
27
27
  end
28
28
  end
29
29
 
@@ -14,16 +14,16 @@ require 'spec_helper'
14
14
  require 'json'
15
15
  require 'date'
16
16
 
17
- # Unit tests for Zernio::GetGoogleBusinessReviews200ResponseReviewsInner
17
+ # Unit tests for Zernio::GoogleBusinessReview
18
18
  # Automatically generated by openapi-generator (https://openapi-generator.tech)
19
19
  # Please update as you see appropriate
20
- describe Zernio::GetGoogleBusinessReviews200ResponseReviewsInner do
21
- #let(:instance) { Zernio::GetGoogleBusinessReviews200ResponseReviewsInner.new }
20
+ describe Zernio::GoogleBusinessReview do
21
+ #let(:instance) { Zernio::GoogleBusinessReview.new }
22
22
 
23
- describe 'test an instance of GetGoogleBusinessReviews200ResponseReviewsInner' do
24
- it 'should create an instance of GetGoogleBusinessReviews200ResponseReviewsInner' do
23
+ describe 'test an instance of GoogleBusinessReview' do
24
+ it 'should create an instance of GoogleBusinessReview' do
25
25
  # uncomment below to test the instance creation
26
- #expect(instance).to be_instance_of(Zernio::GetGoogleBusinessReviews200ResponseReviewsInner)
26
+ #expect(instance).to be_instance_of(Zernio::GoogleBusinessReview)
27
27
  end
28
28
  end
29
29