late-sdk 0.0.49 → 0.0.51

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 (48) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +9 -0
  3. data/docs/AccountWithFollowerStats.md +3 -1
  4. data/docs/AccountWithFollowerStatsAllOfAccountStats.md +38 -0
  5. data/docs/GMBAttributesApi.md +16 -8
  6. data/docs/GMBFoodMenusApi.md +16 -8
  7. data/docs/GMBLocationDetailsApi.md +10 -4
  8. data/docs/GMBMediaApi.md +18 -8
  9. data/docs/GMBPlaceActionsApi.md +18 -8
  10. data/docs/GMBReviewsApi.md +2 -0
  11. data/docs/GetWhatsAppDisplayName200Response.md +20 -0
  12. data/docs/GetWhatsAppDisplayName200ResponseDisplayName.md +22 -0
  13. data/docs/UpdateWhatsAppDisplayName200Response.md +22 -0
  14. data/docs/UpdateWhatsAppDisplayName200ResponseDisplayName.md +20 -0
  15. data/docs/UpdateWhatsAppDisplayNameRequest.md +20 -0
  16. data/docs/WhatsAppApi.md +212 -0
  17. data/lib/late-sdk/api/gmb_attributes_api.rb +6 -0
  18. data/lib/late-sdk/api/gmb_food_menus_api.rb +6 -0
  19. data/lib/late-sdk/api/gmb_location_details_api.rb +6 -0
  20. data/lib/late-sdk/api/gmb_media_api.rb +9 -0
  21. data/lib/late-sdk/api/gmb_place_actions_api.rb +9 -0
  22. data/lib/late-sdk/api/gmb_reviews_api.rb +3 -0
  23. data/lib/late-sdk/api/whats_app_api.rb +208 -0
  24. data/lib/late-sdk/models/account_with_follower_stats.rb +13 -4
  25. data/lib/late-sdk/models/account_with_follower_stats_all_of_account_stats.rb +249 -0
  26. data/lib/late-sdk/models/get_whats_app_display_name200_response.rb +156 -0
  27. data/lib/late-sdk/models/get_whats_app_display_name200_response_display_name.rb +202 -0
  28. data/lib/late-sdk/models/update_whats_app_display_name200_response.rb +165 -0
  29. data/lib/late-sdk/models/update_whats_app_display_name200_response_display_name.rb +190 -0
  30. data/lib/late-sdk/models/update_whats_app_display_name_request.rb +210 -0
  31. data/lib/late-sdk/version.rb +1 -1
  32. data/lib/late-sdk.rb +6 -0
  33. data/openapi.yaml +194 -0
  34. data/spec/api/gmb_attributes_api_spec.rb +2 -0
  35. data/spec/api/gmb_food_menus_api_spec.rb +2 -0
  36. data/spec/api/gmb_location_details_api_spec.rb +2 -0
  37. data/spec/api/gmb_media_api_spec.rb +3 -0
  38. data/spec/api/gmb_place_actions_api_spec.rb +3 -0
  39. data/spec/api/gmb_reviews_api_spec.rb +1 -0
  40. data/spec/api/whats_app_api_spec.rb +37 -0
  41. data/spec/models/account_with_follower_stats_all_of_account_stats_spec.rb +96 -0
  42. data/spec/models/account_with_follower_stats_spec.rb +6 -0
  43. data/spec/models/get_whats_app_display_name200_response_display_name_spec.rb +52 -0
  44. data/spec/models/get_whats_app_display_name200_response_spec.rb +42 -0
  45. data/spec/models/update_whats_app_display_name200_response_display_name_spec.rb +46 -0
  46. data/spec/models/update_whats_app_display_name200_response_spec.rb +48 -0
  47. data/spec/models/update_whats_app_display_name_request_spec.rb +42 -0
  48. metadata +25 -1
