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.
- checksums.yaml +4 -4
- data/README.md +6 -4
- data/docs/GMBReviewsApi.md +76 -0
- data/docs/GetGoogleBusinessReview200Response.md +24 -0
- data/docs/GetGoogleBusinessReviews200Response.md +1 -1
- data/docs/{GetGoogleBusinessReviews200ResponseReviewsInner.md → GoogleBusinessReview.md} +6 -6
- data/docs/{GetGoogleBusinessReviews200ResponseReviewsInnerReviewReply.md → GoogleBusinessReviewReviewReply.md} +2 -2
- data/docs/{GetGoogleBusinessReviews200ResponseReviewsInnerReviewer.md → GoogleBusinessReviewReviewer.md} +2 -2
- data/docs/InstagramPlatformData.md +2 -0
- data/docs/ListInboxReviews200ResponseDataInner.md +1 -1
- data/docs/{GetGoogleBusinessReviews200ResponseReviewsInnerPhotosInner.md → ListInboxReviews200ResponseDataInnerPhotosInner.md} +2 -2
- data/docs/WebhookEventsApi.md +1 -1
- data/lib/zernio-sdk/api/gmb_reviews_api.rb +72 -0
- data/lib/zernio-sdk/api/webhook_events_api.rb +2 -2
- data/lib/zernio-sdk/models/get_google_business_review200_response.rb +174 -0
- data/lib/zernio-sdk/models/get_google_business_reviews200_response.rb +1 -1
- data/lib/zernio-sdk/models/{get_google_business_reviews200_response_reviews_inner.rb → google_business_review.rb} +13 -12
- data/lib/zernio-sdk/models/{get_google_business_reviews200_response_reviews_inner_review_reply.rb → google_business_review_review_reply.rb} +3 -3
- data/lib/zernio-sdk/models/{get_google_business_reviews200_response_reviews_inner_reviewer.rb → google_business_review_reviewer.rb} +3 -3
- data/lib/zernio-sdk/models/instagram_platform_data.rb +13 -1
- data/lib/zernio-sdk/models/list_inbox_reviews200_response_data_inner.rb +1 -1
- 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
- data/lib/zernio-sdk/models/webhook_payload_message_deleted.rb +1 -1
- data/lib/zernio-sdk/version.rb +1 -1
- data/lib/zernio-sdk.rb +5 -4
- data/openapi.yaml +128 -36
- data/spec/api/gmb_reviews_api_spec.rb +14 -0
- data/spec/models/get_google_business_review200_response_spec.rb +54 -0
- data/spec/models/{get_google_business_reviews200_response_reviews_inner_review_reply_spec.rb → google_business_review_review_reply_spec.rb} +6 -6
- data/spec/models/{get_google_business_reviews200_response_reviews_inner_reviewer_spec.rb → google_business_review_reviewer_spec.rb} +6 -6
- data/spec/models/{get_google_business_reviews200_response_reviews_inner_spec.rb → google_business_review_spec.rb} +6 -6
- data/spec/models/instagram_platform_data_spec.rb +6 -0
- 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
- data/zernio-sdk-0.0.763.gem +0 -0
- metadata +22 -18
- 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
|
-
|
|
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' => :'
|
|
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' => :'
|
|
108
|
+
:'review_reply' => :'GoogleBusinessReviewReviewReply',
|
|
108
109
|
:'photo_count' => :'Integer',
|
|
109
|
-
:'photos' => :'Array<
|
|
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::
|
|
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::
|
|
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 <
|
|
192
|
-
invalid_properties.push('invalid value for "rating", must be greater than or equal to
|
|
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 <
|
|
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 <
|
|
221
|
-
fail ArgumentError, 'invalid value for "rating", must be greater than or equal to
|
|
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
|
|
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::
|
|
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::
|
|
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
|
|
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::
|
|
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::
|
|
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<
|
|
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
|
|
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::
|
|
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::
|
|
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
|
|
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
|
|
data/lib/zernio-sdk/version.rb
CHANGED
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
|
|
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
|
|
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
|
|
9269
|
-
|
|
9270
|
-
|
|
9271
|
-
|
|
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'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. \"AIe9_BGx1234567890\"), 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'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::
|
|
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::
|
|
21
|
-
#let(:instance) { Zernio::
|
|
20
|
+
describe Zernio::GoogleBusinessReviewReviewReply do
|
|
21
|
+
#let(:instance) { Zernio::GoogleBusinessReviewReviewReply.new }
|
|
22
22
|
|
|
23
|
-
describe 'test an instance of
|
|
24
|
-
it 'should create an instance of
|
|
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::
|
|
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::
|
|
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::
|
|
21
|
-
#let(:instance) { Zernio::
|
|
20
|
+
describe Zernio::GoogleBusinessReviewReviewer do
|
|
21
|
+
#let(:instance) { Zernio::GoogleBusinessReviewReviewer.new }
|
|
22
22
|
|
|
23
|
-
describe 'test an instance of
|
|
24
|
-
it 'should create an instance of
|
|
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::
|
|
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::
|
|
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::
|
|
21
|
-
#let(:instance) { Zernio::
|
|
20
|
+
describe Zernio::GoogleBusinessReview do
|
|
21
|
+
#let(:instance) { Zernio::GoogleBusinessReview.new }
|
|
22
22
|
|
|
23
|
-
describe 'test an instance of
|
|
24
|
-
it 'should create an instance of
|
|
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::
|
|
26
|
+
#expect(instance).to be_instance_of(Zernio::GoogleBusinessReview)
|
|
27
27
|
end
|
|
28
28
|
end
|
|
29
29
|
|