@wix/auto_sdk_gbp_media-uploads 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (52) hide show
  1. package/build/cjs/index.d.ts +126 -0
  2. package/build/cjs/index.js +362 -0
  3. package/build/cjs/index.js.map +1 -0
  4. package/build/cjs/index.typings.d.ts +448 -0
  5. package/build/cjs/index.typings.js +332 -0
  6. package/build/cjs/index.typings.js.map +1 -0
  7. package/build/cjs/meta.d.ts +338 -0
  8. package/build/cjs/meta.js +305 -0
  9. package/build/cjs/meta.js.map +1 -0
  10. package/build/cjs/schemas.d.ts +195 -0
  11. package/build/cjs/schemas.js +307 -0
  12. package/build/cjs/schemas.js.map +1 -0
  13. package/build/es/index.d.mts +126 -0
  14. package/build/es/index.mjs +331 -0
  15. package/build/es/index.mjs.map +1 -0
  16. package/build/es/index.typings.d.mts +448 -0
  17. package/build/es/index.typings.mjs +301 -0
  18. package/build/es/index.typings.mjs.map +1 -0
  19. package/build/es/meta.d.mts +338 -0
  20. package/build/es/meta.mjs +271 -0
  21. package/build/es/meta.mjs.map +1 -0
  22. package/build/es/package.json +3 -0
  23. package/build/es/schemas.d.mts +195 -0
  24. package/build/es/schemas.mjs +265 -0
  25. package/build/es/schemas.mjs.map +1 -0
  26. package/build/internal/cjs/index.d.ts +126 -0
  27. package/build/internal/cjs/index.js +362 -0
  28. package/build/internal/cjs/index.js.map +1 -0
  29. package/build/internal/cjs/index.typings.d.ts +462 -0
  30. package/build/internal/cjs/index.typings.js +332 -0
  31. package/build/internal/cjs/index.typings.js.map +1 -0
  32. package/build/internal/cjs/meta.d.ts +352 -0
  33. package/build/internal/cjs/meta.js +305 -0
  34. package/build/internal/cjs/meta.js.map +1 -0
  35. package/build/internal/cjs/schemas.d.ts +195 -0
  36. package/build/internal/cjs/schemas.js +307 -0
  37. package/build/internal/cjs/schemas.js.map +1 -0
  38. package/build/internal/es/index.d.mts +126 -0
  39. package/build/internal/es/index.mjs +331 -0
  40. package/build/internal/es/index.mjs.map +1 -0
  41. package/build/internal/es/index.typings.d.mts +462 -0
  42. package/build/internal/es/index.typings.mjs +301 -0
  43. package/build/internal/es/index.typings.mjs.map +1 -0
  44. package/build/internal/es/meta.d.mts +352 -0
  45. package/build/internal/es/meta.mjs +271 -0
  46. package/build/internal/es/meta.mjs.map +1 -0
  47. package/build/internal/es/schemas.d.mts +195 -0
  48. package/build/internal/es/schemas.mjs +265 -0
  49. package/build/internal/es/schemas.mjs.map +1 -0
  50. package/meta/package.json +3 -0
  51. package/package.json +61 -0
  52. package/schemas/package.json +3 -0