@@ -0,0 +1,210 @@
1
+ =begin
2
+ #Late API
3
+
4
+ #API reference for Late. Authenticate with a Bearer API key. Base URL: https://getlate.dev/api
5
+
6
+ The version of the OpenAPI document: 1.0.1
7
+ Contact: support@getlate.dev
8
+ Generated by: https://openapi-generator.tech
9
+ Generator version: 7.19.0
10
+
11
+ =end
12
+
13
+ require 'date'
14
+ require 'time'
15
+
16
+ module Late
17
+ class UpdateWhatsAppDisplayNameRequest < ApiModelBase
18
+ # WhatsApp social account ID
19
+ attr_accessor :account_id
20
+
21
+ # New display name (must follow WhatsApp naming guidelines)
22
+ attr_accessor :display_name
23
+
24
+ # Attribute mapping from ruby-style variable name to JSON key.
25
+ def self.attribute_map
26
+ {
27
+ :'account_id' => :'accountId',
28
+ :'display_name' => :'displayName'
29
+ }
30
+ end
31
+
32
+ # Returns attribute mapping this model knows about
33
+ def self.acceptable_attribute_map
34
+ attribute_map
35
+ end
36
+
37
+ # Returns all the JSON keys this model knows about
38
+ def self.acceptable_attributes
39
+ acceptable_attribute_map.values
40
+ end
41
+
42
+ # Attribute type mapping.
43
+ def self.openapi_types
44
+ {
45
+ :'account_id' => :'String',
46
+ :'display_name' => :'String'
47
+ }
48
+ end
49
+
50
+ # List of attributes with nullable: true
51
+ def self.openapi_nullable
52
+ Set.new([
53
+ ])
54
+ end
55
+
56
+ # Initializes the object
57
+ # @param [Hash] attributes Model attributes in the form of hash
58
+ def initialize(attributes = {})
59
+ if (!attributes.is_a?(Hash))
60
+ fail ArgumentError, "The input argument (attributes) must be a hash in `Late::UpdateWhatsAppDisplayNameRequest` initialize method"
61
+ end
62
+
63
+ # check to see if the attribute exists and convert string to symbol for hash key
64
+ acceptable_attribute_map = self.class.acceptable_attribute_map
65
+ attributes = attributes.each_with_object({}) { |(k, v), h|
66
+ if (!acceptable_attribute_map.key?(k.to_sym))
67
+ fail ArgumentError, "`#{k}` is not a valid attribute in `Late::UpdateWhatsAppDisplayNameRequest`. Please check the name to make sure it's valid. List of attributes: " + acceptable_attribute_map.keys.inspect
68
+ end
69
+ h[k.to_sym] = v
70
+ }
71
+
72
+ if attributes.key?(:'account_id')
73
+ self.account_id = attributes[:'account_id']
74
+ else
75
+ self.account_id = nil
76
+ end
77
+
78
+ if attributes.key?(:'display_name')
79
+ self.display_name = attributes[:'display_name']
80
+ else
81
+ self.display_name = nil
82
+ end
83
+ end
84
+
85
+ # Show invalid properties with the reasons. Usually used together with valid?
86
+ # @return Array for valid properties with the reasons
87
+ def list_invalid_properties
88
+ warn '[DEPRECATED] the `list_invalid_properties` method is obsolete'
89
+ invalid_properties = Array.new
90
+ if @account_id.nil?
91
+ invalid_properties.push('invalid value for "account_id", account_id cannot be nil.')
92
+ end
93
+
94
+ if @display_name.nil?
95
+ invalid_properties.push('invalid value for "display_name", display_name cannot be nil.')
96
+ end
97
+
98
+ if @display_name.to_s.length > 512
99
+ invalid_properties.push('invalid value for "display_name", the character length must be smaller than or equal to 512.')
100
+ end
101
+
102
+ if @display_name.to_s.length < 3
103
+ invalid_properties.push('invalid value for "display_name", the character length must be greater than or equal to 3.')
104
+ end
105
+
106
+ invalid_properties
107
+ end
108
+
109
+ # Check to see if the all the properties in the model are valid
110
+ # @return true if the model is valid
111
+ def valid?
112
+ warn '[DEPRECATED] the `valid?` method is obsolete'
113
+ return false if @account_id.nil?
114
+ return false if @display_name.nil?
115
+ return false if @display_name.to_s.length > 512
116
+ return false if @display_name.to_s.length < 3
117
+ true
118
+ end
119
+
120
+ # Custom attribute writer method with validation
121
+ # @param [Object] account_id Value to be assigned
122
+ def account_id=(account_id)
123
+ if account_id.nil?
124
+ fail ArgumentError, 'account_id cannot be nil'
125
+ end
126
+
127
+ @account_id = account_id
128
+ end
129
+
130
+ # Custom attribute writer method with validation
131
+ # @param [Object] display_name Value to be assigned
132
+ def display_name=(display_name)
133
+ if display_name.nil?
134
+ fail ArgumentError, 'display_name cannot be nil'
135
+ end
136
+
137
+ if display_name.to_s.length > 512
138
+ fail ArgumentError, 'invalid value for "display_name", the character length must be smaller than or equal to 512.'
139
+ end
140
+
141
+ if display_name.to_s.length < 3
142
+ fail ArgumentError, 'invalid value for "display_name", the character length must be greater than or equal to 3.'
143
+ end
144
+
145
+ @display_name = display_name
146
+ end
147
+
148
+ # Checks equality by comparing each attribute.
149
+ # @param [Object] Object to be compared
150
+ def ==(o)
151
+ return true if self.equal?(o)
152
+ self.class == o.class &&
153
+ account_id == o.account_id &&
154
+ display_name == o.display_name
155
+ end
156
+
157
+ # @see the `==` method
158
+ # @param [Object] Object to be compared
159
+ def eql?(o)
160
+ self == o
161
+ end
162
+
163
+ # Calculates hash code according to all attributes.
164
+ # @return [Integer] Hash code
165
+ def hash
166
+ [account_id, display_name].hash
167
+ end
168
+
169
+ # Builds the object from hash
170
+ # @param [Hash] attributes Model attributes in the form of hash
171
+ # @return [Object] Returns the model itself
172
+ def self.build_from_hash(attributes)
173
+ return nil unless attributes.is_a?(Hash)
174
+ attributes = attributes.transform_keys(&:to_sym)
175
+ transformed_hash = {}
176
+ openapi_types.each_pair do |key, type|
177
+ if attributes.key?(attribute_map[key]) && attributes[attribute_map[key]].nil?
178
+ transformed_hash["#{key}"] = nil
179
+ elsif type =~ /\AArray<(.*)>/i
180
+ # check to ensure the input is an array given that the attribute
181
+ # is documented as an array but the input is not
182
+ if attributes[attribute_map[key]].is_a?(Array)
183
+ transformed_hash["#{key}"] = attributes[attribute_map[key]].map { |v| _deserialize($1, v) }
184
+ end
185
+ elsif !attributes[attribute_map[key]].nil?
186
+ transformed_hash["#{key}"] = _deserialize(type, attributes[attribute_map[key]])
187
+ end
188
+ end
189
+ new(transformed_hash)
190
+ end
191
+
192
+ # Returns the object in the form of hash
193
+ # @return [Hash] Returns the object in the form of hash
194
+ def to_hash
195
+ hash = {}
196
+ self.class.attribute_map.each_pair do |attr, param|
197
+ value = self.send(attr)
198
+ if value.nil?
199
+ is_nullable = self.class.openapi_nullable.include?(attr)
200
+ next if !is_nullable || (is_nullable && !instance_variable_defined?(:"@#{attr}"))
201
+ end
202
+
203
+ hash[param] = _to_hash(value)
204
+ end
205
+ hash
206
+ end
207
+
208
+ end
209
+
210
+ end
@@ -11,5 +11,5 @@ Generator version: 7.19.0
11
11
  =end
12
12
 
13
13
  module Late
14
- VERSION = '0.0.49'
14
+ VERSION = '0.0.51'
15
15
  end
data/lib/late-sdk.rb CHANGED
@@ -20,6 +20,7 @@ require 'late-sdk/configuration'
20
20
  # Models
21
21
  require 'late-sdk/models/account_get_response'
22
22
  require 'late-sdk/models/account_with_follower_stats'
23
+ require 'late-sdk/models/account_with_follower_stats_all_of_account_stats'
23
24
  require 'late-sdk/models/accounts_list_response'
24
25
  require 'late-sdk/models/add_whats_app_broadcast_recipients200_response'
25
26
  require 'late-sdk/models/add_whats_app_broadcast_recipients_request'
@@ -236,6 +237,8 @@ require 'late-sdk/models/get_whats_app_contacts200_response'
236
237
  require 'late-sdk/models/get_whats_app_contacts200_response_contacts_inner'
237
238
  require 'late-sdk/models/get_whats_app_contacts200_response_filters'
238
239
  require 'late-sdk/models/get_whats_app_contacts200_response_pagination'
240
+ require 'late-sdk/models/get_whats_app_display_name200_response'
241
+ require 'late-sdk/models/get_whats_app_display_name200_response_display_name'
239
242
  require 'late-sdk/models/get_whats_app_groups200_response'