@@ -0,0 +1,462 @@
1
+ import { NonNullablePaths } from '@wix/sdk-types';
2
+
3
+ /**
4
+ * One queued photo change on a Google Business Profile location: either an
5
+ * addition or a removal.
6
+ *
7
+ * Photo changes are queued and applied gradually rather than immediately,
8
+ * because Google accepts only about 10 edits per minute per Business Profile.
9
+ *
10
+ * Anything you can read here is either still waiting to be applied or has
11
+ * failed. A change that succeeded leaves nothing behind, so an empty list means
12
+ * the queue finished and everything worked. See `state`.
13
+ */
14
+ interface MediaUpload {
15
+ /**
16
+ * Queued change ID.
17
+ * @format GUID
18
+ * @readonly
19
+ */
20
+ _id?: string;
21
+ /**
22
+ * ID of the location this change applies to. This is Google's location
23
+ * identifier.
24
+ * @immutable
25
+ * @minLength 1
26
+ * @maxLength 255
27
+ */
28
+ locationId?: string;
29
+ /**
30
+ * Groups the changes queued by one Bulk Create Media Uploads call. Useful for
31
+ * troubleshooting, since one save can produce more than one batch.
32
+ * @format GUID
33
+ * @readonly
34
+ */
35
+ batchId?: string;
36
+ /**
37
+ * Your own key for this photo: `logo`, `cover`, or `photo:<id>`.
38
+ *
39
+ * Set it to something stable and meaningful to you. It's how a failure is
40
+ * matched back to the photo that caused it, and it's part of what makes a
41
+ * repeated submission a duplicate rather than a second change.
42
+ * @maxLength 255
43
+ */
44
+ slotKey?: string;
45
+ /**
46
+ * Publicly reachable URL Google fetches the image from. Additions only.
47
+ *
48
+ * Keep it reachable well beyond the upload itself. A failure report renders
49
+ * this URL as a thumbnail, possibly weeks later.
50
+ * @maxLength 2048
51
+ */
52
+ sourceUrl?: string;
53
+ /** Where the photo appears on the profile. Additions only. */
54
+ category?: MediaCategoryWithLiterals;
55
+ /** Media type of the photo. Additions only. */
56
+ format?: MediaFormatWithLiterals;
57
+ /** Whether this change adds a photo to the profile or removes one. */
58
+ operation?: MediaUploadOperationWithLiterals;
59
+ /**
60
+ * Position in the order the queue applies changes, assigned by the server.
61
+ *
62
+ * Every removal comes before every addition, because Google rejects new photos
63
+ * on a profile that's already at its limit, so the old ones have to go first.
64
+ * Additions then follow as logo, cover, and gallery in the order given.
65
+ * @readonly
66
+ */
67
+ sequence?: number;
68
+ /**
69
+ * Whether this change is waiting, being applied, or has failed.
70
+ * @readonly
71
+ */
72
+ state?: MediaUploadStateWithLiterals;
73
+ /**
74
+ * How many times this change has been attempted.
75
+ * @readonly
76
+ */
77
+ attempts?: number;
78
+ /**
79
+ * Google's identifier for the photo to remove. Removals only.
80
+ * @maxLength 255
81
+ */
82
+ mediaKey?: string;
83
+ /**
84
+ * Why this change failed. Present only when `state` is `FAILED`.
85
+ * @readonly
86
+ */
87
+ failure?: MediaUploadFailure;
88
+ /**
89
+ * Date and time the change was queued.
90
+ * @readonly
91
+ */
92
+ _createdDate?: Date | null;
93
+ /**
94
+ * Date and time the change was last updated.
95
+ * @readonly
96
+ */
97
+ _updatedDate?: Date | null;
98
+ /**
99
+ * Revision number, incremented on every update.
100
+ * @readonly
101
+ */
102
+ revision?: string;
103
+ }
104
+ /**
105
+ * Where a media item is shown on the listing. Mirrors Google's mybusiness v4
106
+ * LocationAssociation.Category.
107
+ */
108
+ declare enum MediaCategory {
109
+ COVER = "COVER",
110
+ PROFILE = "PROFILE",
111
+ LOGO = "LOGO",
112
+ EXTERIOR = "EXTERIOR",
113
+ INTERIOR = "INTERIOR",
114
+ PRODUCT = "PRODUCT",
115
+ AT_WORK = "AT_WORK",
116
+ FOOD_AND_DRINK = "FOOD_AND_DRINK",
117
+ MENU = "MENU",
118
+ COMMON_AREA = "COMMON_AREA",
119
+ ROOMS = "ROOMS",
120
+ TEAMS = "TEAMS",
121
+ ADDITIONAL = "ADDITIONAL"
122
+ }
123
+ /** @enumType */
124
+ type MediaCategoryWithLiterals = MediaCategory | 'COVER' | 'PROFILE' | 'LOGO' | 'EXTERIOR' | 'INTERIOR' | 'PRODUCT' | 'AT_WORK' | 'FOOD_AND_DRINK' | 'MENU' | 'COMMON_AREA' | 'ROOMS' | 'TEAMS' | 'ADDITIONAL';
125
+ /** Format of a media item. Mirrors Google's mybusiness v4 MediaFormat. */
126
+ declare enum MediaFormat {
127
+ PHOTO = "PHOTO",
128
+ VIDEO = "VIDEO"
129
+ }
130
+ /** @enumType */
131
+ type MediaFormatWithLiterals = MediaFormat | 'PHOTO' | 'VIDEO';
132
+ /**
133
+ * Whether a queued change adds a photo to the profile or removes one.
134
+ *
135
+ * Removals are edits too and draw on the same per-minute budget as additions,
136
+ * which is why both go through the same queue.
137
+ */
138
+ declare enum MediaUploadOperation {
139
+ /** Add a photo to the profile. */
140
+ CREATE = "CREATE",
141
+ /** Remove a photo from the profile. */
142
+ DELETE = "DELETE"
143
+ }
144
+ /** @enumType */
145
+ type MediaUploadOperationWithLiterals = MediaUploadOperation | 'CREATE' | 'DELETE';
146
+ /**
147
+ * Where a queued photo change is in its lifecycle.
148
+ *
149
+ * There's no state for success. A change that succeeds is removed from the
150
+ * queue, because Google's own media list is the record of what's live. So an
151
+ * empty queue means everything worked, and failures stay until the next
152
+ * submission for that location replaces them or you dismiss them.
153
+ *
154
+ * One consequence is worth knowing: because success leaves nothing behind, an
155
+ * addition that succeeded and one that never ran look the same afterwards. When
156
+ * the queue can't confirm an addition reached Google, it fails the change as
157
+ * `UPLOAD_UNVERIFIED` instead of retrying it, so you don't end up with the same
158
+ * photo twice. Removals carry no such risk and are retried freely.
159
+ */
160
+ declare enum MediaUploadState {
161
+ /** Waiting its turn in the queue. */
162
+ PENDING = "PENDING",
163
+ /**
164
+ * Being applied to Google now. A change that stays here isn't one that never
165
+ * ran: its outcome isn't known yet.
166
+ */
167
+ UPLOADING = "UPLOADING",
168
+ /** Failed, and won't be retried. Kept until replaced or dismissed. */
169
+ FAILED = "FAILED"
170
+ }
171
+ /** @enumType */
172
+ type MediaUploadStateWithLiterals = MediaUploadState | 'PENDING' | 'UPLOADING' | 'FAILED';
173
+ /** Why a queued photo change failed. */
174
+ interface MediaUploadFailure {
175
+ /** Why the change failed, in terms you can show a site owner. */
176
+ reason?: MediaUploadFailureReasonWithLiterals;
177
+ /**
178
+ * Internal, and withheld from public callers.
179
+ *
180
+ * Carries Google's own response text for the failure, which is support
181
+ * diagnostics rather than developer contract. This service already withholds
182
+ * exactly this on public read paths: LocationWithGoogle drops
183
+ * google_response_body and google_error_message on the query path and records
184
+ * them in the visibility events instead, because that path is reachable by
185
+ * public apps. ListMediaUploads is now such a path, so the same rule applies
186
+ * and `reason` is the whole public contract for a failure.
187
+ * @internal
188
+ * @maxLength 5000
189
+ */
190
+ errorMessage?: string;
191
+ }
192
+ /**
193
+ * Why a photo change failed, in terms you can show a site owner.
194
+ *
195
+ * This is often the only account of the upload they'll ever see, and they may
196
+ * read it long after the fact, so it's worth surfacing rather than logging.
197
+ */
198
+ declare enum MediaUploadFailureReason {
199
+ /** Below Google's minimum dimensions. */
200
+ IMAGE_TOO_SMALL = "IMAGE_TOO_SMALL",
201
+ /** Cover/logo ratio outside Google's accepted range. */
202
+ ASPECT_RATIO_REJECTED = "ASPECT_RATIO_REJECTED",
203
+ /** File type Google will not accept. */
204
+ FORMAT_UNSUPPORTED = "FORMAT_UNSUPPORTED",
205
+ /** Google could not fetch the image URL. */
206
+ SOURCE_UNREACHABLE = "SOURCE_UNREACHABLE",
207
+ /**
208
+ * Access to the Google account was lost. The site owner needs to connect
209
+ * again.
210
+ */
211
+ PERMISSION_REVOKED = "PERMISSION_REVOKED",
212
+ /** Google was still rate limiting after the queue used up its retries. */
213
+ RATE_LIMIT_EXHAUSTED = "RATE_LIMIT_EXHAUSTED",
214
+ /**
215
+ * The change may or may not have reached Google, and the queue chose not to
216
+ * risk a duplicate by trying again. Additions only.
217
+ *
218
+ * Unlike every other reason here, this doesn't say anything is wrong with the
219
+ * photo. It says the outcome couldn't be confirmed. Word it for the site owner
220
+ * that way: "we couldn't confirm this photo was added", not "this photo was
221
+ * rejected".
222
+ */
223
+ UPLOAD_UNVERIFIED = "UPLOAD_UNVERIFIED"
224
+ }
225
+ /** @enumType */
226
+ type MediaUploadFailureReasonWithLiterals = MediaUploadFailureReason | 'IMAGE_TOO_SMALL' | 'ASPECT_RATIO_REJECTED' | 'FORMAT_UNSUPPORTED' | 'SOURCE_UNREACHABLE' | 'PERMISSION_REVOKED' | 'RATE_LIMIT_EXHAUSTED' | 'UPLOAD_UNVERIFIED';
227
+ interface BulkCreateMediaUploadsRequest {
228
+ /**
229
+ * Photo changes to queue. All must share one `locationId` and one `operation`.
230
+ *
231
+ * Per item set `locationId`, `operation`, `slotKey`, and then either
232
+ * `sourceUrl`, `category` and `format` to add, or `mediaKey` to remove. Every
233
+ * other field is assigned by the server and ignored if you send it.
234
+ *
235
+ * Up to 52 items: 50 gallery photos plus a logo and a cover.
236
+ * @minSize 1
237
+ * @maxSize 52
238
+ */
239
+ mediaUploads: MediaUpload[];
240
+ /** Whether to return each queued item in `results.item`. */
241
+ returnEntity?: boolean;
242
+ }
243
+ interface BulkCreateMediaUploadsResponse {
244
+ /**
245
+ * Results in the order the items were sent. An item that was already queued is
246
+ * reported as a success carrying the existing item's `id`.
247
+ * @minSize 1
248
+ * @maxSize 52
249
+ */
250
+ results?: BulkCreateMediaUploadResult[];
251
+ /** How many items succeeded and failed. */
252
+ bulkActionMetadata?: BulkActionMetadata;
253
+ }
254
+ interface ItemMetadata {
255
+ /**
256
+ * Item ID. Provided only whenever possible. For example, `itemId` can't be provided when item creation has failed.
257
+ * @format GUID
258
+ */
259
+ _id?: string | null;
260
+ /** Index of the item within the request array. Allows for correlation between request and response items. */
261
+ originalIndex?: number;
262
+ /** Whether the requested action for this item was successful. When `false`, the `error` field is returned. */
263
+ success?: boolean;
264
+ /** Details about the error in case of failure. */
265
+ error?: ApplicationError;
266
+ }
267
+ interface ApplicationError {
268
+ /** Error code. */
269
+ code?: string;
270
+ /** Description of the error. */
271
+ description?: string;
272
+ /** Data related to the error. */
273
+ data?: Record<string, any> | null;
274
+ }
275
+ interface BulkCreateMediaUploadResult {
276
+ /** Whether this item was queued, and why not if it wasn't. */
277
+ itemMetadata?: ItemMetadata;
278
+ /** The queued item. Returned only when `returnEntity` is `true`. */
279
+ item?: MediaUpload;
280
+ }
281
+ interface BulkActionMetadata {
282
+ /** Number of items that were successfully processed. */
283
+ totalSuccesses?: number;
284
+ /** Number of items that couldn't be processed. */
285
+ totalFailures?: number;
286
+ /** Number of failures without details because detailed failure threshold was exceeded. */
287
+ undetailedFailures?: number;
288
+ }
289
+ interface ListMediaUploadsRequest {
290
+ /**
291
+ * ID of the location. This is Google's location identifier.
292
+ * @minLength 1
293
+ * @maxLength 255
294
+ */
295
+ locationId: string;
296
+ }
297
+ interface ListMediaUploadsResponse {
298
+ /**
299
+ * Every outstanding change for the location, in the order it will be applied.
300
+ * An empty list means the queue finished and nothing failed.
301
+ *
302
+ * Never paged and never truncated. If the set is somehow too large to return,
303
+ * the call fails with `FAILED_PRECONDITION` rather than returning part of it.
304
+ * @maxSize 500
305
+ */
306
+ mediaUploads?: MediaUpload[];
307
+ }
308
+ interface DismissMediaUploadFailuresRequest {
309
+ /**
310
+ * ID of the location. This is Google's location identifier.
311
+ * @minLength 1
312
+ * @maxLength 255
313
+ */
314
+ locationId: string;
315
+ }
316
+ interface DismissMediaUploadFailuresResponse {
317
+ /** How many failed changes were cleared. */
318
+ dismissedCount?: number;
319
+ }
320
+ /** @docsIgnore */
321
+ type BulkCreateMediaUploadsApplicationErrors = {
322
+ code?: 'MEDIA_UPLOAD_INVALID_SOURCE_URL';
323
+ description?: string;
324
+ data?: Record<string, any>;
325
+ };
326
+ /** @docsIgnore */
327
+ type ListMediaUploadsApplicationErrors = {
328
+ code?: 'MEDIA_UPLOAD_LIST_TOO_LARGE';
329
+ description?: string;
330
+ data?: Record<string, any>;
331
+ };
332
+ /**
333
+ * Queues photo changes for one location and returns without calling Google.
334
+ *
335
+ * Every item must target the same `locationId`, and one call has to be either
336
+ * all additions or all removals. Send two calls to do both.
337
+ *
338
+ * To add a photo, set `slotKey`, `sourceUrl`, `category` and `format`. To
339
+ * remove one, set `slotKey` and `mediaKey`. Everything else is assigned by the
340
+ * server.
341
+ *
342
+ * `sourceUrl` has to stay reachable well after this call returns, not just
343
+ * until it does. Google fetches the image when the queue reaches it, which may
344
+ * be minutes later, and a failure report renders the same URL as a thumbnail
345
+ * possibly weeks later.
346
+ *
347
+ * Queuing clears the location's previous failures. Every failed item for the
348
+ * location goes, not just the ones matching what you're sending, so a site
349
+ * owner only ever sees the most recent set and retrying failures is just
350
+ * another call to this method carrying those items.
351
+ *
352
+ * That clearing isn't scoped to you. If another app manages the same location,
353
+ * queuing here discards failures it may not have read yet, and vice versa. Read
354
+ * List Media Uploads before queuing if you need to preserve them.
355
+ *
356
+ * Duplicates are dropped rather than queued twice, so a double click or a
357
+ * client retry won't add the same photo twice. An item that's already queued
358
+ * comes back as a success carrying the existing item's `id`. Google doesn't
359
+ * deduplicate by URL itself, so this is what protects you from a double post.
360
+ *
361
+ * The server decides the order, not the order you send. Every removal is
362
+ * applied before any addition, because Google rejects new photos on a profile
363
+ * that's already at its limit. Additions then go logo, cover, and gallery in
364
+ * the order given.
365
+ *
366
+ * Errors, and in every case nothing is queued:
367
+ * - `NOT_FOUND`: the location isn't recorded for this site.
368
+ * - `INVALID_ARGUMENT`: items span more than one location, an item has no
369
+ * operation set, additions and removals are mixed in one call, an addition
370
+ * has no `sourceUrl`, or a removal has no `mediaKey`.
371
+ * - `MEDIA_UPLOAD_INVALID_SOURCE_URL`: an addition's `sourceUrl` isn't an
372
+ * absolute `http` or `https` URL with a host. Checked here rather than left
373
+ * to fail against Google minutes later.
374
+ * @param mediaUploads - Photo changes to queue. All must share one `locationId` and one `operation`.
375
+ *
376
+ * Per item set `locationId`, `operation`, `slotKey`, and then either
377
+ * `sourceUrl`, `category` and `format` to add, or `mediaKey` to remove. Every
378
+ * other field is assigned by the server and ignored if you send it.
379
+ *
380
+ * Up to 52 items: 50 gallery photos plus a logo and a cover.
381
+ * @public
382
+ * @documentationMaturity preview
383
+ * @requiredField mediaUploads
384
+ * @permissionId gbp:location:v1:media_upload:bulk_create_media_uploads
385
+ * @applicableIdentity APP
386
+ * @fqn wix.gbp.location.v1.MediaUploadService.BulkCreateMediaUploads
387
+ */
388
+ declare function bulkCreateMediaUploads(mediaUploads: MediaUpload[], options?: BulkCreateMediaUploadsOptions): Promise<NonNullablePaths<BulkCreateMediaUploadsResponse, `results` | `results.${number}.itemMetadata.originalIndex` | `results.${number}.itemMetadata.success` | `results.${number}.itemMetadata.error.code` | `results.${number}.itemMetadata.error.description` | `results.${number}.item._id` | `results.${number}.item.locationId` | `results.${number}.item.batchId` | `results.${number}.item.slotKey` | `results.${number}.item.sourceUrl` | `results.${number}.item.category` | `results.${number}.item.format` | `results.${number}.item.operation` | `results.${number}.item.sequence` | `results.${number}.item.state` | `results.${number}.item.attempts` | `results.${number}.item.mediaKey` | `results.${number}.item.failure.reason` | `results.${number}.item.revision` | `bulkActionMetadata.totalSuccesses` | `bulkActionMetadata.totalFailures` | `bulkActionMetadata.undetailedFailures`, 6> & {
389
+ __applicationErrorsType?: BulkCreateMediaUploadsApplicationErrors;
390
+ }>;
391
+ interface BulkCreateMediaUploadsOptions {
392
+ /** Whether to return each queued item in `results.item`. */
393
+ returnEntity?: boolean;
394
+ }
395
+ /**
396
+ * Retrieves the photo changes still queued or failed for a location.
397
+ *
398
+ * This is how you follow an asynchronous submission, since there's no
399
+ * completion callback. Read the response as a whole rather than item by item:
400
+ *
401
+ * - Anything `PENDING` or `UPLOADING` means the queue is still working. Don't
402
+ * report results yet.
403
+ * - Only `FAILED` items means the queue finished and those items didn't make
404
+ * it.
405
+ * - An empty response means nothing is outstanding for this location.
406
+ *
407
+ * Read that last one carefully, because it's weaker than it looks. It tells you
408
+ * the queue is empty, not that a particular submission succeeded. A successful
409
+ * change leaves nothing behind, and so does a failure that's been cleared, and
410
+ * the two are indistinguishable afterwards. Google's own media list is the
411
+ * record of what's actually live, so confirm against List Media rather than
412
+ * inferring success from an empty queue.
413
+ *
414
+ * Failures are cleared for the whole location by the next call to Bulk Create
415
+ * Media Uploads, whoever makes it. If more than one app manages the same
416
+ * location, one app queuing a change clears failures the other hasn't read yet.
417
+ * Read failures before queuing again, and don't treat an empty response as
418
+ * proof that your own submission worked.
419
+ *
420
+ * You can also use this to show a gallery matching what the site owner asked
421
+ * for while the queue is still working, because Google's list lags behind in
422
+ * both directions. Count only changes still on their way, since a `FAILED`
423
+ * addition never reached Google:
424
+ *
425
+ * ```
426
+ * gallery = Google's media list
427
+ * + additions still PENDING or UPLOADING
428
+ * - removals still PENDING or UPLOADING
429
+ * ```
430
+ *
431
+ * The response is never paged and never truncated. It returns the complete set
432
+ * or fails with `FAILED_PRECONDITION`.
433
+ * @param locationId - ID of the location. This is Google's location identifier.
434
+ * @public
435
+ * @documentationMaturity preview
436
+ * @requiredField locationId
437
+ * @permissionId gbp:location:v1:media_upload:list_media_uploads
438
+ * @applicableIdentity APP
439
+ * @fqn wix.gbp.location.v1.MediaUploadService.ListMediaUploads
440
+ */
441
+ declare function listMediaUploads(locationId: string): Promise<NonNullablePaths<ListMediaUploadsResponse, `mediaUploads` | `mediaUploads.${number}._id` | `mediaUploads.${number}.locationId` | `mediaUploads.${number}.batchId` | `mediaUploads.${number}.slotKey` | `mediaUploads.${number}.sourceUrl` | `mediaUploads.${number}.category` | `mediaUploads.${number}.format` | `mediaUploads.${number}.operation` | `mediaUploads.${number}.sequence` | `mediaUploads.${number}.state` | `mediaUploads.${number}.attempts` | `mediaUploads.${number}.mediaKey` | `mediaUploads.${number}.failure.reason` | `mediaUploads.${number}.revision`, 5> & {
442
+ __applicationErrorsType?: ListMediaUploadsApplicationErrors;
443
+ }>;
444
+ /**
445
+ * Clears a location's failed photo changes, leaving queued ones alone.
446
+ *
447
+ * Failures are otherwise kept until the next submission for that location
448
+ * replaces them, so this is how a site owner dismisses a photo that's never
449
+ * going to succeed.
450
+ *
451
+ * `dismissedCount` reports how many were cleared.
452
+ * @param locationId - ID of the location. This is Google's location identifier.
453
+ * @public
454
+ * @documentationMaturity preview
455
+ * @requiredField locationId
456
+ * @permissionId gbp:location:v1:media_upload:dismiss_media_upload_failures
457
+ * @applicableIdentity APP
458
+ * @fqn wix.gbp.location.v1.MediaUploadService.DismissMediaUploadFailures
459
+ */
460
+ declare function dismissMediaUploadFailures(locationId: string): Promise<NonNullablePaths<DismissMediaUploadFailuresResponse, `dismissedCount`, 2>>;
461
+
462
+ export { type ApplicationError, type BulkActionMetadata, type BulkCreateMediaUploadResult, type BulkCreateMediaUploadsApplicationErrors, type BulkCreateMediaUploadsOptions, type BulkCreateMediaUploadsRequest, type BulkCreateMediaUploadsResponse, type DismissMediaUploadFailuresRequest, type DismissMediaUploadFailuresResponse, type ItemMetadata, type ListMediaUploadsApplicationErrors, type ListMediaUploadsRequest, type ListMediaUploadsResponse, MediaCategory, type MediaCategoryWithLiterals, MediaFormat, type MediaFormatWithLiterals, type MediaUpload, type MediaUploadFailure, MediaUploadFailureReason, type MediaUploadFailureReasonWithLiterals, MediaUploadOperation, type MediaUploadOperationWithLiterals, MediaUploadState, type MediaUploadStateWithLiterals, bulkCreateMediaUploads, dismissMediaUploadFailures, listMediaUploads };