240
243
  require 'late-sdk/models/get_whats_app_groups200_response_groups_inner'
241
244
  require 'late-sdk/models/get_whats_app_groups200_response_summary'
@@ -480,6 +483,9 @@ require 'late-sdk/models/update_whats_app_business_profile_request'
480
483
  require 'late-sdk/models/update_whats_app_contact200_response'
481
484
  require 'late-sdk/models/update_whats_app_contact200_response_contact'
482
485
  require 'late-sdk/models/update_whats_app_contact_request'
486
+ require 'late-sdk/models/update_whats_app_display_name200_response'
487
+ require 'late-sdk/models/update_whats_app_display_name200_response_display_name'
488
+ require 'late-sdk/models/update_whats_app_display_name_request'
483
489
  require 'late-sdk/models/update_whats_app_template200_response'
484
490
  require 'late-sdk/models/update_whats_app_template200_response_template'
485
491
  require 'late-sdk/models/update_whats_app_template_request'
data/openapi.yaml CHANGED
@@ -1664,6 +1664,23 @@ components:
1664
1664
  growth: { type: number, description: Follower change over period }
1665
1665
  growthPercentage: { type: number, description: Percentage growth }
1666
1666
  dataPoints: { type: number, description: Number of historical snapshots }
1667
+ accountStats:
1668
+ type: object
1669
+ description: |
1670
+ Platform-specific account stats from the latest daily snapshot.
1671
+ Fields vary by platform. Only present if metadata has been captured.
1672
+ properties:
1673
+ followingCount: { type: number, description: Number of accounts being followed }
1674
+ mediaCount: { type: number, description: Total media posts (Instagram) }
1675
+ videoCount: { type: number, description: Total videos (YouTube, TikTok) }
1676
+ tweetCount: { type: number, description: Total tweets (X/Twitter) }
1677
+ postsCount: { type: number, description: Total posts (Bluesky) }
1678
+ pinCount: { type: number, description: Total pins (Pinterest) }
1679
+ totalViews: { type: number, description: Total channel views (YouTube) }
1680
+ likesCount: { type: number, description: Total likes received (TikTok) }
1681
+ monthlyViews: { type: number, description: Monthly profile views (Pinterest) }
1682
+ listedCount: { type: number, description: Lists the user appears on (X/Twitter) }
1683
+ boardCount: { type: number, description: Total boards (Pinterest) }
1667
1684
  ApiKey:
1668
1685
  type: object
1669
1686
  properties:
@@ -6051,6 +6068,10 @@ paths:
6051
6068
  required: true
6052
6069
  schema: { type: string }
6053
6070
  description: The Late account ID (from /v1/accounts)
6071
+ - name: locationId
6072
+ in: query
6073
+ schema: { type: string }
6074
+ description: Override which location to query. If omitted, uses the account's selected location. Use GET /gmb-locations to list valid IDs.
6054
6075
  - name: pageSize
6055
6076
  in: query
6056
6077
  schema: { type: integer, minimum: 1, maximum: 50, default: 50 }
@@ -6173,6 +6194,10 @@ paths:
6173
6194
  required: true
6174
6195
  schema: { type: string }
6175
6196
  description: The Late account ID (from /v1/accounts)
6197
+ - name: locationId
6198
+ in: query
6199
+ schema: { type: string }
6200
+ description: Override which location to query. If omitted, uses the account's selected location. Use GET /gmb-locations to list valid IDs.
6176
6201
  security:
6177
6202
  - bearerAuth: []
6178
6203
  responses:
@@ -6251,6 +6276,10 @@ paths:
6251
6276
  required: true
6252
6277
  schema: { type: string }
6253
6278
  description: The Late account ID (from /v1/accounts)
6279
+ - name: locationId
6280
+ in: query
6281
+ schema: { type: string }
6282
+ description: Override which location to target. If omitted, uses the account's selected location. Use GET /gmb-locations to list valid IDs.
6254
6283
  security:
6255
6284
  - bearerAuth: []
6256
6285
  requestBody:
@@ -6339,6 +6368,10 @@ paths:
6339
6368
  required: true
6340
6369
  schema: { type: string }
6341
6370
  description: The Late account ID (from /v1/accounts)
6371
+ - name: locationId
6372
+ in: query
6373
+ schema: { type: string }
6374
+ description: Override which location to query. If omitted, uses the account's selected location. Use GET /gmb-locations to list valid IDs.
6342
6375
  - name: readMask
6343
6376
  in: query
6344
6377
  required: false
@@ -6437,6 +6470,10 @@ paths:
6437
6470
  required: true
6438
6471
  schema: { type: string }
6439
6472
  description: The Late account ID (from /v1/accounts)
6473
+ - name: locationId
6474
+ in: query
6475
+ schema: { type: string }
6476
+ description: Override which location to target. If omitted, uses the account's selected location. Use GET /gmb-locations to list valid IDs.
6440
6477
  security:
6441
6478
  - bearerAuth: []
6442
6479
  requestBody:
@@ -6540,6 +6577,10 @@ paths:
6540
6577
  in: path
6541
6578
  required: true
6542
6579
  schema: { type: string }
6580
+ - name: locationId
6581
+ in: query
6582
+ schema: { type: string }
6583
+ description: Override which location to query. If omitted, uses the account's selected location. Use GET /gmb-locations to list valid IDs.
6543
6584
  - name: pageSize
6544
6585
  in: query
6545
6586
  schema: { type: integer, maximum: 100, default: 100 }
@@ -6602,6 +6643,10 @@ paths:
6602
6643
  in: path
6603
6644
  required: true
6604
6645
  schema: { type: string }
6646
+ - name: locationId
6647
+ in: query
6648
+ schema: { type: string }
6649
+ description: Override which location to target. If omitted, uses the account's selected location. Use GET /gmb-locations to list valid IDs.
6605
6650
  security:
6606
6651
  - bearerAuth: []
6607
6652
  requestBody:
@@ -6655,6 +6700,10 @@ paths:
6655
6700
  in: path
6656
6701
  required: true
6657
6702
  schema: { type: string }
6703
+ - name: locationId
6704
+ in: query
6705
+ schema: { type: string }
6706
+ description: Override which location to target. If omitted, uses the account's selected location. Use GET /gmb-locations to list valid IDs.
6658
6707
  - name: mediaId
6659
6708
  in: query
6660
6709
  required: true
@@ -6695,6 +6744,10 @@ paths:
6695
6744
  in: path
6696
6745
  required: true
6697
6746
  schema: { type: string }
6747
+ - name: locationId
6748
+ in: query
6749
+ schema: { type: string }
6750
+ description: Override which location to query. If omitted, uses the account's selected location. Use GET /gmb-locations to list valid IDs.
6698
6751
  security:
6699
6752
  - bearerAuth: []
6700
6753
  responses:
@@ -6760,6 +6813,10 @@ paths:
6760
6813
  in: path
6761
6814
  required: true
6762
6815
  schema: { type: string }
6816
+ - name: locationId
6817
+ in: query
6818
+ schema: { type: string }
6819
+ description: Override which location to target. If omitted, uses the account's selected location. Use GET /gmb-locations to list valid IDs.
6763
6820
  security:
6764
6821
  - bearerAuth: []
6765
6822
  requestBody:
@@ -6831,6 +6888,10 @@ paths:
6831
6888
  in: path
6832
6889
  required: true
6833
6890
  schema: { type: string }
6891
+ - name: locationId
6892
+ in: query
6893
+ schema: { type: string }
6894
+ description: Override which location to query. If omitted, uses the account's selected location. Use GET /gmb-locations to list valid IDs.
6834
6895
  - name: pageSize
6835
6896
  in: query
6836
6897
  schema: { type: integer, maximum: 100, default: 100 }
@@ -6893,6 +6954,10 @@ paths:
6893
6954
  in: path
6894
6955
  required: true
6895
6956
  schema: { type: string }
6957
+ - name: locationId
6958
+ in: query
6959
+ schema: { type: string }
6960
+ description: Override which location to target. If omitted, uses the account's selected location. Use GET /gmb-locations to list valid IDs.
6896
6961
  security:
6897
6962
  - bearerAuth: []
6898
6963
  requestBody:
@@ -6943,6 +7008,10 @@ paths:
6943
7008
  in: path
6944
7009
  required: true
6945
7010
  schema: { type: string }
7011
+ - name: locationId
7012
+ in: query
7013
+ schema: { type: string }
7014
+ description: Override which location to target. If omitted, uses the account's selected location. Use GET /gmb-locations to list valid IDs.
6946
7015
  - name: name
6947
7016
  in: query
6948
7017
  required: true
@@ -13163,6 +13232,131 @@ paths:
13163
13232
  '401': { $ref: '#/components/responses/Unauthorized' }
13164
13233
  '404': { description: WhatsApp account not found }
13165
13234
 
13235
+ /v1/whatsapp/business-profile/photo:
13236
+ post:
13237
+ operationId: uploadWhatsAppProfilePhoto
13238
+ tags: [WhatsApp]
13239
+ summary: Upload profile picture
13240
+ description: |
13241
+ Upload a new profile picture for the WhatsApp Business Profile.
13242
+ Uses Meta's resumable upload API under the hood: creates an upload session,
13243
+ uploads the image bytes, then updates the business profile with the resulting handle.
13244
+ security:
13245
+ - bearerAuth: []
13246
+ requestBody:
13247
+ required: true
13248
+ content:
13249
+ multipart/form-data:
13250
+ schema:
13251
+ type: object
13252
+ required: [accountId, file]
13253
+ properties:
13254
+ accountId:
13255
+ type: string
13256
+ description: WhatsApp social account ID
13257
+ file:
13258
+ type: string
13259
+ format: binary
13260
+ description: Image file (JPEG or PNG, max 5MB, recommended 640x640)
13261
+ responses:
13262
+ '200':
13263
+ description: Profile picture updated successfully
13264
+ content:
13265
+ application/json:
13266
+ schema:
13267
+ type: object
13268
+ properties:
13269
+ success: { type: boolean }
13270
+ message: { type: string }
13271
+ '400': { description: Invalid file type, file too large, or missing parameters }
13272
+ '401': { $ref: '#/components/responses/Unauthorized' }
13273
+ '404': { description: WhatsApp account not found }
13274
+
13275
+ /v1/whatsapp/business-profile/display-name:
13276
+ get:
13277
+ operationId: getWhatsAppDisplayName
13278
+ tags: [WhatsApp]
13279
+ summary: Get display name and review status
13280
+ description: |
13281
+ Fetch the current display name and its Meta review status for a WhatsApp Business account.
13282
+ Display name changes require Meta approval and can take 1-3 business days.
13283
+ security:
13284
+ - bearerAuth: []
13285
+ parameters:
13286
+ - name: accountId
13287
+ in: query
13288
+ required: true
13289
+ description: WhatsApp social account ID
13290
+ schema:
13291
+ type: string
13292
+ responses:
13293
+ '200':
13294
+ description: Display name info retrieved
13295
+ content:
13296
+ application/json:
13297
+ schema:
13298
+ type: object
13299
+ properties:
13300
+ success: { type: boolean }
13301
+ displayName:
13302
+ type: object
13303
+ properties:
13304
+ name: { type: string, description: Current verified display name }
13305
+ status:
13306
+ type: string
13307
+ enum: [APPROVED, PENDING_REVIEW, DECLINED, NONE]
13308
+ description: Meta review status for the display name
13309
+ phoneNumber: { type: string, description: Display phone number }
13310
+ '401': { $ref: '#/components/responses/Unauthorized' }
13311
+ '404': { description: WhatsApp account not found }
13312
+ post:
13313
+ operationId: updateWhatsAppDisplayName
13314
+ tags: [WhatsApp]
13315
+ summary: Request display name change
13316
+ description: |
13317
+ Submit a display name change request for the WhatsApp Business account.
13318
+ The new name must follow WhatsApp naming guidelines (3-512 characters, must represent your business).
13319
+ Changes require Meta review and approval, which typically takes 1-3 business days.
13320
+ security:
13321
+ - bearerAuth: []
13322
+ requestBody:
13323
+ required: true
13324
+ content:
13325
+ application/json:
13326
+ schema:
13327
+ type: object
13328
+ required: [accountId, displayName]
13329
+ properties:
13330
+ accountId:
13331
+ type: string
13332
+ description: WhatsApp social account ID
13333
+ displayName:
13334
+ type: string
13335
+ minLength: 3
13336
+ maxLength: 512
13337
+ description: New display name (must follow WhatsApp naming guidelines)
13338
+ example:
13339
+ accountId: "507f1f77bcf86cd799439011"
13340
+ displayName: "My Business Name"
13341
+ responses:
13342
+ '200':
13343
+ description: Display name change submitted for review
13344
+ content:
13345
+ application/json:
13346
+ schema:
13347
+ type: object
13348
+ properties:
13349
+ success: { type: boolean }
13350
+ message: { type: string }
13351
+ displayName:
13352
+ type: object
13353
+ properties:
13354
+ name: { type: string }
13355
+ status: { type: string, enum: [PENDING_REVIEW] }
13356
+ '400': { description: Invalid display name (too short, too long, or missing) }
13357
+ '401': { $ref: '#/components/responses/Unauthorized' }
13358
+ '404': { description: WhatsApp account not found }
13359
+
13166
13360
  # ──────────────────────────────────────────────────────────────────────────
13167
13361
  # PHONE NUMBERS
13168
13362
  # ──────────────────────────────────────────────────────────────────────────
@@ -37,6 +37,7 @@ describe 'GMBAttributesApi' do
37
37
  # Returns GBP location attributes (amenities, services, accessibility, payment types). Available attributes vary by business category.
38
38
  # @param account_id
39
39
  # @param [Hash] opts the optional parameters
40
+ # @option opts [String] :location_id Override which location to query. If omitted, uses the account&#39;s selected location. Use GET /gmb-locations to list valid IDs.
40
41
  # @return [GetGoogleBusinessAttributes200Response]
41
42
  describe 'get_google_business_attributes test' do
42
43
  it 'should work' do
@@ -50,6 +51,7 @@ describe 'GMBAttributesApi' do
50
51
  # @param account_id
51
52
  # @param update_google_business_attributes_request
52
53
  # @param [Hash] opts the optional parameters
54
+ # @option opts [String] :location_id Override which location to target. If omitted, uses the account&#39;s selected location. Use GET /gmb-locations to list valid IDs.
53
55
  # @return [UpdateGoogleBusinessAttributes200Response]
54
56
  describe 'update_google_business_attributes test' do
55
57
  it 'should work' do
@@ -37,6 +37,7 @@ describe 'GMBFoodMenusApi' do
37
37
  # Returns food menus for a GBP location including sections, items, pricing, and dietary info. Only for locations with food menu support.
38
38
  # @param account_id The Late account ID (from /v1/accounts)
39
39
  # @param [Hash] opts the optional parameters
40
+ # @option opts [String] :location_id Override which location to query. If omitted, uses the account&#39;s selected location. Use GET /gmb-locations to list valid IDs.
40
41
  # @return [GetGoogleBusinessFoodMenus200Response]
41
42
  describe 'get_google_business_food_menus test' do
42
43
  it 'should work' do
@@ -50,6 +51,7 @@ describe 'GMBFoodMenusApi' do
50
51
  # @param account_id The Late account ID (from /v1/accounts)
51
52
  # @param update_google_business_food_menus_request
52
53
  # @param [Hash] opts the optional parameters
54
+ # @option opts [String] :location_id Override which location to target. If omitted, uses the account&#39;s selected location. Use GET /gmb-locations to list valid IDs.
53
55
  # @return [UpdateGoogleBusinessFoodMenus200Response]
54
56
  describe 'update_google_business_food_menus test' do
55
57
  it 'should work' do
@@ -37,6 +37,7 @@ describe 'GMBLocationDetailsApi' do
37
37
  # Returns detailed GBP location info (hours, description, phone, website, categories). Use readMask to request specific fields.
38
38
  # @param account_id The Late account ID (from /v1/accounts)
39
39
  # @param [Hash] opts the optional parameters
40
+ # @option opts [String] :location_id Override which location to query. If omitted, uses the account&#39;s selected location. Use GET /gmb-locations to list valid IDs.
40
41
  # @option opts [String] :read_mask Comma-separated fields to return. Available: name, title, phoneNumbers, categories, storefrontAddress, websiteUri, regularHours, specialHours, serviceArea, profile, openInfo, metadata, moreHours.
41
42
  # @return [GetGoogleBusinessLocationDetails200Response]
42
43
  describe 'get_google_business_location_details test' do
@@ -51,6 +52,7 @@ describe 'GMBLocationDetailsApi' do
51
52
  # @param account_id The Late account ID (from /v1/accounts)
52
53
  # @param update_google_business_location_details_request
53
54
  # @param [Hash] opts the optional parameters
55
+ # @option opts [String] :location_id Override which location to target. If omitted, uses the account&#39;s selected location. Use GET /gmb-locations to list valid IDs.
54
56
  # @return [UpdateGoogleBusinessLocationDetails200Response]
55
57
  describe 'update_google_business_location_details test' do
56
58
  it 'should work' do
@@ -38,6 +38,7 @@ describe 'GMBMediaApi' do
38
38
  # @param account_id
39
39
  # @param create_google_business_media_request
40
40
  # @param [Hash] opts the optional parameters
41
+ # @option opts [String] :location_id Override which location to target. If omitted, uses the account&#39;s selected location. Use GET /gmb-locations to list valid IDs.
41
42
  # @return [CreateGoogleBusinessMedia200Response]
42
43
  describe 'create_google_business_media test' do
43
44
  it 'should work' do
@@ -51,6 +52,7 @@ describe 'GMBMediaApi' do
51
52
  # @param account_id
52
53
  # @param media_id The media item ID to delete
53
54
  # @param [Hash] opts the optional parameters
55
+ # @option opts [String] :location_id Override which location to target. If omitted, uses the account&#39;s selected location. Use GET /gmb-locations to list valid IDs.
54
56
  # @return [DeleteGoogleBusinessMedia200Response]
55
57
  describe 'delete_google_business_media test' do
56
58
  it 'should work' do
@@ -63,6 +65,7 @@ describe 'GMBMediaApi' do
63
65
  # Lists media items (photos) for a Google Business Profile location. Returns photo URLs, descriptions, categories, and metadata.
64
66
  # @param account_id
65
67
  # @param [Hash] opts the optional parameters
68
+ # @option opts [String] :location_id Override which location to query. If omitted, uses the account&#39;s selected location. Use GET /gmb-locations to list valid IDs.
66
69
  # @option opts [Integer] :page_size Number of items to return (max 100)
67
70
  # @option opts [String] :page_token Pagination token from previous response
68
71
  # @return [ListGoogleBusinessMedia200Response]
@@ -38,6 +38,7 @@ describe 'GMBPlaceActionsApi' do
38
38
  # @param account_id
39
39
  # @param create_google_business_place_action_request
40
40
  # @param [Hash] opts the optional parameters
41
+ # @option opts [String] :location_id Override which location to target. If omitted, uses the account&#39;s selected location. Use GET /gmb-locations to list valid IDs.
41
42
  # @return [CreateGoogleBusinessPlaceAction200Response]
42
43
  describe 'create_google_business_place_action test' do
43
44
  it 'should work' do
@@ -51,6 +52,7 @@ describe 'GMBPlaceActionsApi' do
51
52
  # @param account_id
52
53
  # @param name The resource name of the place action link (e.g. locations/123/placeActionLinks/456)
53
54
  # @param [Hash] opts the optional parameters
55
+ # @option opts [String] :location_id Override which location to target. If omitted, uses the account&#39;s selected location. Use GET /gmb-locations to list valid IDs.
54
56
  # @return [DeleteGoogleBusinessPlaceAction200Response]
55
57
  describe 'delete_google_business_place_action test' do
56
58
  it 'should work' do
@@ -63,6 +65,7 @@ describe 'GMBPlaceActionsApi' do
63
65
  # Lists place action links for a Google Business Profile location. Place actions are the booking, ordering, and reservation buttons that appear on your listing.
64
66
  # @param account_id
65
67
  # @param [Hash] opts the optional parameters
68
+ # @option opts [String] :location_id Override which location to query. If omitted, uses the account&#39;s selected location. Use GET /gmb-locations to list valid IDs.
66
69
  # @option opts [Integer] :page_size
67
70
  # @option opts [String] :page_token
68
71
  # @return [ListGoogleBusinessPlaceActions200Response]
@@ -37,6 +37,7 @@ describe 'GMBReviewsApi' do
37
37
  # Returns reviews for a GBP account including ratings, comments, and owner replies. Use nextPageToken for pagination.
38
38
  # @param account_id The Late account ID (from /v1/accounts)
39
39
  # @param [Hash] opts the optional parameters
40
+ # @option opts [String] :location_id Override which location to query. If omitted, uses the account&#39;s selected location. Use GET /gmb-locations to list valid IDs.
40
41
  # @option opts [Integer] :page_size Number of reviews to fetch per page (max 50)
41
42
  # @option opts [String] :page_token Pagination token from previous response
42
43
  # @return [GetGoogleBusinessReviews200Response]